Pull request 1838: 5716-content-type
Updates #5716. Squashed commit of the following: commit 584e6771c82b92857e3c13232e942cad5c183682 Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Wed Apr 19 14:54:43 2023 +0300 all: fix content types
This commit is contained in:
@@ -25,9 +25,13 @@ NOTE: Add new changes BELOW THIS COMMENT.
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
- Incorrect `Content-Type` header value in `POST /control/version.json` and `GET
|
||||||
|
/control/dhcp/interfaces` HTTP APIs ([#5716]).
|
||||||
- Provided bootstrap servers are now used to resolve the hostnames of plain
|
- Provided bootstrap servers are now used to resolve the hostnames of plain
|
||||||
UDP/TCP upstream servers.
|
UDP/TCP upstream servers.
|
||||||
|
|
||||||
|
[#5716]: https://github.com/AdguardTeam/AdGuardHome/issues/5716
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
NOTE: Add new changes ABOVE THIS COMMENT.
|
NOTE: Add new changes ABOVE THIS COMMENT.
|
||||||
-->
|
-->
|
||||||
|
|||||||
@@ -350,8 +350,10 @@ type netInterfaceJSON struct {
|
|||||||
Addrs6 []netip.Addr `json:"ipv6_addresses"`
|
Addrs6 []netip.Addr `json:"ipv6_addresses"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// handleDHCPInterfaces is the handler for the GET /control/dhcp/interfaces HTTP
|
||||||
|
// API.
|
||||||
func (s *server) handleDHCPInterfaces(w http.ResponseWriter, r *http.Request) {
|
func (s *server) handleDHCPInterfaces(w http.ResponseWriter, r *http.Request) {
|
||||||
response := map[string]netInterfaceJSON{}
|
resp := map[string]netInterfaceJSON{}
|
||||||
|
|
||||||
ifaces, err := net.Interfaces()
|
ifaces, err := net.Interfaces()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -424,20 +426,11 @@ func (s *server) handleDHCPInterfaces(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
if len(jsonIface.Addrs4)+len(jsonIface.Addrs6) != 0 {
|
if len(jsonIface.Addrs4)+len(jsonIface.Addrs6) != 0 {
|
||||||
jsonIface.GatewayIP = aghnet.GatewayIP(iface.Name)
|
jsonIface.GatewayIP = aghnet.GatewayIP(iface.Name)
|
||||||
response[iface.Name] = jsonIface
|
resp[iface.Name] = jsonIface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = json.NewEncoder(w).Encode(response)
|
_ = aghhttp.WriteJSONResponse(w, r, resp)
|
||||||
if err != nil {
|
|
||||||
aghhttp.Error(
|
|
||||||
r,
|
|
||||||
w,
|
|
||||||
http.StatusInternalServerError,
|
|
||||||
"Failed to marshal json with available interfaces: %s",
|
|
||||||
err,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// dhcpSearchOtherResult contains information about other DHCP server for
|
// dhcpSearchOtherResult contains information about other DHCP server for
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ func registerControlHandlers() {
|
|||||||
httpRegister(http.MethodGet, "/control/status", handleStatus)
|
httpRegister(http.MethodGet, "/control/status", handleStatus)
|
||||||
httpRegister(http.MethodPost, "/control/i18n/change_language", handleI18nChangeLanguage)
|
httpRegister(http.MethodPost, "/control/i18n/change_language", handleI18nChangeLanguage)
|
||||||
httpRegister(http.MethodGet, "/control/i18n/current_language", handleI18nCurrentLanguage)
|
httpRegister(http.MethodGet, "/control/i18n/current_language", handleI18nCurrentLanguage)
|
||||||
Context.mux.HandleFunc("/control/version.json", postInstall(optionalAuth(handleGetVersionJSON)))
|
Context.mux.HandleFunc("/control/version.json", postInstall(optionalAuth(handleVersionJSON)))
|
||||||
httpRegister(http.MethodPost, "/control/update", handleUpdate)
|
httpRegister(http.MethodPost, "/control/update", handleUpdate)
|
||||||
httpRegister(http.MethodGet, "/control/profile", handleGetProfile)
|
httpRegister(http.MethodGet, "/control/profile", handleGetProfile)
|
||||||
httpRegister(http.MethodPut, "/control/profile/update", handlePutProfile)
|
httpRegister(http.MethodPut, "/control/profile/update", handlePutProfile)
|
||||||
|
|||||||
@@ -26,15 +26,14 @@ type temporaryError interface {
|
|||||||
Temporary() (ok bool)
|
Temporary() (ok bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the latest available version from the Internet
|
// handleVersionJSON is the handler for the POST /control/version.json HTTP API.
|
||||||
func handleGetVersionJSON(w http.ResponseWriter, r *http.Request) {
|
//
|
||||||
|
// TODO(a.garipov): Find out if this API used with a GET method by anyone.
|
||||||
|
func handleVersionJSON(w http.ResponseWriter, r *http.Request) {
|
||||||
resp := &versionResponse{}
|
resp := &versionResponse{}
|
||||||
if Context.disableUpdate {
|
if Context.disableUpdate {
|
||||||
resp.Disabled = true
|
resp.Disabled = true
|
||||||
err := json.NewEncoder(w).Encode(resp)
|
_ = aghhttp.WriteJSONResponse(w, r, resp)
|
||||||
if err != nil {
|
|
||||||
aghhttp.Error(r, w, http.StatusInternalServerError, "writing body: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,16 @@
|
|||||||
|
|
||||||
## v0.108.0: API changes
|
## v0.108.0: API changes
|
||||||
|
|
||||||
|
## v0.107.30: API changes
|
||||||
|
|
||||||
|
### `POST /control/version.json` and `GET /control/dhcp/interfaces` content type
|
||||||
|
|
||||||
|
* The value of the `Content-Type` header in the `POST /control/version.json` and
|
||||||
|
`GET /control/dhcp/interfaces` HTTP APIs is now correctly set to
|
||||||
|
`application/json` as opposed to `text/plain`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## v0.107.29: API changes
|
## v0.107.29: API changes
|
||||||
|
|
||||||
### `GET /control/clients` And `GET /control/clients/find`
|
### `GET /control/clients` And `GET /control/clients/find`
|
||||||
@@ -16,6 +26,8 @@
|
|||||||
set AdGuard Home will use default value (false). It can be changed in the
|
set AdGuard Home will use default value (false). It can be changed in the
|
||||||
future versions.
|
future versions.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## v0.107.27: API changes
|
## v0.107.27: API changes
|
||||||
|
|
||||||
### The new optional fields `"edns_cs_use_custom"` and `"edns_cs_custom_ip"` in `DNSConfig`
|
### The new optional fields `"edns_cs_use_custom"` and `"edns_cs_custom_ip"` in `DNSConfig`
|
||||||
|
|||||||
Reference in New Issue
Block a user