adding setpeers to client

This commit is contained in:
afeiszli 2021-07-28 23:08:00 -04:00
parent 5bbfe73265
commit 7e7cf40d24
4 changed files with 22 additions and 12 deletions

View file

@ -12,7 +12,7 @@ import (
) )
func serverHandlers(r *mux.Router) { 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/getconfig", securityCheckServer(http.HandlerFunc(getConfig))).Methods("GET")
r.HandleFunc("/api/server/getwgconfig", securityCheckServer(http.HandlerFunc(getWGConfig))).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") r.HandleFunc("/api/server/removenetwork/{network}", securityCheckServer(http.HandlerFunc(removeNetwork))).Methods("DELETE")

View file

@ -119,7 +119,7 @@ func CheckIn(cliconf config.ClientConfig) error {
return err return err
log.Fatalf("Error: %v", err) log.Fatalf("Error: %v", err)
} }
err = wireguard.SetWGConfig(network) err = wireguard.SetWGConfig(network, false)
if err != nil { if err != nil {
return err return err
log.Fatalf("Error: %v", err) log.Fatalf("Error: %v", err)
@ -203,7 +203,7 @@ func CheckIn(cliconf config.ClientConfig) error {
if err != nil { if err != nil {
fmt.Println("ERROR DELETING INTERFACE: " + currentiface) fmt.Println("ERROR DELETING INTERFACE: " + currentiface)
} }
err = wireguard.SetWGConfig(network) err = wireguard.SetWGConfig(network, false)
if err != nil { if err != nil {
log.Printf("Error updating interface: %v", err) log.Printf("Error updating interface: %v", err)
} }
@ -227,7 +227,7 @@ func CheckIn(cliconf config.ClientConfig) error {
return err return err
log.Fatalf("Error: %v", err) log.Fatalf("Error: %v", err)
} }
err = wireguard.SetWGConfig(network) err = wireguard.SetWGConfig(network, false)
if err != nil { if err != nil {
return err return err
log.Fatalf("Error: %v", err) log.Fatalf("Error: %v", err)
@ -252,7 +252,6 @@ func CheckIn(cliconf config.ClientConfig) error {
return err return err
log.Fatalf("Error: %v", err) log.Fatalf("Error: %v", err)
} }
//err = wireguard.SetWGConfig(network)
if err != nil { if err != nil {
return err return err
log.Fatalf("Error: %v", err) log.Fatalf("Error: %v", err)
@ -272,7 +271,7 @@ func CheckIn(cliconf config.ClientConfig) error {
if checkinres.Checkinresponse.Needpeerupdate { if checkinres.Checkinresponse.Needpeerupdate {
fmt.Println("Server has requested that node update peer list.") fmt.Println("Server has requested that node update peer list.")
fmt.Println("Updating peer list from remote server.") fmt.Println("Updating peer list from remote server.")
err = wireguard.SetWGConfig(network) err = wireguard.SetWGConfig(network, true)
if err != nil { if err != nil {
return err return err
log.Fatalf("Unable to process Set Peers request: %v", err) log.Fatalf("Unable to process Set Peers request: %v", err)
@ -344,7 +343,7 @@ func Pull (network string) error{
if err != nil { if err != nil {
return err return err
} }
err = wireguard.SetWGConfig(network) err = wireguard.SetWGConfig(network, false)
if err != nil { if err != nil {
return err return err
} }

View file

@ -221,7 +221,6 @@ func GetPeers(macaddress string, network string, server string, dualstack bool,
allowedips = append(allowedips, peeraddr) allowedips = append(allowedips, peeraddr)
if res.Peers.Isegressgateway { if res.Peers.Isegressgateway {
hasGateway = true hasGateway = true
log.Println(peeraddr.String(),"HAS GATEWAY",res.Peers.Egressgatewayranges)
ranges := strings.Split(res.Peers.Egressgatewayranges, ",") ranges := strings.Split(res.Peers.Egressgatewayranges, ",")
for _, iprange := range ranges { for _, iprange := range ranges {
gateways = append(gateways,iprange) gateways = append(gateways,iprange)

View file

@ -382,7 +382,7 @@ func SetWGKeyConfig(network string, serveraddr string) error {
if err != nil { if err != nil {
return err return err
} }
err = SetWGConfig(network) err = SetWGConfig(network, false)
if err != nil { if err != nil {
return err return err
log.Fatalf("Error: %v", err) log.Fatalf("Error: %v", err)
@ -391,7 +391,7 @@ func SetWGKeyConfig(network string, serveraddr string) error {
return err return err
} }
func SetWGConfig(network string) error { func SetWGConfig(network string, peerupdate bool) error {
cfg, err := config.ReadConfig(network) cfg, err := config.ReadConfig(network)
if err != nil { if err != nil {
@ -409,8 +409,11 @@ func SetWGConfig(network string) error {
if err != nil { if err != nil {
return err return err
} }
if peerupdate {
SetPeers(node.Interface, peers)
} else {
err = InitWireguard(&node, privkey, peers, hasGateway, gateways) err = InitWireguard(&node, privkey, peers, hasGateway, gateways)
}
if err != nil { if err != nil {
return err return err
} }
@ -418,6 +421,15 @@ func SetWGConfig(network string) error {
return err 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 { func StorePrivKey(key string, network string) error {
d1 := []byte(key) d1 := []byte(key)
err := ioutil.WriteFile("/etc/netclient/wgkey-"+network, d1, 0644) err := ioutil.WriteFile("/etc/netclient/wgkey-"+network, d1, 0644)