diff --git a/internal/nodes/http_request.go b/internal/nodes/http_request.go index 29ed6c3..a778370 100644 --- a/internal/nodes/http_request.go +++ b/internal/nodes/http_request.go @@ -137,6 +137,13 @@ func (this *HTTPRequest) Do() { } } + // 带宽限制 + if this.Server.BandwidthLimit != nil && this.Server.BandwidthLimit.IsOn && !this.Server.BandwidthLimit.IsEmpty() && this.Server.BandwidthLimitStatus != nil && this.Server.BandwidthLimitStatus.IsValid() { + this.doBandwidthLimit() + this.doEnd() + return + } + // WAF if this.web.FirewallRef != nil && this.web.FirewallRef.IsOn { if this.doWAFRequest() { diff --git a/internal/nodes/http_request_bandwidth_limit.go b/internal/nodes/http_request_bandwidth_limit.go new file mode 100644 index 0000000..979bf8c --- /dev/null +++ b/internal/nodes/http_request_bandwidth_limit.go @@ -0,0 +1,24 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package nodes + +import ( + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" +) + +// 带宽限制 +func (this *HTTPRequest) doBandwidthLimit() { + var config = this.Server.BandwidthLimit + + this.tags = append(this.tags, "bandwidth") + + var statusCode = 509 + this.processResponseHeaders(statusCode) + + this.writer.WriteHeader(statusCode) + if len(config.NoticePageBody) != 0 { + _, _ = this.writer.WriteString(config.NoticePageBody) + } else { + _, _ = this.writer.WriteString(serverconfigs.DefaultBandwidthLimitNoticePageBody) + } +}