Web : adresse d'écoute réglable par LOKI_WEB_BIND

La façade Rust du conteneur prend le port public et lance `loki web`
derrière elle : le Go doit alors n'écouter qu'en local, sinon il resterait
joignable en direct sans passer par la façade. Défaut inchangé (0.0.0.0).

Plan du lot 1 de la migration Rust joint.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Opus 5.5 committed 2026-10-13 00:31:28 +02:00
1 parent f1f73cfc50
commit 342f787eff
3 files changed
+150 -1

No files matched your search

+16
View File
@@ -0,0 +1,16 @@
package loki
import "testing"
// La façade Rust lance `loki web` derrière elle : le Go ne doit alors écouter
// qu'en local, sinon il resterait joignable en direct, sans la façade.
func TestWebBindAddr(t *testing.T) {
t.Setenv("LOKI_WEB_BIND", "")
if got := webBindAddr(8090); got != "0.0.0.0:8090" {
t.Fatalf("défaut : %q", got)
}
t.Setenv("LOKI_WEB_BIND", "127.0.0.1")
if got := webBindAddr(8091); got != "127.0.0.1:8091" {
t.Fatalf("local : %q", got)
}
}
+12 -1
View File
@@ -33,7 +33,7 @@ func cmdWeb(args []string) error {
port = n
}
mux := newWebMux()
addr := fmt.Sprintf("0.0.0.0:%d", port)
addr := webBindAddr(port)
ln, err := net.Listen("tcp", addr)
if err != nil {
@@ -100,6 +100,17 @@ func cmdWeb(args []string) error {
return srv.Serve(ln)
}
// webBindAddr renvoie l'adresse d'écoute de l'UI. LOKI_WEB_BIND (défaut
// 0.0.0.0) existe pour la façade Rust du conteneur (rust/loki-rs) : elle prend
// le port public et lance `loki web` en local seulement, sur 127.0.0.1.
func webBindAddr(port int) string {
host := strings.TrimSpace(os.Getenv("LOKI_WEB_BIND"))
if host == "" {
host = "0.0.0.0"
}
return net.JoinHostPort(host, strconv.Itoa(port))
}
// newWebMux construit le routeur HTTP de l'UI web. Extrait de cmdWeb pour être
// réutilisé par `loki link`, qui sert ce même mux à travers le tunnel sans
// repasser par un écouteur TCP local.