Browse Source

adding setpeers to client

afeiszli 4 years ago
parent
commit
7e7cf40d24

+ 1 - 1
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")

+ 5 - 6
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
         }

+ 0 - 1
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)

+ 16 - 4
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)