WAF动作record_ip返回403/优化关闭连接方法

This commit is contained in:
刘祥超
2021-10-12 09:06:28 +08:00
parent ac120a728c
commit 86db3dfc49
4 changed files with 5 additions and 18 deletions

View File

@@ -2,20 +2,5 @@
package waf package waf
import "net/http"
type BaseAction struct { type BaseAction struct {
} }
// CloseConn 关闭连接
func (this *BaseAction) CloseConn(writer http.ResponseWriter) error {
// 断开连接
hijack, ok := writer.(http.Hijacker)
if ok {
conn, _, err := hijack.Hijack()
if err == nil {
return conn.Close()
}
}
return nil
}

View File

@@ -66,7 +66,7 @@ func (this *Get302Action) Perform(waf *WAF, group *RuleGroup, set *RuleSet, requ
// 关闭连接 // 关闭连接
if request.WAFRaw().ProtoMajor == 1 { if request.WAFRaw().ProtoMajor == 1 {
_ = this.CloseConn(writer) request.WAFClose()
} }
return true return true

View File

@@ -82,7 +82,7 @@ func (this *Post307Action) Perform(waf *WAF, group *RuleGroup, set *RuleSet, req
http.Redirect(writer, request.WAFRaw(), request.WAFRaw().URL.String(), http.StatusTemporaryRedirect) http.Redirect(writer, request.WAFRaw(), request.WAFRaw().URL.String(), http.StatusTemporaryRedirect)
if request.WAFRaw().ProtoMajor == 1 { if request.WAFRaw().ProtoMajor == 1 {
_ = this.CloseConn(writer) request.WAFClose()
} }
return true return true

View File

@@ -90,7 +90,9 @@ func (this *RecordIPAction) Perform(waf *WAF, group *RuleGroup, set *RuleSet, re
expiredAt := time.Now().Unix() + int64(timeout) expiredAt := time.Now().Unix() + int64(timeout)
if this.Type == "black" { if this.Type == "black" {
_ = this.CloseConn(writer) writer.WriteHeader(http.StatusForbidden)
request.WAFClose()
SharedIPBlackList.Add(IPTypeAll, request.WAFRemoteIP(), expiredAt) SharedIPBlackList.Add(IPTypeAll, request.WAFRemoteIP(), expiredAt)
} else { } else {