From 7e7cf40d24b1887319691e0822f58c16a47019c1 Mon Sep 17 00:00:00 2001 From: afeiszli Date: Wed, 28 Jul 2021 23:08:00 -0400 Subject: [PATCH] adding setpeers to client --- controllers/serverHttpController.go | 2 +- netclient/functions/checkin.go | 11 +++++------ netclient/server/grpc.go | 1 - netclient/wireguard/kernel.go | 20 ++++++++++++++++---- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/controllers/serverHttpController.go b/controllers/serverHttpController.go index b2e11168..cb5ce49b 100644 --- a/controllers/serverHttpController.go +++ b/controllers/serverHttpController.go @@ -12,7 +12,7 @@ import ( ) func serverHandlers(r *mux.Router) { - //r.HandleFunc("/api/server/addnetwork/{network}", securityCheckServer(http.HandlerFunc(addNetwork))).Methods("POST") + r.HandleFunc("/api/server/addnetwork/{network}", securityCheckServer(http.HandlerFunc(addNetwork))).Methods("POST") r.HandleFunc("/api/server/getconfig", securityCheckServer(http.HandlerFunc(getConfig))).Methods("GET") r.HandleFunc("/api/server/getwgconfig", securityCheckServer(http.HandlerFunc(getWGConfig))).Methods("GET") r.HandleFunc("/api/server/removenetwork/{network}", securityCheckServer(http.HandlerFunc(removeNetwork))).Methods("DELETE") diff --git a/netclient/functions/checkin.go b/netclient/functions/checkin.go index 36402039..d4f9b2b6 100644 --- a/netclient/functions/checkin.go +++ b/netclient/functions/checkin.go @@ -119,7 +119,7 @@ func CheckIn(cliconf config.ClientConfig) error { return err log.Fatalf("Error: %v", err) } - err = wireguard.SetWGConfig(network) + err = wireguard.SetWGConfig(network, false) if err != nil { return err log.Fatalf("Error: %v", err) @@ -203,7 +203,7 @@ func CheckIn(cliconf config.ClientConfig) error { if err != nil { fmt.Println("ERROR DELETING INTERFACE: " + currentiface) } - err = wireguard.SetWGConfig(network) + err = wireguard.SetWGConfig(network, false) if err != nil { log.Printf("Error updating interface: %v", err) } @@ -227,7 +227,7 @@ func CheckIn(cliconf config.ClientConfig) error { return err log.Fatalf("Error: %v", err) } - err = wireguard.SetWGConfig(network) + err = wireguard.SetWGConfig(network, false) if err != nil { return err log.Fatalf("Error: %v", err) @@ -252,7 +252,6 @@ func CheckIn(cliconf config.ClientConfig) error { return err log.Fatalf("Error: %v", err) } - //err = wireguard.SetWGConfig(network) if err != nil { return err log.Fatalf("Error: %v", err) @@ -272,7 +271,7 @@ func CheckIn(cliconf config.ClientConfig) error { if checkinres.Checkinresponse.Needpeerupdate { fmt.Println("Server has requested that node update peer list.") fmt.Println("Updating peer list from remote server.") - err = wireguard.SetWGConfig(network) + err = wireguard.SetWGConfig(network, true) if err != nil { return err log.Fatalf("Unable to process Set Peers request: %v", err) @@ -344,7 +343,7 @@ func Pull (network string) error{ if err != nil { return err } - err = wireguard.SetWGConfig(network) + err = wireguard.SetWGConfig(network, false) if err != nil { return err } diff --git a/netclient/server/grpc.go b/netclient/server/grpc.go index d4c41541..e5aaff1e 100644 --- a/netclient/server/grpc.go +++ b/netclient/server/grpc.go @@ -221,7 +221,6 @@ func GetPeers(macaddress string, network string, server string, dualstack bool, allowedips = append(allowedips, peeraddr) if res.Peers.Isegressgateway { hasGateway = true - log.Println(peeraddr.String(),"HAS GATEWAY",res.Peers.Egressgatewayranges) ranges := strings.Split(res.Peers.Egressgatewayranges, ",") for _, iprange := range ranges { gateways = append(gateways,iprange) diff --git a/netclient/wireguard/kernel.go b/netclient/wireguard/kernel.go index 6f8aa8a4..569ee443 100644 --- a/netclient/wireguard/kernel.go +++ b/netclient/wireguard/kernel.go @@ -382,7 +382,7 @@ func SetWGKeyConfig(network string, serveraddr string) error { if err != nil { return err } - err = SetWGConfig(network) + err = SetWGConfig(network, false) if err != nil { return err log.Fatalf("Error: %v", err) @@ -391,7 +391,7 @@ func SetWGKeyConfig(network string, serveraddr string) error { return err } -func SetWGConfig(network string) error { +func SetWGConfig(network string, peerupdate bool) error { cfg, err := config.ReadConfig(network) if err != nil { @@ -409,8 +409,11 @@ func SetWGConfig(network string) error { if err != nil { return err } - - err = InitWireguard(&node, privkey, peers, hasGateway, gateways) + if peerupdate { + SetPeers(node.Interface, peers) + } else { + err = InitWireguard(&node, privkey, peers, hasGateway, gateways) + } if err != nil { return err } @@ -418,6 +421,15 @@ func SetWGConfig(network string) error { return err } +func SetPeers(iface string, peers []wgtypes.PeerConfig) { + for _, peer := range peers { + err := exec.Command("wg","set",iface,"peer",peer.PublicKey.String() ,peer.Endpoint.String()).Run() + if err != nil { + log.Println("error setting peer",peer.Endpoint.String(),) + } + } +} + func StorePrivKey(key string, network string) error { d1 := []byte(key) err := ioutil.WriteFile("/etc/netclient/wgkey-"+network, d1, 0644)