diff options
| author | Shulhan <m.shulhan@gmail.com> | 2020-07-26 15:11:50 +0700 |
|---|---|---|
| committer | Shulhan <m.shulhan@gmail.com> | 2020-07-26 15:11:50 +0700 |
| commit | 5fa91b74cdf47e95a4cb8968bd5a505ea24efc6a (patch) | |
| tree | 24aa20a90e2c284bbeef0f99f8fa09d91358d1ce | |
| parent | fb4161eaaf4da54729eb5c74f7b4944d81c64627 (diff) | |
| download | rescached-5fa91b74cdf47e95a4cb8968bd5a505ea24efc6a.tar.xz | |
wui: update the hosts block last-updated format
Use the format "Year-month-day hour:minute:second TZ" for
last updated value.
| -rw-r--r-- | _www/src/HostsBlock.svelte | 115 | ||||
| -rw-r--r-- | hostsblock.go | 12 | ||||
| -rw-r--r-- | httpd.go | 18 |
3 files changed, 75 insertions, 70 deletions
diff --git a/_www/src/HostsBlock.svelte b/_www/src/HostsBlock.svelte index 0b62544..49049a3 100644 --- a/_www/src/HostsBlock.svelte +++ b/_www/src/HostsBlock.svelte @@ -4,7 +4,11 @@ import { apiEnvironment, environment, nanoSeconds } from './environment.js'; const apiHostsBlock = "/api/hosts_block" - let env = {}; + let env = { + NameServers: [], + HostsBlocks: [], + HostsFiles: [], + }; const envUnsubscribe = environment.subscribe(value => { env = value; @@ -21,38 +25,42 @@ }); const resJSON = await res.json() - - console.log(resJSON); } </script> <style> - .block_source.header { - font-weight: 600; - } - .block_source span { - font-size: 14px; - display: inline-block; - margin-right: 10px; - vertical-align: middle; - } - .block_source > span:nth-child(1) { - width: 60px; - } - .block_source > span:nth-child(2) { - width: 200px; - } - .block_source > span:nth-child(3) { - width: 300px; - } - .block_source > span:nth-child(3) input { - width: 300px; - } - .block_source > span:nth-child(4) { - } + .block_source { + width: calc(100% - 2em); + overflow: auto; + font-size: 12px; + } .block_source input:disabled { color: black; } + .item span { + display: inline-block; + margin-right: 1em; + } + .item.header { + font-weight: bold; + margin-bottom: 1em; + border-bottom: 1px solid silver; + } + .item > span:nth-child(1) { + width: 4em; + } + .item > span:nth-child(2) { + width: 15em; + } + .item > span:nth-child(3) { + width: 23em; + } + .item > span:nth-child(3) input { + width: 100%; + } + .item > span:nth-child(4) { + width: 16em; + } </style> <div class="hosts-block"> @@ -64,35 +72,36 @@ Configure the source of blocked hosts file. </p> - <div class="block_source header"> - <span> Enabled </span> - <span> Name </span> - <span> URL </span> - <span> Last updated </span> - </div> - <br/> - {#each env.HostsBlocks as hostsBlock} <div class="block_source"> - <span> - <input - type=checkbox - bind:checked={hostsBlock.IsEnabled} - > - </span> - <span> - {hostsBlock.Name} - </span> - <span> - <input - bind:value={hostsBlock.URL} - disabled - > - </span> - <span> - {hostsBlock.LastUpdated} - </span> + <div class="item header"> + <span> Enabled </span> + <span> Name </span> + <span> URL </span> + <span> Last updated </span> + </div> + {#each env.HostsBlocks as hostsBlock} + <div class="item"> + <span> + <input + type=checkbox + bind:checked={hostsBlock.IsEnabled} + > + </span> + <span> + {hostsBlock.Name} + </span> + <span> + <input + bind:value={hostsBlock.URL} + disabled + > + </span> + <span> + {hostsBlock.LastUpdated} + </span> + </div> + {/each} </div> - {/each} <div> <button on:click={updateHostsBlocks}> diff --git a/hostsblock.go b/hostsblock.go index 7a82c12..75c0424 100644 --- a/hostsblock.go +++ b/hostsblock.go @@ -35,8 +35,9 @@ var hostsBlockSources = []*hostsBlock{{ type hostsBlock struct { Name string // Derived from hostname in URL. URL string - LastUpdated time.Time + LastUpdated string IsEnabled bool + lastUpdated time.Time file string } @@ -55,7 +56,8 @@ func (hb *hostsBlock) init(sources []string) { return } - hb.LastUpdated = fi.ModTime() + hb.lastUpdated = fi.ModTime() + hb.LastUpdated = hb.lastUpdated.Format("2006-01-02 15:04:05 MST") } func (hb *hostsBlock) update(sources []*hostsBlock) bool { @@ -108,7 +110,7 @@ func (hb *hostsBlock) update(sources []*hostsBlock) bool { } func (hb *hostsBlock) hide() { - if hb.LastUpdated.IsZero() { + if hb.lastUpdated.IsZero() { return } @@ -126,11 +128,11 @@ func (hb *hostsBlock) isOld() bool { oneWeek := 7 * 24 * time.Hour lastWeek := time.Now().Add(-1 * oneWeek) - return hb.LastUpdated.Before(lastWeek) + return hb.lastUpdated.Before(lastWeek) } func (hb *hostsBlock) unhide() { - if hb.LastUpdated.IsZero() { + if hb.lastUpdated.IsZero() { return } @@ -79,15 +79,13 @@ func (srv *Server) httpdRegisterEndpoints() (err error) { return err } - epAPIPostHostsBlock := &http.Endpoint{ + err = srv.httpd.RegisterEndpoint(&http.Endpoint{ Method: http.RequestMethodPost, Path: "/api/hosts_block", RequestType: http.RequestTypeJSON, ResponseType: http.ResponseTypeJSON, - Call: srv.apiPostHostsBlock, - } - - err = srv.httpd.RegisterEndpoint(epAPIPostHostsBlock) + Call: srv.apiHostsBlockUpdate, + }) if err != nil { return err } @@ -203,7 +201,7 @@ func (srv *Server) httpdAPIPostEnvironment( return json.Marshal(res) } -func (srv *Server) apiPostHostsBlock( +func (srv *Server) apiHostsBlockUpdate( httpRes stdhttp.ResponseWriter, req *stdhttp.Request, reqBody []byte, ) ( resBody []byte, err error, @@ -220,10 +218,6 @@ func (srv *Server) apiPostHostsBlock( Message: "Restarting DNS server", } - for x, hb := range hostsBlocks { - fmt.Printf("apiPostHostsBlock[%d]: %+v\n", x, hb) - } - var mustRestart bool for _, hb := range srv.env.HostsBlocks { isUpdated := hb.update(hostsBlocks) @@ -234,7 +228,7 @@ func (srv *Server) apiPostHostsBlock( err = srv.env.write(srv.fileConfig) if err != nil { - log.Println("apiPostHostsBlock:", err.Error()) + log.Println("apiHostsBlockUpdate:", err.Error()) res.Code = stdhttp.StatusInternalServerError res.Message = err.Error() return json.Marshal(res) @@ -244,7 +238,7 @@ func (srv *Server) apiPostHostsBlock( srv.Stop() err = srv.Start() if err != nil { - log.Println("apiPostHostsBlock:", err.Error()) + log.Println("apiHostsBlockUpdate:", err.Error()) res.Code = stdhttp.StatusInternalServerError res.Message = err.Error() } |
