diff --git a/dnsforward/access.go b/dnsforward/access.go index 7f2b4dae..e27ddb1f 100644 --- a/dnsforward/access.go +++ b/dnsforward/access.go @@ -64,7 +64,7 @@ func processIPCIDRArray(dst *map[string]bool, dstIPNet *[]net.IPNet, src []strin return nil } -// Return TRUE if this client should be blocked +// IsBlockedIP - return TRUE if this client should be blocked func (a *accessCtx) IsBlockedIP(ip string) bool { a.lock.Lock() defer a.lock.Unlock() @@ -104,7 +104,7 @@ func (a *accessCtx) IsBlockedIP(ip string) bool { return false } -// Return TRUE if this domain should be blocked +// IsBlockedDomain - return TRUE if this domain should be blocked func (a *accessCtx) IsBlockedDomain(host string) bool { a.lock.Lock() _, ok := a.blockedHosts[host] diff --git a/dnsforward/dnsforward.go b/dnsforward/dnsforward.go index 7efb38e1..94de90cf 100644 --- a/dnsforward/dnsforward.go +++ b/dnsforward/dnsforward.go @@ -113,10 +113,6 @@ type FilteringConfig struct { ParentalBlockHost string `yaml:"parental_block_host"` SafeBrowsingBlockHost string `yaml:"safebrowsing_block_host"` - // Names of services to block (globally). - // Per-client settings can override this configuration. - BlockedServices []string `yaml:"blocked_services"` - CacheSize uint `yaml:"cache_size"` // DNS cache size (in bytes) UpstreamDNS []string `yaml:"upstream_dns"` } @@ -282,13 +278,8 @@ func (s *Server) IsRunning() bool { return isRunning } -// Reconfigure2 - safely apply and write new configuration and restart -func (s *Server) Reconfigure2(newconf FilteringConfig) error { - s.Lock() - s.conf.FilteringConfig = newconf - s.Unlock() - s.conf.ConfigModified() - +// Restart - restart server +func (s *Server) Restart() error { s.Lock() defer s.Unlock() log.Print("Start reconfiguring the server") diff --git a/dnsforward/dnsforward_http.go b/dnsforward/dnsforward_http.go index 467cabf4..b8b51d76 100644 --- a/dnsforward/dnsforward_http.go +++ b/dnsforward/dnsforward_http.go @@ -63,7 +63,15 @@ func (s *Server) handleSetUpstreamConfig(w http.ResponseWriter, r *http.Request) newconf.BootstrapDNS = req.BootstrapDNS newconf.AllServers = req.AllServers - err = s.Reconfigure2(newconf) + + s.Lock() + s.conf.UpstreamDNS = newconf.UpstreamDNS + s.conf.BootstrapDNS = newconf.BootstrapDNS + s.conf.AllServers = newconf.AllServers + s.Unlock() + s.conf.ConfigModified() + + err = s.Restart() if err != nil { httpError(r, w, http.StatusInternalServerError, "%s", err) return diff --git a/home/blocked_services.go b/home/blocked_services.go index 7cb09f11..335668bc 100644 --- a/home/blocked_services.go +++ b/home/blocked_services.go @@ -186,6 +186,8 @@ func handleBlockedServicesSet(w http.ResponseWriter, r *http.Request) { httpError(w, http.StatusBadRequest, "%s", err) return } + + httpOK(r, w) } // RegisterBlockedServicesHandlers - register HTTP handlers diff --git a/home/config.go b/home/config.go index 09428db8..8622155f 100644 --- a/home/config.go +++ b/home/config.go @@ -112,6 +112,10 @@ type dnsConfig struct { FilteringEnabled bool `yaml:"filtering_enabled"` // whether or not use filter lists FiltersUpdateIntervalHours uint32 `yaml:"filters_update_interval"` // time period to update filters (in hours) DnsfilterConf dnsfilter.Config `yaml:",inline"` + + // Names of services to block (globally). + // Per-client settings can override this configuration. + BlockedServices []string `yaml:"blocked_services"` } type tlsConfigSettings struct { diff --git a/home/control.go b/home/control.go index a4ce2e0e..e27164c9 100644 --- a/home/control.go +++ b/home/control.go @@ -21,6 +21,9 @@ func returnOK(w http.ResponseWriter) { } } +func httpOK(r *http.Request, w http.ResponseWriter) { +} + func httpError(w http.ResponseWriter, code int, format string, args ...interface{}) { text := fmt.Sprintf(format, args...) log.Info(text)