diff options
| author | Shulhan <m.shulhan@gmail.com> | 2020-06-02 01:31:30 +0700 |
|---|---|---|
| committer | Shulhan <m.shulhan@gmail.com> | 2020-07-26 03:48:51 +0700 |
| commit | e643e59ae5aaac660682b04b2b09e3bf3c399fac (patch) | |
| tree | d5dfa732ba8ac1628de7869e625f4f9740d4ac3b /rescached.go | |
| parent | b1b190cfb830305e4fddd2b8bf8264984b41f3e3 (diff) | |
| download | rescached-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.go | 28 |
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( |
