mirror of
https://github.com/DeBrosOfficial/orama.git
synced 2026-03-17 20:46:58 +00:00
183 lines
6.1 KiB
Go
183 lines
6.1 KiB
Go
package checks
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/DeBrosOfficial/network/pkg/inspector"
|
|
)
|
|
|
|
func init() {
|
|
inspector.RegisterChecker("anyone", CheckAnyone)
|
|
}
|
|
|
|
const anyoneSub = "anyone"
|
|
|
|
// CheckAnyone runs all Anyone relay/client health checks.
|
|
func CheckAnyone(data *inspector.ClusterData) []inspector.CheckResult {
|
|
var results []inspector.CheckResult
|
|
|
|
for _, nd := range data.Nodes {
|
|
if nd.Anyone == nil {
|
|
continue
|
|
}
|
|
results = append(results, checkAnyonePerNode(nd)...)
|
|
}
|
|
|
|
results = append(results, checkAnyoneCrossNode(data)...)
|
|
|
|
return results
|
|
}
|
|
|
|
func checkAnyonePerNode(nd *inspector.NodeData) []inspector.CheckResult {
|
|
var r []inspector.CheckResult
|
|
a := nd.Anyone
|
|
node := nd.Node.Name()
|
|
|
|
// If neither service is active, skip all checks for this node
|
|
if !a.RelayActive && !a.ClientActive {
|
|
return r
|
|
}
|
|
|
|
isClientMode := a.Mode == "client"
|
|
|
|
if a.RelayActive {
|
|
r = append(r, inspector.Pass("anyone.relay_active", "Anyone relay service active", anyoneSub, node,
|
|
"orama-anyone-relay is active", inspector.High))
|
|
}
|
|
|
|
// --- Client-mode checks ---
|
|
if isClientMode {
|
|
// SOCKS5 port
|
|
if a.SocksListening {
|
|
r = append(r, inspector.Pass("anyone.socks_listening", "SOCKS5 port 9050 listening", anyoneSub, node,
|
|
"port 9050 bound", inspector.High))
|
|
} else {
|
|
r = append(r, inspector.Fail("anyone.socks_listening", "SOCKS5 port 9050 listening", anyoneSub, node,
|
|
"port 9050 NOT bound (traffic cannot route through anonymity network)", inspector.High))
|
|
}
|
|
|
|
// Control port
|
|
if a.ControlListening {
|
|
r = append(r, inspector.Pass("anyone.control_listening", "Control port 9051 listening", anyoneSub, node,
|
|
"port 9051 bound", inspector.Low))
|
|
} else {
|
|
r = append(r, inspector.Warn("anyone.control_listening", "Control port 9051 listening", anyoneSub, node,
|
|
"port 9051 NOT bound (monitoring unavailable)", inspector.Low))
|
|
}
|
|
|
|
// Bootstrap (clients also bootstrap to the network)
|
|
if a.Bootstrapped {
|
|
r = append(r, inspector.Pass("anyone.client_bootstrapped", "Client bootstrapped", anyoneSub, node,
|
|
fmt.Sprintf("bootstrap=%d%%", a.BootstrapPct), inspector.High))
|
|
} else if a.BootstrapPct > 0 {
|
|
r = append(r, inspector.Warn("anyone.client_bootstrapped", "Client bootstrapped", anyoneSub, node,
|
|
fmt.Sprintf("bootstrap=%d%% (still connecting)", a.BootstrapPct), inspector.High))
|
|
} else {
|
|
r = append(r, inspector.Fail("anyone.client_bootstrapped", "Client bootstrapped", anyoneSub, node,
|
|
"bootstrap=0% (not started or log missing)", inspector.High))
|
|
}
|
|
|
|
return r
|
|
}
|
|
|
|
// --- Relay-mode checks ---
|
|
|
|
// ORPort listening
|
|
if a.ORPortListening {
|
|
r = append(r, inspector.Pass("anyone.orport_listening", "ORPort 9001 listening", anyoneSub, node,
|
|
"port 9001 bound", inspector.High))
|
|
} else {
|
|
r = append(r, inspector.Fail("anyone.orport_listening", "ORPort 9001 listening", anyoneSub, node,
|
|
"port 9001 NOT bound", inspector.High))
|
|
}
|
|
|
|
// Control port
|
|
if a.ControlListening {
|
|
r = append(r, inspector.Pass("anyone.control_listening", "Control port 9051 listening", anyoneSub, node,
|
|
"port 9051 bound", inspector.Low))
|
|
} else {
|
|
r = append(r, inspector.Warn("anyone.control_listening", "Control port 9051 listening", anyoneSub, node,
|
|
"port 9051 NOT bound (monitoring unavailable)", inspector.Low))
|
|
}
|
|
|
|
// Bootstrap status
|
|
if a.Bootstrapped {
|
|
r = append(r, inspector.Pass("anyone.bootstrapped", "Relay bootstrapped", anyoneSub, node,
|
|
fmt.Sprintf("bootstrap=%d%%", a.BootstrapPct), inspector.High))
|
|
} else if a.BootstrapPct > 0 {
|
|
r = append(r, inspector.Warn("anyone.bootstrapped", "Relay bootstrapped", anyoneSub, node,
|
|
fmt.Sprintf("bootstrap=%d%% (still connecting)", a.BootstrapPct), inspector.High))
|
|
} else {
|
|
r = append(r, inspector.Fail("anyone.bootstrapped", "Relay bootstrapped", anyoneSub, node,
|
|
"bootstrap=0% (not started or log missing)", inspector.High))
|
|
}
|
|
|
|
// Fingerprint present
|
|
if a.Fingerprint != "" {
|
|
r = append(r, inspector.Pass("anyone.fingerprint", "Relay has fingerprint", anyoneSub, node,
|
|
fmt.Sprintf("fingerprint=%s", a.Fingerprint), inspector.Medium))
|
|
} else {
|
|
r = append(r, inspector.Warn("anyone.fingerprint", "Relay has fingerprint", anyoneSub, node,
|
|
"no fingerprint found (relay may not have generated keys yet)", inspector.Medium))
|
|
}
|
|
|
|
// Nickname configured
|
|
if a.Nickname != "" {
|
|
r = append(r, inspector.Pass("anyone.nickname", "Relay nickname configured", anyoneSub, node,
|
|
fmt.Sprintf("nickname=%s", a.Nickname), inspector.Low))
|
|
} else {
|
|
r = append(r, inspector.Warn("anyone.nickname", "Relay nickname configured", anyoneSub, node,
|
|
"no nickname in /etc/anon/anonrc", inspector.Low))
|
|
}
|
|
|
|
// --- Legacy client checks (if also running client service) ---
|
|
if a.ClientActive {
|
|
r = append(r, inspector.Pass("anyone.client_active", "Anyone client service active", anyoneSub, node,
|
|
"orama-anyone-client is active", inspector.High))
|
|
|
|
if a.SocksListening {
|
|
r = append(r, inspector.Pass("anyone.socks_listening", "SOCKS5 port 9050 listening", anyoneSub, node,
|
|
"port 9050 bound", inspector.High))
|
|
} else {
|
|
r = append(r, inspector.Fail("anyone.socks_listening", "SOCKS5 port 9050 listening", anyoneSub, node,
|
|
"port 9050 NOT bound", inspector.High))
|
|
}
|
|
}
|
|
|
|
return r
|
|
}
|
|
|
|
func checkAnyoneCrossNode(data *inspector.ClusterData) []inspector.CheckResult {
|
|
var r []inspector.CheckResult
|
|
|
|
// ORPort reachability: only check from/to relay-mode nodes
|
|
orportChecked := 0
|
|
orportReachable := 0
|
|
orportFailed := 0
|
|
|
|
for _, nd := range data.Nodes {
|
|
if nd.Anyone == nil {
|
|
continue
|
|
}
|
|
for host, ok := range nd.Anyone.ORPortReachable {
|
|
orportChecked++
|
|
if ok {
|
|
orportReachable++
|
|
} else {
|
|
orportFailed++
|
|
r = append(r, inspector.Fail("anyone.orport_reachable",
|
|
fmt.Sprintf("ORPort 9001 reachable on %s", host),
|
|
anyoneSub, nd.Node.Name(),
|
|
fmt.Sprintf("cannot TCP connect to %s:9001 from %s", host, nd.Node.Name()), inspector.High))
|
|
}
|
|
}
|
|
}
|
|
|
|
if orportChecked > 0 && orportFailed == 0 {
|
|
r = append(r, inspector.Pass("anyone.orport_reachable", "ORPort 9001 reachable across nodes", anyoneSub, "",
|
|
fmt.Sprintf("all %d cross-node connections OK", orportReachable), inspector.High))
|
|
}
|
|
|
|
return r
|
|
}
|