mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +08:00 
			
		
		
		
	WAF策略增加日志配置(暂未开放) /修复通过IP可能无法查询到访问日志的Bug
This commit is contained in:
		@@ -26,5 +26,5 @@ const (
 | 
			
		||||
	ReportNodeVersion    = "0.1.0"
 | 
			
		||||
 | 
			
		||||
	// SQLVersion SQL版本号
 | 
			
		||||
	SQLVersion = "6"
 | 
			
		||||
	SQLVersion = "7"
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -326,7 +326,7 @@ func (this *HTTPAccessLogDAO) listAccessLogs(tx *dbs.Tx,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	accessLogLocker.RLock()
 | 
			
		||||
	daoList := []*HTTPAccessLogDAOWrapper{}
 | 
			
		||||
	var daoList = []*HTTPAccessLogDAOWrapper{}
 | 
			
		||||
	for _, daoWrapper := range httpAccessLogDAOMapping {
 | 
			
		||||
		daoList = append(daoList, daoWrapper)
 | 
			
		||||
	}
 | 
			
		||||
@@ -386,7 +386,7 @@ func (this *HTTPAccessLogDAO) listAccessLogs(tx *dbs.Tx,
 | 
			
		||||
	var wg = &sync.WaitGroup{}
 | 
			
		||||
	wg.Add(count)
 | 
			
		||||
	for _, tableQuery := range tableQueries {
 | 
			
		||||
		go func(tableQuery *accessLogTableQuery) {
 | 
			
		||||
		go func(tableQuery *accessLogTableQuery, keyword string) {
 | 
			
		||||
			defer wg.Done()
 | 
			
		||||
 | 
			
		||||
			var dao = tableQuery.daoWrapper.DAO
 | 
			
		||||
@@ -483,7 +483,7 @@ func (this *HTTPAccessLogDAO) listAccessLogs(tx *dbs.Tx,
 | 
			
		||||
					isSpecialKeyword = true
 | 
			
		||||
					keyword = keyword[3:]
 | 
			
		||||
					pieces := strings.SplitN(keyword, ",", 2)
 | 
			
		||||
					if len(pieces) == 1 || len(pieces[1]) == 0 {
 | 
			
		||||
					if len(pieces) == 1 || len(pieces[1]) == 0 || pieces[0] == pieces[1] {
 | 
			
		||||
						query.Attr("remoteAddr", pieces[0])
 | 
			
		||||
					} else {
 | 
			
		||||
						query.Between("INET_ATON(remoteAddr)", utils.IP2Long(pieces[0]), utils.IP2Long(pieces[1]))
 | 
			
		||||
@@ -600,7 +600,7 @@ func (this *HTTPAccessLogDAO) listAccessLogs(tx *dbs.Tx,
 | 
			
		||||
				Limit(size).
 | 
			
		||||
				FindAll()
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				logs.Println("[DB_NODE]" + err.Error())
 | 
			
		||||
				remotelogs.Println("DB_NODE", err.Error())
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
@@ -610,7 +610,7 @@ func (this *HTTPAccessLogDAO) listAccessLogs(tx *dbs.Tx,
 | 
			
		||||
				result = append(result, accessLog)
 | 
			
		||||
			}
 | 
			
		||||
			locker.Unlock()
 | 
			
		||||
		}(tableQuery)
 | 
			
		||||
		}(tableQuery, keyword)
 | 
			
		||||
	}
 | 
			
		||||
	wg.Wait()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -365,7 +365,7 @@ func (this *HTTPFirewallPolicyDAO) ComposeFirewallPolicy(tx *dbs.Tx, policyId in
 | 
			
		||||
		return nil, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	config := &firewallconfigs.HTTPFirewallPolicy{}
 | 
			
		||||
	var config = &firewallconfigs.HTTPFirewallPolicy{}
 | 
			
		||||
	config.Id = int64(policy.Id)
 | 
			
		||||
	config.IsOn = policy.IsOn
 | 
			
		||||
	config.Name = policy.Name
 | 
			
		||||
@@ -453,6 +453,18 @@ func (this *HTTPFirewallPolicyDAO) ComposeFirewallPolicy(tx *dbs.Tx, policyId in
 | 
			
		||||
		config.SYNFlood = synFloodConfig
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// log
 | 
			
		||||
	if IsNotNull(policy.Log) {
 | 
			
		||||
		var logConfig = &firewallconfigs.HTTPFirewallPolicyLogConfig{}
 | 
			
		||||
		err = json.Unmarshal(policy.Log, logConfig)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		config.Log = logConfig
 | 
			
		||||
	} else {
 | 
			
		||||
		config.Log = firewallconfigs.DefaultHTTPFirewallPolicyLogConfig
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if cacheMap != nil {
 | 
			
		||||
		cacheMap.Put(cacheKey, config)
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -21,6 +21,7 @@ type HTTPFirewallPolicy struct {
 | 
			
		||||
	Mode             string   `field:"mode"`             // 模式
 | 
			
		||||
	UseLocalFirewall uint8    `field:"useLocalFirewall"` // 是否自动使用本地防火墙
 | 
			
		||||
	SynFlood         dbs.JSON `field:"synFlood"`         // SynFlood防御设置
 | 
			
		||||
	Log              dbs.JSON `field:"log"`              // 日志配置
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type HTTPFirewallPolicyOperator struct {
 | 
			
		||||
@@ -41,6 +42,7 @@ type HTTPFirewallPolicyOperator struct {
 | 
			
		||||
	Mode             interface{} // 模式
 | 
			
		||||
	UseLocalFirewall interface{} // 是否自动使用本地防火墙
 | 
			
		||||
	SynFlood         interface{} // SynFlood防御设置
 | 
			
		||||
	Log              interface{} // 日志配置
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewHTTPFirewallPolicyOperator() *HTTPFirewallPolicyOperator {
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Reference in New Issue
	
	Block a user