refactor join, fix network add; db retry connect; fix port issue; sqlite default

This commit is contained in:
afeiszli
2021-09-10 15:48:18 -04:00
parent a86047ae85
commit c0490061ee
12 changed files with 183 additions and 184 deletions

View File

@@ -5,6 +5,8 @@ on:
jobs: jobs:
tests: tests:
env:
DATABASE: rqlite
runs-on: ubuntu-latest runs-on: ubuntu-latest
services: services:
rqlite: rqlite:
@@ -18,3 +20,6 @@ jobs:
- name: run tests - name: run tests
run: | run: |
go test -p 1 ./... -v go test -p 1 ./... -v
env:
DATABASE: rqlite
CLIENT_MODE: "off"

View File

@@ -364,16 +364,6 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
returnErrorResponse(w, r, formatError(err, "badrequest")) returnErrorResponse(w, r, formatError(err, "badrequest"))
return return
} }
if servercfg.IsClientMode() {
success, err := serverctl.AddNetwork(network.NetID)
if err != nil || !success {
if err == nil {
err = errors.New("Failed to add server to network " + network.DisplayName)
}
returnErrorResponse(w, r, formatError(err, "internal"))
return
}
}
functions.PrintUserLog(r.Header.Get("user"), "created network "+network.NetID, 1) functions.PrintUserLog(r.Header.Get("user"), "created network "+network.NetID, 1)
w.WriteHeader(http.StatusOK) w.WriteHeader(http.StatusOK)
//json.NewEncoder(w).Encode(result) //json.NewEncoder(w).Encode(result)
@@ -400,7 +390,18 @@ func CreateNetwork(network models.Network) error {
return err return err
} }
return nil if servercfg.IsClientMode() {
var success bool
success, err = serverctl.AddNetwork(network.NetID)
if err != nil || !success {
DeleteNetwork(network.NetID)
if err == nil {
err = errors.New("Failed to add server to network " + network.DisplayName)
}
}
}
return err
} }
// BEGIN KEY MANAGEMENT SECTION // BEGIN KEY MANAGEMENT SECTION

View File

@@ -2,7 +2,9 @@ package database
import ( import (
"encoding/json" "encoding/json"
"time"
"errors" "errors"
"log"
"github.com/gravitl/netmaker/servercfg" "github.com/gravitl/netmaker/servercfg"
) )
@@ -37,14 +39,23 @@ func getCurrentDB() map[string]interface{} {
case "sqlite": case "sqlite":
return SQLITE_FUNCTIONS return SQLITE_FUNCTIONS
default: default:
return RQLITE_FUNCTIONS return SQLITE_FUNCTIONS
} }
} }
func InitializeDatabase() error { func InitializeDatabase() error {
log.Println("connecting to",servercfg.GetDB())
if err := getCurrentDB()[INIT_DB].(func() error)(); err != nil { tperiod := time.Now().Add(10 * time.Second)
return err for {
if err := getCurrentDB()[INIT_DB].(func() error)(); err != nil {
log.Println("unable to connect to db, retrying . . .")
if time.Now().After(tperiod) {
return err
}
} else {
break
}
time.Sleep(2 * time.Second)
} }
createTables() createTables()
return nil return nil

View File

@@ -1,7 +1,6 @@
package functions package functions
import ( import (
"crypto/tls"
"encoding/json" "encoding/json"
"errors" "errors"
"log" "log"
@@ -18,7 +17,6 @@ import (
"github.com/gravitl/netmaker/netclient/wireguard" "github.com/gravitl/netmaker/netclient/wireguard"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes" "golang.zx2c4.com/wireguard/wgctrl/wgtypes"
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/metadata" "google.golang.org/grpc/metadata"
//homedir "github.com/mitchellh/go-homedir" //homedir "github.com/mitchellh/go-homedir"
) )
@@ -168,14 +166,8 @@ func Pull(network string, manual bool) (*models.Node, error) {
return nil, err return nil, err
} }
} }
conn, err := grpc.Dial(cfg.Server.GRPCAddress,
var requestOpts grpc.DialOption netclientutils.GRPCRequestOpts(cfg.Server.GRPCSSL))
requestOpts = grpc.WithInsecure()
if cfg.Server.GRPCSSL == "on" {
h2creds := credentials.NewTLS(&tls.Config{NextProtos: []string{"h2"}})
requestOpts = grpc.WithTransportCredentials(h2creds)
}
conn, err := grpc.Dial(servercfg.GRPCAddress, requestOpts)
if err != nil { if err != nil {
log.Println("Cant dial GRPC server:", err) log.Println("Cant dial GRPC server:", err)
return nil, err return nil, err
@@ -253,17 +245,11 @@ func Push(network string) error {
postnode := cfg.Node postnode := cfg.Node
// always set the OS on client // always set the OS on client
postnode.OS = runtime.GOOS postnode.OS = runtime.GOOS
servercfg := cfg.Server
var header metadata.MD var header metadata.MD
var wcclient nodepb.NodeServiceClient var wcclient nodepb.NodeServiceClient
var requestOpts grpc.DialOption conn, err := grpc.Dial(cfg.Server.GRPCAddress,
requestOpts = grpc.WithInsecure() netclientutils.GRPCRequestOpts(cfg.Server.GRPCSSL))
if cfg.Server.GRPCSSL == "on" {
h2creds := credentials.NewTLS(&tls.Config{NextProtos: []string{"h2"}})
requestOpts = grpc.WithTransportCredentials(h2creds)
}
conn, err := grpc.Dial(servercfg.GRPCAddress, requestOpts)
if err != nil { if err != nil {
log.Println("Cant dial GRPC server:", err) log.Println("Cant dial GRPC server:", err)
return err return err

View File

@@ -2,7 +2,6 @@ package functions
import ( import (
"context" "context"
"crypto/tls"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
@@ -20,7 +19,6 @@ import (
"github.com/gravitl/netmaker/netclient/netclientutils" "github.com/gravitl/netmaker/netclient/netclientutils"
"golang.zx2c4.com/wireguard/wgctrl" "golang.zx2c4.com/wireguard/wgctrl"
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/metadata" "google.golang.org/grpc/metadata"
) )
@@ -121,13 +119,8 @@ func LeaveNetwork(network string) error {
node := cfg.Node node := cfg.Node
var wcclient nodepb.NodeServiceClient var wcclient nodepb.NodeServiceClient
var requestOpts grpc.DialOption conn, err := grpc.Dial(cfg.Server.GRPCAddress,
requestOpts = grpc.WithInsecure() netclientutils.GRPCRequestOpts(cfg.Server.GRPCSSL))
if cfg.Server.GRPCSSL == "on" {
h2creds := credentials.NewTLS(&tls.Config{NextProtos: []string{"h2"}})
requestOpts = grpc.WithTransportCredentials(h2creds)
}
conn, err := grpc.Dial(servercfg.GRPCAddress, requestOpts)
if err != nil { if err != nil {
log.Printf("Unable to establish client connection to "+servercfg.GRPCAddress+": %v", err) log.Printf("Unable to establish client connection to "+servercfg.GRPCAddress+": %v", err)
} else { } else {

View File

@@ -2,12 +2,10 @@ package functions
import ( import (
"context" "context"
"crypto/tls"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"log" "log"
"net"
nodepb "github.com/gravitl/netmaker/grpc" nodepb "github.com/gravitl/netmaker/grpc"
"github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/models"
@@ -17,10 +15,8 @@ import (
"github.com/gravitl/netmaker/netclient/netclientutils" "github.com/gravitl/netmaker/netclient/netclientutils"
"github.com/gravitl/netmaker/netclient/server" "github.com/gravitl/netmaker/netclient/server"
"github.com/gravitl/netmaker/netclient/wireguard" "github.com/gravitl/netmaker/netclient/wireguard"
"golang.zx2c4.com/wireguard/wgctrl"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes" "golang.zx2c4.com/wireguard/wgctrl/wgtypes"
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/grpc/credentials"
) )
func JoinNetwork(cfg config.ClientConfig, privateKey string) error { func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
@@ -30,90 +26,40 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
err := errors.New("ALREADY_INSTALLED. Netclient appears to already be installed for " + cfg.Network + ". To re-install, please remove by executing 'sudo netclient leave -n " + cfg.Network + "'. Then re-run the install command.") err := errors.New("ALREADY_INSTALLED. Netclient appears to already be installed for " + cfg.Network + ". To re-install, please remove by executing 'sudo netclient leave -n " + cfg.Network + "'. Then re-run the install command.")
return err return err
} }
log.Println("attempting to join " + cfg.Network + " at " + cfg.Server.GRPCAddress)
netclientutils.Log("attempting to join " + cfg.Network + " at " + cfg.Server.GRPCAddress)
err := config.Write(&cfg, cfg.Network) err := config.Write(&cfg, cfg.Network)
if err != nil { if err != nil {
return err return err
} }
wgclient, err := wgctrl.New()
if err != nil {
return err
}
defer wgclient.Close()
if cfg.Node.Network == "" { if cfg.Node.Network == "" {
return errors.New("no network provided") return errors.New("no network provided")
} }
if cfg.Node.LocalRange != "" {
if cfg.Node.LocalAddress == "" {
log.Println("local vpn, getting local address from range: " + cfg.Node.LocalRange)
ifaces, err := net.Interfaces()
if err != nil {
return err
}
_, localrange, err := net.ParseCIDR(cfg.Node.LocalRange)
if err != nil {
return err
}
var local string if cfg.Node.LocalRange != "" && cfg.Node.LocalAddress == "" {
found := false log.Println("local vpn, getting local address from range: " + cfg.Node.LocalRange)
for _, i := range ifaces { cfg.Node.LocalAddress = getLocalIP(cfg.Node)
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 err
}
for _, addr := range addrs {
var ip net.IP
switch v := addr.(type) {
case *net.IPNet:
if !found {
ip = v.IP
local = ip.String()
if cfg.Node.IsLocal == "yes" {
found = localrange.Contains(ip)
} else {
found = true
}
}
case *net.IPAddr:
if !found {
ip = v.IP
local = ip.String()
if cfg.Node.IsLocal == "yes" {
found = localrange.Contains(ip)
} else {
found = true
}
}
}
}
}
cfg.Node.LocalAddress = local
}
} }
if cfg.Node.Password == "" { if cfg.Node.Password == "" {
cfg.Node.Password = netclientutils.GenPass() cfg.Node.Password = netclientutils.GenPass()
} }
auth.StoreSecret(cfg.Node.Password, cfg.Node.Network) auth.StoreSecret(cfg.Node.Password, cfg.Node.Network)
// set endpoint if blank. set to local if local net, retrieve from function if not
if cfg.Node.Endpoint == "" { if cfg.Node.Endpoint == "" {
if cfg.Node.IsLocal == "yes" && cfg.Node.LocalAddress != "" { if cfg.Node.IsLocal == "yes" && cfg.Node.LocalAddress != "" {
cfg.Node.Endpoint = cfg.Node.LocalAddress cfg.Node.Endpoint = cfg.Node.LocalAddress
} else { } else {
cfg.Node.Endpoint, err = netclientutils.GetPublicIP() cfg.Node.Endpoint, err = netclientutils.GetPublicIP()
if err != nil {
fmt.Println("Error setting cfg.Node.Endpoint.") }
return err if err != nil || cfg.Node.Endpoint == "" {
} netclientutils.Log("Error setting cfg.Node.Endpoint.")
return err
} }
} }
// Generate and set public/private WireGuard Keys
if privateKey == "" { if privateKey == "" {
wgPrivatekey, err := wgtypes.GeneratePrivateKey() wgPrivatekey, err := wgtypes.GeneratePrivateKey()
if err != nil { if err != nil {
@@ -123,25 +69,22 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
cfg.Node.PublicKey = wgPrivatekey.PublicKey().String() cfg.Node.PublicKey = wgPrivatekey.PublicKey().String()
} }
// Find and set node MacAddress
if cfg.Node.MacAddress == "" { if cfg.Node.MacAddress == "" {
macs, err := netclientutils.GetMacAddr() macs, err := netclientutils.GetMacAddr()
if err != nil { if err != nil {
return err return err
} else if len(macs) == 0 { } else if len(macs) == 0 {
log.Fatal() log.Fatal("could not retrieve mac address")
} else { } else {
cfg.Node.MacAddress = macs[0] cfg.Node.MacAddress = macs[0]
} }
} }
var wcclient nodepb.NodeServiceClient var wcclient nodepb.NodeServiceClient
var requestOpts grpc.DialOption
requestOpts = grpc.WithInsecure() conn, err := grpc.Dial(cfg.Server.GRPCAddress,
if cfg.Server.GRPCSSL == "on" { netclientutils.GRPCRequestOpts(cfg.Server.GRPCSSL))
h2creds := credentials.NewTLS(&tls.Config{NextProtos: []string{"h2"}})
requestOpts = grpc.WithTransportCredentials(h2creds)
}
conn, err := grpc.Dial(cfg.Server.GRPCAddress, requestOpts)
if err != nil { if err != nil {
log.Fatalf("Unable to establish client connection to "+cfg.Server.GRPCAddress+": %v", err) log.Fatalf("Unable to establish client connection to "+cfg.Server.GRPCAddress+": %v", err)
@@ -175,6 +118,7 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
return err return err
} }
// Create node on server
res, err := wcclient.CreateNode( res, err := wcclient.CreateNode(
context.TODO(), context.TODO(),
&nodepb.Object{ &nodepb.Object{
@@ -193,17 +137,14 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
return err return err
} }
if node.ListenPort == 0 { // get free port based on returned default listen port
node.ListenPort, err = netclientutils.GetFreePort(51821) node.ListenPort, err = netclientutils.GetFreePort(node.ListenPort)
if err != nil { if err != nil {
fmt.Printf("Error retrieving port: %v", err) fmt.Printf("Error retrieving port: %v", err)
}
} }
if node.DNSOn == "yes" { // safety check. If returned node from server is local, but not currently configured as local, set to local addr
cfg.Node.DNSOn = "yes" if cfg.Node.IsLocal != "yes" && node.IsLocal == "yes" && node.LocalRange != "" {
}
if !(cfg.Node.IsLocal == "yes") && node.IsLocal == "yes" && node.LocalRange != "" {
node.LocalAddress, err = netclientutils.GetLocalIP(node.LocalRange) node.LocalAddress, err = netclientutils.GetLocalIP(node.LocalRange)
if err != nil { if err != nil {
return err return err
@@ -220,9 +161,15 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
return err return err
} }
// pushing any local changes to server before starting wireguard
err = Push(cfg.Network)
if err != nil {
return err
}
if node.IsPending == "yes" { if node.IsPending == "yes" {
fmt.Println("Node is marked as PENDING.") netclientutils.Log("Node is marked as PENDING.")
fmt.Println("Awaiting approval from Admin before configuring WireGuard.") netclientutils.Log("Awaiting approval from Admin before configuring WireGuard.")
if cfg.Daemon != "off" { if cfg.Daemon != "off" {
if netclientutils.IsWindows() { if netclientutils.IsWindows() {
// handle daemon here.. // handle daemon here..
@@ -233,15 +180,16 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
return err return err
} }
} }
log.Println("retrieving remote peers")
netclientutils.Log("retrieving remote peers")
peers, hasGateway, gateways, err := server.GetPeers(node.MacAddress, cfg.Network, cfg.Server.GRPCAddress, node.IsDualStack == "yes", node.IsIngressGateway == "yes") peers, hasGateway, gateways, err := server.GetPeers(node.MacAddress, cfg.Network, cfg.Server.GRPCAddress, node.IsDualStack == "yes", node.IsIngressGateway == "yes")
if err != nil && !netclientutils.IsEmptyRecord(err) { if err != nil && !netclientutils.IsEmptyRecord(err) {
log.Println("failed to retrieve peers", err) netclientutils.Log("failed to retrieve peers")
return err return err
} }
log.Println("starting wireguard") netclientutils.Log("starting wireguard")
err = wireguard.InitWireguard(&node, privateKey, peers, hasGateway, gateways) err = wireguard.InitWireguard(&node, privateKey, peers, hasGateway, gateways)
if err != nil { if err != nil {
return err return err

View File

@@ -0,0 +1,62 @@
package functions
import (
"github.com/gravitl/netmaker/models"
"net"
)
func getLocalIP(node models.Node) string{
var local string
ifaces, err := net.Interfaces()
if err != nil {
return local
}
_, localrange, err := net.ParseCIDR(node.LocalRange)
if err != nil {
return local
}
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 == "yes" {
found = localrange.Contains(ip)
} else {
found = true
}
}
case *net.IPAddr:
if !found {
ip = v.IP
local = ip.String()
if node.IsLocal == "yes" {
found = localrange.Contains(ip)
} else {
found = true
}
}
}
}
}
return local
}

View File

@@ -10,7 +10,7 @@ import (
"os/signal" "os/signal"
"strconv" "strconv"
"syscall" "syscall"
"runtime/debug"
"github.com/gravitl/netmaker/netclient/command" "github.com/gravitl/netmaker/netclient/command"
"github.com/gravitl/netmaker/netclient/config" "github.com/gravitl/netmaker/netclient/config"
"github.com/gravitl/netmaker/netclient/local" "github.com/gravitl/netmaker/netclient/local"
@@ -318,6 +318,8 @@ func main() {
}, },
} }
setGarbageCollection()
if netclientutils.IsWindows() { if netclientutils.IsWindows() {
ncwindows.InitWindows() ncwindows.InitWindows()
} else { } else {
@@ -364,3 +366,10 @@ func main() {
} }
} }
} }
func setGarbageCollection(){
_, gcset := os.LookupEnv("GOGC");
if !gcset {
debug.SetGCPercent(netclientutils.DEFAULT_GC_PERCENT)
}
}

View File

@@ -13,7 +13,9 @@ import (
"strconv" "strconv"
"strings" "strings"
"time" "time"
"crypto/tls"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"golang.zx2c4.com/wireguard/wgctrl" "golang.zx2c4.com/wireguard/wgctrl"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes" "golang.zx2c4.com/wireguard/wgctrl/wgtypes"
) )
@@ -23,6 +25,8 @@ const NO_DB_RECORDS = "could not find any records"
const LINUX_APP_DATA_PATH = "/etc/netclient" const LINUX_APP_DATA_PATH = "/etc/netclient"
const WINDOWS_APP_DATA_PATH = "C:\\ProgramData\\Netclient" const WINDOWS_APP_DATA_PATH = "C:\\ProgramData\\Netclient"
const WINDOWS_SVC_NAME = "netclient" const WINDOWS_SVC_NAME = "netclient"
const NETCLIENT_DEFAULT_PORT = 51821
const DEFAULT_GC_PERCENT = 10
func Log(message string) { func Log(message string) {
log.SetFlags(log.Flags() &^ (log.Llongfile | log.Lshortfile)) log.SetFlags(log.Flags() &^ (log.Llongfile | log.Lshortfile))
@@ -200,6 +204,9 @@ func GetLocalIP(localrange string) (string, error) {
} }
func GetFreePort(rangestart int32) (int32, error) { func GetFreePort(rangestart int32) (int32, error) {
if rangestart == 0 {
rangestart = NETCLIENT_DEFAULT_PORT
}
wgclient, err := wgctrl.New() wgclient, err := wgctrl.New()
if err != nil { if err != nil {
return 0, err return 0, err
@@ -208,9 +215,7 @@ func GetFreePort(rangestart int32) (int32, error) {
if err != nil { if err != nil {
return 0, err return 0, err
} }
var portno int32 for x := rangestart; x <= 65535; x++ {
portno = 0
for x := rangestart; x <= 60000; x++ {
conflict := false conflict := false
for _, i := range devices { for _, i := range devices {
if int32(i.ListenPort) == x { if int32(i.ListenPort) == x {
@@ -221,10 +226,9 @@ func GetFreePort(rangestart int32) (int32, error) {
if conflict { if conflict {
continue continue
} }
portno = x return int32(x), nil
break
} }
return portno, err return rangestart, err
} }
// == OS PATH FUNCTIONS == // == OS PATH FUNCTIONS ==
@@ -255,3 +259,13 @@ func GetNetclientPathSpecific() string {
return LINUX_APP_DATA_PATH + "/" return LINUX_APP_DATA_PATH + "/"
} }
} }
func GRPCRequestOpts(isSecure string) grpc.DialOption {
var requestOpts grpc.DialOption
requestOpts = grpc.WithInsecure()
if isSecure == "on" {
h2creds := credentials.NewTLS(&tls.Config{NextProtos: []string{"h2"}})
requestOpts = grpc.WithTransportCredentials(h2creds)
}
return requestOpts
}

View File

@@ -1,7 +1,6 @@
package server package server
import ( import (
"crypto/tls"
"encoding/json" "encoding/json"
"log" "log"
"net" "net"
@@ -12,25 +11,20 @@ import (
nodepb "github.com/gravitl/netmaker/grpc" nodepb "github.com/gravitl/netmaker/grpc"
"github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/netclient/auth" "github.com/gravitl/netmaker/netclient/auth"
"github.com/gravitl/netmaker/netclient/netclientutils"
"github.com/gravitl/netmaker/netclient/config" "github.com/gravitl/netmaker/netclient/config"
"github.com/gravitl/netmaker/netclient/local" "github.com/gravitl/netmaker/netclient/local"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes" "golang.zx2c4.com/wireguard/wgctrl/wgtypes"
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/metadata" "google.golang.org/grpc/metadata"
) )
func getGrpcClient(cfg *config.ClientConfig) (nodepb.NodeServiceClient, error) { func getGrpcClient(cfg *config.ClientConfig) (nodepb.NodeServiceClient, error) {
servercfg := cfg.Server
var wcclient nodepb.NodeServiceClient var wcclient nodepb.NodeServiceClient
// == GRPC SETUP == // == GRPC SETUP ==
var requestOpts grpc.DialOption conn, err := grpc.Dial(cfg.Server.GRPCAddress,
requestOpts = grpc.WithInsecure() netclientutils.GRPCRequestOpts(cfg.Server.GRPCSSL))
if cfg.Server.GRPCSSL == "on" {
h2creds := credentials.NewTLS(&tls.Config{NextProtos: []string{"h2"}})
requestOpts = grpc.WithTransportCredentials(h2creds)
}
conn, err := grpc.Dial(servercfg.GRPCAddress, requestOpts)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -83,13 +77,8 @@ func RemoveNetwork(network string) error {
log.Println("Deleting remote node with MAC: " + node.MacAddress) log.Println("Deleting remote node with MAC: " + node.MacAddress)
var wcclient nodepb.NodeServiceClient var wcclient nodepb.NodeServiceClient
var requestOpts grpc.DialOption conn, err := grpc.Dial(cfg.Server.GRPCAddress,
requestOpts = grpc.WithInsecure() netclientutils.GRPCRequestOpts(cfg.Server.GRPCSSL))
if cfg.Server.GRPCSSL == "on" {
h2creds := credentials.NewTLS(&tls.Config{NextProtos: []string{"h2"}})
requestOpts = grpc.WithTransportCredentials(h2creds)
}
conn, err := grpc.Dial(servercfg.GRPCAddress, requestOpts)
if err != nil { if err != nil {
log.Printf("Unable to establish client connection to "+servercfg.GRPCAddress+": %v", err) log.Printf("Unable to establish client connection to "+servercfg.GRPCAddress+": %v", err)
//return err //return err
@@ -147,13 +136,9 @@ func GetPeers(macaddress string, network string, server string, dualstack bool,
log.Fatalf("Issue with format of keepalive value. Please update netconfig: %v", err) log.Fatalf("Issue with format of keepalive value. Please update netconfig: %v", err)
} }
requestOpts := grpc.WithInsecure() conn, err := grpc.Dial(cfg.Server.GRPCAddress,
if cfg.Server.GRPCSSL == "on" { netclientutils.GRPCRequestOpts(cfg.Server.GRPCSSL))
h2creds := credentials.NewTLS(&tls.Config{NextProtos: []string{"h2"}})
requestOpts = grpc.WithTransportCredentials(h2creds)
}
conn, err := grpc.Dial(server, requestOpts)
if err != nil { if err != nil {
log.Fatalf("Unable to establish client connection to localhost:50051: %v", err) log.Fatalf("Unable to establish client connection to localhost:50051: %v", err)
} }
@@ -296,14 +281,8 @@ func GetExtPeers(macaddress string, network string, server string, dualstack boo
} }
nodecfg := cfg.Node nodecfg := cfg.Node
requestOpts := grpc.WithInsecure() conn, err := grpc.Dial(cfg.Server.GRPCAddress,
if cfg.Server.GRPCSSL == "on" { netclientutils.GRPCRequestOpts(cfg.Server.GRPCSSL))
h2creds := credentials.NewTLS(&tls.Config{NextProtos: []string{"h2"}})
requestOpts = grpc.WithTransportCredentials(h2creds)
}
conn, err := grpc.Dial(server, requestOpts)
if err != nil { if err != nil {
log.Fatalf("Unable to establish client connection to localhost:50051: %v", err) log.Fatalf("Unable to establish client connection to localhost:50051: %v", err)
} }

View File

@@ -84,7 +84,6 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig
} }
var nodeport int var nodeport int
nodeport = int(node.ListenPort) nodeport = int(node.ListenPort)
conf := wgtypes.Config{} conf := wgtypes.Config{}
if nodecfg.UDPHolePunch == "yes" && if nodecfg.UDPHolePunch == "yes" &&
nodecfg.IsServer == "no" && nodecfg.IsServer == "no" &&
@@ -127,14 +126,6 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig
return err return err
} }
devices, err := wgclient.Devices()
if err != nil {
log.Println("no devices found:", err)
}
for _, d := range devices {
log.Println("found wg device:", d.Name)
}
_, err = wgclient.Device(ifacename) _, err = wgclient.Device(ifacename)
if err != nil { if err != nil {
if os.IsNotExist(err) { if os.IsNotExist(err) {
@@ -144,7 +135,7 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig
log.Fatalf("Unknown config error: %v", err) log.Fatalf("Unknown config error: %v", err)
} }
} }
err = wgclient.ConfigureDevice(ifacename, conf) err = wgclient.ConfigureDevice(ifacename, conf)
if err != nil { if err != nil {
if os.IsNotExist(err) { if os.IsNotExist(err) {

View File

@@ -80,10 +80,10 @@ func GetVersion() string {
return version return version
} }
func GetDB() string { func GetDB() string {
database := "rqlite" database := "sqlite"
if os.Getenv("DATABASE") == "sqlite" { if os.Getenv("DATABASE") == "rqlite" {
database = os.Getenv("DATABASE") database = os.Getenv("DATABASE")
} else if config.Config.Server.Database == "sqlite" { } else if config.Config.Server.Database == "rqlite" {
database = config.Config.Server.Database database = config.Config.Server.Database
} }
return database return database