Working on pining

This commit is contained in:
Owen
2025-06-13 16:15:49 -04:00
parent d0e220511a
commit 8d4d8b91b9

22
main.go
View File

@@ -53,9 +53,13 @@ type TargetData struct {
Targets []string `json:"targets"` Targets []string `json:"targets"`
} }
type ExitNodeData struct {
ExitNodes []ExitNode `json:"exitNodes"`
}
// ExitNode represents an exit node with an ID, endpoint, and weight. // ExitNode represents an exit node with an ID, endpoint, and weight.
type ExitNode struct { type ExitNode struct {
ID string `json:"id"` ID string `json:"exitNodeId"`
Endpoint string `json:"endpoint"` Endpoint string `json:"endpoint"`
Weight float64 `json:"weight"` Weight float64 `json:"weight"`
} }
@@ -75,7 +79,7 @@ func fixKey(key string) string {
} }
func ping(tnet *netstack.Net, dst string) error { func ping(tnet *netstack.Net, dst string) error {
logger.Info("Pinging %s", dst) logger.Debug("Pinging %s", dst)
socket, err := tnet.Dial("ping4", dst) socket, err := tnet.Dial("ping4", dst)
if err != nil { if err != nil {
return fmt.Errorf("failed to create ICMP socket: %w", err) return fmt.Errorf("failed to create ICMP socket: %w", err)
@@ -122,7 +126,7 @@ func ping(tnet *netstack.Net, dst string) error {
replyPing.Seq, replyPing.Data, requestPing.Seq, requestPing.Data) replyPing.Seq, replyPing.Data, requestPing.Seq, requestPing.Data)
} }
logger.Info("Ping latency: %v", time.Since(start)) logger.Debug("Ping latency: %v", time.Since(start))
return nil return nil
} }
@@ -636,16 +640,20 @@ persistent_keepalive_interval=5`, fixKey(privateKey.String()), fixKey(wgData.Pub
logger.Info("Received ping message") logger.Info("Received ping message")
// Parse the incoming list of exit nodes // Parse the incoming list of exit nodes
var exitNodes []ExitNode // Exit nodes is a json
var exitNodeData ExitNodeData
jsonData, err := json.Marshal(msg.Data) jsonData, err := json.Marshal(msg.Data)
if err != nil { if err != nil {
logger.Info("Error marshaling data: %v", err) logger.Info("Error marshaling data: %v", err)
return return
} }
if err := json.Unmarshal(jsonData, &exitNodes); err != nil { if err := json.Unmarshal(jsonData, &exitNodeData); err != nil {
logger.Info("Error unmarshaling exit node data: %v", err) logger.Info("Error unmarshaling exit node data: %v", err)
return return
} }
exitNodes := exitNodeData.ExitNodes
if len(exitNodes) == 0 { if len(exitNodes) == 0 {
logger.Info("No exit nodes provided") logger.Info("No exit nodes provided")
return return
@@ -705,8 +713,8 @@ persistent_keepalive_interval=5`, fixKey(privateKey.String()), fixKey(wgData.Pub
logger.Info("Selected exit node: %s (%s)", bestNode.ID, bestNode.Endpoint) logger.Info("Selected exit node: %s (%s)", bestNode.ID, bestNode.Endpoint)
err = client.SendMessage("newt/wg/register", map[string]interface{}{ err = client.SendMessage("newt/wg/register", map[string]interface{}{
"publicKey": publicKey.String(), "publicKey": publicKey.String(),
"exitNode": bestNode.ID, "exitNodeId": bestNode.ID,
}) })
if err != nil { if err != nil {
logger.Error("Failed to send registration message: %v", err) logger.Error("Failed to send registration message: %v", err)