mirror of
https://github.com/gravitl/netmaker.git
synced 2024-11-11 01:54:34 +08:00
Merge pull request #429 from gravitl/hotfix_v0.8.5_multifix
Hotfix v0.8.5 multifix
This commit is contained in:
commit
b950818d0d
6 changed files with 128 additions and 9 deletions
61
compose/docker-compose.contained.yml
Normal file
61
compose/docker-compose.contained.yml
Normal file
|
@ -0,0 +1,61 @@
|
|||
version: "3.4"
|
||||
|
||||
services:
|
||||
netmaker:
|
||||
container_name: netmaker
|
||||
image: gravitl/netmaker:v0.8.5
|
||||
volumes:
|
||||
- dnsconfig:/root/config/dnsconfig
|
||||
- /usr/bin/wg:/usr/bin/wg
|
||||
- sqldata:/root/data
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
restart: always
|
||||
privileged: true
|
||||
environment:
|
||||
SERVER_HOST: "SERVER_PUBLIC_IP"
|
||||
SERVER_API_CONN_STRING: "api.NETMAKER_BASE_DOMAIN:443"
|
||||
SERVER_GRPC_CONN_STRING: "grpc.NETMAKER_BASE_DOMAIN:443"
|
||||
COREDNS_ADDR: "SERVER_PUBLIC_IP"
|
||||
GRPC_SSL: "on"
|
||||
DNS_MODE: "on"
|
||||
SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN"
|
||||
SERVER_GRPC_HOST: "grpc.NETMAKER_BASE_DOMAIN"
|
||||
API_PORT: "8081"
|
||||
GRPC_PORT: "50051"
|
||||
CLIENT_MODE: "on"
|
||||
MASTER_KEY: "REPLACE_MASTER_KEY"
|
||||
SERVER_GRPC_WIREGUARD: "off"
|
||||
CORS_ALLOWED_ORIGIN: "*"
|
||||
DATABASE: "sqlite"
|
||||
ports:
|
||||
- "51821-51830:51821-51830/udp"
|
||||
- "8081:8081"
|
||||
- "50051:50051"
|
||||
netmaker-ui:
|
||||
container_name: netmaker-ui
|
||||
depends_on:
|
||||
- netmaker
|
||||
image: gravitl/netmaker-ui:v0.8.5
|
||||
links:
|
||||
- "netmaker:api"
|
||||
ports:
|
||||
- "8082:80"
|
||||
environment:
|
||||
BACKEND_URL: "https://api.NETMAKER_BASE_DOMAIN"
|
||||
restart: always
|
||||
coredns:
|
||||
depends_on:
|
||||
- netmaker
|
||||
image: coredns/coredns
|
||||
command: -conf /root/dnsconfig/Corefile
|
||||
container_name: coredns
|
||||
restart: always
|
||||
ports:
|
||||
- "COREDNS_IP:53:53/udp"
|
||||
- "COREDNS_IP:53:53/tcp"
|
||||
volumes:
|
||||
- dnsconfig:/root/dnsconfig
|
||||
volumes:
|
||||
sqldata: {}
|
||||
dnsconfig: {}
|
|
@ -5,12 +5,18 @@ services:
|
|||
container_name: netmaker
|
||||
image: gravitl/netmaker:v0.8.5
|
||||
volumes:
|
||||
- dnsconfig:/root/config/dnsconfig
|
||||
- /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket
|
||||
- /run/systemd/system:/run/systemd/system
|
||||
- /etc/systemd/system:/etc/systemd/system
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup
|
||||
- /usr/bin/wg:/usr/bin/wg
|
||||
- dnsconfig:/root/config/dnsconfig
|
||||
- sqldata:/root/data
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_ADMIN
|
||||
restart: always
|
||||
network_mode: host
|
||||
privileged: true
|
||||
environment:
|
||||
SERVER_HOST: "SERVER_PUBLIC_IP"
|
||||
|
@ -28,10 +34,7 @@ services:
|
|||
SERVER_GRPC_WIREGUARD: "off"
|
||||
CORS_ALLOWED_ORIGIN: "*"
|
||||
DATABASE: "sqlite"
|
||||
ports:
|
||||
- "51821-51830:51821-51830/udp"
|
||||
- "8081:8081"
|
||||
- "50051:50051"
|
||||
NODE_ID: "netmaker-server-1"
|
||||
netmaker-ui:
|
||||
container_name: netmaker-ui
|
||||
depends_on:
|
||||
|
|
|
@ -6,6 +6,7 @@ import (
|
|||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
|
@ -208,6 +209,44 @@ func ModConfig(node *models.Node) error {
|
|||
return err
|
||||
}
|
||||
|
||||
// ModConfig - overwrites the node inside client config on disk
|
||||
func SaveBackup(network string) error {
|
||||
|
||||
var configPath = ncutils.GetNetclientPathSpecific() + "netconfig-" + network
|
||||
var backupPath = ncutils.GetNetclientPathSpecific() + "backup.netconfig-" + network
|
||||
if FileExists(configPath) {
|
||||
input, err := ioutil.ReadFile(configPath)
|
||||
if err != nil {
|
||||
ncutils.Log("failed to read " + configPath + " to make a backup")
|
||||
return err
|
||||
}
|
||||
if err = ioutil.WriteFile(backupPath, input, 0644); err != nil {
|
||||
ncutils.Log("failed to copy backup to " + backupPath)
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// ReplaceWithBackup - replaces netconfig file with backup
|
||||
func ReplaceWithBackup(network string) error {
|
||||
var backupPath = ncutils.GetNetclientPathSpecific() + "backup.netconfig-" + network
|
||||
var configPath = ncutils.GetNetclientPathSpecific() + "netconfig-" + network
|
||||
if FileExists(backupPath) {
|
||||
input, err := ioutil.ReadFile(backupPath)
|
||||
if err != nil {
|
||||
ncutils.Log("failed to read file " + backupPath + " to backup network: " + network)
|
||||
return err
|
||||
}
|
||||
if err = ioutil.WriteFile(configPath, input, 0644); err != nil {
|
||||
ncutils.Log("failed backup " + backupPath + " to " + configPath)
|
||||
return err
|
||||
}
|
||||
}
|
||||
ncutils.Log("used backup file for network: " + network)
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetCLIConfig - gets the cli flags as a config
|
||||
func GetCLIConfig(c *cli.Context) (ClientConfig, string, error) {
|
||||
var cfg ClientConfig
|
||||
|
@ -332,7 +371,13 @@ func ReadConfig(network string) (*ClientConfig, error) {
|
|||
f, err := os.Open(file)
|
||||
|
||||
if err != nil {
|
||||
nofile = true
|
||||
if err = ReplaceWithBackup(network); err != nil {
|
||||
nofile = true
|
||||
}
|
||||
f, err = os.Open(file)
|
||||
if err != nil {
|
||||
nofile = true
|
||||
}
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
|
|
|
@ -151,10 +151,11 @@ func CheckConfig(cliconf config.ClientConfig) error {
|
|||
// Pull - pulls the latest config from the server, if manual it will overwrite
|
||||
func Pull(network string, manual bool) (*models.Node, error) {
|
||||
cfg, err := config.ReadConfig(network)
|
||||
node := cfg.Node
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
node := cfg.Node
|
||||
servercfg := cfg.Server
|
||||
|
||||
if cfg.Node.IPForwarding == "yes" && !ncutils.IsWindows() {
|
||||
|
@ -243,6 +244,10 @@ func Pull(network string, manual bool) (*models.Node, error) {
|
|||
if ncutils.IsLinux() {
|
||||
setDNS(&resNode, servercfg, &cfg.Node)
|
||||
}
|
||||
var bkupErr = config.SaveBackup(network)
|
||||
if bkupErr != nil {
|
||||
ncutils.Log("unable to update backup file")
|
||||
}
|
||||
|
||||
return &resNode, err
|
||||
}
|
||||
|
|
|
@ -5,6 +5,9 @@ import (
|
|||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"os/exec"
|
||||
|
||||
nodepb "github.com/gravitl/netmaker/grpc"
|
||||
"github.com/gravitl/netmaker/models"
|
||||
"github.com/gravitl/netmaker/netclient/auth"
|
||||
|
@ -16,8 +19,6 @@ import (
|
|||
"github.com/gravitl/netmaker/netclient/wireguard"
|
||||
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
||||
"google.golang.org/grpc"
|
||||
"log"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
// JoinNetwork - helps a client join a network
|
||||
|
@ -185,6 +186,10 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// attempt to make backup
|
||||
if err = config.SaveBackup(node.Network); err != nil {
|
||||
ncutils.Log("failed to make backup, node will not auto restore if config is corrupted")
|
||||
}
|
||||
}
|
||||
|
||||
ncutils.Log("retrieving peers")
|
||||
|
|
Loading…
Reference in a new issue