diff --git a/go.mod b/go.mod index 09cde06..ddd13d8 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/mattn/go-sqlite3 v1.14.9 github.com/mdlayher/netlink v1.7.1 github.com/miekg/dns v1.1.43 - github.com/mssola/user_agent v0.5.3 + github.com/mssola/useragent v1.0.0 github.com/pires/go-proxyproto v0.6.1 github.com/shirou/gopsutil/v3 v3.22.2 golang.org/x/image v0.7.0 diff --git a/go.sum b/go.sum index 777403a..eac9f44 100644 --- a/go.sum +++ b/go.sum @@ -85,8 +85,6 @@ github.com/josharian/native v1.0.0 h1:Ts/E8zCSEsG17dUqv7joXJFybuMLjQfWE04tsBODTx github.com/josharian/native v1.0.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e h1:LvL4XsI70QxOGHed6yhQtAU34Kx3Qq2wwBzGFKY8zKk= github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e/go.mod h1:kLgvv7o6UM+0QSf0QjAse3wReFDsb9qbZJdfexWlrQw= -github.com/klauspost/compress v1.16.1 h1:4PGwWuJNN6CrISdf56IeQMXMYGFQ4maUBCcTgd957t0= -github.com/klauspost/compress v1.16.1/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= @@ -105,8 +103,8 @@ github.com/mdlayher/socket v0.4.0 h1:280wsy40IC9M9q1uPGcLBwXpcTQDtoGwVt+BNoITxIw github.com/mdlayher/socket v0.4.0/go.mod h1:xxFqz5GRCUN3UEOm9CZqEJsAbe1C8OwSK46NlmWuVoc= github.com/miekg/dns v1.1.43 h1:JKfpVSCB84vrAmHzyrsxB5NAr5kLoMXZArPSw7Qlgyg= github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= -github.com/mssola/user_agent v0.5.3 h1:lBRPML9mdFuIZgI2cmlQ+atbpJdLdeVl2IDodjBR578= -github.com/mssola/user_agent v0.5.3/go.mod h1:TTPno8LPY3wAIEKRpAtkdMT0f8SE24pLRGPahjCH4uw= +github.com/mssola/useragent v1.0.0 h1:WRlDpXyxHDNfvZaPEut5Biveq86Ze4o4EMffyMxmH5o= +github.com/mssola/useragent v1.0.0/go.mod h1:hz9Cqz4RXusgg1EdI4Al0INR62kP7aPSRNHnpU+b85Y= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= @@ -139,8 +137,6 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/image v0.0.0-20220722155232-062f8c9fd539 h1:/eM0PCrQI2xd471rI+snWuu251/+/jpBpZqir2mPdnU= -golang.org/x/image v0.0.0-20220722155232-062f8c9fd539/go.mod h1:doUCurBvlfPMKfmIpRIywoHmhN3VyhnoFDbvIEWF4hY= golang.org/x/image v0.7.0 h1:gzS29xtG1J5ybQlv0PuyfE3nmc6R4qB73m6LUUmvFuw= golang.org/x/image v0.7.0/go.mod h1:nd/q4ef1AKKYl/4kft7g+6UyGbdiqWqTP1ZAbRoV7Rg= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -198,8 +194,6 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/internal/stats/user_agent_parser.go b/internal/stats/user_agent_parser.go index b0d74d1..f740264 100644 --- a/internal/stats/user_agent_parser.go +++ b/internal/stats/user_agent_parser.go @@ -5,7 +5,7 @@ package stats import ( "github.com/TeaOSLab/EdgeNode/internal/utils" "github.com/TeaOSLab/EdgeNode/internal/utils/fnv" - "github.com/mssola/user_agent" + "github.com/mssola/useragent" "sync" ) @@ -13,7 +13,7 @@ var SharedUserAgentParser = NewUserAgentParser() // UserAgentParser UserAgent解析器 type UserAgentParser struct { - parser *user_agent.UserAgent + parser *useragent.UserAgent cacheMap1 map[uint64]UserAgentParserResult cacheMap2 map[uint64]UserAgentParserResult @@ -25,7 +25,7 @@ type UserAgentParser struct { func NewUserAgentParser() *UserAgentParser { var parser = &UserAgentParser{ - parser: &user_agent.UserAgent{}, + parser: &useragent.UserAgent{}, cacheMap1: map[uint64]UserAgentParserResult{}, cacheMap2: map[uint64]UserAgentParserResult{}, cacheCursor: 0, diff --git a/internal/stats/user_agent_parser_result.go b/internal/stats/user_agent_parser_result.go index f48bdcb..73d7149 100644 --- a/internal/stats/user_agent_parser_result.go +++ b/internal/stats/user_agent_parser_result.go @@ -2,10 +2,12 @@ package stats -import "github.com/mssola/user_agent" +import ( + "github.com/mssola/useragent" +) type UserAgentParserResult struct { - OS user_agent.OSInfo + OS useragent.OSInfo BrowserName string BrowserVersion string IsMobile bool diff --git a/internal/stats/user_agent_parser_test.go b/internal/stats/user_agent_parser_test.go index 108a407..40929f5 100644 --- a/internal/stats/user_agent_parser_test.go +++ b/internal/stats/user_agent_parser_test.go @@ -12,7 +12,7 @@ import ( func TestUserAgentParser_Parse(t *testing.T) { var parser = NewUserAgentParser() - for i := 0; i < 4; i ++ { + for i := 0; i < 4; i++ { t.Log(parser.Parse("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Test/1")) t.Log(parser.Parse("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36")) } @@ -59,3 +59,13 @@ func BenchmarkUserAgentParser_Parse2(b *testing.B) { } b.Log(len(parser.cacheMap1), len(parser.cacheMap2)) } + +func BenchmarkUserAgentParser_Parse3(b *testing.B) { + var parser = NewUserAgentParser() + b.RunParallel(func(pb *testing.PB) { + for pb.Next() { + parser.Parse("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Test/" + types.String(rands.Int(0, 100_000))) + } + }) + b.Log(len(parser.cacheMap1), len(parser.cacheMap2)) +}