diff --git a/cli/cmd/network/create.go b/cli/cmd/network/create.go index 724d4d14..10615eed 100644 --- a/cli/cmd/network/create.go +++ b/cli/cmd/network/create.go @@ -53,7 +53,6 @@ var networkCreateCmd = &cobra.Command{ if allowManualSignUp { network.AllowManualSignUp = "yes" } - network.LocalRange = localRange network.DefaultExtClientDNS = defaultExtClientDNS network.DefaultMTU = int32(defaultMTU) } @@ -74,7 +73,6 @@ func init() { networkCreateCmd.Flags().StringVar(&defaultInterface, "interface", "", "Name of the network interface") networkCreateCmd.Flags().StringVar(&defaultPostUp, "post_up", "", "Commands to run after server is up `;` separated") networkCreateCmd.Flags().StringVar(&defaultPostDown, "post_down", "", "Commands to run after server is down `;` separated") - networkCreateCmd.Flags().StringVar(&localRange, "local_range", "", "Local CIDR range") networkCreateCmd.Flags().StringVar(&defaultExtClientDNS, "ext_client_dns", "", "IPv4 address of DNS server to be used by external clients") networkCreateCmd.Flags().IntVar(&defaultListenPort, "listen_port", 51821, "Default wireguard port each node will attempt to use") networkCreateCmd.Flags().IntVar(&nodeLimit, "node_limit", 999999999, "Maximum number of nodes that can be associated with this network") diff --git a/cli/cmd/network/flags.go b/cli/cmd/network/flags.go index 2c158f2a..38c1448d 100644 --- a/cli/cmd/network/flags.go +++ b/cli/cmd/network/flags.go @@ -16,7 +16,6 @@ var ( defaultPostDown string defaultKeepalive int allowManualSignUp bool - localRange string defaultExtClientDNS string defaultMTU int ) diff --git a/cli/cmd/network/update.go b/cli/cmd/network/update.go index 98717b29..e171487b 100644 --- a/cli/cmd/network/update.go +++ b/cli/cmd/network/update.go @@ -56,7 +56,6 @@ var networkUpdateCmd = &cobra.Command{ if allowManualSignUp { network.AllowManualSignUp = "yes" } - network.LocalRange = localRange network.DefaultExtClientDNS = defaultExtClientDNS network.DefaultMTU = int32(defaultMTU) } @@ -75,7 +74,6 @@ func init() { networkUpdateCmd.Flags().StringVar(&defaultInterface, "interface", "", "Name of the network interface") networkUpdateCmd.Flags().StringVar(&defaultPostUp, "post_up", "", "Commands to run after server is up `;` separated") networkUpdateCmd.Flags().StringVar(&defaultPostDown, "post_down", "", "Commands to run after server is down `;` separated") - networkUpdateCmd.Flags().StringVar(&localRange, "local_range", "", "Local CIDR range") networkUpdateCmd.Flags().StringVar(&defaultExtClientDNS, "ext_client_dns", "", "IPv4 address of DNS server to be used by external clients") networkUpdateCmd.Flags().IntVar(&defaultListenPort, "listen_port", 0, "Default wireguard port each node will attempt to use") networkUpdateCmd.Flags().IntVar(&nodeLimit, "node_limit", 0, "Maximum number of nodes that can be associated with this network") diff --git a/controllers/network.go b/controllers/network.go index 6dbdd6ae..026186a8 100644 --- a/controllers/network.go +++ b/controllers/network.go @@ -191,7 +191,7 @@ func updateNetwork(w http.ResponseWriter, r *http.Request) { newNetwork.DefaultPostUp = network.DefaultPostUp } - rangeupdate4, rangeupdate6, localrangeupdate, holepunchupdate, groupsDelta, userDelta, err := logic.UpdateNetwork(&network, &newNetwork) + rangeupdate4, rangeupdate6, holepunchupdate, groupsDelta, userDelta, err := logic.UpdateNetwork(&network, &newNetwork) if err != nil { logger.Log(0, r.Header.Get("user"), "failed to update network: ", err.Error()) @@ -237,17 +237,7 @@ func updateNetwork(w http.ResponseWriter, r *http.Request) { return } } - if localrangeupdate { - err = logic.UpdateNetworkLocalAddresses(network.NetID) - if err != nil { - logger.Log(0, r.Header.Get("user"), - fmt.Sprintf("failed to update network [%s] local addresses: %v", - network.NetID, err.Error())) - logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal")) - return - } - } - if rangeupdate4 || rangeupdate6 || localrangeupdate || holepunchupdate { + if rangeupdate4 || rangeupdate6 || holepunchupdate { nodes, err := logic.GetNetworkNodes(network.NetID) if err != nil { logger.Log(0, r.Header.Get("user"), diff --git a/controllers/network_test.go b/controllers/network_test.go index 7814c7f9..06f1a2f2 100644 --- a/controllers/network_test.go +++ b/controllers/network_test.go @@ -271,14 +271,6 @@ func TestValidateNetwork(t *testing.T) { }, errMessage: "Field validation for 'DefaultKeepalive' failed on the 'max' tag", }, - { - testname: "InvalidLocalRange", - network: models.Network{ - NetID: "skynet", - LocalRange: "192.168.0.1", - }, - errMessage: "Field validation for 'LocalRange' failed on the 'cidr' tag", - }, } for _, tc := range cases { t.Run(tc.testname, func(t *testing.T) { diff --git a/logic/accesskeys.go b/logic/accesskeys.go index b3f9ebc0..376d633f 100644 --- a/logic/accesskeys.go +++ b/logic/accesskeys.go @@ -40,10 +40,6 @@ func CreateAccessKey(accesskey models.AccessKey, network models.Network) (models return models.AccessKey{}, errors.New("duplicate AccessKey Name") } } - privAddr := "" - if network.IsLocal != "" { - privAddr = network.LocalRange - } netID := network.NetID @@ -52,7 +48,6 @@ func CreateAccessKey(accesskey models.AccessKey, network models.Network) (models accessToken.APIConnString = servercfg.GetAPIConnString() accessToken.ClientConfig.Network = netID accessToken.ClientConfig.Key = accesskey.Value - accessToken.ClientConfig.LocalRange = privAddr tokenjson, err := json.Marshal(accessToken) if err != nil { diff --git a/logic/hosts.go b/logic/hosts.go index d9d791b4..737375c8 100644 --- a/logic/hosts.go +++ b/logic/hosts.go @@ -117,10 +117,6 @@ func UpdateHost(newHost, currentHost *models.Host) { newHost.Name = currentHost.Name } - if newHost.LocalRange.String() != currentHost.LocalRange.String() { - newHost.LocalRange = currentHost.LocalRange - } - if newHost.MTU == 0 { newHost.MTU = currentHost.MTU } diff --git a/logic/networks.go b/logic/networks.go index 2823bc99..ae8b22d1 100644 --- a/logic/networks.go +++ b/logic/networks.go @@ -298,60 +298,6 @@ func UniqueAddress6(networkName string, reverse bool) (net.IP, error) { return add, errors.New("ERROR: No unique IPv6 addresses available. Check network subnet") } -// GetLocalIP - gets the local ip -func GetLocalIP(node models.Node) string { - var local string - ifaces, err := net.Interfaces() - if err != nil { - return local - } - host, err := GetHost(node.HostID.String()) - if err != nil { - return local - } - localrange := host.LocalRange - found := false - for _, i := range ifaces { - if i.Flags&net.FlagUp == 0 { - continue // interface down - } - if i.Flags&net.FlagLoopback != 0 { - continue // loopback interface - } - addrs, err := i.Addrs() - if err != nil { - return local - } - for _, addr := range addrs { - var ip net.IP - switch v := addr.(type) { - case *net.IPNet: - if !found { - ip = v.IP - local = ip.String() - if node.IsLocal { - found = localrange.Contains(ip) - } else { - found = true - } - } - case *net.IPAddr: - if !found { - ip = v.IP - local = ip.String() - if node.IsLocal { - found = localrange.Contains(ip) - - } else { - found = true - } - } - } - } - } - return local -} - // UpdateNetworkLocalAddresses - updates network localaddresses func UpdateNetworkLocalAddresses(networkName string) error { @@ -517,14 +463,13 @@ func IsNetworkNameUnique(network *models.Network) (bool, error) { } // UpdateNetwork - updates a network with another network's fields -func UpdateNetwork(currentNetwork *models.Network, newNetwork *models.Network) (bool, bool, bool, bool, []string, []string, error) { +func UpdateNetwork(currentNetwork *models.Network, newNetwork *models.Network) (bool, bool, bool, []string, []string, error) { if err := ValidateNetwork(newNetwork, true); err != nil { - return false, false, false, false, nil, nil, err + return false, false, false, nil, nil, err } if newNetwork.NetID == currentNetwork.NetID { hasrangeupdate4 := newNetwork.AddressRange != currentNetwork.AddressRange hasrangeupdate6 := newNetwork.AddressRange6 != currentNetwork.AddressRange6 - localrangeupdate := newNetwork.LocalRange != currentNetwork.LocalRange hasholepunchupdate := newNetwork.DefaultUDPHolePunch != currentNetwork.DefaultUDPHolePunch groupDelta := append(StringDifference(newNetwork.ProSettings.AllowedGroups, currentNetwork.ProSettings.AllowedGroups), StringDifference(currentNetwork.ProSettings.AllowedGroups, newNetwork.ProSettings.AllowedGroups)...) @@ -532,14 +477,14 @@ func UpdateNetwork(currentNetwork *models.Network, newNetwork *models.Network) ( StringDifference(currentNetwork.ProSettings.AllowedUsers, newNetwork.ProSettings.AllowedUsers)...) data, err := json.Marshal(newNetwork) if err != nil { - return false, false, false, false, nil, nil, err + return false, false, false, nil, nil, err } newNetwork.SetNetworkLastModified() err = database.Insert(newNetwork.NetID, string(data), database.NETWORKS_TABLE_NAME) - return hasrangeupdate4, hasrangeupdate6, localrangeupdate, hasholepunchupdate, groupDelta, userDelta, err + return hasrangeupdate4, hasrangeupdate6, hasholepunchupdate, groupDelta, userDelta, err } // copy values - return false, false, false, false, nil, nil, errors.New("failed to update network " + newNetwork.NetID + ", cannot change netid.") + return false, false, false, nil, nil, errors.New("failed to update network " + newNetwork.NetID + ", cannot change netid.") } // GetNetwork - gets a network from database diff --git a/models/accessToken.go b/models/accessToken.go index 61cd3a08..c3c4c0bf 100644 --- a/models/accessToken.go +++ b/models/accessToken.go @@ -8,7 +8,6 @@ type AccessToken struct { // ClientConfig - the config of the client type ClientConfig struct { - Network string `json:"network"` - Key string `json:"key"` - LocalRange string `json:"localrange"` + Network string `json:"network"` + Key string `json:"key"` } diff --git a/models/api_host.go b/models/api_host.go index 427e0876..c6306d93 100644 --- a/models/api_host.go +++ b/models/api_host.go @@ -13,7 +13,6 @@ type ApiHost struct { Debug bool `json:"debug"` IsStatic bool `json:"isstatic"` ListenPort int `json:"listenport"` - LocalRange string `json:"localrange"` LocalListenPort int `json:"locallistenport"` ProxyListenPort int `json:"proxy_listen_port"` MTU int `json:"mtu" yaml:"mtu"` @@ -50,10 +49,7 @@ func (h *Host) ConvertNMHostToAPI() *ApiHost { } a.IsStatic = h.IsStatic a.ListenPort = h.ListenPort - a.LocalRange = h.LocalRange.String() - if isEmptyAddr(a.LocalRange) { - a.LocalRange = "" - } + a.LocalListenPort = h.LocalListenPort a.MTU = h.MTU a.MacAddress = h.MacAddress.String() a.Name = h.Name @@ -106,14 +102,6 @@ func (a *ApiHost) ConvertAPIHostToNMHost(currentHost *Host) *Host { h.RelayedHosts = a.RelayedHosts h.IsRelay = a.IsRelay h.IsRelayed = a.IsRelayed - if len(a.LocalRange) > 0 { - _, localRange, err := net.ParseCIDR(a.LocalRange) - if err == nil { - h.LocalRange = *localRange - } - } else if !isEmptyAddr(currentHost.LocalRange.String()) { - h.LocalRange = currentHost.LocalRange - } h.ProxyEnabled = a.ProxyEnabled h.IsDefault = a.IsDefault diff --git a/models/host.go b/models/host.go index 30b0b8fc..4938aacd 100644 --- a/models/host.go +++ b/models/host.go @@ -25,8 +25,8 @@ type Host struct { Debug bool `json:"debug" yaml:"debug"` ListenPort int `json:"listenport" yaml:"listenport"` LocalAddress net.IPNet `json:"localaddress" yaml:"localaddress"` - LocalRange net.IPNet `json:"localrange" yaml:"localrange"` PublicListenPort int `json:"public_listen_port" yaml:"public_listen_port"` + LocalListenPort int `json:"locallistenport" yaml:"locallistenport"` ProxyListenPort int `json:"proxy_listen_port" yaml:"proxy_listen_port"` MTU int `json:"mtu" yaml:"mtu"` PublicKey wgtypes.Key `json:"publickey" yaml:"publickey"` diff --git a/models/network.go b/models/network.go index 3442e84d..7eb67d2a 100644 --- a/models/network.go +++ b/models/network.go @@ -7,7 +7,7 @@ import ( ) // Network Struct - contains info for a given unique network -//At some point, need to replace all instances of Name with something else like Identifier +// At some point, need to replace all instances of Name with something else like Identifier type Network struct { AddressRange string `json:"addressrange" bson:"addressrange" validate:"omitempty,cidrv4"` AddressRange6 string `json:"addressrange6" bson:"addressrange6" validate:"omitempty,cidrv6"` @@ -26,7 +26,6 @@ type Network struct { IsIPv4 string `json:"isipv4" bson:"isipv4" validate:"checkyesorno"` IsIPv6 string `json:"isipv6" bson:"isipv6" validate:"checkyesorno"` IsPointToSite string `json:"ispointtosite" bson:"ispointtosite" validate:"checkyesorno"` - LocalRange string `json:"localrange" bson:"localrange" validate:"omitempty,cidr"` DefaultUDPHolePunch string `json:"defaultudpholepunch" bson:"defaultudpholepunch" validate:"checkyesorno"` DefaultExtClientDNS string `json:"defaultextclientdns" bson:"defaultextclientdns"` DefaultMTU int32 `json:"defaultmtu" bson:"defaultmtu"` diff --git a/models/network_test.go b/models/network_test.go index f093f8d0..bd79398d 100644 --- a/models/network_test.go +++ b/models/network_test.go @@ -13,13 +13,4 @@ package models // assert.Equal(t, "NetID is not editable", err.Error()) // t.Log(err, Range, local) // }) -// t.Run("LocalRange", func(t *testing.T) { -// var networkupdate models.Network -// //NetID needs to be set as it will be in updateNetwork -// networkupdate.NetID = "skynet" -// networkupdate.LocalRange = "192.168.0.1/24" -// Range, local, err := network.Update(&networkupdate) -// assert.Nil(t, err) -// t.Log(err, Range, local) -// }) //} diff --git a/models/node.go b/models/node.go index 14f625d9..a0945b64 100644 --- a/models/node.go +++ b/models/node.go @@ -150,7 +150,6 @@ type LegacyNode struct { IsServer string `json:"isserver" bson:"isserver" yaml:"isserver" validate:"checkyesorno"` Action string `json:"action" bson:"action" yaml:"action"` IsLocal string `json:"islocal" bson:"islocal" yaml:"islocal" validate:"checkyesorno"` - LocalRange string `json:"localrange" bson:"localrange" yaml:"localrange"` IPForwarding string `json:"ipforwarding" bson:"ipforwarding" yaml:"ipforwarding" validate:"checkyesorno"` OS string `json:"os" bson:"os" yaml:"os"` MTU int32 `json:"mtu" bson:"mtu" yaml:"mtu"` @@ -495,13 +494,7 @@ func (ln *LegacyNode) ConvertToNewNode() (*Host, *Node) { host.HostPass = ln.Password host.Name = ln.Name host.ListenPort = int(ln.ListenPort) - if _, cidr, err := net.ParseCIDR(ln.LocalAddress); err == nil { - host.LocalRange = *cidr - } else { - if _, cidr, err := net.ParseCIDR(ln.LocalRange); err == nil { - host.LocalRange = *cidr - } - } + host.LocalListenPort = int(ln.LocalListenPort) host.ProxyListenPort = int(ln.ProxyListenPort) host.MTU = int(ln.MTU) host.PublicKey, _ = wgtypes.ParseKey(ln.PublicKey) @@ -594,7 +587,6 @@ func (n *Node) Legacy(h *Host, s *ServerConfig, net *Network) *LegacyNode { l.DNSOn = formatBool(n.DNSOn) l.Action = n.Action l.IsLocal = formatBool(n.IsLocal) - l.LocalRange = h.LocalRange.String() l.IPForwarding = formatBool(h.IPForwarding) l.OS = h.OS l.MTU = int32(h.MTU) diff --git a/serverctl/serverctl.go b/serverctl/serverctl.go index 42cd4b4e..242c5031 100644 --- a/serverctl/serverctl.go +++ b/serverctl/serverctl.go @@ -85,7 +85,7 @@ func setNetworkDefaults() error { } } else { network.SetDefaults() - _, _, _, _, _, _, err = logic.UpdateNetwork(&network, &network) + _, _, _, _, _, err = logic.UpdateNetwork(&network, &network) if err != nil { logger.Log(0, "could not set defaults on network", network.NetID) } diff --git a/swagger.yaml b/swagger.yaml index de95f8ea..fe81f6b3 100644 --- a/swagger.yaml +++ b/swagger.yaml @@ -291,9 +291,6 @@ definitions: ispointtosite: type: string x-go-name: IsPointToSite - localrange: - type: string - x-go-name: LocalRange netid: type: string x-go-name: NetID @@ -432,9 +429,6 @@ definitions: format: int32 type: integer x-go-name: LocalListenPort - localrange: - type: string - x-go-name: LocalRange macaddress: type: string x-go-name: MacAddress