From a82bc33e598904f1394583194e0276fc8603db6b Mon Sep 17 00:00:00 2001 From: Matthew R Kasun Date: Thu, 4 Apr 2024 15:17:17 -0400 Subject: [PATCH 1/2] cleanup remove commented out code remove unused structs fix typos shellcheck --- agent/broker.go | 5 +-- agent/daemon.go | 15 +++---- agent/models.go | 9 ---- agent/publish.go | 12 +++-- agent/register.go | 8 ++-- app/plexus-agent/cmd/version.go | 2 +- app/plexus-agent/main.go | 2 +- app/plexus-server/broker.go | 48 -------------------- app/plexus-server/config.go | 2 +- app/plexus-server/nathandlers.go | 23 ---------- app/plexus-server/peers.go | 40 ----------------- app/plexus-server/router.go | 5 --- log.go | 1 - models.go | 77 +++----------------------------- scripts/update.sh | 6 +-- 15 files changed, 25 insertions(+), 230 deletions(-) diff --git a/agent/broker.go b/agent/broker.go index 9450542..be0c59e 100644 --- a/agent/broker.go +++ b/agent/broker.go @@ -43,9 +43,6 @@ func startBroker() (*server.Server, *nats.EncodedConn) { } func subcribe(ec *nats.EncodedConn) { - //ec.Subscribe(">", func(subj string, msg *any) { - //slog.Debug("received nats message", "subject", subj, "data", *msg) - //}) _, _ = ec.Subscribe(Agent+plexus.Status, func(subject, reply string, data any) { slog.Debug("status request received") if err := ec.Publish(reply, processStatus()); err != nil { @@ -237,7 +234,7 @@ func subcribeToServerTopics(self Device) { return } if err := startInterface(self, network); err != nil { - slog.Error("error starting interace", "interface", network.Interface, "network", network.Name, "error", err) + slog.Error("error starting interface", "interface", network.Interface, "network", network.Name, "error", err) return } }) diff --git a/agent/daemon.go b/agent/daemon.go index eb93f3e..9a6cb83 100644 --- a/agent/daemon.go +++ b/agent/daemon.go @@ -14,8 +14,6 @@ import ( "github.com/nats-io/nkeys" ) -var () - func Run() { plexus.SetLogging(Config.Verbosity) if err := boltdb.Initialize(path+"plexus-agent.db", []string{deviceTable, networkTable}); err != nil { @@ -34,7 +32,7 @@ func Run() { } startAllInterfaces(self) checkinTicker := time.NewTicker(checkinTime) - //serverTicker := time.NewTicker(serverCheckTime) + serverTicker := time.NewTicker(serverCheckTime) for { select { case <-quit: @@ -55,11 +53,11 @@ func Run() { return case <-checkinTicker.C: checkin() - //case <-serverTicker.C: + case <-serverTicker.C: // reconnect to servers in case server was down when tried to connect earlier - //slog.Debug("refreshing server connection") - //closeServerConnections() - //connectToServers() + slog.Debug("refreshing server connection") + closeServerConnections() + connectToServer(self) } } } @@ -120,11 +118,8 @@ func checkin() { slog.Error("get device", "error", err) return } - //stunCheck(self, checkPort(self.ListenPort)) checkinData.ID = self.WGPublicKey checkinData.Version = self.Version - //checkinData.ListenPort = self.ListenPort - //checkinData.PublicListenPort = self.PublicListenPort checkinData.Endpoint = self.Endpoint serverEC := serverConn.Load() if serverEC == nil { diff --git a/agent/models.go b/agent/models.go index 7e42cda..aff9a07 100644 --- a/agent/models.go +++ b/agent/models.go @@ -25,15 +25,6 @@ type StatusResponse struct { Networks []Network } -type ServerConnection struct { - Server string - Connected string -} - -type NetData struct { - Name string -} - type LeaveServerRequest struct { Force bool } diff --git a/agent/publish.go b/agent/publish.go index 4cb6dbd..91f5e6f 100644 --- a/agent/publish.go +++ b/agent/publish.go @@ -14,13 +14,11 @@ func publishDeviceUpdate(self *Device) { return } if err := serverEC.Publish(self.WGPublicKey+plexus.UpdatePeer, plexus.Peer{ - WGPublicKey: self.WGPublicKey, - PubNkey: self.PubNkey, - Version: self.Version, - Name: self.Name, - OS: self.OS, - //ListenPort: self.ListenPort, - //PublicListenPort: self.PublicListenPort, + WGPublicKey: self.WGPublicKey, + PubNkey: self.PubNkey, + Version: self.Version, + Name: self.Name, + OS: self.OS, Endpoint: self.Endpoint, NatsConnected: true, }, diff --git a/agent/register.go b/agent/register.go index a3f0fb0..c648bf0 100644 --- a/agent/register.go +++ b/agent/register.go @@ -115,11 +115,9 @@ func createPeer() (*plexus.Peer, *wgtypes.Key, string, error) { PubNkey: nkey, Name: name, Version: "v0.1.0", - //ListenPort: port, - //PublicListenPort: stunAddr.Port, - Endpoint: stunAddr.IP, - OS: runtime.GOOS, - Updated: time.Now(), + Endpoint: stunAddr.IP, + OS: runtime.GOOS, + Updated: time.Now(), } return peer, privKey, string(seed), nil } diff --git a/app/plexus-agent/cmd/version.go b/app/plexus-agent/cmd/version.go index f819ee5..e883c23 100644 --- a/app/plexus-agent/cmd/version.go +++ b/app/plexus-agent/cmd/version.go @@ -69,5 +69,5 @@ func init() { // Cobra supports local flags which will only run when this command // is called directly, e.g.: - versionCmd.Flags().BoolVarP(&long, "long", "l", false, "display server(s)/agent version infomation") + versionCmd.Flags().BoolVarP(&long, "long", "l", false, "display server(s)/agent version information") } diff --git a/app/plexus-agent/main.go b/app/plexus-agent/main.go index c0bb465..eececa6 100644 --- a/app/plexus-agent/main.go +++ b/app/plexus-agent/main.go @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/app/plexus-server/broker.go b/app/plexus-server/broker.go index c4d4efc..99de5ba 100644 --- a/app/plexus-server/broker.go +++ b/app/plexus-server/broker.go @@ -27,8 +27,6 @@ func broker(ctx context.Context, wg *sync.WaitGroup, tls *tls.Config) { brokerfail <- 1 return } - //TODO :: add users - // users := GetUsers() tokensUsers := getTokenUsers() deviceUsers := getDeviceUsers() natsOptions = &server.Options{ @@ -63,21 +61,10 @@ func broker(ctx context.Context, wg *sync.WaitGroup, tls *tls.Config) { slog.Error("not ready for connection", "error", err) return } - //connectOpts := nats.Options{ - // Url: nats.DefaultURL, - // //Url: "nats://localhost:4222", - // Nkey: adminPublicKey, - // Name: "nats-test-nkey", - // SignatureCB: func(nonce []byte) ([]byte, error) { - // return adminKey.Sign(nonce) - // }, - //} SignatureCB := func(nonce []byte) ([]byte, error) { return adminKey.Sign(nonce) } opts := []nats.Option{nats.Nkey(adminPublicKey, SignatureCB)} - //opts = append(opts, ) - //natsConn, err = connectOpts.Connect() natsConn, err = nats.Connect(fmt.Sprintf("nats://%s:4222", config.FQDN), opts...) if err != nil { slog.Error("nats connect", "error", err) @@ -91,26 +78,6 @@ func broker(ctx context.Context, wg *sync.WaitGroup, tls *tls.Config) { subscrptions := serverSubcriptions() - //configSub, err := encodedConn.Subscribe("config.*", func(sub, reply string, request any) { - //response := configHandler(sub) - // if err := encodedConn.Publish(reply, response); err != nil { - // slog.Error("pub response to config request", "error", err) - // } - //}) - //if err != nil { - // slog.Error("subcribe config", "error", err) - //} - //leaveSub, err := encodedConn.Subscribe("leave.*", func(subj, reply string, request *plexus.AgentRequest) { - // response := processLeave(request) - // slog.Debug("publish leave reply", "response", response) - // if err := encodedConn.Publish(reply, response); err != nil { - // slog.Error("leave reply", "error", err) - // } - //}) - //if err != nil { - // slog.Error("subscribe leave", "error", err) - //} - slog.Info("broker started") pingTicker := time.NewTicker(pingTick) keyTicker := time.NewTicker(keyTick) @@ -123,11 +90,6 @@ func broker(ctx context.Context, wg *sync.WaitGroup, tls *tls.Config) { for _, sub := range subscrptions { _ = sub.Drain() } - //registerSub.Drain() - //checkinSub.Drain() - //updateSub.Drain() - //configSub.Drain() - //leaveSub.Drain() return case token := <-newDevice: slog.Info("new login device", "device", token) @@ -269,17 +231,7 @@ func serverSubcriptions() []*nats.Subscription { subcriptions = append(subcriptions, register) //device subscriptions - //general - //general, err := eConn.Subscribe(">", func(subj, repl string, request *any) { - // slog.Debug("received request", "subject", subj, "message", request) - //}) - //if err != nil { - // slog.Error("subcribe general", "error", err) - //} - //subcriptions = append(subcriptions, general) - //checkin - checkin, err := eConn.Subscribe("*"+plexus.Checkin, func(subj, reply string, request *plexus.CheckinData) { if len(subj) != 52 { slog.Error("invalid subj", "subj", subj) diff --git a/app/plexus-server/config.go b/app/plexus-server/config.go index 775e59c..edcefba 100644 --- a/app/plexus-server/config.go +++ b/app/plexus-server/config.go @@ -90,7 +90,7 @@ func configureServer() (*tls.Config, error) { } } - // initalize database + // initialize database if err := os.MkdirAll(config.DBPath, os.ModePerm); err != nil { return nil, err } diff --git a/app/plexus-server/nathandlers.go b/app/plexus-server/nathandlers.go index b203969..1cda38e 100644 --- a/app/plexus-server/nathandlers.go +++ b/app/plexus-server/nathandlers.go @@ -159,14 +159,6 @@ func processCheckin(data *plexus.CheckinData) plexus.MessageResponse { if peer.Version != data.Version { peer.Version = data.Version } - //if peer.PublicListenPort != data.PublicListenPort { - // peer.PublicListenPort = data.PublicListenPort - // publishUpdate = true - //} - //if peer.ListenPort != data.ListenPort { - // peer.ListenPort = data.ListenPort - // publishUpdate = true - //} if !peer.Endpoint.Equal(data.Endpoint) { peer.Endpoint = data.Endpoint publishUpdate = true @@ -257,21 +249,6 @@ func processLeave(id string, request *plexus.LeaveRequest) plexus.MessageRespons } } -//func connectToNetwork(request *plexus.AgentRequest) plexus.ServerResponse { -// errResponse := plexus.ServerResponse{Error: true} -// response := plexus.ServerResponse{} -// slog.Debug("join request", "peer", request.Peer.WGPublicKey, "network", request.Network) -// network, err := addPeerToNetwork(request.Peer.WGPublicKey, request.Network) -// if err != nil { -// slog.Debug("add peer to network", "error", err) -// errResponse.Message = err.Error() -// return errResponse -// } -// response.Networks = append(response.Networks, network) -// response.Message = fmt.Sprintf("%s added to network %s", request.Peer.WGPublicKey, request.Network) -// return response -//} - func publishNetworkPeerUpdate(peer plexus.Peer) error { networks, err := boltdb.GetAll[plexus.Network](networkTable) if err != nil { diff --git a/app/plexus-server/peers.go b/app/plexus-server/peers.go index 0b33842..2e13692 100644 --- a/app/plexus-server/peers.go +++ b/app/plexus-server/peers.go @@ -170,43 +170,3 @@ func savePeer(peer plexus.Peer) { } } } - -//func processUpdate(request *plexus.AgentRequest) plexus.ServerResponse { -// network, err := boltdb.Get[plexus.Network](request.Network, networkTable) -// if err != nil { -// return plexus.ServerResponse{ -// Error: true, -// Message: "invalid network " + request.Network, -// } -// } -// found := false -// for i, peer := range network.Peers { -// if peer.WGPublicKey == request.NetworkPeer.WGPublicKey { -// network.Peers[i] = request.NetworkPeer -// found = true -// break -// } -// } -// if !found { -// return plexus.ServerResponse{ -// Error: true, -// Message: "invalid peer" + request.NetworkPeer.HostName, -// } -// } -// if err := boltdb.Save(network, network.Name, networkTable); err != nil { -// return plexus.ServerResponse{ -// Error: true, -// Message: "network not updated: " + err.Error(), -// } -// } -// slog.Debug("publishing network update", "network", request.Network, "action", plexus.UpdateNetworkPeer) -// if err := eConn.Publish("network."+network.Name, plexus.NetworkUpdate{ -// Action: plexus.UpdateNetworkPeer, -// Peer: request.NetworkPeer, -// }); err != nil { -// slog.Error("publish network update", "error", err) -// } -// return plexus.ServerResponse{ -// Message: fmt.Sprintf("network %s update", request.Network), -// } -//} diff --git a/app/plexus-server/router.go b/app/plexus-server/router.go index 5046172..21f25df 100644 --- a/app/plexus-server/router.go +++ b/app/plexus-server/router.go @@ -42,11 +42,6 @@ func setupRouter() *gin.Engine { c.FileFromFS(c.Request.URL.Path, http.FS(f)) }) _ = router.SetTrustedProxies(nil) - //config := sloggin.Config{ - // DefaultLevel: slog.LevelDebug, - // ClientErrorLevel: slog.LevelWarn, - // ServerErrorLevel: slog.LevelError, - //} router.Use(gin.Recovery(), session, weblogger()) router.GET("/", displayMain) router.POST("/", login) diff --git a/log.go b/log.go index beabf42..20f4903 100644 --- a/log.go +++ b/log.go @@ -18,7 +18,6 @@ func SetLogging(v string) { TimeFormat: time.Kitchen, Level: logLevel, })) - //logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{AddSource: true, ReplaceAttr: replace, Level: logLevel})) slog.SetDefault(logger) switch strings.ToUpper(v) { case "DEBUG": diff --git a/models.go b/models.go index ef21bcb..7b95f09 100644 --- a/models.go +++ b/models.go @@ -5,32 +5,9 @@ import ( "encoding/json" "log/slog" "net" - "net/http" "time" - - "github.com/gin-gonic/gin" ) -//type Action int -// -//const ( -// DeletePeer Action = iota //0 -// AddPeer //1 -// UpdatePeer //2 -// UpdateNetworkPeer //3 -// AddRelay //4 -// DeleteRelay //5 -// DeleteNetwork //6 -// JoinNetwork //7 -// LeaveNetwork //8 -// LeaveServer //9 -// Ping //10 -// Version //11 -// Checkin //12 -// GetConfig //13 -// SendListenPorts //14 -//) - // nats topics const ( DeletePeer = ".deletePeer" @@ -51,36 +28,11 @@ const ( Status = ".status" Version = ".version" Checkin = ".checkin" - GetConfig = ".getConfig" SendListenPorts = ".listenPorts" - Server = "server." Update = "update." Networks = "networks." ) -//func (i Action) String() string { -// return [...]string{"DeletePeer", "AddPeer", "UpdatePeer", "UpdateNetworkPeer", "AddRelay", "DelteRely", -// "DeleteNetwork", "JoinNetwork", "LeaveNetwork", "LeaveServer", "Ping", "Version", -// "Checkin", "GetConfig", "SendListenPorts"}[i] -//} - -type Settings struct { - Theme string `json:"theme" form:"theme"` - Font string `json:"font" form:"font"` - Refresh int `json:"refresh" form:"refresh"` -} - -type ErrorMessage struct { - Status string - Message string -} - -func (e *ErrorMessage) Process(c *gin.Context) { - slog.Error(e.Message, "status", e.Status) - c.HTML(http.StatusOK, "error", e) - c.Abort() -} - type ErrorResponse struct { Message string } @@ -141,30 +93,16 @@ type KeyValue struct { } type Peer struct { - WGPublicKey string - PubNkey string - Version string - Name string - OS string - //ListenPort int - //PublicListenPort int + WGPublicKey string + PubNkey string + Version string + Name string + OS string Endpoint net.IP Updated time.Time NatsConnected bool } -type NetworkPorts struct { - Name string - ListenPort int - PublicListenPort int - Endpoint string -} - -type ListenPorts struct { - Public int - Private int -} - type ServerRegisterRequest struct { KeyName string Peer @@ -210,11 +148,6 @@ type DeviceUpdate struct { Network Network } -//type Command struct { -//Command string -//Data any -//} - type RegisterRequest struct { Token string } diff --git a/scripts/update.sh b/scripts/update.sh index 7914d37..295325e 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -1,10 +1,10 @@ #!/bin/bash # -cd ~/plexus/app/plexus-server +cd ~/plexus/app/plexus-server || exit go build -ldflags "-s -w" -o /tmp/plexus-server . -cd ~/plexus/app/plexus-agent +cd ~/plexus/app/plexus-agent || exit go build -ldflags "-s -w" -o /tmp/plexus-agent . -cd /tmp +cd /tmp || exit scp plexus-server root@file.nusak.ca:/srv/http scp plexus-agent root@file.nusak.ca:/srv/http From 80687ff88a1a3ab3d1ec734d17f9f74928336c76 Mon Sep 17 00:00:00 2001 From: Matthew R Kasun Date: Thu, 4 Apr 2024 15:48:06 -0400 Subject: [PATCH 2/2] add error check --- agent/daemon.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/agent/daemon.go b/agent/daemon.go index 9a6cb83..151f5e9 100644 --- a/agent/daemon.go +++ b/agent/daemon.go @@ -57,7 +57,9 @@ func Run() { // reconnect to servers in case server was down when tried to connect earlier slog.Debug("refreshing server connection") closeServerConnections() - connectToServer(self) + if err := connectToServer(self); err != nil { + slog.Error("server connection", "error", err) + } } } }