Merge 512e1c8621 into aadf099f50
				
					
				
			This commit is contained in:
		
						commit
						9d78514a2e
					
				
							
								
								
									
										1
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										1
									
								
								go.mod
								
								
								
								
							| 
						 | 
					@ -4,6 +4,7 @@ go 1.14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require (
 | 
					require (
 | 
				
			||||||
	github.com/GeertJohan/go.rice v1.0.2
 | 
						github.com/GeertJohan/go.rice v1.0.2
 | 
				
			||||||
 | 
						github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect
 | 
				
			||||||
	github.com/glendc/go-external-ip v0.0.0-20170425150139-139229dcdddd
 | 
						github.com/glendc/go-external-ip v0.0.0-20170425150139-139229dcdddd
 | 
				
			||||||
	github.com/go-playground/universal-translator v0.17.0 // indirect
 | 
						github.com/go-playground/universal-translator v0.17.0 // indirect
 | 
				
			||||||
	github.com/gorilla/sessions v1.2.0
 | 
						github.com/gorilla/sessions v1.2.0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										2
									
								
								go.sum
								
								
								
								
							| 
						 | 
					@ -6,6 +6,8 @@ github.com/akavel/rsrc v0.8.0/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkK
 | 
				
			||||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 | 
					github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
 | 
					github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
 | 
				
			||||||
github.com/appleboy/gofight/v2 v2.1.2/go.mod h1:frW+U1QZEdDgixycTj4CygQ48yLTUhplt43+Wczp3rw=
 | 
					github.com/appleboy/gofight/v2 v2.1.2/go.mod h1:frW+U1QZEdDgixycTj4CygQ48yLTUhplt43+Wczp3rw=
 | 
				
			||||||
 | 
					github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ=
 | 
				
			||||||
 | 
					github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
 | 
				
			||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
 | 
					github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
 | 
				
			||||||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
 | 
					github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
 | 
				
			||||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
					github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										63
									
								
								util/util.go
								
								
								
								
							
							
						
						
									
										63
									
								
								util/util.go
								
								
								
								
							| 
						 | 
					@ -7,12 +7,14 @@ import (
 | 
				
			||||||
	"io/ioutil"
 | 
						"io/ioutil"
 | 
				
			||||||
	"net"
 | 
						"net"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
 | 
						"regexp"
 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"text/template"
 | 
						"text/template"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rice "github.com/GeertJohan/go.rice"
 | 
						rice "github.com/GeertJohan/go.rice"
 | 
				
			||||||
 | 
						"github.com/asaskevich/govalidator"
 | 
				
			||||||
	externalip "github.com/glendc/go-external-ip"
 | 
						externalip "github.com/glendc/go-external-ip"
 | 
				
			||||||
	"github.com/labstack/gommon/log"
 | 
						"github.com/labstack/gommon/log"
 | 
				
			||||||
	"github.com/ngoduykhanh/wireguard-ui/model"
 | 
						"github.com/ngoduykhanh/wireguard-ui/model"
 | 
				
			||||||
| 
						 | 
					@ -42,17 +44,11 @@ func BuildClientConfig(client model.Client, server model.Server, setting model.G
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	peerAllowedIPs := fmt.Sprintf("AllowedIPs = %s\n", strings.Join(client.AllowedIPs, ","))
 | 
						peerAllowedIPs := fmt.Sprintf("AllowedIPs = %s\n", strings.Join(client.AllowedIPs, ","))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	desiredHost := setting.EndpointAddress
 | 
						desiredHost, desiredPort, err := ParseEndpoint(setting.EndpointAddress, server.Interface.ListenPort)
 | 
				
			||||||
	desiredPort := server.Interface.ListenPort
 | 
					
 | 
				
			||||||
	if strings.Contains(desiredHost, ":") {
 | 
						if err != nil {
 | 
				
			||||||
		split := strings.Split(desiredHost, ":")
 | 
					 | 
				
			||||||
		desiredHost = split[0]
 | 
					 | 
				
			||||||
		if n, err := strconv.Atoi(split[1]); err == nil {
 | 
					 | 
				
			||||||
			desiredPort = n
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
		log.Error("Endpoint appears to be incorrectly formatted: ", err)
 | 
							log.Error("Endpoint appears to be incorrectly formatted: ", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	peerEndpoint := fmt.Sprintf("Endpoint = %s:%d\n", desiredHost, desiredPort)
 | 
						peerEndpoint := fmt.Sprintf("Endpoint = %s:%d\n", desiredHost, desiredPort)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	peerPersistentKeepalive := ""
 | 
						peerPersistentKeepalive := ""
 | 
				
			||||||
| 
						 | 
					@ -462,3 +458,52 @@ func LookupEnvOrStrings(key string, defaultVal []string) []string {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return defaultVal
 | 
						return defaultVal
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func RemoveIPv6Brackets(host string) string {
 | 
				
			||||||
 | 
						ipv6 := host
 | 
				
			||||||
 | 
						if matchBrackets, _ := regexp.MatchString(`^\[.*\]$`, ipv6); matchBrackets == true {
 | 
				
			||||||
 | 
							ipv6 = strings.Replace(ipv6, "[", "", -1)
 | 
				
			||||||
 | 
							ipv6 = strings.Replace(ipv6, "]", "", -1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//only remove brackets if valid ipv6 address
 | 
				
			||||||
 | 
							if govalidator.IsIPv6(ipv6) {
 | 
				
			||||||
 | 
								return ipv6
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return host
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func AddIPv6Brackets(host string) string {
 | 
				
			||||||
 | 
						ipv6 := host
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//only add brackets if valid ipv6 address
 | 
				
			||||||
 | 
						if govalidator.IsIPv6(ipv6) {
 | 
				
			||||||
 | 
							ipv6 = "[" + ipv6 + "]"
 | 
				
			||||||
 | 
							return ipv6
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return host
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func ParseEndpoint(host string, defaultPort int) (string, int, error) {
 | 
				
			||||||
 | 
						port := defaultPort
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//remove brackets from standalone IPv6 address
 | 
				
			||||||
 | 
						host = RemoveIPv6Brackets(host)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if govalidator.IsIPv4(host) || govalidator.IsIPv6(host) || govalidator.IsDNSName(host) {
 | 
				
			||||||
 | 
							return AddIPv6Brackets(host), port, nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//check if specific port contained
 | 
				
			||||||
 | 
						host, strPort, err := net.SplitHostPort(host)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return "", -1, errors.New("invalid Host")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						port, err = strconv.Atoi(strPort)
 | 
				
			||||||
 | 
						if err != nil || port > 65535 || port < 0 {
 | 
				
			||||||
 | 
							return "", -1, errors.New("invalid Port")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return AddIPv6Brackets(host), port, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue