fix:定时逻辑的处理

This commit is contained in:
samwaf
2023-11-10 10:00:09 +08:00
parent 32a6acc741
commit 30b9480dcd
6 changed files with 41 additions and 26 deletions
+2 -1
View File
@@ -2,4 +2,5 @@
/release/
/vue/dist/
/data/local_log.db
/data/local_stats.db
/data/local_stats.db
/data/local.db
+1 -1
View File
@@ -2,4 +2,4 @@ SET CGO_ENABLED=1
SET GOOS=windows
SET GOARCH=amd64
SET GIN_MODE=release
go build -ldflags="-X SamWaf/global.GWAF_RELEASE=true -X SamWaf/global.GWAF_RELEASE_VERSION_NAME=20231109 -X SamWaf/global.GWAF_RELEASE_VERSION=v1.0.121 -s -w" -o %cd%/release/SamWaf64.exe main.go && %cd%/upx/win64/upx -9 %cd%/release/SamWaf64.exe
go build -ldflags="-X SamWaf/global.GWAF_RELEASE=true -X SamWaf/global.GWAF_RELEASE_VERSION_NAME=20231109 -X SamWaf/global.GWAF_RELEASE_VERSION=v1.0.124 -s -w" -o %cd%/release/SamWaf64.exe main.go && %cd%/upx/win64/upx -9 %cd%/release/SamWaf64.exe
+1 -1
View File
@@ -1 +1 @@
docker run --rm -v "$PWD":/media/sf_SamWaf -w /media/sf_SamWaf -e CGO_ENABLED=1 -e GOPROXY=https://goproxy.cn,direct golang:1.19 go build -v -ldflags="-X SamWaf/global.GWAF_RELEASE=true -X SamWaf/global.GWAF_RELEASE_VERSION_NAME=20231109 -X SamWaf/global.GWAF_RELEASE_VERSION=v1.0.121 -s -w -extldflags "-static"" -o /media/sf_SamWaf/release/SamWafLinux64 main.go
docker run --rm -v "$PWD":/media/sf_SamWaf -w /media/sf_SamWaf -e CGO_ENABLED=1 -e GOPROXY=https://goproxy.cn,direct golang:1.19 go build -v -ldflags="-X SamWaf/global.GWAF_RELEASE=true -X SamWaf/global.GWAF_RELEASE_VERSION_NAME=20231109 -X SamWaf/global.GWAF_RELEASE_VERSION=v1.0.124 -s -w -extldflags "-static"" -o /media/sf_SamWaf/release/SamWafLinux64 main.go
+17 -13
View File
@@ -29,19 +29,20 @@ var (
GWAF_GLOBAL_HOST_NAME string = "全局网站:0" //全局网站
GWAF_LOCAL_DB *gorm.DB //通用本地数据库,尊重用户隐私
GWAF_LOCAL_LOG_DB *gorm.DB //通用本地数据库存日志数据,尊重用户隐私
GWAF_LOCAL_STATS_DB *gorm.DB //通用本地数据库存放统计数据,尊重用户隐私
GWAF_REMOTE_DB *gorm.DB //仅当用户使用云数据库
GWAF_LOCAL_SERVER_PORT int = 26666 // 本地local端口
GWAF_USER_CODE string // 当前识别号
GWAF_CUSTOM_SERVER_NAME string // 当前服务器自定义名称
GWAF_TENANT_ID string // 当前租户ID
GWAF_RELEASE string = "false" // 当前是否为发行版
GWAF_RELEASE_VERSION_NAME string = "1.0" // 发行版的版本号名称
GWAF_RELEASE_VERSION string = "v1.0.0" // 发行版的版本号
GWAF_LAST_UPDATE_TIME time.Time // 上次时间
GWAF_DLP dlpheader.EngineAPI // 脱敏引擎
GWAF_LOCAL_DB *gorm.DB //通用本地数据库,尊重用户隐私
GWAF_LOCAL_LOG_DB *gorm.DB //通用本地数据库存日志数据,尊重用户隐私
GWAF_LOCAL_STATS_DB *gorm.DB //通用本地数据库存放统计数据,尊重用户隐私
GWAF_REMOTE_DB *gorm.DB //仅当用户使用云数据库
GWAF_LOCAL_SERVER_PORT int = 26666 // 本地local端口
GWAF_USER_CODE string // 当前识别号
GWAF_CUSTOM_SERVER_NAME string // 当前服务器自定义名称
GWAF_TENANT_ID string // 当前租户ID
GWAF_RELEASE string = "false" // 当前是否为发行版
GWAF_RELEASE_VERSION_NAME string = "1.0" // 发行版的版本号名称
GWAF_RELEASE_VERSION string = "v1.0.0" // 发行版的版本号
GWAF_LAST_UPDATE_TIME time.Time // 上次时间
GWAF_DLP dlpheader.EngineAPI // 脱敏引擎
/**链聚合**/
GWAF_CHAN_HOST = make(chan model.Hosts, 10) //主机链
@@ -75,6 +76,9 @@ var (
GUPDATE_VERSION_URL string = "https://update.samwaf.com/" //
GWAF_SNOWFLAKE_GEN *wafsnowflake.Snowflake //雪花算法
//任务开关信息
GWAF_SWITCH_TASK_COUNTER bool
)
func GetCurrentVersionInt() int {
+6 -4
View File
@@ -68,8 +68,6 @@ func (m *wafSystenService) run() {
zlog.Info(rversion)
global.GWAF_LAST_UPDATE_TIME = time.Now()
syscall.Setenv("ZONEINFO", utils.GetCurrentDir()+"//data//zoneinfo")
//守护程序开始
@@ -134,10 +132,14 @@ func (m *wafSystenService) run() {
timezone, _ := time.LoadLocation("Asia/Shanghai")
s := gocron.NewScheduler(timezone)
global.GWAF_LAST_UPDATE_TIME = time.Now()
// 每10秒执行一次
s.Every(10).Seconds().Do(func() {
zlog.Debug("i am alive")
go waftask.TaskCounter()
if global.GWAF_SWITCH_TASK_COUNTER == false {
go waftask.TaskCounter()
} else {
zlog.Debug("统计还没完成,调度任务PASS")
}
})
// 获取延迟信息
s.Every(1).Minutes().Do(func() {
+14 -6
View File
@@ -57,7 +57,7 @@ type CountCityResult struct {
*/
func TaskCounter() {
global.GWAF_SWITCH_TASK_COUNTER = true
/*dateTime, err := time.Parse("2006-01-02", "2023-01-01")
if err != nil {
fmt.Println("解析日期出错:", err)
@@ -65,13 +65,20 @@ func TaskCounter() {
}
currenyDayBak := dateTime*/
/**
1.首次是当前日期,查询当前时间以后的所有数据,备份当前日期
2.查询使用备份日期,倒退10秒,查询这个时候所有的数据
3.
*/
currenyDayBak := time.Now()
currentDayBak3Second := currenyDayBak.Add(-3 * time.Second)
currenyDayMillisecondsBak := currentDayBak3Second.UnixNano() / 1e6 //倒查3秒
currenyDayMillisecondsBak := (global.GWAF_LAST_UPDATE_TIME.Add(-10 * time.Second).UnixNano()) / 1e6 //倒退10秒
//一、 主机聚合统计
{
var resultHosts []CountHostResult
global.GWAF_LOCAL_LOG_DB.Raw("SELECT host_code, user_code,tenant_id ,action,count(req_uuid) as count,day,host FROM \"web_logs\" where task_flag = ? and unix_add_time <= ? GROUP BY host_code, user_code,action,tenant_id,day,host",
global.GWAF_LOCAL_LOG_DB.Raw("SELECT host_code, user_code,tenant_id ,action,count(req_uuid) as count,day,host FROM \"web_logs\" where task_flag = ? and unix_add_time > ? GROUP BY host_code, user_code,action,tenant_id,day,host",
1, currenyDayMillisecondsBak).Scan(&resultHosts)
/****
1.如果不存在则创建
@@ -114,7 +121,7 @@ func TaskCounter() {
//二、 IP聚合统计
{
var resultIP []CountIPResult
global.GWAF_LOCAL_LOG_DB.Raw("SELECT host_code, user_code,tenant_id ,action,count(req_uuid) as count,day,host,src_ip as ip FROM \"web_logs\" where task_flag = ? and unix_add_time <= ? GROUP BY host_code, user_code,action,tenant_id,day,host,ip",
global.GWAF_LOCAL_LOG_DB.Raw("SELECT host_code, user_code,tenant_id ,action,count(req_uuid) as count,day,host,src_ip as ip FROM \"web_logs\" where task_flag = ? and unix_add_time > ? GROUP BY host_code, user_code,action,tenant_id,day,host,ip",
1, currenyDayMillisecondsBak).Scan(&resultIP)
/****
1.如果不存在则创建
@@ -160,7 +167,7 @@ func TaskCounter() {
//三、 城市信息聚合统计
{
var resultCitys []CountCityResult
global.GWAF_LOCAL_LOG_DB.Raw("SELECT host_code, user_code,tenant_id ,action,count(req_uuid) as count,day,host,country,province,city FROM \"web_logs\" where task_flag = ? and unix_add_time <= ? GROUP BY host_code, user_code,action,tenant_id,day,host,country,province,city",
global.GWAF_LOCAL_LOG_DB.Raw("SELECT host_code, user_code,tenant_id ,action,count(req_uuid) as count,day,host,country,province,city FROM \"web_logs\" where task_flag = ? and unix_add_time > ? GROUP BY host_code, user_code,action,tenant_id,day,host,country,province,city",
1, currenyDayMillisecondsBak).Scan(&resultCitys)
/****
1.如果不存在则创建
@@ -205,6 +212,7 @@ func TaskCounter() {
}
}
global.GWAF_LAST_UPDATE_TIME = currenyDayBak
global.GWAF_SWITCH_TASK_COUNTER = false
}
func TaskWechatAccessToken() {