parent
7feac30f79
commit
4d91ecc207
@ -0,0 +1,12 @@ |
|||||||
|
{ |
||||||
|
"Source": { |
||||||
|
"PrivateKey": "./test/fakepriv.pem", |
||||||
|
"PublicKey": "./test/fakepub.pem" |
||||||
|
}, |
||||||
|
"Target": { |
||||||
|
"PrivateKey": "./tmp/privkey.pem", |
||||||
|
"PublicKey": "./tmp/fullchain.pem", |
||||||
|
"Owner": "zed:zed" |
||||||
|
}, |
||||||
|
"Reload": "systemctl reload ergo" |
||||||
|
} |
||||||
@ -1,3 +1,7 @@ |
|||||||
module MY/cert-bouncer |
module MY/cert-bouncer |
||||||
|
|
||||||
go 1.25.3 |
go 1.25.3 |
||||||
|
|
||||||
|
require github.com/fsnotify/fsnotify v1.9.0 |
||||||
|
|
||||||
|
require golang.org/x/sys v0.13.0 // indirect |
||||||
|
|||||||
@ -0,0 +1,4 @@ |
|||||||
|
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= |
||||||
|
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= |
||||||
|
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= |
||||||
|
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= |
||||||
@ -1,9 +1,60 @@ |
|||||||
package main |
package main |
||||||
|
|
||||||
import ( |
import ( |
||||||
"fmt" |
"github.com/fsnotify/fsnotify" |
||||||
|
"flag" |
||||||
|
"log" |
||||||
|
"os" |
||||||
|
"encoding/json" |
||||||
) |
) |
||||||
|
|
||||||
|
type Cert struct { |
||||||
|
PrivateKey string |
||||||
|
PublicKey string |
||||||
|
Owner string |
||||||
|
} |
||||||
|
|
||||||
|
type Config struct { |
||||||
|
Source Cert |
||||||
|
Target Cert |
||||||
|
Reload string |
||||||
|
} |
||||||
|
|
||||||
|
func LoadConfig(path string) Config { |
||||||
|
var config Config |
||||||
|
|
||||||
|
config_data, err := os.ReadFile(path) |
||||||
|
if err != nil { |
||||||
|
log.Fatal("invalid config path %s: %v", path, err) |
||||||
|
} |
||||||
|
|
||||||
|
err = json.Unmarshal(config_data, &config) |
||||||
|
if err != nil { |
||||||
|
log.Fatal(err, "json format error") |
||||||
|
} |
||||||
|
|
||||||
|
return config |
||||||
|
} |
||||||
|
|
||||||
|
func ParseOpts() Config { |
||||||
|
var config_file string |
||||||
|
|
||||||
|
flag.StringVar(&config_file, "config", "cert-bouncer.json", ".json config to use.") |
||||||
|
flag.Parse() |
||||||
|
|
||||||
|
return LoadConfig(config_file) |
||||||
|
} |
||||||
|
|
||||||
func main() { |
func main() { |
||||||
fmt.Println("yay!"); |
config := ParseOpts() |
||||||
|
|
||||||
|
watcher, err := fsnotify.NewWatcher() |
||||||
|
if err != nil { |
||||||
|
log.Fatal(err, "Can't watch files.") |
||||||
|
} |
||||||
|
|
||||||
|
err = watcher.Add(config.Source.PrivateKey) |
||||||
|
if err != nil { |
||||||
|
log.Fatalf("can't watch %s: %v", err, config.Source.PrivateKey) |
||||||
|
} |
||||||
} |
} |
||||||
|
|||||||
@ -0,0 +1 @@ |
|||||||
|
This is fake. |
||||||
@ -0,0 +1 @@ |
|||||||
|
This is fake too. |
||||||
Loading…
Reference in new issue