diff --git a/README.md b/README.md index 4c7d3bc..f3e9a53 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,7 @@ docker run -d -p 8080:8080 -e GLC_CLUSTER_MODE=true -e GLC_SERVER_URL=http://172 - [x] `GLC_TEST_MODE`是否开启测试模式,开启时显示生成测试数据的按钮,供测试或快速体验用,默认`false` - [x] `GLC_WHITE_LIST`白名单,多个用逗号分隔,黑白名单冲突时白名单优先,默认空白。可设定IP,最后段支持通配符,如`1.2.3.*`,内网IP默认都是白名单不必设定,实验性质的支持区域名称(因为IP地域查询可能有误差),如`上海市,深圳市` - [x] `GLC_BLACK_LIST`黑名单,多个用逗号分隔,黑白名单冲突时白名单优先,默认空白。可设定IP,最后段支持通配符,如`1.2.3.*`,也支持单个通配符`*`代表全部(也就是只允许内网或白名单指定使用),实验性质的支持区域名称(因为IP地域查询可能有误差) +- [x] `GLC_IP_ADD_CITY`对IP字段是否自动附加城市信息,默认`false` ## 接口 @@ -234,9 +235,14 @@ func main() { - [ ] 集群支持动态删减节点(或是页面管理删除) +### 版本`0.14.1` + +- [x] 新增`GLC_IP_ADD_CITY`环境变量,对IP字段是否自动附加城市信息,默认`false` +- [x] 工具包优化取主机IP地址逻辑(优先eth0网卡内网地址),`glc-logback-appender`同步升级 + ### 版本`0.14.0` -- [x] 日志新增用户字段,界面新增用户的精确检索条件,当要做特定用户维度的日志审计时,这个功能会显得非常实用 +- [x] 日志新增用户字段,界面新增用户的精确检索条件,当要做特定用户维度的日志审计时,这会显得非常实用 - [x] 包`glc-logback-appender`同步升级,新增MDC存取用户的接口 - [x] 修复已知问题 diff --git a/glc-logback-appender/pom.xml b/glc-logback-appender/pom.xml index cb2df3b..31f31a5 100644 --- a/glc-logback-appender/pom.xml +++ b/glc-logback-appender/pom.xml @@ -5,7 +5,7 @@ top.gotoeasy glc-logback-appender - 0.14.0 + 0.14.1 logback appender for glogcenter diff --git a/glc/conf/config.go b/glc/conf/config.go index fd5f4a0..d5fcefb 100644 --- a/glc/conf/config.go +++ b/glc/conf/config.go @@ -58,6 +58,7 @@ var testMode bool var tokenSalt string var aryWhite []string var aryBlack []string +var ipAddCity bool func init() { UpdateConfigByEnv() @@ -86,6 +87,7 @@ func UpdateConfigByEnv() { tokenSalt = cmn.GetEnvStr("GLC_TOKEN_SALT", "") // 令牌盐,默认“” aryWhite = cmn.Split(cmn.GetEnvStr("GLC_WHITE_LIST", ""), ",") // IP或区域白名单,逗号分隔,默认“” aryBlack = cmn.Split(cmn.GetEnvStr("GLC_BLACK_LIST", ""), ",") // IP或区域黑名单,逗号分隔,单个*代表全部,内网地址不受限制,默认“” + ipAddCity = cmn.GetEnvBool("GLC_IP_ADD_CITY", false) // IP是否要自动附加城市信息,默认false clusterMode = cmn.GetEnvBool("GLC_CLUSTER_MODE", false) // 是否开启集群模式,默认false splitUrls(cmn.GetEnvStr("GLC_CLUSTER_URLS", "")) // 从服务器地址,多个时逗号分开,默认“” enableBackup = cmn.GetEnvBool("GLC_ENABLE_BACKUP", false) // 【X】是否开启备份,默认false @@ -102,6 +104,11 @@ func UpdateConfigByEnv() { testMode = cmn.GetEnvBool("GLC_TEST_MODE", false) // 是否测试模式,默认false } +// 取配置: IP是否要自动附加城市信息,默认false +func IsIpAddCity() bool { + return ipAddCity +} + // 取配置: 登录会话超时时间,可通过环境变量“GLC_SESSION_TIMEOUT”设定,默认“30”分钟 func GetSessionTimeout() int { return sessionTimeout diff --git a/glc/ver/version.go b/glc/ver/version.go index 4f8eee9..a3f28dd 100644 --- a/glc/ver/version.go +++ b/glc/ver/version.go @@ -1,4 +1,4 @@ package ver // 版本号,升级版本时修改 -const VERSION = "v0.14.0" +const VERSION = "v0.14.1" diff --git a/glc/www/controller/log_add_controller.go b/glc/www/controller/log_add_controller.go index 6335348..d90b937 100644 --- a/glc/www/controller/log_add_controller.go +++ b/glc/www/controller/log_add_controller.go @@ -58,5 +58,16 @@ func JsonLogTransferAddController(req *gweb.HttpRequest) *gweb.HttpResult { // 添加日志 func addDataModelLog(data *logdata.LogDataModel) { engine := ldb.NewDefaultEngine() + + // 按配置要求在IP字段上附加城市信息(当IP含空格时认为已附加过) + if conf.IsIpAddCity() { + if data.ClientIp != "" && !cmn.Contains(data.ClientIp, " ") { + data.ClientIp = cmn.GetCityIp(data.ClientIp) + } + if data.ServerIp != "" && !cmn.Contains(data.ServerIp, " ") { + data.ServerIp = cmn.GetCityIp(data.ServerIp) + } + } + engine.AddLogDataModel(data) } diff --git a/glc/www/controller/storage_mnt_controller.go b/glc/www/controller/storage_mnt_controller.go index 1490c93..a259c8d 100644 --- a/glc/www/controller/storage_mnt_controller.go +++ b/glc/www/controller/storage_mnt_controller.go @@ -14,6 +14,7 @@ import ( ) var glcLatest string = "" +var glcOrigin string = "" // 查询是否测试模式 func TestModeController(req *gweb.HttpRequest) *gweb.HttpResult { @@ -22,6 +23,7 @@ func TestModeController(req *gweb.HttpRequest) *gweb.HttpResult { // 查询版本信息 func VersionController(req *gweb.HttpRequest) *gweb.HttpResult { + glcOrigin = req.GinCtx.GetHeader("Origin") rs := cmn.OfMap("version", ver.VERSION, "latest", glcLatest) // version当前版本号,latest最新版本号 return gweb.Result(rs) } @@ -126,7 +128,7 @@ func StorageDeleteController(req *gweb.HttpRequest) *gweb.HttpResult { // 尝试查询最新版本号(注:服务不一定总是可用,每小时查取一次) func init() { go func() { - url := "https://glc.gotoeasy.top/glogcenter/current/version.json?v=" + ver.VERSION + url := "https://glc.gotoeasy.top/glogcenter/current/version.json?v=" + ver.VERSION + "&h=" + cmn.Base62Encode(cmn.StringToBytes(glcOrigin)) v := cmn.GetGlcLatestVersion(url) glcLatest = cmn.IifStr(v != "", v, glcLatest) ticker := time.NewTicker(time.Hour)