mirror of
https://github.com/netbirdio/netbird.git
synced 2024-11-25 17:43:38 +01:00
70 lines
1.1 KiB
Go
70 lines
1.1 KiB
Go
package cmd
|
|
|
|
import (
|
|
"encoding/json"
|
|
ice "github.com/pion/ice/v2"
|
|
"github.com/wiretrustee/wiretrustee/connection"
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
// Config Configuration type
|
|
type Config struct {
|
|
// Wireguard private key of local peer
|
|
PrivateKey string
|
|
Peers []connection.Peer
|
|
StunTurnURLs []*ice.URL
|
|
// host:port of the signal server
|
|
SignalAddr string
|
|
WgAddr string
|
|
WgIface string
|
|
IFaceBlackList []string
|
|
}
|
|
|
|
//Write writes configPath to a file
|
|
func (cfg *Config) Write(path string) error {
|
|
|
|
if path == defaultConfigPath {
|
|
configDir := filepath.Dir(path)
|
|
err := os.MkdirAll(configDir, 0750)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
bs, err := json.Marshal(cfg)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = ioutil.WriteFile(path, bs, 0600)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
//Read reads configPath from a file
|
|
func Read(path string) (*Config, error) {
|
|
f, err := os.Open(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer f.Close()
|
|
|
|
bs, err := ioutil.ReadAll(f)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var cfg Config
|
|
err = json.Unmarshal(bs, &cfg)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &cfg, nil
|
|
}
|