Make get config load the config, use config in main method

This commit is contained in:
Kristoffer Dalby 2022-06-05 17:47:12 +02:00
parent c3db5ed749
commit af891808f6
3 changed files with 24 additions and 16 deletions

View file

@ -24,6 +24,11 @@ const (
) )
func getHeadscaleApp() (*headscale.Headscale, error) { func getHeadscaleApp() (*headscale.Headscale, error) {
cfg, err := headscale.GetHeadscaleConfig()
if err != nil {
return nil, fmt.Errorf("failed to load configuration while creating headscale instance: %w", err)
}
// Minimum inactivity time out is keepalive timeout (60s) plus a few seconds // Minimum inactivity time out is keepalive timeout (60s) plus a few seconds
// to avoid races // to avoid races
minInactivityTimeout, _ := time.ParseDuration("65s") minInactivityTimeout, _ := time.ParseDuration("65s")
@ -39,8 +44,6 @@ func getHeadscaleApp() (*headscale.Headscale, error) {
return nil, err return nil, err
} }
cfg := headscale.GetHeadscaleConfig()
app, err := headscale.NewHeadscale(cfg) app, err := headscale.NewHeadscale(cfg)
if err != nil { if err != nil {
return nil, err return nil, err
@ -63,7 +66,13 @@ func getHeadscaleApp() (*headscale.Headscale, error) {
} }
func getHeadscaleCLIClient() (context.Context, v1.HeadscaleServiceClient, *grpc.ClientConn, context.CancelFunc) { func getHeadscaleCLIClient() (context.Context, v1.HeadscaleServiceClient, *grpc.ClientConn, context.CancelFunc) {
cfg := headscale.GetHeadscaleConfig() cfg, err := headscale.GetHeadscaleConfig()
if err != nil {
log.Fatal().
Err(err).
Caller().
Msgf("Failed to load configuration")
}
log.Debug(). log.Debug().
Dur("timeout", cfg.CLI.Timeout). Dur("timeout", cfg.CLI.Timeout).

View file

@ -11,7 +11,6 @@ import (
"github.com/juanfont/headscale/cmd/headscale/cli" "github.com/juanfont/headscale/cmd/headscale/cli"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
"github.com/spf13/viper"
"github.com/tcnksm/go-latest" "github.com/tcnksm/go-latest"
) )
@ -44,19 +43,14 @@ func main() {
NoColor: !colors, NoColor: !colors,
}) })
if err := headscale.LoadConfig(""); err != nil { cfg, err := headscale.GetHeadscaleConfig()
if err != nil {
log.Fatal().Caller().Err(err) log.Fatal().Caller().Err(err)
} }
machineOutput := cli.HasMachineOutputFlag() machineOutput := cli.HasMachineOutputFlag()
logLevel := viper.GetString("log_level") zerolog.SetGlobalLevel(cfg.LogLevel)
level, err := zerolog.ParseLevel(logLevel)
if err != nil {
zerolog.SetGlobalLevel(zerolog.DebugLevel)
} else {
zerolog.SetGlobalLevel(level)
}
// If the user has requested a "machine" readable format, // If the user has requested a "machine" readable format,
// then disable login so the output remains valid. // then disable login so the output remains valid.
@ -64,7 +58,7 @@ func main() {
zerolog.SetGlobalLevel(zerolog.Disabled) zerolog.SetGlobalLevel(zerolog.Disabled)
} }
if !viper.GetBool("disable_check_updates") && !machineOutput { if !cfg.DisableUpdateCheck && !machineOutput {
if (runtime.GOOS == "linux" || runtime.GOOS == "darwin") && if (runtime.GOOS == "linux" || runtime.GOOS == "darwin") &&
cli.Version != "dev" { cli.Version != "dev" {
githubTag := &latest.GithubTag{ githubTag := &latest.GithubTag{

View file

@ -376,7 +376,12 @@ func GetDNSConfig() (*tailcfg.DNSConfig, string) {
return nil, "" return nil, ""
} }
func GetHeadscaleConfig() Config { func GetHeadscaleConfig() (*Config, error) {
err := LoadConfig("")
if err != nil {
return nil, err
}
dnsConfig, baseDomain := GetDNSConfig() dnsConfig, baseDomain := GetDNSConfig()
derpConfig := GetDERPConfig() derpConfig := GetDERPConfig()
logConfig := GetLogTailConfig() logConfig := GetLogTailConfig()
@ -435,7 +440,7 @@ func GetHeadscaleConfig() Config {
Msgf("'ip_prefixes' not configured, falling back to default: %v", prefixes) Msgf("'ip_prefixes' not configured, falling back to default: %v", prefixes)
} }
return Config{ return &Config{
ServerURL: viper.GetString("server_url"), ServerURL: viper.GetString("server_url"),
Addr: viper.GetString("listen_addr"), Addr: viper.GetString("listen_addr"),
MetricsAddr: viper.GetString("metrics_listen_addr"), MetricsAddr: viper.GetString("metrics_listen_addr"),
@ -495,5 +500,5 @@ func GetHeadscaleConfig() Config {
}, },
ACL: GetACLConfig(), ACL: GetACLConfig(),
} }, nil
} }