http header panic fix - cache in settings

pull/135/head
hunterlong 2019-02-01 12:40:39 -08:00
parent 60262f75f9
commit 8825f836e8
6 changed files with 49 additions and 13 deletions

View File

@ -14,6 +14,7 @@ type Cacher interface {
Get(key string) []byte
Delete(key string)
Set(key string, content []byte, duration time.Duration)
List() map[string]Item
}
// Item is a cached reference
@ -44,6 +45,10 @@ func NewStorage() *Storage {
}
}
func (s Storage) List() map[string]Item {
return s.items
}
//Get a cached content by key
func (s Storage) Get(key string) []byte {
item := s.items[key]

View File

@ -82,6 +82,9 @@ var handlerFuncs = func(w http.ResponseWriter, r *http.Request) template.FuncMap
"Error": func() string {
return ""
},
"Cache": func() Cacher {
return CacheStorage
},
"ToString": func(v interface{}) string {
return utils.ToString(v)
},
@ -98,6 +101,12 @@ var handlerFuncs = func(w http.ResponseWriter, r *http.Request) template.FuncMap
"FromUnix": func(t int64) string {
return utils.Timezoner(time.Unix(t, 0), core.CoreApp.Timezone).Format("Monday, January 02")
},
"UnixTime": func(t int64, nano bool) string {
if nano {
t = t / 1e9
}
return utils.Timezoner(time.Unix(t, 0), core.CoreApp.Timezone).String()
},
"NewService": func() *types.Service {
return new(types.Service)
},

View File

@ -8,6 +8,7 @@
<div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
<a class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-selected="true"><i class="fa fa-cogs"></i> Settings</a>
<a class="nav-link" id="v-pills-style-tab" data-toggle="pill" href="#v-pills-style" role="tab" aria-controls="v-pills-style" aria-selected="false"><i class="fa fa-image"></i> Theme Editor</a>
<a class="nav-link" id="v-pills-cache-tab" data-toggle="pill" href="#v-pills-cache" role="tab" aria-controls="v-pills-cache" aria-selected="false"><i class="fa fa-paperclip"></i> Cache</a>
{{ range .Notifications }}
<a class="nav-link text-capitalize" id="v-pills-{{underscore .Select.Method}}-tab" data-toggle="pill" href="#v-pills-{{underscore .Select.Method}}" role="tab" aria-controls="v-pills-{{underscore .Select.Method}}" aria-selected="false"><i class="{{.Select.Icon}}"></i> {{.Select.Method}}</a>
{{ end }}
@ -125,7 +126,6 @@
<h3>Additional Settings</h3>
<div class="row">
<a href="/api/clear_cache" class="btn btn-sm btn-secondary float-right">Clear Cache</a>
<a href="/settings/export" class="btn btn-sm btn-secondary float-right">Export Settings</a>
{{if .Domain}}
<a href="#" class="btn btn-sm btn-secondary float-right ml-1">Authentication QR Code</a>
@ -180,6 +180,28 @@
{{end}}
</div>
<div class="tab-pane" id="v-pills-cache" role="tabpanel" aria-labelledby="v-pills-cache-tab">
<h3>Cache</h3>
<table class="table">
<thead>
<tr>
<th scope="col">URL</th>
<th scope="col">Size</th>
<th scope="col">Expiration</th>
</tr>
</thead>
<tbody>
{{ range $key, $value := Cache.List }}
<tr>
<td>{{$key}}</td>
<td>{{len $value.Content}}</td>
<td>{{UnixTime $value.Expiration true}}</td>
</tr>
{{end}}
</tbody>
</table>
<a href="/api/clear_cache" class="btn btn-danger btn-block">Clear Cache</a>
</div>
{{ range .Notifications }}
{{$n := .Select}}
<div class="tab-pane fade" id="v-pills-{{underscore $n.Method}}" role="tabpanel" aria-labelledby="v-pills-{{underscore $n.Method }}-tab">

View File

@ -1,6 +1,6 @@
// Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at
// 2019-02-01 11:55:53.781812 -0800 PST m=+0.615412774
// 2019-02-01 12:26:35.052075 -0800 PST m=+0.640410556
//
// This contains the most recently Markdown source for the Statping Wiki.
package source

View File

@ -247,24 +247,24 @@ func HttpRequest(url, method string, content interface{}, headers []string, body
Transport: transport,
Timeout: timeout,
}
r := new(http.Request)
var req *http.Request
if req, err = http.NewRequest(method, url, body); err != nil {
return nil, nil, err
}
req.Header.Set("User-Agent", "Statping")
if content != nil {
req.Header.Set("Content-Type", content.(string))
}
for _, h := range headers {
keyVal := strings.Split(h, "=")
if len(keyVal) == 2 {
if keyVal[0] != "" && keyVal[1] != "" {
r.Header.Add(keyVal[0], keyVal[1])
req.Header.Set(keyVal[0], keyVal[1])
}
}
}
if r, err = http.NewRequest(method, url, body); err != nil {
return nil, nil, err
}
r.Header.Set("User-Agent", "Statping")
if content != nil {
r.Header.Set("Content-Type", content.(string))
}
var resp *http.Response
if resp, err = client.Do(r); err != nil {
if resp, err = client.Do(req); err != nil {
return nil, resp, err
}
defer resp.Body.Close()

View File

@ -1 +1 @@
0.80.42
0.80.43