Add stub OpenAPI methods

This commit is contained in:
Eugene Bujak 2019-01-23 17:26:15 +03:00 committed by Eugene Bujak
parent 0820983d81
commit 8725c1df7a
2 changed files with 37 additions and 0 deletions

View File

@ -40,6 +40,7 @@ type configuration struct {
Filters []filter `yaml:"filters"` Filters []filter `yaml:"filters"`
UserRules []string `yaml:"user_rules"` UserRules []string `yaml:"user_rules"`
DHCP dhcpd.ServerConfig `yaml:"dhcp"` DHCP dhcpd.ServerConfig `yaml:"dhcp"`
TLS tlsConfig `yaml:"tls"`
logSettings `yaml:",inline"` logSettings `yaml:",inline"`
@ -60,6 +61,16 @@ type dnsConfig struct {
var defaultDNS = []string{"tls://1.1.1.1", "tls://1.0.0.1"} var defaultDNS = []string{"tls://1.1.1.1", "tls://1.0.0.1"}
// field ordering is important -- yaml fields will mirror ordering from here
type tlsConfig struct {
ServerName string `yaml:"server_name" json:"server_name"`
ForceHTTPS bool `yaml:"force_https" json:"force_https"`
PortHTTPS int `yaml:"port_https" json:"port_https"`
PortDNSOverTLS int `yaml:"port_dns_over_tls" json:"port_dns_over_tls"`
CertificateChain string `yaml:"certificate_chain" json:"certificate_chain"`
PrivateKey string `yaml:"private_key" json:"private_key"`
}
// initialize to default values, will be changed later when reading config or parsing command line // initialize to default values, will be changed later when reading config or parsing command line
var config = configuration{ var config = configuration{
ourConfigFilename: "AdGuardHome.yaml", ourConfigFilename: "AdGuardHome.yaml",

View File

@ -1025,6 +1025,29 @@ func handleInstallConfigure(w http.ResponseWriter, r *http.Request) {
} }
} }
// ---
// TLS
// ---
func handleTLSStatus(w http.ResponseWriter, r *http.Request) {
err := json.NewEncoder(w).Encode(&config.TLS)
if err != nil {
httpError(w, http.StatusInternalServerError, "Failed to marshal json with TLS status: %s", err)
return
}
}
func handleTLSConfigure(w http.ResponseWriter, r *http.Request) {
newconfig := tlsConfig{}
err := json.NewDecoder(r.body).Decode(&newconfig)
if err != nil {
httpError(w, http.StatusBadRequest, "Failed to parse new TLS config json: %s", err)
return
}
// TODO: validate before applying
config.TLS = newconfig
}
func registerInstallHandlers() { func registerInstallHandlers() {
http.HandleFunc("/control/install/get_addresses", preInstall(ensureGET(handleInstallGetAddresses))) http.HandleFunc("/control/install/get_addresses", preInstall(ensureGET(handleInstallGetAddresses)))
http.HandleFunc("/control/install/configure", preInstall(ensurePOST(handleInstallConfigure))) http.HandleFunc("/control/install/configure", preInstall(ensurePOST(handleInstallConfigure)))
@ -1068,4 +1091,7 @@ func registerControlHandlers() {
http.HandleFunc("/control/dhcp/interfaces", postInstall(optionalAuth(ensureGET(handleDHCPInterfaces)))) http.HandleFunc("/control/dhcp/interfaces", postInstall(optionalAuth(ensureGET(handleDHCPInterfaces))))
http.HandleFunc("/control/dhcp/set_config", postInstall(optionalAuth(ensurePOST(handleDHCPSetConfig)))) http.HandleFunc("/control/dhcp/set_config", postInstall(optionalAuth(ensurePOST(handleDHCPSetConfig))))
http.HandleFunc("/control/dhcp/find_active_dhcp", postInstall(optionalAuth(ensurePOST(handleDHCPFindActiveServer)))) http.HandleFunc("/control/dhcp/find_active_dhcp", postInstall(optionalAuth(ensurePOST(handleDHCPFindActiveServer))))
http.HandleFunc("/control/tls/status", postInstall(optionalAuth(ensureGET(handleTLSStatus))))
http.HandleFunc("/control/tls/configure", postInstall(optionalAuth(ensurePOST(handleTLSConfigure))))
} }