Merge pull request #429 from gravitl/hotfix_v0.8.5_multifix

Hotfix v0.8.5 multifix
This commit is contained in:
Alex 2021-11-03 16:54:14 -04:00 committed by GitHub
commit b950818d0d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 128 additions and 9 deletions

View 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: {}

View file

@ -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:

View file

@ -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()

View file

@ -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
}

View file

@ -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")