Files
ctrld/testhelper/config.go
2024-08-07 15:51:11 +07:00

92 lines
1.8 KiB
Go

package testhelper
import (
"strings"
"testing"
"github.com/Control-D-Inc/ctrld"
"github.com/spf13/viper"
"github.com/stretchr/testify/require"
)
func SampleConfig(t *testing.T) *ctrld.Config {
v := viper.NewWithOptions(viper.KeyDelimiter("::"))
ctrld.InitConfig(v, "test_load_config")
v.SetConfigType("toml")
require.NoError(t, v.ReadConfig(strings.NewReader(sampleConfigContent)))
var cfg ctrld.Config
require.NoError(t, v.Unmarshal(&cfg))
return &cfg
}
func SampleConfigStr(t *testing.T) string {
return sampleConfigContent
}
var sampleConfigContent = `
[service]
log_level = "info"
log_path = "/path/to/log.log"
dns_watchdog_enabled = false
dns_watchdog_interval = "20s"
[network.0]
name = "Home Wifi"
cidrs = ["192.168.0.0/24"]
[network.1]
name = "Kids Wifi"
cidrs = ["192.168.1.0/24"]
[upstream.0]
name = "Control D - Standard Devices"
type = "doh"
endpoint = "https://dns.controld.com/12345abcd/main-device"
timeout = 5
[upstream.1]
name = "Control D - Kids Devices"
type = "dot"
endpoint = "12345abcd-kids-devices.dns.controld.com"
timeout = 5
[upstream.2]
name = "Google"
type = "legacy"
endpoint = "8.8.8.8"
timeout = 5
[upstream.3]
name = "DOH with client info"
type = "doh"
endpoint = "https://dns.controld.com/client_info_upstream/main-device"
timeout = 5
send_client_info = false
[listener.0]
ip = "127.0.0.1"
port = 53
[listener.1]
ip = "10.10.42.69"
port = 1337
[listener.0.policy]
name = "My Policy"
failover_rcodes = ["NXDOMAIN", "SERVFAIL"]
networks = [
{"network.0" = ["upstream.1", "upstream.0"]},
{"network.1" = ["upstream.0"]},
{"network.2" = ["upstream.1"]},
]
rules = [
{"*.ru" = ["upstream.1"]},
{"*.local.host" = ["upstream.2", "upstream.0"]},
]
macs = [
{"14:45:A0:67:83:0A" = ["upstream.2"]},
{"14:54:4a:8e:08:2d" = ["upstream.2"]},
]
`