mirror of
https://github.com/nezhahq/nezha.git
synced 2025-01-22 12:48:14 -05:00
🚸 IP 变更提醒增强
This commit is contained in:
parent
d59acfa824
commit
365148e0ac
@ -1,7 +1,7 @@
|
||||
<div align="center">
|
||||
<img width="500" style="max-width:100%" src="resource/static/brand.png" title="哪吒监控">
|
||||
<br><br>
|
||||
<img src="https://img.shields.io/github/workflow/status/naiba/nezha/Dashboard%20image?label=Dash%20v0.8.2&logo=github&style=for-the-badge"> <img src="https://img.shields.io/github/v/release/naiba/nezha?color=brightgreen&label=Agent&style=for-the-badge&logo=github"> <img src="https://img.shields.io/github/workflow/status/naiba/nezha/Agent%20release?label=Agent%20CI&logo=github&style=for-the-badge"> <img src="https://img.shields.io/badge/Installer-v0.6.1-brightgreen?style=for-the-badge&logo=linux">
|
||||
<img src="https://img.shields.io/github/workflow/status/naiba/nezha/Dashboard%20image?label=Dash%20v0.8.3&logo=github&style=for-the-badge"> <img src="https://img.shields.io/github/v/release/naiba/nezha?color=brightgreen&label=Agent&style=for-the-badge&logo=github"> <img src="https://img.shields.io/github/workflow/status/naiba/nezha/Agent%20release?label=Agent%20CI&logo=github&style=for-the-badge"> <img src="https://img.shields.io/badge/Installer-v0.6.1-brightgreen?style=for-the-badge&logo=linux">
|
||||
<br>
|
||||
<br>
|
||||
<p>:trollface: <b>哪吒监控</b> 一站式轻监控轻运维系统。支持系统状态、HTTP(SSL 证书变更、即将到期、到期)、TCP、Ping 监控报警,命令批量执行和计划任务。</p>
|
||||
|
@ -449,6 +449,7 @@ type settingForm struct {
|
||||
EnableIPChangeNotification string
|
||||
IgnoredIPNotification string
|
||||
Oauth2Type string
|
||||
Cover uint8
|
||||
}
|
||||
|
||||
func (ma *memberAPI) updateSetting(c *gin.Context) {
|
||||
@ -461,6 +462,7 @@ func (ma *memberAPI) updateSetting(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
dao.Conf.EnableIPChangeNotification = sf.EnableIPChangeNotification == "on"
|
||||
dao.Conf.Cover = sf.Cover
|
||||
dao.Conf.IgnoredIPNotification = sf.IgnoredIPNotification
|
||||
dao.Conf.Site.Brand = sf.Title
|
||||
dao.Conf.Site.Theme = sf.Theme
|
||||
|
@ -17,6 +17,11 @@ const (
|
||||
ConfigTypeGitee = "gitee"
|
||||
)
|
||||
|
||||
const (
|
||||
ConfigCoverAll = iota
|
||||
ConfigCoverIgnoreAll
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Debug bool
|
||||
Site struct {
|
||||
@ -35,10 +40,13 @@ type Config struct {
|
||||
HTTPPort uint
|
||||
GRPCPort uint
|
||||
EnableIPChangeNotification bool
|
||||
IgnoredIPNotification string // 忽略IP变更提醒的服务器列表
|
||||
|
||||
// IP变更提醒
|
||||
Cover uint8 // 覆盖范围
|
||||
IgnoredIPNotification string // 特定服务器
|
||||
|
||||
v *viper.Viper
|
||||
IgnoredIPNotificationServerIDs map[uint64]struct{}
|
||||
IgnoredIPNotificationServerIDs map[uint64]bool
|
||||
}
|
||||
|
||||
func (c *Config) Read(path string) error {
|
||||
@ -70,12 +78,12 @@ func (c *Config) Read(path string) error {
|
||||
}
|
||||
|
||||
func (c *Config) updateIgnoredIPNotificationID() {
|
||||
c.IgnoredIPNotificationServerIDs = make(map[uint64]struct{})
|
||||
c.IgnoredIPNotificationServerIDs = make(map[uint64]bool)
|
||||
splitedIDs := strings.Split(c.IgnoredIPNotification, ",")
|
||||
for i := 0; i < len(splitedIDs); i++ {
|
||||
id, _ := strconv.ParseUint(splitedIDs[i], 10, 64)
|
||||
if id > 0 {
|
||||
c.IgnoredIPNotificationServerIDs[id] = struct{}{}
|
||||
c.IgnoredIPNotificationServerIDs[id] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,8 +11,10 @@
|
||||
<div class="field">
|
||||
<label>登录类型</label>
|
||||
<select name="Oauth2Type">
|
||||
<option value="github"{{if eq .Conf.Oauth2.Type "github"}} selected="selected"{{end}}>GitHub</option>
|
||||
<option value="gitee"{{if eq .Conf.Oauth2.Type "gitee"}} selected="selected"{{end}}>Gitee</option>
|
||||
<option value="github" {{if eq .Conf.Oauth2.Type "github" }} selected="selected" {{end}}>GitHub
|
||||
</option>
|
||||
<option value="gitee" {{if eq .Conf.Oauth2.Type "gitee" }} selected="selected" {{end}}>Gitee
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="field">
|
||||
@ -22,9 +24,12 @@
|
||||
<div class="field">
|
||||
<label>前台主题</label>
|
||||
<select name="Theme">
|
||||
<option value="default"{{if eq .Conf.Site.Theme "default"}} selected="selected"{{end}}>默认主题</option>
|
||||
<option value="daynight"{{if eq .Conf.Site.Theme "daynight"}} selected="selected"{{end}}>JackieSung DayNight</option>
|
||||
<option value="hotaru"{{if eq .Conf.Site.Theme "hotaru"}} selected="selected"{{end}}>CokeMine Hotaru</option>
|
||||
<option value="default" {{if eq .Conf.Site.Theme "default" }} selected="selected" {{end}}>默认主题
|
||||
</option>
|
||||
<option value="daynight" {{if eq .Conf.Site.Theme "daynight" }} selected="selected" {{end}}>
|
||||
JackieSung DayNight</option>
|
||||
<option value="hotaru" {{if eq .Conf.Site.Theme "hotaru" }} selected="selected" {{end}}>CokeMine
|
||||
Hotaru</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="field">
|
||||
@ -36,13 +41,26 @@
|
||||
<input type="text" name="ViewPassword" placeholder="" value="{{.Conf.Site.ViewPassword}}">
|
||||
</div>
|
||||
<div class="field">
|
||||
<label>IP 变更忽略</label>
|
||||
<input type="text" name="IgnoredIPNotification" placeholder="服务器ID 以逗号隔开 1001,1002,1003" value="{{.Conf.IgnoredIPNotification}}">
|
||||
<label>IP 变更提醒</label>
|
||||
</div>
|
||||
<div class="field">
|
||||
<div class="ui nf-ssl checkbox">
|
||||
<input name="EnableIPChangeNotification" type="checkbox" tabindex="0" class="hidden">
|
||||
<label>开启 IP 变更提醒</label>
|
||||
<div class="ui segment">
|
||||
<div class="field">
|
||||
<label>覆盖范围</label>
|
||||
<select name="Cover" class="ui fluid dropdown">
|
||||
<option value=0>覆盖所有,仅特定服务器不提醒</option>
|
||||
<option value=1>忽略所有,仅提醒特定服务器</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label>特定服务器</label>
|
||||
<input type="text" name="IgnoredIPNotification" placeholder="服务器ID 以逗号隔开 1001,1002,1003"
|
||||
value="{{.Conf.IgnoredIPNotification}}">
|
||||
</div>
|
||||
<div class="field">
|
||||
<div class="ui nf-ssl checkbox">
|
||||
<input name="EnableIPChangeNotification" type="checkbox" tabindex="0" class="hidden">
|
||||
<label>启用</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button class="ui button" type="submit">保存</button>
|
||||
@ -64,7 +82,7 @@
|
||||
} else {
|
||||
$.suiAlert({
|
||||
title: '',
|
||||
description:resp.message,
|
||||
description: resp.message,
|
||||
type: 'error',
|
||||
time: '3',
|
||||
position: 'top-center',
|
||||
@ -73,7 +91,7 @@
|
||||
}).error(err => {
|
||||
$.suiAlert({
|
||||
title: '',
|
||||
description:err,
|
||||
description: err,
|
||||
type: 'error',
|
||||
time: '3',
|
||||
position: 'top-center',
|
||||
@ -82,8 +100,10 @@
|
||||
return false;
|
||||
})
|
||||
$('.checkbox').checkbox()
|
||||
{{if .Conf.EnableIPChangeNotification}}
|
||||
$('#settingForm').find("select[name=Cover]")
|
||||
.val({{.Conf.Cover}});
|
||||
{{ if .Conf.EnableIPChangeNotification}}
|
||||
$('.checkbox').checkbox('set checked')
|
||||
{{end}}
|
||||
{{ end }}
|
||||
</script>
|
||||
{{end}}
|
||||
|
@ -13,7 +13,7 @@ import (
|
||||
pb "github.com/naiba/nezha/proto"
|
||||
)
|
||||
|
||||
var Version = "v0.8.2" // !!记得修改 README 中的 badge 版本!!
|
||||
var Version = "v0.8.3" // !!记得修改 README 中的 badge 版本!!
|
||||
|
||||
const (
|
||||
SnapshotDelay = 3
|
||||
|
@ -86,7 +86,8 @@ func (s *NezhaHandler) ReportSystemInfo(c context.Context, r *pb.Host) (*pb.Rece
|
||||
dao.ServerLock.RLock()
|
||||
defer dao.ServerLock.RUnlock()
|
||||
if dao.Conf.EnableIPChangeNotification &&
|
||||
dao.Conf.IgnoredIPNotificationServerIDs[clientID] != struct{}{} &&
|
||||
((dao.Conf.Cover == model.ConfigCoverAll && !dao.Conf.IgnoredIPNotificationServerIDs[clientID]) ||
|
||||
(dao.Conf.Cover == model.ConfigCoverIgnoreAll && dao.Conf.IgnoredIPNotificationServerIDs[clientID])) &&
|
||||
dao.ServerList[clientID].Host != nil &&
|
||||
dao.ServerList[clientID].Host.IP != "" &&
|
||||
host.IP != "" &&
|
||||
|
Loading…
Reference in New Issue
Block a user