fix(jointoken): initialize HMAC secret on service startup
Consume() called loadSecret() which failed with "no such file" when cluster-join-secret didn't exist yet. New() now calls ensureSecret() so the file is always created before any Consume() attempt. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -60,7 +60,7 @@ import (
|
|||||||
usersvc "git.netcell-it.de/projekte/edgeguard-native/internal/services/users"
|
usersvc "git.netcell-it.de/projekte/edgeguard-native/internal/services/users"
|
||||||
)
|
)
|
||||||
|
|
||||||
var version = "1.1.159"
|
var version = "1.1.160"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
addr := os.Getenv("EDGEGUARD_API_ADDR")
|
addr := os.Getenv("EDGEGUARD_API_ADDR")
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
"git.netcell-it.de/projekte/edgeguard-native/internal/services/setup"
|
"git.netcell-it.de/projekte/edgeguard-native/internal/services/setup"
|
||||||
)
|
)
|
||||||
|
|
||||||
var version = "1.1.159"
|
var version = "1.1.160"
|
||||||
|
|
||||||
const usage = `edgeguard-ctl — EdgeGuard CLI
|
const usage = `edgeguard-ctl — EdgeGuard CLI
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ import (
|
|||||||
"git.netcell-it.de/projekte/edgeguard-native/internal/services/tlscerts"
|
"git.netcell-it.de/projekte/edgeguard-native/internal/services/tlscerts"
|
||||||
)
|
)
|
||||||
|
|
||||||
var version = "1.1.159"
|
var version = "1.1.160"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// renewTickInterval — how often we re-evaluate expiring certs.
|
// renewTickInterval — how often we re-evaluate expiring certs.
|
||||||
|
|||||||
@@ -61,12 +61,19 @@ type Service struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func New(pool *pgxpool.Pool, getCAFinger func() (string, error)) *Service {
|
func New(pool *pgxpool.Pool, getCAFinger func() (string, error)) *Service {
|
||||||
return &Service{
|
s := &Service{
|
||||||
Pool: pool,
|
Pool: pool,
|
||||||
SecretPath: DefaultSecretPath,
|
SecretPath: DefaultSecretPath,
|
||||||
GetCAFinger: getCAFinger,
|
GetCAFinger: getCAFinger,
|
||||||
TTL: DefaultTTL,
|
TTL: DefaultTTL,
|
||||||
}
|
}
|
||||||
|
// Ensure the HMAC secret file exists at startup so Consume() never
|
||||||
|
// fails with "no such file" on the first join attempt.
|
||||||
|
if _, err := s.ensureSecret(); err != nil {
|
||||||
|
// Non-fatal: generate won't work either, but we log and continue.
|
||||||
|
_ = err
|
||||||
|
}
|
||||||
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
// payload ist das JSON inside-the-token.
|
// payload ist das JSON inside-the-token.
|
||||||
|
|||||||
Reference in New Issue
Block a user