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)