fix(nano): say that [server] listen is ignored instead of defaulting it

LoadNano filled in [server] listen = "0.0.0.0:8080" when it was unset,
and a test pinned that value, but felis nano never reads it: it binds
the -listen flag, which the installer sets from FELIS_NANO_LISTEN. An
operator moving nano off loopback by writing [server] listen in its
config got connection refused from the proxy and no hint that the key
did nothing.

LoadNano no longer sets the default, and nano prints a line naming the
ignored value and the address it actually binds whenever the key is
set. It is a warning rather than a load error so a full felis.toml
copied onto a nano host keeps starting. The assertion that pinned the
unused default is removed along with it.

The new test runs cmdNano against a config that sets [server] listen
and one that does not, with an unbindable -listen so it returns after
loading. The first must warn and the second must not; with the old
default restored, the second prints a warning about 0.0.0.0:8080.
This commit is contained in:
flyemoji committed 2026-09-22 13:30:23 +09:00
1 parent 1d6c73007e
commit 8e9c8ca4e6
4 files changed
+34 -7

No files matched your search

+5
View File
@@ -70,6 +70,11 @@ func cmdNano(args []string, stdout, stderr io.Writer) int {
fmt.Fprintln(stderr, "felis nano:", err)
return 1
}
// [server] listen belongs to felis api. Someone moving nano off loopback naturally reaches
// for it, and without this line would get connection refused with no hint why.
if cfg.Server.Listen != "" {
fmt.Fprintf(stderr, "felis nano: [server] listen = %q is ignored; nano binds -listen (%s), which the installer sets from FELIS_NANO_LISTEN\n", cfg.Server.Listen, *listen)
}
fmt.Fprintf(stderr, "felis nano: hasJoined multiplexer on %s — Mojang + %d third-party source(s)\n", *listen, len(cfg.AuthSources))
for i, s := range cfg.AuthSources {