mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-02-03 22:18:39 +00:00
openwrt 24.10 changes the dnsmasq default config path, causing breaking changes to softwares which depends on old behavior. This commit adds a workaround for the issue, by querying the actual config directory from ubus service list, instead of relying on the default hardcode one.
59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package openwrt
|
|
|
|
import (
|
|
"io"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// Sample output from https://github.com/openwrt/openwrt/pull/16806#issuecomment-2448255734
|
|
const ubusDnsmasqBefore2410 = `{
|
|
"dnsmasq": {
|
|
"instances": {
|
|
"guest_dns": {
|
|
"mount": {
|
|
"/tmp/dnsmasq.d": "0",
|
|
"/var/run/dnsmasq/": "1"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}`
|
|
|
|
const ubusDnsmasq2410 = `{
|
|
"dnsmasq": {
|
|
"instances": {
|
|
"guest_dns": {
|
|
"mount": {
|
|
"/tmp/dnsmasq.guest_dns.d": "0",
|
|
"/var/run/dnsmasq/": "1"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}`
|
|
|
|
func Test_dnsmasqConfPath(t *testing.T) {
|
|
var dnsmasq2410expected = filepath.Join("/tmp/dnsmasq.guest_dns.d", openwrtDNSMasqConfigName)
|
|
tests := []struct {
|
|
name string
|
|
in io.Reader
|
|
expected string
|
|
}{
|
|
{"empty", strings.NewReader(""), openwrtDnsmasqDefaultConfigPath},
|
|
{"invalid", strings.NewReader("}}"), openwrtDnsmasqDefaultConfigPath},
|
|
{"before 24.10", strings.NewReader(ubusDnsmasqBefore2410), openwrtDnsmasqDefaultConfigPath},
|
|
{"24.10", strings.NewReader(ubusDnsmasq2410), dnsmasq2410expected},
|
|
}
|
|
for _, tc := range tests {
|
|
tc := tc
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
if got := dnsmasqConfPath(tc.in); got != tc.expected {
|
|
t.Errorf("dnsmasqConfPath() = %v, want %v", got, tc.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|