diff --git a/pkg/serverconfigs/firewallconfigs/http_firewall_template.go b/pkg/serverconfigs/firewallconfigs/http_firewall_template.go index ed36a7e..6f2ddf4 100644 --- a/pkg/serverconfigs/firewallconfigs/http_firewall_template.go +++ b/pkg/serverconfigs/firewallconfigs/http_firewall_template.go @@ -457,7 +457,7 @@ func HTTPFirewallTemplate() *HTTPFirewallPolicy { IsOn: true, Param: "${userAgent}", Operator: HTTPFirewallRuleOperatorMatch, - Value: `python|pycurl|http-client|httpclient|apachebench|nethttp|http_request|java|perl|ruby|scrapy|php|rust`, + Value: `python|pycurl|http-client|httpclient|apachebench|nethttp|http_request|java|perl|ruby|scrapy|php\b|rust`, IsCaseInsensitive: true, }) set.AddRule(&HTTPFirewallRule{ diff --git a/pkg/serverconfigs/firewallconfigs/http_firewall_template_test.go b/pkg/serverconfigs/firewallconfigs/http_firewall_template_test.go new file mode 100644 index 0000000..e456fbf --- /dev/null +++ b/pkg/serverconfigs/firewallconfigs/http_firewall_template_test.go @@ -0,0 +1,19 @@ +// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn . + +package firewallconfigs_test + +import ( + "github.com/iwind/TeaGo/assert" + "regexp" + "testing" +) + +func TestUserAgentMatch_PHP(t *testing.T) { + var a = assert.NewAssertion(t) + + var expr = `python|pycurl|http-client|httpclient|apachebench|nethttp|http_request|java|perl|ruby|scrapy|php\b|rust` + var reg = regexp.MustCompile(expr) + a.IsTrue(reg.MatchString("php")) + a.IsTrue(reg.MatchString("php/5.0")) + a.IsFalse(reg.MatchString("php110")) +}