Monorepo for Tangled tangled.org

spindle/config: add abilility to override motd #906

merged opened by evan.jarrett.net targeting master from evan.jarrett.net/core: spindle-motd
Labels

None yet.

assignee

None yet.

Participants 3
AT URI
at://did:plc:pddp4xt5lgnv2qsegbzzs4xg/sh.tangled.repo.pull/3mahvraqqgz22
+9
Diff #0
+1
spindle/config/config.go
··· 20 20 LogDir string `env:"LOG_DIR, default=/var/log/spindle"` 21 21 QueueSize int `env:"QUEUE_SIZE, default=100"` 22 22 MaxJobCount int `env:"MAX_JOB_COUNT, default=2"` // max number of jobs that run at a time 23 + MOTDFile string `env:"MOTD_FILE"` // optional path to custom MOTD file 23 24 } 24 25 25 26 func (s Server) Did() syntax.DID {
+8
spindle/server.go
··· 8 8 "log/slog" 9 9 "maps" 10 10 "net/http" 11 + "os" 11 12 12 13 "github.com/go-chi/chi/v5" 13 14 "tangled.org/core/api/tangled" ··· 246 247 mux := chi.NewRouter() 247 248 248 249 mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { 250 + if s.cfg.Server.MOTDFile != "" { 251 + if content, err := os.ReadFile(s.cfg.Server.MOTDFile); err == nil { 252 + w.Write(content) 253 + return 254 + } 255 + s.l.Warn("failed to read custom MOTD file, using default", "path", s.cfg.Server.MOTDFile) 256 + } 249 257 w.Write(motd) 250 258 }) 251 259 mux.HandleFunc("/events", s.Events)

History

2 rounds 7 comments
sign up or login to add to the discussion
1 commit
expand
spindle/config: add abilility to override motd
expand 4 comments

Instead of setting the files via the config, what I really want is to just set the byte content directly. I have updated the PR to reflect this.

how is the motd overridden in this scenario? SetMotd is not being called anywhere.

Its not called in tangled core. I'm using tangled as a libary and I was opening it as a way for me to set the motd directly with a []byte, rather than go through the original route I was going to do by setting the MOTD_FILE in the config. I can still go that route, but seems like its going to refactored based on boltless's commit to add datadir.

sounds good, lgtm!

pull request successfully merged
evan.jarrett.net submitted #0
1 commit
expand
spindle/config: add abilility to override motd
expand 3 comments

Thank you for the contribution!

I'd prefer motd file path and db path to be fixed under configurable spindle data dir (see commit), so I might eventually change the config schema later.

But this seems good to merge for now!

I'm using the config directly and specifying my own path to an embedded motd

	if _, err := motdFile.Write(motd); err != nil {
		setupLog.Error(err, "failed to write MOTD temp file")
		os.Exit(1)
	}
	motdFile.Close()
	spindleCfg.Server.MOTDFile = motdFile.Name()

If so, you can do same for {cfg.DataDir}/motd file.

// spindle/config.go
func (s Server) MotdPath() string {
	return filepath.Join(s.DataDir, "motd")
}

// ...
	if err := os.WriteFile(path, data, 0644); err != nil {
		setupLog.Error(err, "failed to write MOTD file")
		os.Exit(1)
	}

Just write embedded motd bytes to {cfg.DataDir}/motd file.