From b3fcc4ab2f6b1519b1012bee13b9da2fcaaf89fe Mon Sep 17 00:00:00 2001 From: samwaf Date: Fri, 12 Jan 2024 10:42:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=85=8D=E7=BD=AE=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8F=AF=E9=80=89=E5=8F=82=E6=95=B0=E7=9A=84=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=EF=BC=9B=E5=A2=9E=E5=8A=A0=E4=BB=85=E8=AE=B0=E5=BD=95=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=95=B0=E6=8D=AE=E7=9A=84=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- global/global.go | 2 + localwaf/src/pages/waf/systemconfig/index.vue | 2 + wafenginecore/wafengine.go | 8 ++- waftask/localtaskcounter.go | 59 +++++++++++++------ 4 files changed, 51 insertions(+), 20 deletions(-) diff --git a/global/global.go b/global/global.go index c179e05..74925cd 100644 --- a/global/global.go +++ b/global/global.go @@ -31,6 +31,8 @@ var ( GWAF_RUNTIME_LOG_PROCESS uint64 = 0 //log 处理速度 GWAF_RUNTIME_DNS_SERVER string = "119.29.29.29" //反向查询DNS的IP + + GWAF_RUNTIME_RECORD_LOG_TYPE string = "全部" // 记录日志形式: 全部(all),非正常(abnormal) /** 遥测数据 */ diff --git a/localwaf/src/pages/waf/systemconfig/index.vue b/localwaf/src/pages/waf/systemconfig/index.vue index 54b7f07..bdc0afb 100644 --- a/localwaf/src/pages/waf/systemconfig/index.vue +++ b/localwaf/src/pages/waf/systemconfig/index.vue @@ -111,6 +111,8 @@ const INITIAL_DATA = { item: '', value: '', + item_type: 'string', + options: '', remarks : '' }; export default Vue.extend({ diff --git a/wafenginecore/wafengine.go b/wafenginecore/wafengine.go index d802c6b..19a6675 100644 --- a/wafenginecore/wafengine.go +++ b/wafenginecore/wafengine.go @@ -540,7 +540,7 @@ func (waf *WafEngine) modifyResponse() func(*http.Response) error { if weblogfrist, ok := r.Context().Value("weblog").(innerbean.WebLog); ok { fmt.Sprintf("weblogfrist: %v", weblogfrist) - weblogfrist.ACTION = "通过" + weblogfrist.ACTION = "放行" weblogfrist.STATUS = resp.Status weblogfrist.STATUS_CODE = resp.StatusCode @@ -650,7 +650,11 @@ func (waf *WafEngine) modifyResponse() func(*http.Response) error { weblogfrist.STATUS = resp.Status weblogfrist.STATUS_CODE = resp.StatusCode weblogfrist.TASK_FLAG = 1 - global.GQEQUE_LOG_DB.PushBack(weblogfrist) + if global.GWAF_RUNTIME_RECORD_LOG_TYPE == "abnormal" { + //只记录非正常 + global.GQEQUE_LOG_DB.PushBack(weblogfrist) + } + } } else { fmt.Println("weblog not found") diff --git a/waftask/localtaskcounter.go b/waftask/localtaskcounter.go index 4063670..12ade90 100644 --- a/waftask/localtaskcounter.go +++ b/waftask/localtaskcounter.go @@ -291,9 +291,10 @@ func TaskLoadSetting() { } } else { wafSystemConfigAddReq := request.WafSystemConfigAddReq{ - Item: "record_max_req_body_length", - Value: strconv.FormatInt(global.GCONFIG_RECORD_MAX_BODY_LENGTH, 10), - Remarks: "记录请求最大报文", + Item: "record_max_req_body_length", + Value: strconv.FormatInt(global.GCONFIG_RECORD_MAX_BODY_LENGTH, 10), + Remarks: "记录请求最大报文", + ItemType: "int", } wafSystemConfigService.AddApi(wafSystemConfigAddReq) } @@ -308,9 +309,10 @@ func TaskLoadSetting() { } } else { wafSystemConfigAddReq := request.WafSystemConfigAddReq{ - Item: "record_max_rep_body_length", - Value: strconv.FormatInt(global.GCONFIG_RECORD_MAX_RES_BODY_LENGTH, 10), - Remarks: "如果可以记录,满足最大响应报文大小才记录", + Item: "record_max_rep_body_length", + Value: strconv.FormatInt(global.GCONFIG_RECORD_MAX_RES_BODY_LENGTH, 10), + Remarks: "如果可以记录,满足最大响应报文大小才记录", + ItemType: "int", } wafSystemConfigService.AddApi(wafSystemConfigAddReq) } @@ -324,9 +326,10 @@ func TaskLoadSetting() { } } else { wafSystemConfigAddReq := request.WafSystemConfigAddReq{ - Item: "record_resp", - Value: strconv.FormatInt(global.GCONFIG_RECORD_RESP, 10), - Remarks: "是否记录响应报文", + Item: "record_resp", + Value: strconv.FormatInt(global.GCONFIG_RECORD_RESP, 10), + Remarks: "是否记录响应报文", + ItemType: "int", } wafSystemConfigService.AddApi(wafSystemConfigAddReq) } @@ -340,9 +343,10 @@ func TaskLoadSetting() { } } else { wafSystemConfigAddReq := request.WafSystemConfigAddReq{ - Item: "delete_history_log_day", - Value: strconv.Itoa(global.GDATA_DELETE_INTERVAL), - Remarks: "删除多少天前的日志数据(单位:天)", + Item: "delete_history_log_day", + Value: strconv.Itoa(global.GDATA_DELETE_INTERVAL), + Remarks: "删除多少天前的日志数据(单位:天)", + ItemType: "int", } wafSystemConfigService.AddApi(wafSystemConfigAddReq) } @@ -357,9 +361,10 @@ func TaskLoadSetting() { } } else { wafSystemConfigAddReq := request.WafSystemConfigAddReq{ - Item: "log_db_size", - Value: strconv.FormatInt(global.GDATA_SHARE_DB_SIZE, 10), - Remarks: "日志归档最大记录数量", + Item: "log_db_size", + Value: strconv.FormatInt(global.GDATA_SHARE_DB_SIZE, 10), + Remarks: "日志归档最大记录数量", + ItemType: "int", } wafSystemConfigService.AddApi(wafSystemConfigAddReq) } @@ -372,9 +377,27 @@ func TaskLoadSetting() { } } else { wafSystemConfigService.AddApi(request.WafSystemConfigAddReq{ - Item: "dns_server", - Value: global.GWAF_RUNTIME_DNS_SERVER, - Remarks: "DNS服务器", + Item: "dns_server", + Value: global.GWAF_RUNTIME_DNS_SERVER, + Remarks: "DNS服务器", + ItemType: "options", + Options: "119.29.29.29|腾讯DNS,8.8.8.8|谷歌DNS", + }) + } + + //日志记录类型 + configItem = wafSystemConfigService.GetDetailByItem("record_log_type") + if configItem.Id != "" { + if global.GWAF_RUNTIME_RECORD_LOG_TYPE != configItem.Value { + global.GWAF_RUNTIME_RECORD_LOG_TYPE = configItem.Value + } + } else { + wafSystemConfigService.AddApi(request.WafSystemConfigAddReq{ + Item: "record_log_type", + Value: global.GWAF_RUNTIME_RECORD_LOG_TYPE, + Remarks: "日志记录类型", + ItemType: "options", + Options: "all|全部,abnormal|非正常", }) } }