This commit is contained in:
ston1th 2023-03-21 01:00:13 +01:00
commit 05a68df896
15 changed files with 158 additions and 135 deletions

View file

@ -34,13 +34,13 @@ func usage() {
fmt.Printf(`keyctl %s:
supported subcommands:
keyctl server - starts a keyctl server
keyctl new - generates a new key
keyctl get - retrieve a key from the server
keyctl ls - list configured keys
keyctl req - list current key requests
keyctl approve - approve a key request
keyctl reject - reject a key request
keyctl del - delete a key
keyctl new - generates a new key (admin)
keyctl ls - list configured keys (admin)
keyctl req - list current key requests (admin)
keyctl approve - approve a key request (admin)
keyctl reject - reject a key request (admin)
keyctl del - delete a key (admin)
keyctl help - show this usage
`, version)
os.Exit(1)
@ -55,27 +55,30 @@ func main() {
case "new", "get", "ls", "req", "approve", "reject", "del":
cli.Run(arg) // does not return
case "server":
fs := flag.NewFlagSet("", flag.ExitOnError)
klog.InitFlags(fs)
fs.StringVar(&listen, "listen", ":7070", "listen ip:port")
fs.StringVar(&socket, "socket", "keyctl.sock", "listen unix domain socket")
fs.StringVar(&path, "path", "/var/keyctl", "db storage dir")
fs.Parse(os.Args[2:])
server() // does not return
default:
usage()
usage() // does not return
}
}
func server() {
fs := flag.NewFlagSet("", flag.ExitOnError)
klog.InitFlags(fs)
fs.StringVar(&listen, "listen", ":7070", "listen ip:port")
fs.StringVar(&socket, "socket", "keyctl.sock", "listen unix domain socket")
fs.StringVar(&path, "path", "/var/keyctl", "db storage dir")
fs.Parse(os.Args[2:])
log = klogr.New().WithName("main")
log.Info("starting keyctl", "version", version)
srv, err := api.NewServer(klogr.New().WithName("srv"), listen, filepath.Join(path, socket))
if err != nil {
klog.Fatalf("init failed: %s", err)
}
dbstore, err := db.New(klogr.New().WithName("db"), path)
if err != nil {
klog.Fatalf("init failed: %s", err)
}
srv.Start(dbstore)
srv, err := api.NewServer(klogr.New().WithName("srv"), listen, filepath.Join(path, socket), dbstore)
if err != nil {
klog.Fatalf("init failed: %s", err)
}
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)