mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-20 10:45:53 +08:00
Merge pull request #604 from gravitl/bugfix_v0.9.4_localnets
Bugfix v0.9.4 localnets
This commit is contained in:
commit
4d36a6024b
4 changed files with 54 additions and 22 deletions
|
@ -227,7 +227,7 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
if servercfg.IsClientMode() != "off" {
|
if servercfg.IsClientMode() != "off" {
|
||||||
var success bool
|
var success bool
|
||||||
success, err = serverctl.AddNetwork(network.NetID)
|
success, err = serverctl.AddNetwork(&network)
|
||||||
if err != nil || !success {
|
if err != nil || !success {
|
||||||
logic.DeleteNetwork(network.NetID)
|
logic.DeleteNetwork(network.NetID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
|
|
@ -13,7 +13,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func serverHandlers(r *mux.Router) {
|
func serverHandlers(r *mux.Router) {
|
||||||
r.HandleFunc("/api/server/addnetwork/{network}", securityCheckServer(true, http.HandlerFunc(addNetwork))).Methods("POST")
|
// r.HandleFunc("/api/server/addnetwork/{network}", securityCheckServer(true, http.HandlerFunc(addNetwork))).Methods("POST")
|
||||||
r.HandleFunc("/api/server/getconfig", securityCheckServer(false, http.HandlerFunc(getConfig))).Methods("GET")
|
r.HandleFunc("/api/server/getconfig", securityCheckServer(false, http.HandlerFunc(getConfig))).Methods("GET")
|
||||||
r.HandleFunc("/api/server/removenetwork/{network}", securityCheckServer(true, http.HandlerFunc(removeNetwork))).Methods("DELETE")
|
r.HandleFunc("/api/server/removenetwork/{network}", securityCheckServer(true, http.HandlerFunc(removeNetwork))).Methods("DELETE")
|
||||||
}
|
}
|
||||||
|
@ -91,19 +91,21 @@ func getConfig(w http.ResponseWriter, r *http.Request) {
|
||||||
//w.WriteHeader(http.StatusOK)
|
//w.WriteHeader(http.StatusOK)
|
||||||
}
|
}
|
||||||
|
|
||||||
func addNetwork(w http.ResponseWriter, r *http.Request) {
|
// func addNetwork(w http.ResponseWriter, r *http.Request) {
|
||||||
// Set header
|
// // Set header
|
||||||
w.Header().Set("Content-Type", "application/json")
|
// w.Header().Set("Content-Type", "application/json")
|
||||||
|
|
||||||
// get params
|
// // get params
|
||||||
var params = mux.Vars(r)
|
// var params = mux.Vars(r)
|
||||||
|
// var networkName = params["network"]
|
||||||
|
// var networkSettings, err := logic.GetNetwork(netwnetworkName)
|
||||||
|
|
||||||
success, err := serverctl.AddNetwork(params["network"])
|
// success, err := serverctl.AddNetwork(params["network"])
|
||||||
|
|
||||||
if err != nil || !success {
|
// if err != nil || !success {
|
||||||
json.NewEncoder(w).Encode("Could not add server to network " + params["network"])
|
// json.NewEncoder(w).Encode("Could not add server to network " + params["network"])
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
|
|
||||||
json.NewEncoder(w).Encode("Server added to network " + params["network"])
|
// json.NewEncoder(w).Encode("Server added to network " + params["network"])
|
||||||
}
|
// }
|
||||||
|
|
|
@ -26,9 +26,9 @@ const KUBERNETES_LISTEN_PORT = 31821
|
||||||
const KUBERNETES_SERVER_MTU = 1024
|
const KUBERNETES_SERVER_MTU = 1024
|
||||||
|
|
||||||
// ServerJoin - responsible for joining a server to a network
|
// ServerJoin - responsible for joining a server to a network
|
||||||
func ServerJoin(network string, serverID string, privateKey string) error {
|
func ServerJoin(networkSettings *models.Network, serverID string) error {
|
||||||
|
|
||||||
if network == "" {
|
if networkSettings == nil || networkSettings.NetID == "" {
|
||||||
return errors.New("no network provided")
|
return errors.New("no network provided")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,6 +40,8 @@ func ServerJoin(network string, serverID string, privateKey string) error {
|
||||||
Name: models.NODE_SERVER_NAME,
|
Name: models.NODE_SERVER_NAME,
|
||||||
MacAddress: serverID,
|
MacAddress: serverID,
|
||||||
UDPHolePunch: "no",
|
UDPHolePunch: "no",
|
||||||
|
IsLocal: networkSettings.IsLocal,
|
||||||
|
LocalRange: networkSettings.LocalRange,
|
||||||
}
|
}
|
||||||
SetNodeDefaults(node)
|
SetNodeDefaults(node)
|
||||||
|
|
||||||
|
@ -49,8 +51,12 @@ func ServerJoin(network string, serverID string, privateKey string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if node.LocalRange != "" && node.LocalAddress == "" {
|
if node.LocalRange != "" && node.LocalAddress == "" {
|
||||||
logger.Log(1, "local vpn, getting local address from range:", node.LocalRange)
|
logger.Log(1, "local vpn, getting local address from range:", networkSettings.LocalRange)
|
||||||
node.LocalAddress = GetLocalIP(*node)
|
node.LocalAddress, err = getServerLocalIP(networkSettings)
|
||||||
|
if err != nil {
|
||||||
|
node.LocalAddress = ""
|
||||||
|
node.IsLocal = "no"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if node.Endpoint == "" {
|
if node.Endpoint == "" {
|
||||||
|
@ -65,6 +71,8 @@ func ServerJoin(network string, serverID string, privateKey string) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var privateKey = ""
|
||||||
|
|
||||||
// Generate and set public/private WireGuard Keys
|
// Generate and set public/private WireGuard Keys
|
||||||
if privateKey == "" {
|
if privateKey == "" {
|
||||||
wgPrivatekey, err := wgtypes.GeneratePrivateKey()
|
wgPrivatekey, err := wgtypes.GeneratePrivateKey()
|
||||||
|
@ -76,7 +84,7 @@ func ServerJoin(network string, serverID string, privateKey string) error {
|
||||||
node.PublicKey = wgPrivatekey.PublicKey().String()
|
node.PublicKey = wgPrivatekey.PublicKey().String()
|
||||||
}
|
}
|
||||||
|
|
||||||
node.Network = network
|
node.Network = networkSettings.NetID
|
||||||
|
|
||||||
logger.Log(2, "adding a server instance on network", node.Network)
|
logger.Log(2, "adding a server instance on network", node.Network)
|
||||||
err = CreateNode(node)
|
err = CreateNode(node)
|
||||||
|
@ -421,3 +429,25 @@ func checkNodeActions(node *models.Node) string {
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getServerLocalIP(networkSettings *models.Network) (string, error) {
|
||||||
|
|
||||||
|
var networkCIDR = networkSettings.LocalRange
|
||||||
|
var currentAddresses, _ = net.InterfaceAddrs()
|
||||||
|
var _, currentCIDR, cidrErr = net.ParseCIDR(networkCIDR)
|
||||||
|
if cidrErr != nil {
|
||||||
|
logger.Log(1, "error on server local IP, invalid CIDR provided:", networkCIDR)
|
||||||
|
return "", cidrErr
|
||||||
|
}
|
||||||
|
for _, addr := range currentAddresses {
|
||||||
|
ip, _, err := net.ParseCIDR(addr.String())
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if currentCIDR.Contains(ip) {
|
||||||
|
logger.Log(1, "found local ip on network,", networkSettings.NetID, ", set to", ip.String())
|
||||||
|
return ip.String(), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "", errors.New("could not find a local ip for server")
|
||||||
|
}
|
||||||
|
|
|
@ -103,7 +103,7 @@ func SyncNetworks(servernets []models.Network) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !exists {
|
if !exists {
|
||||||
success, err := AddNetwork(servernet.NetID)
|
success, err := AddNetwork(&servernet)
|
||||||
if err != nil || !success {
|
if err != nil || !success {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = errors.New("network add failed for " + servernet.NetID)
|
err = errors.New("network add failed for " + servernet.NetID)
|
||||||
|
@ -139,7 +139,7 @@ func SyncNetworks(servernets []models.Network) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddNetwork - add a network to server in client mode
|
// AddNetwork - add a network to server in client mode
|
||||||
func AddNetwork(network string) (bool, error) {
|
func AddNetwork(networkSettings *models.Network) (bool, error) {
|
||||||
var err = logic.ServerJoin(network, servercfg.GetNodeID(), "")
|
var err = logic.ServerJoin(networkSettings, servercfg.GetNodeID())
|
||||||
return true, err
|
return true, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue