Move Abspath function to headscale utils
This commit is contained in:
parent
06129277ed
commit
36dca3516a
2 changed files with 22 additions and 20 deletions
|
@ -9,7 +9,6 @@ import (
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -272,19 +271,6 @@ func GetDNSConfig() (*tailcfg.DNSConfig, string) {
|
||||||
return nil, ""
|
return nil, ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func AbsolutePathFromConfigPath(path string) string {
|
|
||||||
// If a relative path is provided, prefix it with the the directory where
|
|
||||||
// the config file was found.
|
|
||||||
if (path != "") && !strings.HasPrefix(path, string(os.PathSeparator)) {
|
|
||||||
dir, _ := filepath.Split(viper.ConfigFileUsed())
|
|
||||||
if dir != "" {
|
|
||||||
path = filepath.Join(dir, path)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return path
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetHeadscaleConfig() headscale.Config {
|
func GetHeadscaleConfig() headscale.Config {
|
||||||
dnsConfig, baseDomain := GetDNSConfig()
|
dnsConfig, baseDomain := GetDNSConfig()
|
||||||
derpConfig := GetDERPConfig()
|
derpConfig := GetDERPConfig()
|
||||||
|
@ -350,7 +336,7 @@ func GetHeadscaleConfig() headscale.Config {
|
||||||
GRPCAllowInsecure: viper.GetBool("grpc_allow_insecure"),
|
GRPCAllowInsecure: viper.GetBool("grpc_allow_insecure"),
|
||||||
|
|
||||||
IPPrefixes: prefixes,
|
IPPrefixes: prefixes,
|
||||||
PrivateKeyPath: AbsolutePathFromConfigPath(viper.GetString("private_key_path")),
|
PrivateKeyPath: headscale.AbsolutePathFromConfigPath(viper.GetString("private_key_path")),
|
||||||
BaseDomain: baseDomain,
|
BaseDomain: baseDomain,
|
||||||
|
|
||||||
DERP: derpConfig,
|
DERP: derpConfig,
|
||||||
|
@ -360,7 +346,7 @@ func GetHeadscaleConfig() headscale.Config {
|
||||||
),
|
),
|
||||||
|
|
||||||
DBtype: viper.GetString("db_type"),
|
DBtype: viper.GetString("db_type"),
|
||||||
DBpath: AbsolutePathFromConfigPath(viper.GetString("db_path")),
|
DBpath: headscale.AbsolutePathFromConfigPath(viper.GetString("db_path")),
|
||||||
DBhost: viper.GetString("db_host"),
|
DBhost: viper.GetString("db_host"),
|
||||||
DBport: viper.GetInt("db_port"),
|
DBport: viper.GetInt("db_port"),
|
||||||
DBname: viper.GetString("db_name"),
|
DBname: viper.GetString("db_name"),
|
||||||
|
@ -369,13 +355,13 @@ func GetHeadscaleConfig() headscale.Config {
|
||||||
|
|
||||||
TLSLetsEncryptHostname: viper.GetString("tls_letsencrypt_hostname"),
|
TLSLetsEncryptHostname: viper.GetString("tls_letsencrypt_hostname"),
|
||||||
TLSLetsEncryptListen: viper.GetString("tls_letsencrypt_listen"),
|
TLSLetsEncryptListen: viper.GetString("tls_letsencrypt_listen"),
|
||||||
TLSLetsEncryptCacheDir: AbsolutePathFromConfigPath(
|
TLSLetsEncryptCacheDir: headscale.AbsolutePathFromConfigPath(
|
||||||
viper.GetString("tls_letsencrypt_cache_dir"),
|
viper.GetString("tls_letsencrypt_cache_dir"),
|
||||||
),
|
),
|
||||||
TLSLetsEncryptChallengeType: viper.GetString("tls_letsencrypt_challenge_type"),
|
TLSLetsEncryptChallengeType: viper.GetString("tls_letsencrypt_challenge_type"),
|
||||||
|
|
||||||
TLSCertPath: AbsolutePathFromConfigPath(viper.GetString("tls_cert_path")),
|
TLSCertPath: headscale.AbsolutePathFromConfigPath(viper.GetString("tls_cert_path")),
|
||||||
TLSKeyPath: AbsolutePathFromConfigPath(viper.GetString("tls_key_path")),
|
TLSKeyPath: headscale.AbsolutePathFromConfigPath(viper.GetString("tls_key_path")),
|
||||||
TLSClientAuthMode: tlsClientAuthMode,
|
TLSClientAuthMode: tlsClientAuthMode,
|
||||||
|
|
||||||
DNSConfig: dnsConfig,
|
DNSConfig: dnsConfig,
|
||||||
|
@ -436,7 +422,7 @@ func getHeadscaleApp() (*headscale.Headscale, error) {
|
||||||
// We are doing this here, as in the future could be cool to have it also hot-reload
|
// We are doing this here, as in the future could be cool to have it also hot-reload
|
||||||
|
|
||||||
if cfg.ACL.PolicyPath != "" {
|
if cfg.ACL.PolicyPath != "" {
|
||||||
aclPath := AbsolutePathFromConfigPath(cfg.ACL.PolicyPath)
|
aclPath := headscale.AbsolutePathFromConfigPath(cfg.ACL.PolicyPath)
|
||||||
err = app.LoadACLPolicy(aclPath)
|
err = app.LoadACLPolicy(aclPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal().
|
log.Fatal().
|
||||||
|
|
16
utils.go
16
utils.go
|
@ -12,10 +12,13 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
|
"github.com/spf13/viper"
|
||||||
"inet.af/netaddr"
|
"inet.af/netaddr"
|
||||||
"tailscale.com/tailcfg"
|
"tailscale.com/tailcfg"
|
||||||
"tailscale.com/types/key"
|
"tailscale.com/types/key"
|
||||||
|
@ -334,3 +337,16 @@ func IsStringInSlice(slice []string, str string) bool {
|
||||||
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func AbsolutePathFromConfigPath(path string) string {
|
||||||
|
// If a relative path is provided, prefix it with the the directory where
|
||||||
|
// the config file was found.
|
||||||
|
if (path != "") && !strings.HasPrefix(path, string(os.PathSeparator)) {
|
||||||
|
dir, _ := filepath.Split(viper.ConfigFileUsed())
|
||||||
|
if dir != "" {
|
||||||
|
path = filepath.Join(dir, path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return path
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue