aboutsummaryrefslogtreecommitdiff
path: root/rescached.go
diff options
context:
space:
mode:
authorShulhan <m.shulhan@gmail.com>2020-06-02 01:31:30 +0700
committerShulhan <m.shulhan@gmail.com>2020-07-26 03:48:51 +0700
commite643e59ae5aaac660682b04b2b09e3bf3c399fac (patch)
treed5dfa732ba8ac1628de7869e625f4f9740d4ac3b /rescached.go
parentb1b190cfb830305e4fddd2b8bf8264984b41f3e3 (diff)
downloadrescached-e643e59ae5aaac660682b04b2b09e3bf3c399fac.tar.xz
all: store the loaded hosts and master files
To be able to edit the hosts or master file through web UI, we need to store it some where. This changes is premilinary commit before we add the actual UI to edit hosts file.
Diffstat (limited to 'rescached.go')
-rw-r--r--rescached.go28
1 files changed, 25 insertions, 3 deletions
diff --git a/rescached.go b/rescached.go
index 0161883..3aab17a 100644
--- a/rescached.go
+++ b/rescached.go
@@ -25,6 +25,9 @@ type Server struct {
httpd *http.Server
httpdRunner sync.Once
+
+ hostsFiles map[string]*dns.HostsFile
+ masterFiles map[string]*dns.MasterFile
}
//
@@ -60,9 +63,28 @@ func (srv *Server) Start() (err error) {
return err
}
- srv.dns.LoadHostsDir(dirHosts)
- srv.dns.LoadMasterDir(dirMaster)
- srv.dns.LoadHostsFile("")
+ hostsFile, err := dns.ParseHostsFile(dns.GetSystemHosts())
+ if err != nil {
+ return err
+ }
+ srv.dns.PopulateCaches(hostsFile.Messages)
+
+ srv.hostsFiles, err = dns.LoadHostsDir(dirHosts)
+ if err != nil {
+ return err
+ }
+
+ for _, hostsFile := range srv.hostsFiles {
+ srv.dns.PopulateCaches(hostsFile.Messages)
+ }
+
+ srv.masterFiles, err = dns.LoadMasterDir(dirMaster)
+ if err != nil {
+ return err
+ }
+ for _, masterFile := range srv.masterFiles {
+ srv.dns.PopulateCaches(masterFile.Messages)
+ }
if len(srv.env.FileResolvConf) > 0 {
srv.rcWatcher, err = libio.NewWatcher(