Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/gnacho/netgrip
go 1.25.0

require (
github.com/gnacho/netpulse/agent v1.2.1
github.com/gnacho/netpulse/agent v1.3.0
gopkg.in/yaml.v3 v3.0.1
)

Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
github.com/gnacho/netpulse/agent v1.2.1 h1:L9LFF0HzAV3XD16Wx1X9ELEOo3LC/NG+sqj7h+P0SqE=
github.com/gnacho/netpulse/agent v1.2.1/go.mod h1:jJxa2W2PR3BKIFI/GxnUHC9caOwhYM0wobbsoHitV6I=
github.com/gnacho/netpulse/agent v1.3.0 h1:fi5CGvXGxiflEf1EPhwPEMm89iMICtvPGpIRVSv1u2k=
github.com/gnacho/netpulse/agent v1.3.0/go.mod h1:jJxa2W2PR3BKIFI/GxnUHC9caOwhYM0wobbsoHitV6I=
github.com/gonzalop/mq v0.9.10 h1:7uaSKq/m/n0ElV3SJtXQTZnI5HyHtgoNIL/ufsxFU+8=
github.com/gonzalop/mq v0.9.10/go.mod h1:chaGtxnueekistsTKhDnLOoNdJPKEI6vadlUBRQS2ok=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
Expand Down
17 changes: 17 additions & 0 deletions internal/modules/netpulse_agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -511,6 +511,7 @@ func applyNetPulseAgent(p netpulsePaths) {
EnvFile: p.env,
Version: version,
Kind: "netgrip",
SelfMQTT: netPulseSelfMQTT,
OnStatus: storeNetPulseStatus,
OnUpgrade: netPulseUpgradeTrigger,
}
Expand Down Expand Up @@ -572,6 +573,22 @@ func parseNetPulseScanInterval(v string) time.Duration {
return 0
}

// netPulseMQTTEnvPath es la ruta del env MQTT que lee el hook; inyectable en
// tests.
var netPulseMQTTEnvPath = mqttEnvFile

// netPulseSelfMQTT informa al agente embebido de si el MQTT propio de NetGrip
// está activado (#407): así el servidor sabe que este router se expone solo a
// Home Assistant y no duplica su dispositivo por router. Se lee en caliente en
// cada push, de modo que el toggle se refleja sin reiniciar el agente.
func netPulseSelfMQTT() (bool, string) {
cfg, err := ReadMQTTConfig(netPulseMQTTEnvPath)
if err != nil || !cfg.Enabled {
return false, ""
}
return true, mqttNodeID(cfg)
}

func storeNetPulseStatus(st runtime.Status) {
npMu.Lock()
npStatus = st
Expand Down
30 changes: 30 additions & 0 deletions internal/modules/netpulse_agent_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -483,3 +483,33 @@ func TestRecheckCleansReinstalledStandalone(t *testing.T) {
t.Fatal("el env de netgrip debe conservarse")
}
}

func TestNetPulseSelfMQTT(t *testing.T) {
dir := t.TempDir()
old := netPulseMQTTEnvPath
defer func() { netPulseMQTTEnvPath = old }()
netPulseMQTTEnvPath = filepath.Join(dir, "mqtt.env")

// Sin fichero: no se expone.
if en, node := netPulseSelfMQTT(); en || node != "" {
t.Fatalf("sin fichero: got (%v, %q)", en, node)
}
// Desactivado.
if err := os.WriteFile(netPulseMQTTEnvPath, []byte("MQTT_ENABLED=0\nMQTT_HOST=10.0.0.10\n"), 0o600); err != nil {
t.Fatal(err)
}
if en, _ := netPulseSelfMQTT(); en {
t.Fatal("MQTT_ENABLED=0 debe reportar false")
}
// Activado: se reporta enabled y el nodo (hostname por defecto).
if err := os.WriteFile(netPulseMQTTEnvPath, []byte("MQTT_ENABLED=1\nMQTT_HOST=10.0.0.10\n"), 0o600); err != nil {
t.Fatal(err)
}
en, node := netPulseSelfMQTT()
if !en {
t.Fatal("MQTT_ENABLED=1 debe reportar true")
}
if node == "" {
t.Fatal("node vacío con MQTT activado")
}
}
Loading