diff --git a/cmd/dashboard/controller/controller.go b/cmd/dashboard/controller/controller.go index 405a2b7..99a1831 100644 --- a/cmd/dashboard/controller/controller.go +++ b/cmd/dashboard/controller/controller.go @@ -71,6 +71,30 @@ func ServeWeb(port uint) { today := time.Date(year, month, day, 0, 0, 0, 0, time.Local) return today.AddDate(0, 0, i-29).Format("1月2号") }, + "className": func(percent float32) string { + if percent == 0 { + return "" + } + if percent > 95 { + return "good" + } + if percent > 80 { + return "warning" + } + return "danger" + }, + "statusName": func(percent float32) string { + if percent == 0 { + return "无数据" + } + if percent > 95 { + return "良好" + } + if percent > 80 { + return "低可用" + } + return "故障" + }, }) r.Static("/static", "resource/static") r.LoadHTMLGlob("resource/template/**/*") diff --git a/resource/template/theme-default/service.html b/resource/template/theme-default/service.html index 8ff8d5f..0f43f2b 100644 --- a/resource/template/theme-default/service.html +++ b/resource/template/theme-default/service.html @@ -8,29 +8,20 @@

{{$service.Monitor.Name}}

-

30天在线率{{divU64 $service.TotalDown (addU64 $service.TotalUp $service.TotalDown)}}%

+

30天在线率{{divU64 $service.TotalUp (addU64 $service.TotalUp $service.TotalDown)}}%

{{range $i,$d := $service.Delay}} -
+
{{end}}
-
+
- {{if gt (addU64 $service.TotalUp $service.TotalDown) 0}} - {{if gt (divU64 $service.TotalDown (addU64 $service.TotalUp $service.TotalDown)) 30.0}}故障 - {{else if gt (divU64 $service.TotalDown (addU64 $service.TotalUp $service.TotalDown)) 10.0}} - 低可用{{else}}良好{{end}} - {{else}}无数据 - {{end}} + {{statusName (div (index $service.Up 29) (add (index $service.Up 29) (index $service.Down 29)))}}
diff --git a/resource/template/theme-hotaru/home.html b/resource/template/theme-hotaru/home.html index d53ca1b..723ff77 100644 --- a/resource/template/theme-hotaru/home.html +++ b/resource/template/theme-hotaru/home.html @@ -135,6 +135,7 @@ diff --git a/resource/template/theme-hotaru/service.html b/resource/template/theme-hotaru/service.html new file mode 100644 index 0000000..b7e82f1 --- /dev/null +++ b/resource/template/theme-hotaru/service.html @@ -0,0 +1,33 @@ +{{define "theme-hotaru/service"}} +{{template "common/header" .}} +{{template "common/menu" .}} +
+
+
+ {{range $service := .Services}} +
+
+

{{$service.Monitor.Name}}

+

30天在线率{{divU64 $service.TotalUp (addU64 $service.TotalUp $service.TotalDown)}}%

+
+
+ {{range $i,$d := $service.Delay}} +
+ +
+ {{end}} +
+
+ + {{statusName (div (index $service.Up 29) (add (index $service.Up 29) (index $service.Down 29)))}} +
+
+
+ {{end}} +
+
+
+{{template "common/footer" .}} +{{end}} \ No newline at end of file diff --git a/service/dao/dao.go b/service/dao/dao.go index de7eb81..2873b1f 100644 --- a/service/dao/dao.go +++ b/service/dao/dao.go @@ -26,7 +26,7 @@ var SortedServerList []*model.Server var ServerLock sync.RWMutex -var Version = "v0.2.0" +var Version = "v0.2.1" func ReSortServer() { SortedServerList = []*model.Server{} diff --git a/service/monitor/monitor.go b/service/monitor/monitor.go index e2e04cc..7c9e845 100644 --- a/service/monitor/monitor.go +++ b/service/monitor/monitor.go @@ -43,6 +43,14 @@ func GetHost() *model.Host { body, _ := ioutil.ReadAll(resp.Body) json.Unmarshal(body, &ip) } + + resp, err = http.Get("https://api-ipv6.ip.sb/ip") + if err == nil { + defer resp.Body.Close() + body, _ := ioutil.ReadAll(resp.Body) + ip.IP = fmt.Sprintf("ip(v4: %s, v6: %s)", ip.IP, body) + } + return &model.Host{ Platform: hi.OS, PlatformVersion: hi.PlatformVersion, diff --git a/service/rpc/nezha.go b/service/rpc/nezha.go index cb71052..e3c1351 100644 --- a/service/rpc/nezha.go +++ b/service/rpc/nezha.go @@ -87,7 +87,8 @@ func (s *NezhaHandler) ReportSystemInfo(c context.Context, r *pb.Host) (*pb.Rece host := model.PB2Host(r) dao.ServerLock.RLock() defer dao.ServerLock.RUnlock() - if dao.ServerList[clientID].Host != nil && + if dao.Conf.EnableIPChangeNotification && + dao.ServerList[clientID].Host != nil && dao.ServerList[clientID].Host.IP != "" && host.IP != "" && dao.ServerList[clientID].Host.IP != host.IP {