mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			138 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package hsic
 | 
						|
 | 
						|
import "github.com/juanfont/headscale/hscontrol/types"
 | 
						|
 | 
						|
// const (
 | 
						|
// 	defaultEphemeralNodeInactivityTimeout = time.Second * 30
 | 
						|
// 	defaultNodeUpdateCheckInterval        = time.Second * 10
 | 
						|
// )
 | 
						|
 | 
						|
// TODO(kradalby): This approach doesnt work because we cannot
 | 
						|
// serialise our config object to YAML or JSON.
 | 
						|
// func DefaultConfig() headscale.Config {
 | 
						|
// 	derpMap, _ := url.Parse("https://controlplane.tailscale.com/derpmap/default")
 | 
						|
//
 | 
						|
// 	config := headscale.Config{
 | 
						|
// 		Log: headscale.LogConfig{
 | 
						|
// 			Level: zerolog.TraceLevel,
 | 
						|
// 		},
 | 
						|
// 		ACL:                            headscale.GetACLConfig(),
 | 
						|
// 		DBtype:                         "sqlite3",
 | 
						|
// 		EphemeralNodeInactivityTimeout: defaultEphemeralNodeInactivityTimeout,
 | 
						|
// 		NodeUpdateCheckInterval:        defaultNodeUpdateCheckInterval,
 | 
						|
// 		IPPrefixes: []netip.Prefix{
 | 
						|
// 			netip.MustParsePrefix("fd7a:115c:a1e0::/48"),
 | 
						|
// 			netip.MustParsePrefix("100.64.0.0/10"),
 | 
						|
// 		},
 | 
						|
// 		DNSConfig: &tailcfg.DNSConfig{
 | 
						|
// 			Proxied: true,
 | 
						|
// 			Nameservers: []netip.Addr{
 | 
						|
// 				netip.MustParseAddr("127.0.0.11"),
 | 
						|
// 				netip.MustParseAddr("1.1.1.1"),
 | 
						|
// 			},
 | 
						|
// 			Resolvers: []*dnstype.Resolver{
 | 
						|
// 				{
 | 
						|
// 					Addr: "127.0.0.11",
 | 
						|
// 				},
 | 
						|
// 				{
 | 
						|
// 					Addr: "1.1.1.1",
 | 
						|
// 				},
 | 
						|
// 			},
 | 
						|
// 		},
 | 
						|
// 		BaseDomain: "headscale.net",
 | 
						|
//
 | 
						|
// 		DBpath: "/tmp/integration_test_db.sqlite3",
 | 
						|
//
 | 
						|
// 		PrivateKeyPath:      "/tmp/integration_private.key",
 | 
						|
// 		NoisePrivateKeyPath: "/tmp/noise_integration_private.key",
 | 
						|
// 		Addr:                "0.0.0.0:8080",
 | 
						|
// 		MetricsAddr:         "127.0.0.1:9090",
 | 
						|
// 		ServerURL:           "http://headscale:8080",
 | 
						|
//
 | 
						|
// 		DERP: headscale.DERPConfig{
 | 
						|
// 			URLs: []url.URL{
 | 
						|
// 				*derpMap,
 | 
						|
// 			},
 | 
						|
// 			AutoUpdate:      false,
 | 
						|
// 			UpdateFrequency: 1 * time.Minute,
 | 
						|
// 		},
 | 
						|
// 	}
 | 
						|
//
 | 
						|
// 	return config
 | 
						|
// }
 | 
						|
 | 
						|
// TODO: Reuse the actual configuration object above.
 | 
						|
// Deprecated: use env function instead as it is easier to
 | 
						|
// override.
 | 
						|
func DefaultConfigYAML() string {
 | 
						|
	yaml := `
 | 
						|
log:
 | 
						|
  level: trace
 | 
						|
acl_policy_path: ""
 | 
						|
database:
 | 
						|
  type: sqlite3
 | 
						|
  sqlite.path: /tmp/integration_test_db.sqlite3
 | 
						|
ephemeral_node_inactivity_timeout: 30m
 | 
						|
prefixes:
 | 
						|
  v6: fd7a:115c:a1e0::/48
 | 
						|
  v4: 100.64.0.0/10
 | 
						|
dns_config:
 | 
						|
  base_domain: headscale.net
 | 
						|
  magic_dns: true
 | 
						|
  domains: []
 | 
						|
  nameservers:
 | 
						|
    - 127.0.0.11
 | 
						|
    - 1.1.1.1
 | 
						|
private_key_path: /tmp/private.key
 | 
						|
noise:
 | 
						|
  private_key_path: /tmp/noise_private.key
 | 
						|
listen_addr: 0.0.0.0:8080
 | 
						|
metrics_listen_addr: 127.0.0.1:9090
 | 
						|
server_url: http://headscale:8080
 | 
						|
 | 
						|
derp:
 | 
						|
  urls:
 | 
						|
    - https://controlplane.tailscale.com/derpmap/default
 | 
						|
  auto_update_enabled: false
 | 
						|
  update_frequency: 1m
 | 
						|
`
 | 
						|
 | 
						|
	return yaml
 | 
						|
}
 | 
						|
 | 
						|
func MinimumConfigYAML() string {
 | 
						|
	return `
 | 
						|
private_key_path: /tmp/private.key
 | 
						|
noise:
 | 
						|
  private_key_path: /tmp/noise_private.key
 | 
						|
`
 | 
						|
}
 | 
						|
 | 
						|
func DefaultConfigEnv() map[string]string {
 | 
						|
	return map[string]string{
 | 
						|
		"HEADSCALE_LOG_LEVEL":                         "trace",
 | 
						|
		"HEADSCALE_ACL_POLICY_PATH":                   "",
 | 
						|
		"HEADSCALE_DATABASE_TYPE":                     "sqlite",
 | 
						|
		"HEADSCALE_DATABASE_SQLITE_PATH":              "/tmp/integration_test_db.sqlite3",
 | 
						|
		"HEADSCALE_EPHEMERAL_NODE_INACTIVITY_TIMEOUT": "30m",
 | 
						|
		"HEADSCALE_PREFIXES_V4":                       "100.64.0.0/10",
 | 
						|
		"HEADSCALE_PREFIXES_V6":                       "fd7a:115c:a1e0::/48",
 | 
						|
		"HEADSCALE_DNS_CONFIG_BASE_DOMAIN":            "headscale.net",
 | 
						|
		"HEADSCALE_DNS_CONFIG_MAGIC_DNS":              "true",
 | 
						|
		"HEADSCALE_DNS_CONFIG_DOMAINS":                "",
 | 
						|
		"HEADSCALE_DNS_CONFIG_NAMESERVERS":            "127.0.0.11 1.1.1.1",
 | 
						|
		"HEADSCALE_PRIVATE_KEY_PATH":                  "/tmp/private.key",
 | 
						|
		"HEADSCALE_NOISE_PRIVATE_KEY_PATH":            "/tmp/noise_private.key",
 | 
						|
		"HEADSCALE_LISTEN_ADDR":                       "0.0.0.0:8080",
 | 
						|
		"HEADSCALE_METRICS_LISTEN_ADDR":               "0.0.0.0:9090",
 | 
						|
		"HEADSCALE_SERVER_URL":                        "http://headscale:8080",
 | 
						|
		"HEADSCALE_DERP_URLS":                         "https://controlplane.tailscale.com/derpmap/default",
 | 
						|
		"HEADSCALE_DERP_AUTO_UPDATE_ENABLED":          "false",
 | 
						|
		"HEADSCALE_DERP_UPDATE_FREQUENCY":             "1m",
 | 
						|
 | 
						|
		// a bunch of tests (ACL/Policy) rely on predicable IP alloc,
 | 
						|
		// so ensure the sequential alloc is used by default.
 | 
						|
		"HEADSCALE_PREFIXES_ALLOCATION": string(types.IPAllocationStrategySequential),
 | 
						|
	}
 | 
						|
}
 |