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:
Debian
2026-05-29 18:44:00 +02:00
parent 357113e7be
commit 6eb6d6d6a4
5 changed files with 12 additions and 5 deletions

View File

@@ -1 +1 @@
1.1.159
1.1.160

View File

@@ -60,7 +60,7 @@ import (
usersvc "git.netcell-it.de/projekte/edgeguard-native/internal/services/users"
)
var version = "1.1.159"
var version = "1.1.160"
func main() {
addr := os.Getenv("EDGEGUARD_API_ADDR")

View File

@@ -11,7 +11,7 @@ import (
"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

View File

@@ -41,7 +41,7 @@ import (
"git.netcell-it.de/projekte/edgeguard-native/internal/services/tlscerts"
)
var version = "1.1.159"
var version = "1.1.160"
const (
// renewTickInterval — how often we re-evaluate expiring certs.

View File

@@ -61,12 +61,19 @@ type Service struct {
}
func New(pool *pgxpool.Pool, getCAFinger func() (string, error)) *Service {
return &Service{
s := &Service{
Pool: pool,
SecretPath: DefaultSecretPath,
GetCAFinger: getCAFinger,
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.