Skip to content

Commit

Permalink
Pull request: all: imp http handlers, imp docs
Browse files Browse the repository at this point in the history
Merge in DNS/adguard-home from fix-openapi to master

Squashed commit of the following:

commit 0e75304
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Wed Jan 13 17:02:06 2021 +0300

    all: imp http handlers, imp docs
  • Loading branch information
ainar-g authored and heyxkhoa committed Mar 17, 2023
1 parent df6004d commit dc7687c
Show file tree
Hide file tree
Showing 7 changed files with 87 additions and 27 deletions.
10 changes: 5 additions & 5 deletions internal/dnsforward/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -522,12 +522,12 @@ func (s *Server) handleDOH(w http.ResponseWriter, r *http.Request) {
}

func (s *Server) registerHandlers() {
s.conf.HTTPRegister("GET", "/control/dns_info", s.handleGetConfig)
s.conf.HTTPRegister("POST", "/control/dns_config", s.handleSetConfig)
s.conf.HTTPRegister("POST", "/control/test_upstream_dns", s.handleTestUpstreamDNS)
s.conf.HTTPRegister(http.MethodGet, "/control/dns_info", s.handleGetConfig)
s.conf.HTTPRegister(http.MethodPost, "/control/dns_config", s.handleSetConfig)
s.conf.HTTPRegister(http.MethodPost, "/control/test_upstream_dns", s.handleTestUpstreamDNS)

s.conf.HTTPRegister("GET", "/control/access/list", s.handleAccessList)
s.conf.HTTPRegister("POST", "/control/access/set", s.handleAccessSet)
s.conf.HTTPRegister(http.MethodGet, "/control/access/list", s.handleAccessList)
s.conf.HTTPRegister(http.MethodPost, "/control/access/set", s.handleAccessSet)

s.conf.HTTPRegister("", "/dns-query", s.handleDOH)
}
4 changes: 2 additions & 2 deletions internal/home/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -369,8 +369,8 @@ func handleLogout(w http.ResponseWriter, r *http.Request) {

// RegisterAuthHandlers - register handlers
func RegisterAuthHandlers() {
Context.mux.Handle("/control/login", postInstallHandler(ensureHandler("POST", handleLogin)))
httpRegister("GET", "/control/logout", handleLogout)
Context.mux.Handle("/control/login", postInstallHandler(ensureHandler(http.MethodPost, handleLogin)))
httpRegister(http.MethodGet, "/control/logout", handleLogout)
}

func parseCookie(cookie string) string {
Expand Down
2 changes: 1 addition & 1 deletion internal/home/auth_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ func TestAuthHTTP(t *testing.T) {
w.hdr = make(http.Header)
r := http.Request{}
r.Header = make(http.Header)
r.Method = "GET"
r.Method = http.MethodGet

// get / - we're redirected to login page
r.URL = &url.URL{Path: "/"}
Expand Down
2 changes: 1 addition & 1 deletion internal/home/authglinet_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func TestAuthGL(t *testing.T) {
binary.BigEndian.PutUint32(data, tval)
}
assert.Nil(t, ioutil.WriteFile(glFilePrefix+"test", data, 0o644))
r, _ := http.NewRequest("GET", "http://localhost/", nil)
r, _ := http.NewRequest(http.MethodGet, "http://localhost/", nil)
r.AddCookie(&http.Cookie{Name: glCookieName, Value: "test"})
assert.True(t, glProcessCookie(r))
GLMode = false
Expand Down
8 changes: 4 additions & 4 deletions internal/home/control.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func addDNSAddress(dnsAddresses *[]string, addr string) {
*dnsAddresses = append(*dnsAddresses, addr)
}

func handleStatus(w http.ResponseWriter, r *http.Request) {
func handleStatus(w http.ResponseWriter, _ *http.Request) {
c := dnsforward.FilteringConfig{}
if Context.dnsServer != nil {
Context.dnsServer.WriteDiskConfig(&c)
Expand Down Expand Up @@ -140,7 +140,7 @@ func ensure(method string, handler func(http.ResponseWriter, *http.Request)) fun
return
}

if method == "POST" || method == "PUT" || method == "DELETE" {
if method == http.MethodPost || method == http.MethodPut || method == http.MethodDelete {
Context.controlLock.Lock()
defer Context.controlLock.Unlock()
}
Expand All @@ -150,11 +150,11 @@ func ensure(method string, handler func(http.ResponseWriter, *http.Request)) fun
}

func ensurePOST(handler func(http.ResponseWriter, *http.Request)) func(http.ResponseWriter, *http.Request) {
return ensure("POST", handler)
return ensure(http.MethodPost, handler)
}

func ensureGET(handler func(http.ResponseWriter, *http.Request)) func(http.ResponseWriter, *http.Request) {
return ensure("GET", handler)
return ensure(http.MethodGet, handler)
}

// Bridge between http.Handler object and Go function
Expand Down
2 changes: 2 additions & 0 deletions openapi/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@

The old fields will be removed in v0.106.0.

As well as other documentation fixes.

## v0.103: API changes

### API: replace settings in GET /control/dns_info & POST /control/dns_config
Expand Down
86 changes: 72 additions & 14 deletions openapi/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -608,7 +608,7 @@
'application/json':
'schema':
'type': 'object'
'parameters':
'properties':
'enabled':
'type': 'boolean'
'examples':
Expand Down Expand Up @@ -664,7 +664,7 @@
'application/json':
'schema':
'type': 'object'
'parameters':
'properties':
'enable':
'type': 'boolean'
'sensitivity':
Expand Down Expand Up @@ -705,7 +705,7 @@
'application/json':
'schema':
'type': 'object'
'parameters':
'properties':
'enabled':
'type': 'boolean'
'examples':
Expand Down Expand Up @@ -789,6 +789,39 @@
'application/json':
'schema':
'$ref': '#/components/schemas/ClientsFindResponse'
'/access/list':
'get':
'operationId': 'accessList'
'responses':
'200':
'description': 'OK.'
'content':
'application/json':
'schema':
'$ref': '#/components/schemas/AccessListResponse'
'summary': 'List (dis)allowed clients, blocked hosts, etc.'
'tags':
- 'clients'
'/access/set':
'post':
'operationId': 'accessSet'
'requestBody':
'content':
'application/json':
'schema':
'$ref': '#/components/schemas/AccessSetRequest'
'required': true
'responses':
'200':
'description': 'OK.'
'400':
'description': >
Failed to parse JSON or cannot save the list.
'500':
'description': 'Internal error.'
'summary': 'Set (dis)allowed clients, blocked hosts, etc.'
'tags':
- 'clients'
'/blocked_services/list':
'get':
'tags':
Expand Down Expand Up @@ -1124,31 +1157,35 @@
'type': 'object'
'description': 'AdGuard Home server status and configuration'
'required':
- 'dns_address'
- 'dns_addresses'
- 'dns_port'
- 'http_port'
- 'protection_enabled'
- 'querylog_enabled'
- 'running'
- 'bootstrap_dns'
- 'upstream_dns'
- 'version'
- 'language'
'properties':
'dns_address':
'type': 'string'
'example': '127.0.0.1'
'dns_addresses':
'example': ['127.0.0.1']
'items':
'type': 'string'
'type': 'array'
'dns_port':
'type': 'integer'
'format': 'uint16'
'example': 53
'minimum': 1
'maximum': 65535
'http_port':
'type': 'integer'
'format': 'uint16'
'example': 80
'minimum': 1
'maximum': 65535
'protection_enabled':
'type': 'boolean'
'dhcp_available':
'type': 'boolean'
'querylog_enabled':
'type': 'boolean'
'running':
'type': 'boolean'
'version':
Expand Down Expand Up @@ -2077,6 +2114,29 @@
'description': 'Response to clients find operation'
'items':
'$ref': '#/components/schemas/ClientsFindEntry'
'AccessListResponse':
'$ref': '#/components/schemas/AccessList'
'AccessSetRequest':
'$ref': '#/components/schemas/AccessList'
'AccessList':
'description': 'Client and host access list'
'properties':
'allowed_clients':
'description': 'Allowlist of clients.'
'items':
'type': 'string'
'type': 'array'
'disallowed_clients':
'description': 'Blocklist of clients.'
'items':
'type': 'string'
'type': 'array'
'blocked_hosts':
'description': 'Blocklist of hosts.'
'items':
'type': 'string'
'type': 'array'
'type': 'object'
'ClientsFindEntry':
'type': 'object'
'additionalProperties':
Expand Down Expand Up @@ -2249,7 +2309,6 @@
'status':
'type': 'string'
'default': ''
'example': ''
'can_autofix':
'type': 'boolean'
'example': false
Expand All @@ -2274,7 +2333,6 @@
'error':
'type': 'string'
'default': ''
'example': ''
'description': 'Error text. Set if static=error'
'InitialConfigurationBeta':
'type': 'object'
Expand Down

0 comments on commit dc7687c

Please sign in to comment.