diff --git a/client/internal/engine_test.go b/client/internal/engine_test.go index 56fef43e1..ea27da517 100644 --- a/client/internal/engine_test.go +++ b/client/internal/engine_test.go @@ -1403,7 +1403,7 @@ func startManagement(t *testing.T, dataDir, testFile string) (*grpc.Server, stri config := &server.Config{ Stuns: []*server.Host{}, TURNConfig: &server.TURNConfig{}, - Relay: &server.Relay{ + Relay: &types.Relay{ Addresses: []string{"127.0.0.1:1234"}, CredentialsTTL: util.Duration{Duration: time.Hour}, Secret: "222222222222222222", diff --git a/management/cmd/management.go b/management/cmd/management.go index 42919df9e..fa2de73c0 100644 --- a/management/cmd/management.go +++ b/management/cmd/management.go @@ -34,7 +34,9 @@ import ( "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/realip" "github.com/netbirdio/management-integrations/integrations" + "github.com/netbirdio/netbird/management/server/peers" + "github.com/netbirdio/netbird/management/server/types" "github.com/netbirdio/netbird/encryption" "github.com/netbirdio/netbird/formatter/hook" @@ -101,9 +103,9 @@ var ( // detect whether user specified a port userPort := cmd.Flag("port").Changed - config, err = loadMgmtConfig(ctx, MgmtConfig) + config, err = loadMgmtConfig(ctx, types.MgmtConfigPath) if err != nil { - return fmt.Errorf("failed reading provided config file: %s: %v", MgmtConfig, err) + return fmt.Errorf("failed reading provided config file: %s: %v", types.MgmtConfigPath, err) } if cmd.Flag(idpSignKeyRefreshEnabledFlagName).Changed { @@ -183,7 +185,7 @@ var ( if config.DataStoreEncryptionKey != key { log.WithContext(ctx).Infof("update config with activity store key") config.DataStoreEncryptionKey = key - err := updateMgmtConfig(ctx, MgmtConfig, config) + err := updateMgmtConfig(ctx, types.MgmtConfigPath, config) if err != nil { return fmt.Errorf("failed to write out store encryption key: %s", err) } @@ -636,7 +638,7 @@ func handleRebrand(cmd *cobra.Command) error { } } } - if MgmtConfig == defaultMgmtConfig { + if types.MgmtConfigPath == defaultMgmtConfig { if migrateToNetbird(oldDefaultMgmtConfig, defaultMgmtConfig) { cmd.Printf("will copy Config dir %s and its content to %s\n", oldDefaultMgmtConfigDir, defaultMgmtConfigDir) err = cpDir(oldDefaultMgmtConfigDir, defaultMgmtConfigDir) diff --git a/management/cmd/root.go b/management/cmd/root.go index 6d05c9563..31271a8c6 100644 --- a/management/cmd/root.go +++ b/management/cmd/root.go @@ -7,6 +7,7 @@ import ( "github.com/spf13/cobra" + "github.com/netbirdio/netbird/management/server/types" "github.com/netbirdio/netbird/version" ) @@ -19,7 +20,6 @@ const ( var ( dnsDomain string mgmtDataDir string - MgmtConfig string logLevel string logFile string disableMetrics bool @@ -56,7 +56,7 @@ func init() { mgmtCmd.Flags().IntVar(&mgmtPort, "port", 80, "server port to listen on (defaults to 443 if TLS is enabled, 80 otherwise") mgmtCmd.Flags().IntVar(&mgmtMetricsPort, "metrics-port", 9090, "metrics endpoint http port. Metrics are accessible under host:metrics-port/metrics") mgmtCmd.Flags().StringVar(&mgmtDataDir, "datadir", defaultMgmtDataDir, "server data directory location") - mgmtCmd.Flags().StringVar(&MgmtConfig, "config", defaultMgmtConfig, "Netbird config file location. Config params specified via command line (e.g. datadir) have a precedence over configuration from this file") + mgmtCmd.Flags().StringVar(&types.MgmtConfigPath, "config", defaultMgmtConfig, "Netbird config file location. Config params specified via command line (e.g. datadir) have a precedence over configuration from this file") mgmtCmd.Flags().StringVar(&mgmtLetsencryptDomain, "letsencrypt-domain", "", "a domain to issue Let's Encrypt certificate for. Enables TLS using Let's Encrypt. Will fetch and renew certificate, and run the server with TLS") mgmtCmd.Flags().StringVar(&mgmtSingleAccModeDomain, "single-account-mode-domain", defaultSingleAccModeDomain, "Enables single account mode. This means that all the users will be under the same account grouped by the specified domain. If the installation has more than one account, the property is ineffective. Enabled by default with the default domain "+defaultSingleAccModeDomain) mgmtCmd.Flags().BoolVar(&disableSingleAccMode, "disable-single-account-mode", false, "If set to true, disables single account mode. The --single-account-mode-domain property will be ignored and every new user will have a separate NetBird account.") diff --git a/management/server/config.go b/management/server/config.go index ce2ff4d16..3dfd1316a 100644 --- a/management/server/config.go +++ b/management/server/config.go @@ -5,6 +5,7 @@ import ( "github.com/netbirdio/netbird/management/server/idp" "github.com/netbirdio/netbird/management/server/store" + "github.com/netbirdio/netbird/management/server/types" "github.com/netbirdio/netbird/util" ) @@ -34,7 +35,7 @@ const ( type Config struct { Stuns []*Host TURNConfig *TURNConfig - Relay *Relay + Relay *types.Relay Signal *Host Datadir string @@ -76,12 +77,6 @@ type TURNConfig struct { Turns []*Host } -type Relay struct { - Addresses []string - CredentialsTTL util.Duration - Secret string -} - // HttpServerConfig is a config of the HTTP Management service server type HttpServerConfig struct { LetsEncryptDomain string diff --git a/management/server/token_mgr.go b/management/server/token_mgr.go index f8238aa16..59441daa7 100644 --- a/management/server/token_mgr.go +++ b/management/server/token_mgr.go @@ -13,6 +13,7 @@ import ( "github.com/netbirdio/netbird/management/proto" "github.com/netbirdio/netbird/management/server/settings" + "github.com/netbirdio/netbird/management/server/types" auth "github.com/netbirdio/netbird/relay/auth/hmac" authv2 "github.com/netbirdio/netbird/relay/auth/hmac/v2" @@ -33,7 +34,7 @@ type SecretsManager interface { type TimeBasedAuthSecretsManager struct { mux sync.Mutex turnCfg *TURNConfig - relayCfg *Relay + relayCfg *types.Relay turnHmacToken *auth.TimedHMAC relayHmacToken *authv2.Generator updateManager *PeersUpdateManager @@ -44,7 +45,7 @@ type TimeBasedAuthSecretsManager struct { type Token auth.Token -func NewTimeBasedAuthSecretsManager(updateManager *PeersUpdateManager, turnCfg *TURNConfig, relayCfg *Relay, settingsManager settings.Manager) *TimeBasedAuthSecretsManager { +func NewTimeBasedAuthSecretsManager(updateManager *PeersUpdateManager, turnCfg *TURNConfig, relayCfg *types.Relay, settingsManager settings.Manager) *TimeBasedAuthSecretsManager { mgr := &TimeBasedAuthSecretsManager{ updateManager: updateManager, turnCfg: turnCfg, diff --git a/management/server/token_mgr_test.go b/management/server/token_mgr_test.go index c07e40418..d505e6910 100644 --- a/management/server/token_mgr_test.go +++ b/management/server/token_mgr_test.go @@ -31,7 +31,7 @@ func TestTimeBasedAuthSecretsManager_GenerateCredentials(t *testing.T) { secret := "some_secret" peersManager := NewPeersUpdateManager(nil) - rc := &Relay{ + rc := &types.Relay{ Addresses: []string{"localhost:0"}, CredentialsTTL: ttl, Secret: secret, @@ -81,7 +81,7 @@ func TestTimeBasedAuthSecretsManager_SetupRefresh(t *testing.T) { peer := "some_peer" updateChannel := peersManager.CreateChannel(context.Background(), peer) - rc := &Relay{ + rc := &types.Relay{ Addresses: []string{"localhost:0"}, CredentialsTTL: ttl, Secret: secret, @@ -184,7 +184,7 @@ func TestTimeBasedAuthSecretsManager_CancelRefresh(t *testing.T) { peersManager := NewPeersUpdateManager(nil) peer := "some_peer" - rc := &Relay{ + rc := &types.Relay{ Addresses: []string{"localhost:0"}, CredentialsTTL: ttl, Secret: secret, diff --git a/management/server/types/config.go b/management/server/types/config.go new file mode 100644 index 000000000..02143051a --- /dev/null +++ b/management/server/types/config.go @@ -0,0 +1,13 @@ +package types + +import "github.com/netbirdio/netbird/util" + +// MgmtConfigPath Config path of the Management service +var MgmtConfigPath string + +// Relay configuration type +type Relay struct { + Addresses []string + CredentialsTTL util.Duration + Secret string +}