Allow setting default config path and AdminListen at compile time

By providing the following items to `LDFLAGS`:

* `-X github.com/yggdrasil-network/yggdrasil-go/src/defaults.defaultConfig=/path/to/config`
* '-X github.com/yggdrasil-network/yggdrasil-go/src/defaults.defaultAdminListen=unix://path/to/sock'

Closes #818.
This commit is contained in:
Neil Alexander 2022-09-24 14:09:08 +01:00
parent 0abfe78858
commit 217ac39e77
No known key found for this signature in database
GPG Key ID: A02A2019A2BB0944
7 changed files with 26 additions and 10 deletions

View File

@ -4,6 +4,9 @@ import "github.com/yggdrasil-network/yggdrasil-go/src/config"
type MulticastInterfaceConfig = config.MulticastInterfaceConfig type MulticastInterfaceConfig = config.MulticastInterfaceConfig
var defaultConfig = "" // LDFLAGS='-X github.com/yggdrasil-network/yggdrasil-go/src/defaults.defaultConfig=/path/to/config
var defaultAdminListen = "" // LDFLAGS='-X github.com/yggdrasil-network/yggdrasil-go/src/defaults.defaultAdminListen=unix://path/to/sock'
// Defines which parameters are expected by default for configuration on a // Defines which parameters are expected by default for configuration on a
// specific platform. These values are populated in the relevant defaults_*.go // specific platform. These values are populated in the relevant defaults_*.go
// for the platform being targeted. They must be set. // for the platform being targeted. They must be set.
@ -23,21 +26,34 @@ type platformDefaultParameters struct {
DefaultIfName string DefaultIfName string
} }
func GetDefaults() platformDefaultParameters {
defaults := getDefaults()
if defaultConfig != "" {
defaults.DefaultConfigFile = defaultConfig
}
if defaultAdminListen != "" {
defaults.DefaultAdminListen = defaultAdminListen
}
return defaults
}
// Generates default configuration and returns a pointer to the resulting // Generates default configuration and returns a pointer to the resulting
// NodeConfig. This is used when outputting the -genconf parameter and also when // NodeConfig. This is used when outputting the -genconf parameter and also when
// using -autoconf. // using -autoconf.
func GenerateConfig() *config.NodeConfig { func GenerateConfig() *config.NodeConfig {
// Get the defaults for the platform.
defaults := GetDefaults()
// Create a node configuration and populate it. // Create a node configuration and populate it.
cfg := new(config.NodeConfig) cfg := new(config.NodeConfig)
cfg.NewKeys() cfg.NewKeys()
cfg.Listen = []string{} cfg.Listen = []string{}
cfg.AdminListen = GetDefaults().DefaultAdminListen cfg.AdminListen = defaults.DefaultAdminListen
cfg.Peers = []string{} cfg.Peers = []string{}
cfg.InterfacePeers = map[string][]string{} cfg.InterfacePeers = map[string][]string{}
cfg.AllowedPublicKeys = []string{} cfg.AllowedPublicKeys = []string{}
cfg.MulticastInterfaces = GetDefaults().DefaultMulticastInterfaces cfg.MulticastInterfaces = defaults.DefaultMulticastInterfaces
cfg.IfName = GetDefaults().DefaultIfName cfg.IfName = defaults.DefaultIfName
cfg.IfMTU = GetDefaults().DefaultIfMTU cfg.IfMTU = defaults.DefaultIfMTU
cfg.NodeInfoPrivacy = false cfg.NodeInfoPrivacy = false
return cfg return cfg

View File

@ -5,7 +5,7 @@ package defaults
// Sane defaults for the macOS/Darwin platform. The "default" options may be // Sane defaults for the macOS/Darwin platform. The "default" options may be
// may be replaced by the running configuration. // may be replaced by the running configuration.
func GetDefaults() platformDefaultParameters { func getDefaults() platformDefaultParameters {
return platformDefaultParameters{ return platformDefaultParameters{
// Admin // Admin
DefaultAdminListen: "unix:///var/run/yggdrasil.sock", DefaultAdminListen: "unix:///var/run/yggdrasil.sock",

View File

@ -5,7 +5,7 @@ package defaults
// Sane defaults for the BSD platforms. The "default" options may be // Sane defaults for the BSD platforms. The "default" options may be
// may be replaced by the running configuration. // may be replaced by the running configuration.
func GetDefaults() platformDefaultParameters { func getDefaults() platformDefaultParameters {
return platformDefaultParameters{ return platformDefaultParameters{
// Admin // Admin
DefaultAdminListen: "unix:///var/run/yggdrasil.sock", DefaultAdminListen: "unix:///var/run/yggdrasil.sock",

View File

@ -5,7 +5,7 @@ package defaults
// Sane defaults for the Linux platform. The "default" options may be // Sane defaults for the Linux platform. The "default" options may be
// may be replaced by the running configuration. // may be replaced by the running configuration.
func GetDefaults() platformDefaultParameters { func getDefaults() platformDefaultParameters {
return platformDefaultParameters{ return platformDefaultParameters{
// Admin // Admin
DefaultAdminListen: "unix:///var/run/yggdrasil.sock", DefaultAdminListen: "unix:///var/run/yggdrasil.sock",

View File

@ -5,7 +5,7 @@ package defaults
// Sane defaults for the BSD platforms. The "default" options may be // Sane defaults for the BSD platforms. The "default" options may be
// may be replaced by the running configuration. // may be replaced by the running configuration.
func GetDefaults() platformDefaultParameters { func getDefaults() platformDefaultParameters {
return platformDefaultParameters{ return platformDefaultParameters{
// Admin // Admin
DefaultAdminListen: "unix:///var/run/yggdrasil.sock", DefaultAdminListen: "unix:///var/run/yggdrasil.sock",

View File

@ -5,7 +5,7 @@ package defaults
// Sane defaults for the other platforms. The "default" options may be // Sane defaults for the other platforms. The "default" options may be
// may be replaced by the running configuration. // may be replaced by the running configuration.
func GetDefaults() platformDefaultParameters { func getDefaults() platformDefaultParameters {
return platformDefaultParameters{ return platformDefaultParameters{
// Admin // Admin
DefaultAdminListen: "tcp://localhost:9001", DefaultAdminListen: "tcp://localhost:9001",

View File

@ -5,7 +5,7 @@ package defaults
// Sane defaults for the Windows platform. The "default" options may be // Sane defaults for the Windows platform. The "default" options may be
// may be replaced by the running configuration. // may be replaced by the running configuration.
func GetDefaults() platformDefaultParameters { func getDefaults() platformDefaultParameters {
return platformDefaultParameters{ return platformDefaultParameters{
// Admin // Admin
DefaultAdminListen: "tcp://localhost:9001", DefaultAdminListen: "tcp://localhost:9001",