mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-18 09:46:38 +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" {
|
||||
var success bool
|
||||
success, err = serverctl.AddNetwork(network.NetID)
|
||||
success, err = serverctl.AddNetwork(&network)
|
||||
if err != nil || !success {
|
||||
logic.DeleteNetwork(network.NetID)
|
||||
if err == nil {
|
||||
|
|
|
@ -13,7 +13,7 @@ import (
|
|||
)
|
||||
|
||||
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/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)
|
||||
}
|
||||
|
||||
func addNetwork(w http.ResponseWriter, r *http.Request) {
|
||||
// Set header
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
// func addNetwork(w http.ResponseWriter, r *http.Request) {
|
||||
// // Set header
|
||||
// w.Header().Set("Content-Type", "application/json")
|
||||
|
||||
// get params
|
||||
var params = mux.Vars(r)
|
||||
// // get params
|
||||
// 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 {
|
||||
json.NewEncoder(w).Encode("Could not add server to network " + params["network"])
|
||||
return
|
||||
}
|
||||
// if err != nil || !success {
|
||||
// json.NewEncoder(w).Encode("Could not add server to network " + params["network"])
|
||||
// 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
|
||||
|
||||
// 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")
|
||||
}
|
||||
|
||||
|
@ -40,6 +40,8 @@ func ServerJoin(network string, serverID string, privateKey string) error {
|
|||
Name: models.NODE_SERVER_NAME,
|
||||
MacAddress: serverID,
|
||||
UDPHolePunch: "no",
|
||||
IsLocal: networkSettings.IsLocal,
|
||||
LocalRange: networkSettings.LocalRange,
|
||||
}
|
||||
SetNodeDefaults(node)
|
||||
|
||||
|
@ -49,8 +51,12 @@ func ServerJoin(network string, serverID string, privateKey string) error {
|
|||
}
|
||||
|
||||
if node.LocalRange != "" && node.LocalAddress == "" {
|
||||
logger.Log(1, "local vpn, getting local address from range:", node.LocalRange)
|
||||
node.LocalAddress = GetLocalIP(*node)
|
||||
logger.Log(1, "local vpn, getting local address from range:", networkSettings.LocalRange)
|
||||
node.LocalAddress, err = getServerLocalIP(networkSettings)
|
||||
if err != nil {
|
||||
node.LocalAddress = ""
|
||||
node.IsLocal = "no"
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
if privateKey == "" {
|
||||
wgPrivatekey, err := wgtypes.GeneratePrivateKey()
|
||||
|
@ -76,7 +84,7 @@ func ServerJoin(network string, serverID string, privateKey string) error {
|
|||
node.PublicKey = wgPrivatekey.PublicKey().String()
|
||||
}
|
||||
|
||||
node.Network = network
|
||||
node.Network = networkSettings.NetID
|
||||
|
||||
logger.Log(2, "adding a server instance on network", node.Network)
|
||||
err = CreateNode(node)
|
||||
|
@ -421,3 +429,25 @@ func checkNodeActions(node *models.Node) string {
|
|||
}
|
||||
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 {
|
||||
success, err := AddNetwork(servernet.NetID)
|
||||
success, err := AddNetwork(&servernet)
|
||||
if err != nil || !success {
|
||||
if err == nil {
|
||||
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
|
||||
func AddNetwork(network string) (bool, error) {
|
||||
var err = logic.ServerJoin(network, servercfg.GetNodeID(), "")
|
||||
func AddNetwork(networkSettings *models.Network) (bool, error) {
|
||||
var err = logic.ServerJoin(networkSettings, servercfg.GetNodeID())
|
||||
return true, err
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue