gleep fixes mtls and stuff

This commit is contained in:
boris committed 2026-04-18 18:17:29 +01:00
1 parent 31b726b439
commit 779db4cd94
16 files changed
+526 -45

No files matched your search

+25 -10
View File
@@ -32,9 +32,12 @@ var lastNoEventsNotice time.Time
func main() {
configPath := flag.String("config", config.DefaultConfigPath, "Path to agent config JSON")
flag.StringVar(configPath, "c", config.DefaultConfigPath, "Path to agent config JSON (shorthand)")
serverURL := flag.String("server-url", "", "Keywarden server URL (first boot)")
enrollToken := flag.String("enroll-token", "", "Enrollment token (first boot)")
flag.StringVar(enrollToken, "t", "", "Enrollment token (first boot, shorthand)")
forceEnroll := flag.Bool("force-enroll", false, "Force re-enrollment even if already bootstrapped")
flag.BoolVar(forceEnroll, "f", false, "Force re-enrollment even if already bootstrapped (shorthand)")
showVersion := flag.Bool("version", false, "Print version and exit")
flag.Parse()
@@ -236,17 +239,21 @@ func bootstrapIfNeeded(cfg *config.Config, configPath string, enrollToken string
previousServerID := strings.TrimSpace(cfg.ServerID)
if !forceEnroll && cfg.ServerID != "" && fileExists(cfg.ClientCertPath()) && fileExists(cfg.CACertPath()) {
if strings.TrimSpace(enrollToken) != "" {
log.Printf("enrollment token provided but bootstrap is already complete; skipping enrollment (use -force-enroll to rotate identity)")
log.Printf("enrollment token provided but bootstrap is already complete; skipping enrollment (use -f/--force-enroll to rotate identity)")
}
return nil
}
if enrollToken == "" {
return fmt.Errorf("missing enrollment token; set KEYWARDEN_ENROLL_TOKEN or -enroll-token")
return fmt.Errorf("missing enrollment token; set KEYWARDEN_ENROLL_TOKEN or -t/--enroll-token")
}
rotateServerID := ""
if forceEnroll {
log.Printf("force re-enrollment requested; replacing existing server identity")
cfg.ServerID = ""
cfg.AgentAPIToken = ""
rotateServerID = previousServerID
if rotateServerID != "" {
log.Printf("force re-enrollment requested; rotating certificate in-place for server_id=%s", rotateServerID)
} else {
log.Printf("force re-enrollment requested; no existing server_id, enrolling as new server identity")
}
}
keyPath := cfg.ClientKeyPath()
if !fileExists(keyPath) {
@@ -261,15 +268,23 @@ func bootstrapIfNeeded(cfg *config.Config, configPath string, enrollToken string
info := host.Detect()
hostname := info.Hostname
resp, err := client.Enroll(context.Background(), cfg.ServerURL, client.EnrollRequest{
Token: enrollToken,
CSRPEM: csrPEM,
Host: hostname,
IPv4: info.IPv4,
IPv6: info.IPv6,
Token: enrollToken,
CSRPEM: csrPEM,
Host: hostname,
IPv4: info.IPv4,
IPv6: info.IPv6,
ServerID: rotateServerID,
})
if err != nil {
return err
}
if rotateServerID != "" && strings.TrimSpace(resp.ServerID) != rotateServerID {
return fmt.Errorf(
"re-enrollment returned unexpected server_id=%s (expected %s)",
strings.TrimSpace(resp.ServerID),
rotateServerID,
)
}
if err := os.WriteFile(cfg.ClientCertPath(), []byte(resp.ClientCert), 0o600); err != nil {
return err
}