|
@@ -64,17 +64,18 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig
|
|
network = node.Network
|
|
network = node.Network
|
|
}
|
|
}
|
|
|
|
|
|
- _, delErr := local.RunCmd("ip link delete dev " + ifacename)
|
|
|
|
- _, addLinkErr := local.RunCmd(ipExec + " link add dev " + ifacename + " type wireguard")
|
|
|
|
- _, addErr := local.RunCmd(ipExec + " address add dev " + ifacename + " " + node.Address + "/24")
|
|
|
|
|
|
+ delOut, delErr := local.RunCmd("ip link delete dev " + ifacename)
|
|
|
|
+ addLinkOut, addLinkErr := local.RunCmd(ipExec + " link add dev " + ifacename + " type wireguard")
|
|
|
|
+ addOut, addErr := local.RunCmd(ipExec + " address add dev " + ifacename + " " + node.Address + "/24")
|
|
if delErr != nil {
|
|
if delErr != nil {
|
|
// pass
|
|
// pass
|
|
|
|
+ log.Println(delOut, delErr)
|
|
}
|
|
}
|
|
if addLinkErr != nil {
|
|
if addLinkErr != nil {
|
|
- log.Println(addLinkErr)
|
|
|
|
|
|
+ log.Println(addLinkOut, addLinkErr)
|
|
}
|
|
}
|
|
if addErr != nil {
|
|
if addErr != nil {
|
|
- log.Println(addErr)
|
|
|
|
|
|
+ log.Println(addOut, addErr)
|
|
}
|
|
}
|
|
var nodeport int
|
|
var nodeport int
|
|
nodeport = int(node.ListenPort)
|
|
nodeport = int(node.ListenPort)
|
|
@@ -122,21 +123,11 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig
|
|
_ = local.UpdateDNS(ifacename, network, nameserver)
|
|
_ = local.UpdateDNS(ifacename, network, nameserver)
|
|
}
|
|
}
|
|
//=========End DNS Setup=======\\
|
|
//=========End DNS Setup=======\\
|
|
-
|
|
|
|
- cmdIPLinkUp := &exec.Cmd{
|
|
|
|
- Path: ipExec,
|
|
|
|
- Args: []string{ipExec, "link", "set", "up", "dev", ifacename},
|
|
|
|
- Stdout: os.Stdout,
|
|
|
|
- Stderr: os.Stdout,
|
|
|
|
|
|
+ if ipLinkDownOut, err := local.RunCmd(ipExec + " link set down dev " + ifacename); err != nil {
|
|
|
|
+ log.Println(ipLinkDownOut, err)
|
|
|
|
+ return err
|
|
}
|
|
}
|
|
|
|
|
|
- cmdIPLinkDown := &exec.Cmd{
|
|
|
|
- Path: ipExec,
|
|
|
|
- Args: []string{ipExec, "link", "set", "down", "dev", ifacename},
|
|
|
|
- Stdout: os.Stdout,
|
|
|
|
- Stderr: os.Stdout,
|
|
|
|
- }
|
|
|
|
- err = cmdIPLinkDown.Run()
|
|
|
|
if nodecfg.PostDown != "" {
|
|
if nodecfg.PostDown != "" {
|
|
runcmds := strings.Split(nodecfg.PostDown, "; ")
|
|
runcmds := strings.Split(nodecfg.PostDown, "; ")
|
|
err = local.RunCmds(runcmds)
|
|
err = local.RunCmds(runcmds)
|
|
@@ -145,8 +136,8 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- err = cmdIPLinkUp.Run()
|
|
|
|
- if err != nil {
|
|
|
|
|
|
+ if ipLinkUpOut, err := local.RunCmd(ipExec + " link set up dev " + ifacename); err != nil {
|
|
|
|
+ log.Println(ipLinkUpOut, err)
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
@@ -162,16 +153,16 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig
|
|
out, err := local.RunCmd(ipExec + " -4 route add " + gateway + " dev " + ifacename)
|
|
out, err := local.RunCmd(ipExec + " -4 route add " + gateway + " dev " + ifacename)
|
|
fmt.Println(string(out))
|
|
fmt.Println(string(out))
|
|
if err != nil {
|
|
if err != nil {
|
|
- fmt.Println("Error encountered adding gateway: " + err.Error())
|
|
|
|
|
|
+ fmt.Println("error encountered adding gateway: " + err.Error())
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if node.Address6 != "" && node.IsDualStack == "yes" {
|
|
if node.Address6 != "" && node.IsDualStack == "yes" {
|
|
- fmt.Println("Adding address: " + node.Address6)
|
|
|
|
|
|
+ fmt.Println("adding address: " + node.Address6)
|
|
out, err := local.RunCmd(ipExec + " address add dev " + ifacename + " " + node.Address6 + "/64")
|
|
out, err := local.RunCmd(ipExec + " address add dev " + ifacename + " " + node.Address6 + "/64")
|
|
if err != nil {
|
|
if err != nil {
|
|
fmt.Println(out)
|
|
fmt.Println(out)
|
|
- fmt.Println("Error encountered adding ipv6: " + err.Error())
|
|
|
|
|
|
+ fmt.Println("error encountered adding ipv6: " + err.Error())
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -268,9 +259,9 @@ func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) error {
|
|
for _, currentPeer := range devicePeers {
|
|
for _, currentPeer := range devicePeers {
|
|
if currentPeer.AllowedIPs[0].String() == peer.AllowedIPs[0].String() &&
|
|
if currentPeer.AllowedIPs[0].String() == peer.AllowedIPs[0].String() &&
|
|
currentPeer.PublicKey.String() != peer.PublicKey.String() {
|
|
currentPeer.PublicKey.String() != peer.PublicKey.String() {
|
|
- _, err := local.RunCmd("wg set " + iface + " peer " + currentPeer.PublicKey.String() + " remove")
|
|
|
|
|
|
+ output, err := local.RunCmd("wg set " + iface + " peer " + currentPeer.PublicKey.String() + " remove")
|
|
if err != nil {
|
|
if err != nil {
|
|
- log.Println("error removing peer", peer.Endpoint.String())
|
|
|
|
|
|
+ log.Println(output, "error removing peer", peer.Endpoint.String())
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -285,18 +276,19 @@ func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) error {
|
|
if keepAliveString == "0" {
|
|
if keepAliveString == "0" {
|
|
keepAliveString = "5"
|
|
keepAliveString = "5"
|
|
}
|
|
}
|
|
|
|
+ var output string
|
|
if peer.Endpoint != nil {
|
|
if peer.Endpoint != nil {
|
|
- _, err = local.RunCmd("wg set " + iface + " peer " + peer.PublicKey.String() +
|
|
|
|
|
|
+ output, err = local.RunCmd("wg set " + iface + " peer " + peer.PublicKey.String() +
|
|
" endpoint " + udpendpoint +
|
|
" endpoint " + udpendpoint +
|
|
" persistent-keepalive " + keepAliveString +
|
|
" persistent-keepalive " + keepAliveString +
|
|
" allowed-ips " + allowedips)
|
|
" allowed-ips " + allowedips)
|
|
} else {
|
|
} else {
|
|
- _, err = local.RunCmd("wg set " + iface + " peer " + peer.PublicKey.String() +
|
|
|
|
|
|
+ output, err = local.RunCmd("wg set " + iface + " peer " + peer.PublicKey.String() +
|
|
" persistent-keepalive " + keepAliveString +
|
|
" persistent-keepalive " + keepAliveString +
|
|
" allowed-ips " + allowedips)
|
|
" allowed-ips " + allowedips)
|
|
}
|
|
}
|
|
if err != nil {
|
|
if err != nil {
|
|
- log.Println("error setting peer", peer.PublicKey.String(), err)
|
|
|
|
|
|
+ log.Println(output, "error setting peer", peer.PublicKey.String(), err)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -308,15 +300,15 @@ func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) error {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if shouldDelete {
|
|
if shouldDelete {
|
|
- _, err := local.RunCmd("wg set " + iface + " peer " + currentPeer.PublicKey.String() + " remove")
|
|
|
|
|
|
+ output, err := local.RunCmd("wg set " + iface + " peer " + currentPeer.PublicKey.String() + " remove")
|
|
if err != nil {
|
|
if err != nil {
|
|
- log.Println("error removing peer", currentPeer.PublicKey.String())
|
|
|
|
|
|
+ log.Println(output, "error removing peer", currentPeer.PublicKey.String())
|
|
} else {
|
|
} else {
|
|
log.Println("removed peer " + currentPeer.PublicKey.String())
|
|
log.Println("removed peer " + currentPeer.PublicKey.String())
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|