增加防盗链拦截时默认提示文字

This commit is contained in:
GoEdgeLab
2022-09-22 17:52:57 +08:00
parent 393e2f9878
commit efe6cbc881
4 changed files with 20 additions and 10 deletions

View File

@@ -25,10 +25,10 @@ const httpStatusPageTemplate = `<!DOCTYPE html>
</html>` </html>`
func (this *HTTPRequest) write404() { func (this *HTTPRequest) write404() {
this.writeCode(http.StatusNotFound) this.writeCode(http.StatusNotFound, "", "")
} }
func (this *HTTPRequest) writeCode(statusCode int) { func (this *HTTPRequest) writeCode(statusCode int, enMessage string, zhMessage string) {
if this.doPage(statusCode) { if this.doPage(statusCode) {
return return
} }
@@ -42,7 +42,17 @@ func (this *HTTPRequest) writeCode(statusCode int) {
case "requestId": case "requestId":
return this.requestId return this.requestId
case "message": case "message":
return "" // 空 var acceptLanguages = this.RawReq.Header.Get("Accept-Language")
if len(acceptLanguages) > 0 {
var index = strings.Index(acceptLanguages, ",")
if index > 0 {
var firstLanguage = acceptLanguages[:index]
if firstLanguage == "zh-CN" {
return zhMessage
}
}
}
return enMessage
} }
return "${" + varName + "}" return "${" + varName + "}"
}) })

View File

@@ -18,7 +18,7 @@ func (this *HTTPRequest) doRequestLimit() (shouldStop bool) {
// TODO 处理分片提交的内容 // TODO 处理分片提交的内容
if this.web.RequestLimit.MaxBodyBytes() > 0 && if this.web.RequestLimit.MaxBodyBytes() > 0 &&
this.RawReq.ContentLength > this.web.RequestLimit.MaxBodyBytes() { this.RawReq.ContentLength > this.web.RequestLimit.MaxBodyBytes() {
this.writeCode(http.StatusRequestEntityTooLarge) this.writeCode(http.StatusRequestEntityTooLarge, "", "")
return true return true
} }
@@ -29,7 +29,7 @@ func (this *HTTPRequest) doRequestLimit() (shouldStop bool) {
clientConn, ok := requestConn.(ClientConnInterface) clientConn, ok := requestConn.(ClientConnInterface)
if ok && !clientConn.IsBound() { if ok && !clientConn.IsBound() {
if !clientConn.Bind(this.ReqServer.Id, this.requestRemoteAddr(true), this.web.RequestLimit.MaxConns, this.web.RequestLimit.MaxConnsPerIP) { if !clientConn.Bind(this.ReqServer.Id, this.requestRemoteAddr(true), this.web.RequestLimit.MaxConns, this.web.RequestLimit.MaxConnsPerIP) {
this.writeCode(http.StatusTooManyRequests) this.writeCode(http.StatusTooManyRequests, "", "")
this.Close() this.Close()
return true return true
} }

View File

@@ -19,7 +19,7 @@ func (this *HTTPRequest) doCheckReferers() (shouldStop bool) {
} }
this.tags = append(this.tags, "refererCheck") this.tags = append(this.tags, "refererCheck")
this.writer.WriteHeader(http.StatusForbidden) this.writeCode(http.StatusForbidden, "The referer has been blocked.", "当前访问已被防盗链系统拦截。")
return true return true
} }
@@ -31,14 +31,14 @@ func (this *HTTPRequest) doCheckReferers() (shouldStop bool) {
} }
this.tags = append(this.tags, "refererCheck") this.tags = append(this.tags, "refererCheck")
this.writer.WriteHeader(http.StatusForbidden) this.writeCode(http.StatusForbidden, "The referer has been blocked.", "当前访问已被防盗链系统拦截。")
return true return true
} }
if !this.web.Referers.MatchDomain(this.ReqHost, u.Host) { if !this.web.Referers.MatchDomain(this.ReqHost, u.Host) {
this.tags = append(this.tags, "refererCheck") this.tags = append(this.tags, "refererCheck")
this.writer.WriteHeader(http.StatusForbidden) this.writeCode(http.StatusForbidden, "The referer has been blocked.", "当前访问已被防盗链系统拦截。")
return true return true
} }
return return

View File

@@ -173,7 +173,7 @@ func (this *HTTPRequest) checkWAFRequest(firewallPolicy *firewallconfigs.HTTPFir
if countryId > 0 && lists.ContainsInt64(regionConfig.DenyCountryIds, countryId) { if countryId > 0 && lists.ContainsInt64(regionConfig.DenyCountryIds, countryId) {
this.firewallPolicyId = firewallPolicy.Id this.firewallPolicyId = firewallPolicy.Id
this.writeCode(http.StatusForbidden) this.writeCode(http.StatusForbidden, "", "")
this.writer.Flush() this.writer.Flush()
this.writer.Close() this.writer.Close()
@@ -192,7 +192,7 @@ func (this *HTTPRequest) checkWAFRequest(firewallPolicy *firewallconfigs.HTTPFir
if provinceId > 0 && lists.ContainsInt64(regionConfig.DenyProvinceIds, provinceId) { if provinceId > 0 && lists.ContainsInt64(regionConfig.DenyProvinceIds, provinceId) {
this.firewallPolicyId = firewallPolicy.Id this.firewallPolicyId = firewallPolicy.Id
this.writeCode(http.StatusForbidden) this.writeCode(http.StatusForbidden, "", "")
this.writer.Flush() this.writer.Flush()
this.writer.Close() this.writer.Close()