From dab7b439d1f2ab6f3d7ad25c1ca6b0f002fc8ddd Mon Sep 17 00:00:00 2001 From: Ainar Garipov Date: Fri, 18 Jun 2021 18:13:36 +0300 Subject: [PATCH] Pull request: all: imp docs, names Merge in DNS/adguard-home from imp-text to master Squashed commit of the following: commit fa7d64014fb2ac379e1c137eaccc7aefca86419d Author: Ainar Garipov Date: Fri Jun 11 17:09:00 2021 +0300 all: imp docs, names --- .github/ISSUE_TEMPLATE/Bug_report.md | 2 +- bamboo-specs/release.yaml | 8 ++--- internal/aghnet/net_darwin.go | 4 +-- internal/dnsforward/clientid.go | 2 +- internal/dnsforward/config.go | 2 +- internal/dnsforward/dns.go | 2 +- internal/dnsforward/http.go | 10 +++---- internal/dnsforward/stats.go | 6 ++-- internal/dnsforward/stats_test.go | 8 ++--- internal/home/clients.go | 28 +++++++++--------- internal/home/clients_test.go | 14 ++++----- internal/home/clientshttp.go | 10 +++---- internal/home/config.go | 8 ++--- internal/home/control.go | 6 ++-- internal/home/dns.go | 4 +-- internal/home/home.go | 2 +- internal/home/mobileconfig.go | 4 +-- internal/home/mobileconfig_test.go | 16 +++++----- internal/home/tls.go | 2 +- internal/home/whois.go | 44 ++++++++++++++-------------- internal/home/whois_test.go | 6 ++-- internal/querylog/client.go | 8 ++--- internal/querylog/qlog.go | 12 ++++---- openapi/openapi.yaml | 10 +++---- staticcheck.conf | 4 +-- 25 files changed, 110 insertions(+), 112 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md index f2fe2ac0..1cee72e6 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report.md +++ b/.github/ISSUE_TEMPLATE/Bug_report.md @@ -20,7 +20,7 @@ Please answer the following questions for yourself before submitting an issue. * * **Version of AdGuard Home server:** * * **How did you install AdGuard Home:** - * + * * **How did you setup DNS configuration:** * * **If it's a router or IoT, please write device model:** diff --git a/bamboo-specs/release.yaml b/bamboo-specs/release.yaml index d18549fd..6d946be6 100644 --- a/bamboo-specs/release.yaml +++ b/bamboo-specs/release.yaml @@ -34,11 +34,11 @@ 'jobs': - 'Publish to Snapstore' -- 'Publish to Github Releases': +- 'Publish to GitHub Releases': 'manual': false 'final': false 'jobs': - - 'Publish to Github Releases' + - 'Publish to GitHub Releases' 'Make release': 'docker': @@ -194,7 +194,7 @@ 'requirements': - 'adg-docker': 'true' -'Publish to Github Releases': +'Publish to GitHub Releases': 'key': 'PTGR' 'other': 'clean-working-dir': true @@ -215,7 +215,7 @@ export CHANNEL="${bamboo.channel}" if [ "$CHANNEL" != 'release' ] && [ "${CHANNEL}" != 'beta' ] then - echo "don't publish to Github Releases for this channel" + echo "don't publish to GitHub Releases for this channel" exit 0 fi diff --git a/internal/aghnet/net_darwin.go b/internal/aghnet/net_darwin.go index ee30657c..1eb9ce29 100644 --- a/internal/aghnet/net_darwin.go +++ b/internal/aghnet/net_darwin.go @@ -13,8 +13,8 @@ import ( "github.com/AdguardTeam/golibs/errors" ) -// hardwarePortInfo - information obtained using MacOS networksetup -// about the current state of the internet connection +// hardwarePortInfo contains information about the current state of the internet +// connection obtained from macOS networksetup. type hardwarePortInfo struct { name string ip string diff --git a/internal/dnsforward/clientid.go b/internal/dnsforward/clientid.go index 06e2f563..995be08e 100644 --- a/internal/dnsforward/clientid.go +++ b/internal/dnsforward/clientid.go @@ -109,7 +109,7 @@ type quicSession interface { } // processClientID extracts the client's ID from the server name of the client's -// DOT or DOQ request or the path of the client's DOH. +// DoT or DoQ request or the path of the client's DoH. func processClientID(dctx *dnsContext) (rc resultCode) { pctx := dctx.proxyCtx proto := pctx.Proto diff --git a/internal/dnsforward/config.go b/internal/dnsforward/config.go index 49494422..04c133bb 100644 --- a/internal/dnsforward/config.go +++ b/internal/dnsforward/config.go @@ -167,7 +167,7 @@ type ServerConfig struct { FilteringConfig TLSConfig DNSCryptConfig - TLSAllowUnencryptedDOH bool + TLSAllowUnencryptedDoH bool // UpstreamTimeout is the timeout for querying upstream servers. UpstreamTimeout time.Duration diff --git a/internal/dnsforward/dns.go b/internal/dnsforward/dns.go index 5d6fdf49..3e487531 100644 --- a/internal/dnsforward/dns.go +++ b/internal/dnsforward/dns.go @@ -32,7 +32,7 @@ type dnsContext struct { unreversedReqIP net.IP // err is the error returned from a processing function. err error - // clientID is the clientID from DOH, DOQ, or DOT, if provided. + // clientID is the clientID from DoH, DoQ, or DoT, if provided. clientID string // origQuestion is the question received from the client. It is set // when the request is modified by rewrites. diff --git a/internal/dnsforward/http.go b/internal/dnsforward/http.go index 3e18f1ad..4dc74f97 100644 --- a/internal/dnsforward/http.go +++ b/internal/dnsforward/http.go @@ -621,11 +621,11 @@ func (s *Server) handleTestUpstreamDNS(w http.ResponseWriter, r *http.Request) { // Control flow: // web -// -> dnsforward.handleDOH -> dnsforward.ServeHTTP +// -> dnsforward.handleDoH -> dnsforward.ServeHTTP // -> proxy.ServeHTTP -> proxy.handleDNSRequest // -> dnsforward.handleDNSRequest -func (s *Server) handleDOH(w http.ResponseWriter, r *http.Request) { - if !s.conf.TLSAllowUnencryptedDOH && r.TLS == nil { +func (s *Server) handleDoH(w http.ResponseWriter, r *http.Request) { + if !s.conf.TLSAllowUnencryptedDoH && r.TLS == nil { httpError(r, w, http.StatusNotFound, "Not Found") return } @@ -653,6 +653,6 @@ func (s *Server) registerHandlers() { // See go doc net/http.ServeMux. // // See also https://github.com/AdguardTeam/AdGuardHome/issues/2628. - s.conf.HTTPRegister("", "/dns-query", s.handleDOH) - s.conf.HTTPRegister("", "/dns-query/", s.handleDOH) + s.conf.HTTPRegister("", "/dns-query", s.handleDoH) + s.conf.HTTPRegister("", "/dns-query/", s.handleDoH) } diff --git a/internal/dnsforward/stats.go b/internal/dnsforward/stats.go index dc57d930..3b2c9c4e 100644 --- a/internal/dnsforward/stats.go +++ b/internal/dnsforward/stats.go @@ -44,11 +44,11 @@ func processQueryLogsAndStats(ctx *dnsContext) (rc resultCode) { switch pctx.Proto { case proxy.ProtoHTTPS: - p.ClientProto = querylog.ClientProtoDOH + p.ClientProto = querylog.ClientProtoDoH case proxy.ProtoQUIC: - p.ClientProto = querylog.ClientProtoDOQ + p.ClientProto = querylog.ClientProtoDoQ case proxy.ProtoTLS: - p.ClientProto = querylog.ClientProtoDOT + p.ClientProto = querylog.ClientProtoDoT case proxy.ProtoDNSCrypt: p.ClientProto = querylog.ClientProtoDNSCrypt default: diff --git a/internal/dnsforward/stats_test.go b/internal/dnsforward/stats_test.go index 2f3dd5ec..2ae7913b 100644 --- a/internal/dnsforward/stats_test.go +++ b/internal/dnsforward/stats_test.go @@ -69,7 +69,7 @@ func TestProcessQueryLogsAndStats(t *testing.T) { proto: proxy.ProtoTLS, addr: &net.TCPAddr{IP: net.IP{1, 2, 3, 4}, Port: 1234}, clientID: "cli42", - wantLogProto: querylog.ClientProtoDOT, + wantLogProto: querylog.ClientProtoDoT, wantStatClient: "cli42", wantCode: resultCodeSuccess, reason: filtering.NotFilteredNotFound, @@ -79,7 +79,7 @@ func TestProcessQueryLogsAndStats(t *testing.T) { proto: proxy.ProtoTLS, addr: &net.TCPAddr{IP: net.IP{1, 2, 3, 4}, Port: 1234}, clientID: "", - wantLogProto: querylog.ClientProtoDOT, + wantLogProto: querylog.ClientProtoDoT, wantStatClient: "1.2.3.4", wantCode: resultCodeSuccess, reason: filtering.NotFilteredNotFound, @@ -89,7 +89,7 @@ func TestProcessQueryLogsAndStats(t *testing.T) { proto: proxy.ProtoQUIC, addr: &net.UDPAddr{IP: net.IP{1, 2, 3, 4}, Port: 1234}, clientID: "", - wantLogProto: querylog.ClientProtoDOQ, + wantLogProto: querylog.ClientProtoDoQ, wantStatClient: "1.2.3.4", wantCode: resultCodeSuccess, reason: filtering.NotFilteredNotFound, @@ -99,7 +99,7 @@ func TestProcessQueryLogsAndStats(t *testing.T) { proto: proxy.ProtoHTTPS, addr: &net.TCPAddr{IP: net.IP{1, 2, 3, 4}, Port: 1234}, clientID: "", - wantLogProto: querylog.ClientProtoDOH, + wantLogProto: querylog.ClientProtoDoH, wantStatClient: "1.2.3.4", wantCode: resultCodeSuccess, reason: filtering.NotFilteredNotFound, diff --git a/internal/home/clients.go b/internal/home/clients.go index 9ef4a9ee..2358003e 100644 --- a/internal/home/clients.go +++ b/internal/home/clients.go @@ -63,13 +63,13 @@ const ( // RuntimeClient information type RuntimeClient struct { - WhoisInfo *RuntimeClientWhoisInfo + WHOISInfo *RuntimeClientWHOISInfo Host string Source clientSource } -// RuntimeClientWhoisInfo is the filtered WHOIS data for a runtime client. -type RuntimeClientWhoisInfo struct { +// RuntimeClientWHOISInfo is the filtered WHOIS data for a runtime client. +type RuntimeClientWHOISInfo struct { City string `json:"city,omitempty"` Country string `json:"country,omitempty"` Orgname string `json:"orgname,omitempty"` @@ -270,12 +270,12 @@ func (clients *clientsContainer) Exists(id string, source clientSource) (ok bool return source <= rc.Source } -func toQueryLogWhois(wi *RuntimeClientWhoisInfo) (cw *querylog.ClientWhois) { +func toQueryLogWHOIS(wi *RuntimeClientWHOISInfo) (cw *querylog.ClientWHOIS) { if wi == nil { - return &querylog.ClientWhois{} + return &querylog.ClientWHOIS{} } - return &querylog.ClientWhois{ + return &querylog.ClientWHOIS{ City: wi.City, Country: wi.Country, Orgname: wi.Orgname, @@ -287,7 +287,7 @@ func toQueryLogWhois(wi *RuntimeClientWhoisInfo) (cw *querylog.ClientWhois) { func (clients *clientsContainer) findMultiple(ids []string) (c *querylog.Client, err error) { for _, id := range ids { var name string - whois := &querylog.ClientWhois{} + whois := &querylog.ClientWHOIS{} c, ok := clients.Find(id) if ok { @@ -300,7 +300,7 @@ func (clients *clientsContainer) findMultiple(ids []string) (c *querylog.Client, } name = rc.Host - whois = toQueryLogWhois(rc.WhoisInfo) + whois = toQueryLogWHOIS(rc.WHOISInfo) } ip := net.ParseIP(id) @@ -309,7 +309,7 @@ func (clients *clientsContainer) findMultiple(ids []string) (c *querylog.Client, return &querylog.Client{ Name: name, DisallowedRule: disallowedRule, - Whois: whois, + WHOIS: whois, Disallowed: disallowed, }, nil } @@ -620,8 +620,8 @@ func (clients *clientsContainer) Update(name string, c *Client) (err error) { return nil } -// SetWhoisInfo sets the WHOIS information for a client. -func (clients *clientsContainer) SetWhoisInfo(ip string, wi *RuntimeClientWhoisInfo) { +// SetWHOISInfo sets the WHOIS information for a client. +func (clients *clientsContainer) SetWHOISInfo(ip string, wi *RuntimeClientWHOISInfo) { clients.lock.Lock() defer clients.lock.Unlock() @@ -633,7 +633,7 @@ func (clients *clientsContainer) SetWhoisInfo(ip string, wi *RuntimeClientWhoisI rc, ok := clients.ipToRC[ip] if ok { - rc.WhoisInfo = wi + rc.WHOISInfo = wi log.Debug("clients: set whois info for runtime client %s: %+v", rc.Host, wi) return @@ -645,7 +645,7 @@ func (clients *clientsContainer) SetWhoisInfo(ip string, wi *RuntimeClientWhoisI Source: ClientSourceWHOIS, } - rc.WhoisInfo = wi + rc.WHOISInfo = wi clients.ipToRC[ip] = rc log.Debug("clients: set whois info for runtime client with ip %s: %+v", ip, wi) @@ -676,7 +676,7 @@ func (clients *clientsContainer) addHostLocked(ip, host string, src clientSource rc = &RuntimeClient{ Host: host, Source: src, - WhoisInfo: &RuntimeClientWhoisInfo{}, + WHOISInfo: &RuntimeClientWHOISInfo{}, } clients.ipToRC[ip] = rc diff --git a/internal/home/clients_test.go b/internal/home/clients_test.go index 3d817e5c..18f4f662 100644 --- a/internal/home/clients_test.go +++ b/internal/home/clients_test.go @@ -172,25 +172,25 @@ func TestClients(t *testing.T) { }) } -func TestClientsWhois(t *testing.T) { +func TestClientsWHOIS(t *testing.T) { clients := clientsContainer{ testing: true, } clients.Init(nil, nil, nil) - whois := &RuntimeClientWhoisInfo{ + whois := &RuntimeClientWHOISInfo{ Country: "AU", Orgname: "Example Org", } t.Run("new_client", func(t *testing.T) { - clients.SetWhoisInfo("1.1.1.255", whois) + clients.SetWHOISInfo("1.1.1.255", whois) require.NotNil(t, clients.ipToRC["1.1.1.255"]) h := clients.ipToRC["1.1.1.255"] require.NotNil(t, h) - assert.Equal(t, h.WhoisInfo, whois) + assert.Equal(t, h.WHOISInfo, whois) }) t.Run("existing_auto-client", func(t *testing.T) { @@ -198,13 +198,13 @@ func TestClientsWhois(t *testing.T) { require.NoError(t, err) assert.True(t, ok) - clients.SetWhoisInfo("1.1.1.1", whois) + clients.SetWHOISInfo("1.1.1.1", whois) require.NotNil(t, clients.ipToRC["1.1.1.1"]) h := clients.ipToRC["1.1.1.1"] require.NotNil(t, h) - assert.Equal(t, h.WhoisInfo, whois) + assert.Equal(t, h.WHOISInfo, whois) }) t.Run("can't_set_manually-added", func(t *testing.T) { @@ -215,7 +215,7 @@ func TestClientsWhois(t *testing.T) { require.NoError(t, err) assert.True(t, ok) - clients.SetWhoisInfo("1.1.1.2", whois) + clients.SetWHOISInfo("1.1.1.2", whois) require.Nil(t, clients.ipToRC["1.1.1.2"]) assert.True(t, clients.Del("client1")) }) diff --git a/internal/home/clientshttp.go b/internal/home/clientshttp.go index b283d623..0ac15a4c 100644 --- a/internal/home/clientshttp.go +++ b/internal/home/clientshttp.go @@ -24,7 +24,7 @@ type clientJSON struct { // the allowlist. DisallowedRule *string `json:"disallowed_rule,omitempty"` - WhoisInfo *RuntimeClientWhoisInfo `json:"whois_info,omitempty"` + WHOISInfo *RuntimeClientWHOISInfo `json:"whois_info,omitempty"` Name string `json:"name"` @@ -42,7 +42,7 @@ type clientJSON struct { } type runtimeClientJSON struct { - WhoisInfo *RuntimeClientWhoisInfo `json:"whois_info"` + WHOISInfo *RuntimeClientWHOISInfo `json:"whois_info"` IP string `json:"ip"` Name string `json:"name"` @@ -70,7 +70,7 @@ func (clients *clientsContainer) handleGetClients(w http.ResponseWriter, _ *http cj := runtimeClientJSON{ IP: ip, Name: rc.Host, - WhoisInfo: rc.WhoisInfo, + WHOISInfo: rc.WHOISInfo, } cj.Source = "etc/hosts" @@ -143,7 +143,7 @@ func runtimeClientToJSON(ip string, rc RuntimeClient) (cj clientJSON) { cj = clientJSON{ Name: rc.Host, IDs: []string{ip}, - WhoisInfo: rc.WhoisInfo, + WHOISInfo: rc.WHOISInfo, } return cj @@ -287,7 +287,7 @@ func (clients *clientsContainer) findRuntime(ip net.IP, idStr string) (cj client IDs: []string{idStr}, Disallowed: &disallowed, DisallowedRule: &rule, - WhoisInfo: &RuntimeClientWhoisInfo{}, + WHOISInfo: &RuntimeClientWHOISInfo{}, } return cj, true diff --git a/internal/home/config.go b/internal/home/config.go index d660ddb8..3af3ecf2 100644 --- a/internal/home/config.go +++ b/internal/home/config.go @@ -135,11 +135,11 @@ type dnsConfig struct { } type tlsConfigSettings struct { - Enabled bool `yaml:"enabled" json:"enabled"` // Enabled is the encryption (DOT/DOH/HTTPS) status + Enabled bool `yaml:"enabled" json:"enabled"` // Enabled is the encryption (DoT/DoH/HTTPS) status ServerName string `yaml:"server_name" json:"server_name,omitempty"` // ServerName is the hostname of your HTTPS/TLS server ForceHTTPS bool `yaml:"force_https" json:"force_https,omitempty"` // ForceHTTPS: if true, forces HTTP->HTTPS redirect PortHTTPS int `yaml:"port_https" json:"port_https,omitempty"` // HTTPS port. If 0, HTTPS will be disabled - PortDNSOverTLS int `yaml:"port_dns_over_tls" json:"port_dns_over_tls,omitempty"` // DNS-over-TLS port. If 0, DOT will be disabled + PortDNSOverTLS int `yaml:"port_dns_over_tls" json:"port_dns_over_tls,omitempty"` // DNS-over-TLS port. If 0, DoT will be disabled PortDNSOverQUIC int `yaml:"port_dns_over_quic" json:"port_dns_over_quic,omitempty"` // DNS-over-QUIC port. If 0, DoQ will be disabled // PortDNSCrypt is the port for DNSCrypt requests. If it's zero, @@ -152,8 +152,8 @@ type tlsConfigSettings struct { // https://github.com/ameshkov/dnscrypt. DNSCryptConfigFile string `yaml:"dnscrypt_config_file" json:"dnscrypt_config_file"` - // Allow DOH queries via unencrypted HTTP (e.g. for reverse proxying) - AllowUnencryptedDOH bool `yaml:"allow_unencrypted_doh" json:"allow_unencrypted_doh"` + // Allow DoH queries via unencrypted HTTP (e.g. for reverse proxying) + AllowUnencryptedDoH bool `yaml:"allow_unencrypted_doh" json:"allow_unencrypted_doh"` dnsforward.TLSConfig `yaml:",inline" json:",inline"` } diff --git a/internal/home/control.go b/internal/home/control.go index 06682b46..8e64231b 100644 --- a/internal/home/control.go +++ b/internal/home/control.go @@ -198,9 +198,9 @@ func registerControlHandlers() { httpRegister(http.MethodPost, "/control/update", handleUpdate) httpRegister(http.MethodGet, "/control/profile", handleGetProfile) - // No auth is necessary for DOH/DOT configurations - Context.mux.HandleFunc("/apple/doh.mobileconfig", postInstall(handleMobileConfigDOH)) - Context.mux.HandleFunc("/apple/dot.mobileconfig", postInstall(handleMobileConfigDOT)) + // No auth is necessary for DoH/DoT configurations + Context.mux.HandleFunc("/apple/doh.mobileconfig", postInstall(handleMobileConfigDoH)) + Context.mux.HandleFunc("/apple/dot.mobileconfig", postInstall(handleMobileConfigDoT)) RegisterAuthHandlers() } diff --git a/internal/home/dns.go b/internal/home/dns.go index 0c4236dd..a61afc27 100644 --- a/internal/home/dns.go +++ b/internal/home/dns.go @@ -95,7 +95,7 @@ func initDNSServer() error { } Context.rdns = NewRDNS(Context.dnsServer, &Context.clients, config.DNS.UsePrivateRDNS) - Context.whois = initWhois(&Context.clients) + Context.whois = initWHOIS(&Context.clients) Context.filters.Init() return nil @@ -194,7 +194,7 @@ func generateServerConfig() (newConf dnsforward.ServerConfig, err error) { newConf.TLSv12Roots = Context.tlsRoots newConf.TLSCiphers = Context.tlsCiphers - newConf.TLSAllowUnencryptedDOH = tlsConf.AllowUnencryptedDOH + newConf.TLSAllowUnencryptedDoH = tlsConf.AllowUnencryptedDoH newConf.FilterHandler = applyAdditionalFiltering newConf.GetCustomUpstreamByClient = Context.clients.findUpstreams diff --git a/internal/home/home.go b/internal/home/home.go index 77910436..683c267c 100644 --- a/internal/home/home.go +++ b/internal/home/home.go @@ -48,7 +48,7 @@ type homeContext struct { queryLog querylog.QueryLog // query log module dnsServer *dnsforward.Server // DNS module rdns *RDNS // rDNS module - whois *Whois // WHOIS module + whois *WHOIS // WHOIS module dnsFilter *filtering.DNSFilter // DNS filtering module dhcpServer *dhcpd.Server // DHCP module auth *Auth // HTTP authentication module diff --git a/internal/home/mobileconfig.go b/internal/home/mobileconfig.go index a0380de5..6c4681d8 100644 --- a/internal/home/mobileconfig.go +++ b/internal/home/mobileconfig.go @@ -163,10 +163,10 @@ func handleMobileConfig(w http.ResponseWriter, r *http.Request, dnsp string) { _, _ = w.Write(mobileconfig) } -func handleMobileConfigDOH(w http.ResponseWriter, r *http.Request) { +func handleMobileConfigDoH(w http.ResponseWriter, r *http.Request) { handleMobileConfig(w, r, dnsProtoHTTPS) } -func handleMobileConfigDOT(w http.ResponseWriter, r *http.Request) { +func handleMobileConfigDoT(w http.ResponseWriter, r *http.Request) { handleMobileConfig(w, r, dnsProtoTLS) } diff --git a/internal/home/mobileconfig_test.go b/internal/home/mobileconfig_test.go index e902d5e3..3700bf52 100644 --- a/internal/home/mobileconfig_test.go +++ b/internal/home/mobileconfig_test.go @@ -12,14 +12,14 @@ import ( "howett.net/plist" ) -func TestHandleMobileConfigDOH(t *testing.T) { +func TestHandleMobileConfigDoH(t *testing.T) { t.Run("success", func(t *testing.T) { r, err := http.NewRequest(http.MethodGet, "https://example.com:12345/apple/doh.mobileconfig?host=example.org", nil) require.NoError(t, err) w := httptest.NewRecorder() - handleMobileConfigDOH(w, r) + handleMobileConfigDoH(w, r) require.Equal(t, http.StatusOK, w.Code) var mc mobileConfig @@ -49,7 +49,7 @@ func TestHandleMobileConfigDOH(t *testing.T) { w := httptest.NewRecorder() - handleMobileConfigDOH(w, r) + handleMobileConfigDoH(w, r) assert.Equal(t, http.StatusInternalServerError, w.Code) assert.JSONEq(t, w.Body.String(), b.String()) }) @@ -60,7 +60,7 @@ func TestHandleMobileConfigDOH(t *testing.T) { w := httptest.NewRecorder() - handleMobileConfigDOH(w, r) + handleMobileConfigDoH(w, r) require.Equal(t, http.StatusOK, w.Code) var mc mobileConfig @@ -74,14 +74,14 @@ func TestHandleMobileConfigDOH(t *testing.T) { }) } -func TestHandleMobileConfigDOT(t *testing.T) { +func TestHandleMobileConfigDoT(t *testing.T) { t.Run("success", func(t *testing.T) { r, err := http.NewRequest(http.MethodGet, "https://example.com:12345/apple/dot.mobileconfig?host=example.org", nil) require.NoError(t, err) w := httptest.NewRecorder() - handleMobileConfigDOT(w, r) + handleMobileConfigDoT(w, r) require.Equal(t, http.StatusOK, w.Code) var mc mobileConfig @@ -111,7 +111,7 @@ func TestHandleMobileConfigDOT(t *testing.T) { w := httptest.NewRecorder() - handleMobileConfigDOT(w, r) + handleMobileConfigDoT(w, r) assert.Equal(t, http.StatusInternalServerError, w.Code) assert.JSONEq(t, w.Body.String(), b.String()) @@ -123,7 +123,7 @@ func TestHandleMobileConfigDOT(t *testing.T) { w := httptest.NewRecorder() - handleMobileConfigDOT(w, r) + handleMobileConfigDoT(w, r) require.Equal(t, http.StatusOK, w.Code) var mc mobileConfig diff --git a/internal/home/tls.go b/internal/home/tls.go index eaf5884c..d2420093 100644 --- a/internal/home/tls.go +++ b/internal/home/tls.go @@ -48,7 +48,7 @@ func tlsCreate(conf tlsConfigSettings) *TLSMod { PortHTTPS: conf.PortHTTPS, PortDNSOverTLS: conf.PortDNSOverTLS, PortDNSOverQUIC: conf.PortDNSOverQUIC, - AllowUnencryptedDOH: conf.AllowUnencryptedDOH, + AllowUnencryptedDoH: conf.AllowUnencryptedDoH, }} } t.setCertFileTime() diff --git a/internal/home/whois.go b/internal/home/whois.go index bb7bc0e8..b80dd794 100644 --- a/internal/home/whois.go +++ b/internal/home/whois.go @@ -23,8 +23,8 @@ const ( whoisTTL = 1 * 60 * 60 // 1 hour ) -// Whois - module context -type Whois struct { +// WHOIS - module context +type WHOIS struct { clients *clientsContainer ipChan chan net.IP @@ -41,9 +41,9 @@ type Whois struct { timeoutMsec uint } -// initWhois creates the Whois module context. -func initWhois(clients *clientsContainer) *Whois { - w := Whois{ +// initWHOIS creates the WHOIS module context. +func initWHOIS(clients *clientsContainer) *WHOIS { + w := WHOIS{ timeoutMsec: 5000, clients: clients, ipAddrs: cache.New(cache.Config{ @@ -67,8 +67,8 @@ func trimValue(s string) string { return s[:maxValueLength-3] + "..." } -// isWhoisComment returns true if the string is empty or is a WHOIS comment. -func isWhoisComment(s string) (ok bool) { +// isWHOISComment returns true if the string is empty or is a WHOIS comment. +func isWHOISComment(s string) (ok bool) { return len(s) == 0 || s[0] == '#' || s[0] == '%' } @@ -83,7 +83,7 @@ func whoisParse(data string) (m strmap) { var orgname string lines := strings.Split(data, "\n") for _, l := range lines { - if isWhoisComment(l) { + if isWHOISComment(l) { continue } @@ -128,7 +128,7 @@ func whoisParse(data string) (m strmap) { const MaxConnReadSize = 64 * 1024 // Send request to a server and receive the response -func (w *Whois) query(ctx context.Context, target, serverAddr string) (data string, err error) { +func (w *WHOIS) query(ctx context.Context, target, serverAddr string) (data string, err error) { addr, _, _ := net.SplitHostPort(serverAddr) if addr == "whois.arin.net" { target = "n + " + target @@ -162,7 +162,7 @@ func (w *Whois) query(ctx context.Context, target, serverAddr string) (data stri } // Query WHOIS servers (handle redirects) -func (w *Whois) queryAll(ctx context.Context, target string) (string, error) { +func (w *WHOIS) queryAll(ctx context.Context, target string) (string, error) { server := net.JoinHostPort(defaultServer, defaultPort) const maxRedirects = 5 for i := 0; i != maxRedirects; i++ { @@ -170,7 +170,7 @@ func (w *Whois) queryAll(ctx context.Context, target string) (string, error) { if err != nil { return "", err } - log.Debug("Whois: received response (%d bytes) from %s IP:%s", len(resp), server, target) + log.Debug("whois: received response (%d bytes) from %s IP:%s", len(resp), server, target) m := whoisParse(resp) redir, ok := m["whois"] @@ -186,25 +186,25 @@ func (w *Whois) queryAll(ctx context.Context, target string) (string, error) { server = redir } - log.Debug("Whois: redirected to %s IP:%s", redir, target) + log.Debug("whois: redirected to %s IP:%s", redir, target) } return "", fmt.Errorf("whois: redirect loop") } // Request WHOIS information -func (w *Whois) process(ctx context.Context, ip net.IP) (wi *RuntimeClientWhoisInfo) { +func (w *WHOIS) process(ctx context.Context, ip net.IP) (wi *RuntimeClientWHOISInfo) { resp, err := w.queryAll(ctx, ip.String()) if err != nil { - log.Debug("Whois: error: %s IP:%s", err, ip) + log.Debug("whois: error: %s IP:%s", err, ip) return nil } - log.Debug("Whois: IP:%s response: %d bytes", ip, len(resp)) + log.Debug("whois: IP:%s response: %d bytes", ip, len(resp)) m := whoisParse(resp) - wi = &RuntimeClientWhoisInfo{ + wi = &RuntimeClientWHOISInfo{ City: m["city"], Country: m["country"], Orgname: m["orgname"], @@ -212,7 +212,7 @@ func (w *Whois) process(ctx context.Context, ip net.IP) (wi *RuntimeClientWhoisI // Don't return an empty struct so that the frontend doesn't get // confused. - if *wi == (RuntimeClientWhoisInfo{}) { + if *wi == (RuntimeClientWHOISInfo{}) { return nil } @@ -220,7 +220,7 @@ func (w *Whois) process(ctx context.Context, ip net.IP) (wi *RuntimeClientWhoisI } // Begin - begin requesting WHOIS info -func (w *Whois) Begin(ip net.IP) { +func (w *WHOIS) Begin(ip net.IP) { now := uint64(time.Now().Unix()) expire := w.ipAddrs.Get([]byte(ip)) if len(expire) != 0 { @@ -234,18 +234,18 @@ func (w *Whois) Begin(ip net.IP) { binary.BigEndian.PutUint64(expire, now+whoisTTL) _ = w.ipAddrs.Set([]byte(ip), expire) - log.Debug("Whois: adding %s", ip) + log.Debug("whois: adding %s", ip) select { case w.ipChan <- ip: // default: - log.Debug("Whois: queue is full") + log.Debug("whois: queue is full") } } // workerLoop processes the IP addresses it got from the channel and associates // the retrieving WHOIS info with a client. -func (w *Whois) workerLoop() { +func (w *WHOIS) workerLoop() { for ip := range w.ipChan { info := w.process(context.Background(), ip) if info == nil { @@ -253,6 +253,6 @@ func (w *Whois) workerLoop() { } id := ip.String() - w.clients.SetWhoisInfo(id, info) + w.clients.SetWHOISInfo(id, info) } } diff --git a/internal/home/whois_test.go b/internal/home/whois_test.go index f87fa4ae..f05bd670 100644 --- a/internal/home/whois_test.go +++ b/internal/home/whois_test.go @@ -50,7 +50,7 @@ func (c *fakeConn) fakeDial(ctx context.Context, network, addr string) (conn net return c, nil } -func TestWhois(t *testing.T) { +func TestWHOIS(t *testing.T) { const ( nl = "\n" data = `OrgName: FakeOrg LLC` + nl + @@ -62,7 +62,7 @@ func TestWhois(t *testing.T) { data: []byte(data), } - w := Whois{ + w := WHOIS{ timeoutMsec: 5000, dialContext: fc.fakeDial, } @@ -77,7 +77,7 @@ func TestWhois(t *testing.T) { assert.Equal(t, "Nonreal", m["city"]) } -func TestWhoisParse(t *testing.T) { +func TestWHOISParse(t *testing.T) { const ( city = "Nonreal" country = "Imagiland" diff --git a/internal/querylog/client.go b/internal/querylog/client.go index 3e06dc99..92199f6d 100644 --- a/internal/querylog/client.go +++ b/internal/querylog/client.go @@ -3,17 +3,17 @@ package querylog // Client is the information required by the query log to match against clients // during searches. type Client struct { - Whois *ClientWhois `json:"whois,omitempty"` + WHOIS *ClientWHOIS `json:"whois,omitempty"` Name string `json:"name"` DisallowedRule string `json:"disallowed_rule"` Disallowed bool `json:"disallowed"` } -// ClientWhois is the filtered WHOIS data for the client. +// ClientWHOIS is the filtered WHOIS data for the client. // -// TODO(a.garipov): Merge with home.RuntimeClientWhoisInfo after the +// TODO(a.garipov): Merge with home.RuntimeClientWHOISInfo after the // refactoring is done. -type ClientWhois struct { +type ClientWHOIS struct { City string `json:"city,omitempty"` Country string `json:"country,omitempty"` Orgname string `json:"orgname,omitempty"` diff --git a/internal/querylog/qlog.go b/internal/querylog/qlog.go index bcdaa8b4..5e670eac 100644 --- a/internal/querylog/qlog.go +++ b/internal/querylog/qlog.go @@ -42,9 +42,9 @@ type ClientProto string // Client protocol names. const ( - ClientProtoDOH ClientProto = "doh" - ClientProtoDOQ ClientProto = "doq" - ClientProtoDOT ClientProto = "dot" + ClientProtoDoH ClientProto = "doh" + ClientProtoDoQ ClientProto = "doq" + ClientProtoDoT ClientProto = "dot" ClientProtoDNSCrypt ClientProto = "dnscrypt" ClientProtoPlain ClientProto = "" ) @@ -54,9 +54,9 @@ const ( func NewClientProto(s string) (cp ClientProto, err error) { switch cp = ClientProto(s); cp { case - ClientProtoDOH, - ClientProtoDOQ, - ClientProtoDOT, + ClientProtoDoH, + ClientProtoDoQ, + ClientProtoDoT, ClientProtoDNSCrypt, ClientProtoPlain: diff --git a/openapi/openapi.yaml b/openapi/openapi.yaml index 7b145ed0..dbe6c2c0 100644 --- a/openapi/openapi.yaml +++ b/openapi/openapi.yaml @@ -41,7 +41,7 @@ - 'name': 'stats' 'description': 'AdGuard Home statistics' - 'name': 'tls' - 'description': 'AdGuard Home HTTPS/DOH/DOT settings' + 'description': 'AdGuard Home HTTPS/DoH/DoQ/DoT settings' 'paths': '/status': @@ -1877,7 +1877,7 @@ 'type': 'string' 'client_id': 'description': > - The client ID, if provided in DOH, DOQ, or DOT. + The client ID, if provided in DoH, DoQ, or DoT. 'example': 'cli123' 'type': 'string' 'client_info': @@ -2036,7 +2036,7 @@ 'enabled': 'type': 'boolean' 'example': true - 'description': 'enabled is the encryption (DOT/DOH/HTTPS) status' + 'description': 'enabled is the encryption (DoT/DoH/HTTPS) status' 'server_name': 'type': 'string' 'example': 'example.org' @@ -2054,12 +2054,12 @@ 'type': 'integer' 'format': 'uint16' 'example': 853 - 'description': 'DNS-over-TLS port. If 0, DOT will be disabled.' + 'description': 'DNS-over-TLS port. If 0, DoT will be disabled.' 'port_dns_over_quic': 'type': 'integer' 'format': 'uint16' 'example': 784 - 'description': 'DNS-over-QUIC port. If 0, DOQ will be disabled.' + 'description': 'DNS-over-QUIC port. If 0, DoQ will be disabled.' 'certificate_chain': 'type': 'string' 'description': 'Base64 string with PEM-encoded certificates chain' diff --git a/staticcheck.conf b/staticcheck.conf index 3890f802..84d08287 100644 --- a/staticcheck.conf +++ b/staticcheck.conf @@ -5,9 +5,6 @@ initialisms = [ # Do not add "PTR" since we use "Ptr" as a suffix. "inherit" , "DHCP" -, "DOH" -, "DOQ" -, "DOT" , "EDNS" , "MX" , "QUIC" @@ -16,6 +13,7 @@ initialisms = [ , "SLAAC" , "SVCB" , "TLD" +, "WHOIS" ] dot_import_whitelist = [] http_status_code_whitelist = []