mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-12-14 18:51:34 +03:00
Pull request 1995: AG-25392 confmigrate vol.3
Merge in DNS/adguard-home from AG-25392-confmigrate-vol.3 to master Squashed commit of the following: commit 925b35b9fedcdcf18474785530189a1eb504e1d6 Merge: 232f18481581891af2
Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Wed Sep 6 12:48:05 2023 +0300 Merge branch 'master' into AG-25392-confmigrate-vol.3 commit 232f18481bbf3400da0b95bcec7949fb3868bf85 Merge: c0d880bed5bd452516
Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Tue Sep 5 18:54:47 2023 +0300 Merge branch 'master' into AG-25392-confmigrate-vol.3 commit c0d880bed6e3270e88f5377e66b787565e1249ce Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Tue Sep 5 17:21:57 2023 +0300 confmigrate: fix v15 commit 8a27148b708e6d6a61f8097bf7792aefa1055772 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Tue Sep 5 15:47:18 2023 +0300 confmigrate: imp gocognit, overall
This commit is contained in:
parent
581891af22
commit
30c6676dc0
@ -96,7 +96,7 @@ func TestUpgradeSchema5to6(t *testing.T) {
|
||||
},
|
||||
want: yobj{
|
||||
"clients": yarr{yobj{
|
||||
"ids": []string{"127.0.0.1"},
|
||||
"ids": yarr{"127.0.0.1"},
|
||||
"ip": "127.0.0.1",
|
||||
}},
|
||||
"schema_version": newSchemaVer,
|
||||
@ -109,7 +109,7 @@ func TestUpgradeSchema5to6(t *testing.T) {
|
||||
},
|
||||
want: yobj{
|
||||
"clients": yarr{yobj{
|
||||
"ids": []string{"mac"},
|
||||
"ids": yarr{"mac"},
|
||||
"mac": "mac",
|
||||
}},
|
||||
"schema_version": newSchemaVer,
|
||||
@ -122,7 +122,7 @@ func TestUpgradeSchema5to6(t *testing.T) {
|
||||
},
|
||||
want: yobj{
|
||||
"clients": yarr{yobj{
|
||||
"ids": []string{"127.0.0.1", "mac"},
|
||||
"ids": yarr{"127.0.0.1", "mac"},
|
||||
"ip": "127.0.0.1",
|
||||
"mac": "mac",
|
||||
}},
|
||||
|
@ -34,36 +34,47 @@ func migrateTo10(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 10
|
||||
|
||||
dns, ok, err := fieldVal[yobj](diskConf, "dns")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
const quicPort = 784
|
||||
|
||||
for _, upsField := range []string{
|
||||
"upstream_dns",
|
||||
"local_ptr_upstreams",
|
||||
} {
|
||||
var ups yarr
|
||||
ups, ok, err = fieldVal[yarr](dns, upsField)
|
||||
if err != nil {
|
||||
ups, ok, err := fieldVal[yarr](dns, "upstream_dns")
|
||||
if err != nil {
|
||||
return err
|
||||
} else if ok {
|
||||
if err = addQUICPorts(ups, quicPort); err != nil {
|
||||
return err
|
||||
} else if !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
var u string
|
||||
for i, uVal := range ups {
|
||||
u, ok = uVal.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("unexpected type of upstream field: %T", uVal)
|
||||
}
|
||||
dns["upstream_dns"] = ups
|
||||
}
|
||||
|
||||
ups[i] = addQUICPort(u, quicPort)
|
||||
ups, ok, err = fieldVal[yarr](dns, "local_ptr_upstreams")
|
||||
if err != nil {
|
||||
return err
|
||||
} else if ok {
|
||||
if err = addQUICPorts(ups, quicPort); err != nil {
|
||||
return err
|
||||
}
|
||||
dns[upsField] = ups
|
||||
|
||||
dns["local_ptr_upstreams"] = ups
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// addQUICPorts inserts a port into each QUIC upstream's hostname in ups if
|
||||
// those are missing.
|
||||
func addQUICPorts(ups yarr, port int) (err error) {
|
||||
for i, uVal := range ups {
|
||||
u, ok := uVal.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("unexpected type of upstream field: %T", uVal)
|
||||
}
|
||||
|
||||
ups[i] = addQUICPort(u, port)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
@ -21,18 +21,18 @@ func migrateTo12(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 12
|
||||
|
||||
dns, ok, err := fieldVal[yobj](diskConf, "dns")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
const field = "querylog_interval"
|
||||
|
||||
qlogIvl, ok, err := fieldVal[int](dns, field)
|
||||
if err != nil {
|
||||
return err
|
||||
} else if !ok {
|
||||
if !ok {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Set the initial value from home.initConfig function.
|
||||
qlogIvl = 90
|
||||
}
|
||||
|
@ -19,17 +19,13 @@ func migrateTo13(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 13
|
||||
|
||||
dns, ok, err := fieldVal[yobj](diskConf, "dns")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
dhcp, ok, err := fieldVal[yobj](diskConf, "dhcp")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
return moveSameVal[string](dns, dhcp, "local_domain_name")
|
||||
|
@ -31,35 +31,32 @@ func migrateTo14(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 14
|
||||
|
||||
persistent, ok, err := fieldVal[yarr](diskConf, "clients")
|
||||
if err != nil {
|
||||
return err
|
||||
} else if !ok {
|
||||
if !ok {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
persistent = yarr{}
|
||||
}
|
||||
|
||||
var rdnsSrc bool
|
||||
runtimeClients := yobj{
|
||||
"whois": true,
|
||||
"arp": true,
|
||||
"rdns": false,
|
||||
"dhcp": true,
|
||||
"hosts": true,
|
||||
}
|
||||
diskConf["clients"] = yobj{
|
||||
"persistent": persistent,
|
||||
"runtime_sources": runtimeClients,
|
||||
}
|
||||
|
||||
dns, ok, err := fieldVal[yobj](diskConf, "dns")
|
||||
if err != nil {
|
||||
return err
|
||||
} else if ok {
|
||||
rdnsSrc, ok, err = fieldVal[bool](dns, "resolve_clients")
|
||||
if err != nil {
|
||||
return err
|
||||
} else if ok {
|
||||
delete(dns, "resolve_clients")
|
||||
}
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
diskConf["clients"] = yobj{
|
||||
"persistent": persistent,
|
||||
"runtime_sources": yobj{
|
||||
"whois": true,
|
||||
"arp": true,
|
||||
"rdns": rdnsSrc,
|
||||
"dhcp": true,
|
||||
"hosts": true,
|
||||
},
|
||||
}
|
||||
|
||||
return nil
|
||||
return moveVal[bool](dns, runtimeClients, "resolve_clients", "rdns")
|
||||
}
|
||||
|
@ -30,10 +30,8 @@ func migrateTo15(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 15
|
||||
|
||||
dns, ok, err := fieldVal[yobj](diskConf, "dns")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
qlog := map[string]any{
|
||||
@ -43,17 +41,12 @@ func migrateTo15(diskConf yobj) (err error) {
|
||||
"interval": "2160h",
|
||||
"size_memory": 1000,
|
||||
}
|
||||
err = coalesceError(
|
||||
moveVal[bool](dns, qlog, "querylog_enabled", "enabled"),
|
||||
moveVal[bool](dns, qlog, "querylog_file_enabled", "file_enabled"),
|
||||
moveVal[string](dns, qlog, "querylog_interval", "interval"),
|
||||
moveVal[int](dns, qlog, "querylog_size_memory", "size_memory"),
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
diskConf["querylog"] = qlog
|
||||
|
||||
return nil
|
||||
return coalesceError(
|
||||
moveVal[bool](dns, qlog, "querylog_enabled", "enabled"),
|
||||
moveVal[bool](dns, qlog, "querylog_file_enabled", "file_enabled"),
|
||||
moveVal[any](dns, qlog, "querylog_interval", "interval"),
|
||||
moveVal[int](dns, qlog, "querylog_size_memory", "size_memory"),
|
||||
)
|
||||
}
|
||||
|
@ -47,10 +47,8 @@ func migrateTo16(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 16
|
||||
|
||||
dns, ok, err := fieldVal[yobj](diskConf, "dns")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
stats := yobj{
|
||||
@ -58,24 +56,23 @@ func migrateTo16(diskConf yobj) (err error) {
|
||||
"interval": 1,
|
||||
"ignored": yarr{},
|
||||
}
|
||||
diskConf["statistics"] = stats
|
||||
|
||||
const field = "statistics_interval"
|
||||
|
||||
statsIvl, ok, err := fieldVal[int](dns, field)
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if ok {
|
||||
if statsIvl == 0 {
|
||||
// Set the interval to the default value of one day to make sure
|
||||
// that it passes the validations.
|
||||
stats["enabled"] = false
|
||||
} else {
|
||||
stats["interval"] = statsIvl
|
||||
}
|
||||
delete(dns, field)
|
||||
}
|
||||
|
||||
diskConf["statistics"] = stats
|
||||
if statsIvl == 0 {
|
||||
// Set the interval to the default value of one day to make sure
|
||||
// that it passes the validations.
|
||||
stats["enabled"] = false
|
||||
} else {
|
||||
stats["interval"] = statsIvl
|
||||
}
|
||||
delete(dns, field)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
@ -22,10 +22,8 @@ func migrateTo17(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 17
|
||||
|
||||
dns, ok, err := fieldVal[yobj](diskConf, "dns")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
const field = "edns_client_subnet"
|
||||
|
@ -26,10 +26,8 @@ func migrateTo18(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 18
|
||||
|
||||
dns, ok, err := fieldVal[yobj](diskConf, "dns")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
safeSearch := yobj{
|
||||
@ -41,7 +39,6 @@ func migrateTo18(diskConf yobj) (err error) {
|
||||
"yandex": true,
|
||||
"youtube": true,
|
||||
}
|
||||
|
||||
dns["safe_search"] = safeSearch
|
||||
|
||||
return moveVal[bool](dns, safeSearch, "safesearch_enabled", "enabled")
|
||||
|
@ -34,10 +34,8 @@ func migrateTo19(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 19
|
||||
|
||||
clients, ok, err := fieldVal[yobj](diskConf, "clients")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
persistent, ok, _ := fieldVal[yarr](clients, "persistent")
|
||||
|
@ -25,10 +25,8 @@ func migrateTo20(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 20
|
||||
|
||||
stats, ok, err := fieldVal[yobj](diskConf, "statistics")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
const field = "interval"
|
||||
|
@ -28,10 +28,8 @@ func migrateTo21(diskConf yobj) (err error) {
|
||||
const field = "blocked_services"
|
||||
|
||||
dns, ok, err := fieldVal[yobj](diskConf, "dns")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
svcs := yobj{
|
||||
|
@ -36,17 +36,13 @@ func migrateTo22(diskConf yobj) (err error) {
|
||||
const field = "blocked_services"
|
||||
|
||||
clients, ok, err := fieldVal[yobj](diskConf, "clients")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
persistent, ok, err := fieldVal[yarr](clients, "persistent")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
for i, p := range persistent {
|
||||
|
@ -27,10 +27,8 @@ func migrateTo23(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 23
|
||||
|
||||
bindHost, ok, err := fieldVal[string](diskConf, "bind_host")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
bindHostAddr, err := netip.ParseAddr(bindHost)
|
||||
|
@ -18,14 +18,13 @@ func migrateTo25(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 25
|
||||
|
||||
httpObj, ok, err := fieldVal[yobj](diskConf, "http")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
pprofObj := yobj{
|
||||
"port": 6060,
|
||||
"enabled": false,
|
||||
"port": 6060,
|
||||
}
|
||||
|
||||
err = moveVal[bool](diskConf, pprofObj, "debug_pprof", "enabled")
|
||||
|
@ -73,10 +73,8 @@ func migrateTo26(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 26
|
||||
|
||||
dns, ok, err := fieldVal[yobj](diskConf, "dns")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
filteringObj := yobj{}
|
||||
|
@ -14,24 +14,18 @@ package confmigrate
|
||||
// 'bootstrap_dns':
|
||||
// - '1.1.1.1'
|
||||
// # …
|
||||
func migrateTo3(diskConf yobj) error {
|
||||
func migrateTo3(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 3
|
||||
|
||||
dnsConfig, ok, err := fieldVal[yobj](diskConf, "dns")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
bootstrapDNS, ok, err := fieldVal[any](dnsConfig, "bootstrap_dns")
|
||||
if err != nil {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
if ok {
|
||||
dnsConfig["bootstrap_dns"] = yarr{bootstrapDNS}
|
||||
}
|
||||
|
||||
dnsConfig["bootstrap_dns"] = yarr{bootstrapDNS}
|
||||
|
||||
return nil
|
||||
return err
|
||||
}
|
||||
|
@ -6,20 +6,21 @@ package confmigrate
|
||||
// 'schema_version': 3
|
||||
// 'clients':
|
||||
// - # …
|
||||
// # …
|
||||
//
|
||||
// # AFTER:
|
||||
// 'schema_version': 4
|
||||
// 'clients':
|
||||
// - 'use_global_blocked_services': true
|
||||
// # …
|
||||
// # …
|
||||
func migrateTo4(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 4
|
||||
|
||||
clients, ok, _ := fieldVal[yarr](diskConf, "clients")
|
||||
if ok {
|
||||
for i := range clients {
|
||||
var c yobj
|
||||
if c, ok = clients[i].(yobj); ok {
|
||||
if c, isYobj := clients[i].(yobj); isYobj {
|
||||
c["use_global_blocked_services"] = true
|
||||
}
|
||||
}
|
||||
|
@ -30,10 +30,8 @@ func migrateTo5(diskConf yobj) (err error) {
|
||||
}
|
||||
|
||||
pass, ok, err := fieldVal[string](diskConf, "auth_pass")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
delete(diskConf, "auth_pass")
|
||||
|
||||
|
@ -10,24 +10,26 @@ import "fmt"
|
||||
// - # …
|
||||
// 'ip': '127.0.0.1'
|
||||
// 'mac': 'AA:AA:AA:AA:AA:AA'
|
||||
// # …
|
||||
// # …
|
||||
//
|
||||
// # AFTER:
|
||||
// 'schema_version': 6
|
||||
// 'clients':
|
||||
// - # …
|
||||
// 'ip': '127.0.0.1'
|
||||
// 'mac': 'AA:AA:AA:AA:AA:AA'
|
||||
// 'ids':
|
||||
// - '127.0.0.1'
|
||||
// - 'AA:AA:AA:AA:AA:AA'
|
||||
// # …
|
||||
// # …
|
||||
func migrateTo6(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 6
|
||||
|
||||
clients, ok, err := fieldVal[yarr](diskConf, "clients")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
for i, client := range clients {
|
||||
@ -37,22 +39,14 @@ func migrateTo6(diskConf yobj) (err error) {
|
||||
return fmt.Errorf("unexpected type of client at index %d: %T", i, client)
|
||||
}
|
||||
|
||||
var ids []string
|
||||
|
||||
var ip string
|
||||
ip, _, err = fieldVal[string](c, "ip")
|
||||
if err != nil {
|
||||
return fmt.Errorf("client at index %d: %w", i, err)
|
||||
} else if ip != "" {
|
||||
ids = append(ids, ip)
|
||||
}
|
||||
|
||||
var mac string
|
||||
mac, _, err = fieldVal[string](c, "mac")
|
||||
if err != nil {
|
||||
return fmt.Errorf("client at index %d: %w", i, err)
|
||||
} else if mac != "" {
|
||||
ids = append(ids, mac)
|
||||
ids := yarr{}
|
||||
for _, id := range []string{"ip", "mac"} {
|
||||
val, _, valErr := fieldVal[string](c, id)
|
||||
if valErr != nil {
|
||||
return fmt.Errorf("client at index %d: %w", i, valErr)
|
||||
} else if val != "" {
|
||||
ids = append(ids, val)
|
||||
}
|
||||
}
|
||||
|
||||
c["ids"] = ids
|
||||
|
@ -28,11 +28,11 @@ package confmigrate
|
||||
// 'lease_duration': 86400
|
||||
// 'icmp_timeout_msec': 1000
|
||||
// # …
|
||||
func migrateTo7(diskConf yobj) error {
|
||||
func migrateTo7(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 7
|
||||
|
||||
dhcp, ok, err := fieldVal[yobj](diskConf, "dhcp")
|
||||
if err != nil || !ok {
|
||||
dhcp, ok, _ := fieldVal[yobj](diskConf, "dhcp")
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -20,17 +20,13 @@ func migrateTo8(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 8
|
||||
|
||||
dns, ok, err := fieldVal[yobj](diskConf, "dns")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
bindHost, ok, err := fieldVal[string](dns, "bind_host")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
delete(dns, "bind_host")
|
||||
|
@ -19,10 +19,8 @@ func migrateTo9(diskConf yobj) (err error) {
|
||||
diskConf["schema_version"] = 9
|
||||
|
||||
dns, ok, err := fieldVal[yobj](diskConf, "dns")
|
||||
if err != nil {
|
||||
if !ok {
|
||||
return err
|
||||
} else if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
return moveVal[string](dns, dns, "autohost_tld", "local_domain_name")
|
||||
|
@ -1,6 +1,8 @@
|
||||
package confmigrate
|
||||
|
||||
import "fmt"
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type (
|
||||
// yarr is the convenience alias for YAML array.
|
||||
|
@ -177,7 +177,6 @@ run_linter gocyclo --over 10 .
|
||||
gocognit_paths="\
|
||||
./internal/aghnet/ 20
|
||||
./internal/querylog/ 20
|
||||
./internal/confmigrate/ 19
|
||||
./internal/dnsforward/ 19
|
||||
./internal/home/ 19
|
||||
./internal/aghtls/ 18
|
||||
@ -194,6 +193,7 @@ gocognit_paths="\
|
||||
./internal/aghrenameio/ 10
|
||||
./internal/arpdb/ 10
|
||||
./internal/client/ 10
|
||||
./internal/confmigrate/ 10
|
||||
./internal/dhcpsvc 10
|
||||
./internal/filtering/hashprefix/ 10
|
||||
./internal/filtering/rulelist/ 10
|
||||
|
Loading…
Reference in New Issue
Block a user