mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-12-15 03:02:07 +03:00
API /stats_top -- show only top entries for last 3 minutes
This commit is contained in:
parent
38b3fe6718
commit
8198b65f29
@ -409,6 +409,9 @@ func handleStatsTop(w http.ResponseWriter, r *http.Request) {
|
|||||||
domains := map[string]int{}
|
domains := map[string]int{}
|
||||||
blocked := map[string]int{}
|
blocked := map[string]int{}
|
||||||
clients := map[string]int{}
|
clients := map[string]int{}
|
||||||
|
now := time.Now()
|
||||||
|
timeWindow := time.Minute * 3
|
||||||
|
notBefore := now.Add(timeWindow * -1)
|
||||||
|
|
||||||
for _, value := range values {
|
for _, value := range values {
|
||||||
entry, ok := value.(map[string]interface{})
|
entry, ok := value.(map[string]interface{})
|
||||||
@ -419,6 +422,11 @@ func handleStatsTop(w http.ResponseWriter, r *http.Request) {
|
|||||||
host := getHost(entry)
|
host := getHost(entry)
|
||||||
reason := getReason(entry)
|
reason := getReason(entry)
|
||||||
client := getClient(entry)
|
client := getClient(entry)
|
||||||
|
time := getTime(entry)
|
||||||
|
if time.Before(notBefore) {
|
||||||
|
// skip if the entry is before specified cutoff
|
||||||
|
continue
|
||||||
|
}
|
||||||
if len(host) > 0 {
|
if len(host) > 0 {
|
||||||
domains[host]++
|
domains[host]++
|
||||||
}
|
}
|
||||||
|
17
helpers.go
17
helpers.go
@ -7,6 +7,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func clamp(value, low, high int) int {
|
func clamp(value, low, high int) int {
|
||||||
@ -167,6 +168,22 @@ func getClient(entry map[string]interface{}) string {
|
|||||||
return client
|
return client
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getTime(entry map[string]interface{}) time.Time {
|
||||||
|
t, ok := entry["time"]
|
||||||
|
if !ok {
|
||||||
|
return time.Time{}
|
||||||
|
}
|
||||||
|
tstr, ok := t.(string)
|
||||||
|
if !ok {
|
||||||
|
return time.Time{}
|
||||||
|
}
|
||||||
|
value, err := time.Parse(time.RFC3339, tstr)
|
||||||
|
if err != nil {
|
||||||
|
return time.Time{}
|
||||||
|
}
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------------
|
// -------------------------------------------------
|
||||||
// helper functions for parsing parameters from body
|
// helper functions for parsing parameters from body
|
||||||
// -------------------------------------------------
|
// -------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user