+21
-3
spindle/server.go
+21
-3
spindle/server.go
···
8
"log/slog"
9
"maps"
10
"net/http"
11
12
"github.com/go-chi/chi/v5"
13
"tangled.org/core/api/tangled"
···
30
)
31
32
//go:embed motd
33
-
var motd []byte
34
35
const (
36
rbacDomain = "thisserver"
···
47
cfg *config.Config
48
ks *eventconsumer.Consumer
49
res *idresolver.Resolver
50
-
vault secrets.Manager
51
}
52
53
// New creates a new Spindle server with the provided configuration and engines.
···
128
cfg: cfg,
129
res: resolver,
130
vault: vault,
131
}
132
133
err = e.AddSpindle(rbacDomain)
···
201
return s.e
202
}
203
204
// Start starts the Spindle server (blocking).
205
func (s *Spindle) Start(ctx context.Context) error {
206
// starts a job queue runner in the background
···
246
mux := chi.NewRouter()
247
248
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
249
-
w.Write(motd)
250
})
251
mux.HandleFunc("/events", s.Events)
252
mux.HandleFunc("/logs/{knot}/{rkey}/{name}", s.Logs)
···
8
"log/slog"
9
"maps"
10
"net/http"
11
+
"sync"
12
13
"github.com/go-chi/chi/v5"
14
"tangled.org/core/api/tangled"
···
31
)
32
33
//go:embed motd
34
+
var defaultMotd []byte
35
36
const (
37
rbacDomain = "thisserver"
···
48
cfg *config.Config
49
ks *eventconsumer.Consumer
50
res *idresolver.Resolver
51
+
vault secrets.Manager
52
+
motd []byte
53
+
motdMu sync.RWMutex
54
}
55
56
// New creates a new Spindle server with the provided configuration and engines.
···
131
cfg: cfg,
132
res: resolver,
133
vault: vault,
134
+
motd: defaultMotd,
135
}
136
137
err = e.AddSpindle(rbacDomain)
···
205
return s.e
206
}
207
208
+
// SetMotdContent sets custom MOTD content, replacing the embedded default.
209
+
func (s *Spindle) SetMotdContent(content []byte) {
210
+
s.motdMu.Lock()
211
+
defer s.motdMu.Unlock()
212
+
s.motd = content
213
+
}
214
+
215
+
// GetMotdContent returns the current MOTD content.
216
+
func (s *Spindle) GetMotdContent() []byte {
217
+
s.motdMu.RLock()
218
+
defer s.motdMu.RUnlock()
219
+
return s.motd
220
+
}
221
+
222
// Start starts the Spindle server (blocking).
223
func (s *Spindle) Start(ctx context.Context) error {
224
// starts a job queue runner in the background
···
264
mux := chi.NewRouter()
265
266
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
267
+
w.Write(s.GetMotdContent())
268
})
269
mux.HandleFunc("/events", s.Events)
270
mux.HandleFunc("/logs/{knot}/{rkey}/{name}", s.Logs)