Skip to content

Commit 54ffc12

Browse files
committed
update
1 parent b9c72ca commit 54ffc12

9 files changed

Lines changed: 85 additions & 41 deletions

File tree

echo.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"reflect"
99
"strings"
1010
"sync"
11+
"sync/atomic"
1112

1213
"github.com/admpub/log"
1314
"github.com/admpub/realip"
@@ -33,7 +34,7 @@ type (
3334
renderer Renderer
3435
renderDataWrapper DataWrapper
3536
pool sync.Pool
36-
debug bool
37+
debug atomic.Bool
3738
router *Router
3839
logger logger.Logger
3940
groups map[string]*Group
@@ -185,7 +186,7 @@ func (e *Echo) Reset() *Echo {
185186
e.SetBinder(NewBinder(e))
186187
e.notFoundHandler = nil
187188
e.renderer = nil
188-
e.debug = false
189+
e.debug.Store(false)
189190
e.router = NewRouter(e)
190191
e.logger = log.GetLogger("echo")
191192
e.groups = make(map[string]*Group)
@@ -377,7 +378,7 @@ func (e *Echo) DefaultHTTPErrorHandler(err error, c Context) {
377378
code = he.Code
378379
msg = he.Message
379380
}
380-
if e.debug {
381+
if e.debug.Load() {
381382
msg = err.Error()
382383
}
383384
if !c.Response().Committed() {
@@ -436,7 +437,7 @@ func (e *Echo) RenderDataWrapper() DataWrapper {
436437

437438
// SetDebug enable/disable debug mode.
438439
func (e *Echo) SetDebug(on bool) {
439-
e.debug = on
440+
e.debug.Store(on)
440441
if logger, ok := e.logger.(logger.LevelSetter); ok {
441442
if on {
442443
logger.SetLevel(`Debug`)
@@ -448,7 +449,7 @@ func (e *Echo) SetDebug(on bool) {
448449

449450
// Debug returns debug mode (enabled or disabled).
450451
func (e *Echo) Debug() bool {
451-
return e.debug
452+
return e.debug.Load()
452453
}
453454

454455
func (e *Echo) SetMultilingual(on bool) {

go.mod

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ require (
1515
github.com/admpub/go-reuseport v0.5.0
1616
github.com/admpub/goth v0.0.4
1717
github.com/admpub/humanize v0.0.0-20190501023926-5f826e92c8ca
18-
github.com/admpub/i18n v0.5.5
18+
github.com/admpub/i18n v0.6.1
1919
github.com/admpub/ipfilter v1.0.6
2020
github.com/admpub/jet/v6 v6.0.2
2121
github.com/admpub/log v1.5.2
@@ -33,17 +33,17 @@ require (
3333
github.com/gosimple/slug v1.15.0
3434
github.com/mitchellh/go-homedir v1.1.0
3535
github.com/opentracing/opentracing-go v1.2.0
36-
github.com/redis/go-redis/v9 v9.18.0
37-
github.com/rs/zerolog v1.35.0
36+
github.com/redis/go-redis/v9 v9.19.0
37+
github.com/rs/zerolog v1.35.1
3838
github.com/russross/blackfriday v1.6.0
3939
github.com/stretchr/testify v1.11.1
4040
github.com/webx-top/captcha v0.1.0
4141
github.com/webx-top/codec v0.3.0
42-
github.com/webx-top/com v1.5.1
42+
github.com/webx-top/com v1.5.2
4343
github.com/webx-top/poolx v0.0.0-20210912044716-5cfa2d58e380
4444
github.com/webx-top/tagfast v0.0.1
4545
github.com/webx-top/validation v0.0.3
46-
golang.org/x/crypto v0.50.0
46+
golang.org/x/crypto v0.51.0
4747
golang.org/x/sync v0.20.0
4848
golang.org/x/time v0.15.0
4949
gopkg.in/redis.v5 v5.2.9
@@ -68,26 +68,26 @@ require (
6868
github.com/gosimple/unidecode v1.0.1 // indirect
6969
github.com/hashicorp/go-version v1.9.0 // indirect
7070
github.com/json-iterator/go v1.1.12 // indirect
71-
github.com/klauspost/compress v1.18.5 // indirect
71+
github.com/klauspost/compress v1.18.6 // indirect
7272
github.com/lestrrat-go/backoff/v2 v2.0.8 // indirect
7373
github.com/lestrrat-go/blackmagic v1.0.4 // indirect
7474
github.com/lestrrat-go/httpcc v1.0.1 // indirect
7575
github.com/lestrrat-go/iter v1.0.2 // indirect
7676
github.com/lestrrat-go/jwx v1.2.31 // indirect
7777
github.com/lestrrat-go/option v1.0.1 // indirect
7878
github.com/mattn/go-colorable v0.1.14 // indirect
79-
github.com/mattn/go-isatty v0.0.21 // indirect
79+
github.com/mattn/go-isatty v0.0.22 // indirect
8080
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
8181
github.com/modern-go/reflect2 v1.0.2 // indirect
82-
github.com/phuslu/iploc v1.0.20260401 // indirect
82+
github.com/phuslu/iploc v1.0.20260501 // indirect
8383
github.com/pkg/errors v0.9.1 // indirect
8484
github.com/pmezard/go-difflib v1.0.0 // indirect
8585
github.com/valyala/bytebufferpool v1.0.0 // indirect
8686
github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da // indirect
8787
go.uber.org/atomic v1.11.0 // indirect
88-
golang.org/x/net v0.53.0 // indirect
88+
golang.org/x/net v0.54.0 // indirect
8989
golang.org/x/oauth2 v0.36.0 // indirect
90-
golang.org/x/sys v0.43.0 // indirect
91-
golang.org/x/text v0.36.0 // indirect
90+
golang.org/x/sys v0.44.0 // indirect
91+
golang.org/x/text v0.37.0 // indirect
9292
gopkg.in/yaml.v3 v3.0.1 // indirect
9393
)

go.sum

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ github.com/admpub/humanize v0.0.0-20190501023926-5f826e92c8ca h1:9mfauR3d9p41BFn
3737
github.com/admpub/humanize v0.0.0-20190501023926-5f826e92c8ca/go.mod h1:eHL6IsGOvDKqPc9Zp0d0NNayoEYoJ+UC+vj6zG0lGCY=
3838
github.com/admpub/i18n v0.5.5 h1:2xOgoJknZzlOij+soS5/q0OECgUbK1RL7RSERl9tmdU=
3939
github.com/admpub/i18n v0.5.5/go.mod h1:Xpla6MOAv9VYeEjU4f4Q71o6wlQ4lSGeNPNSRS9dU0M=
40+
github.com/admpub/i18n v0.6.1 h1:muvXVdxI+FqvGs3gz0+FlLwj/Ku1GMtktoVFZaJOMwo=
41+
github.com/admpub/i18n v0.6.1/go.mod h1:Rnjbs0uc0378Mrv325EWDybPHv6LZjO4KoZLi4kF2Lg=
4042
github.com/admpub/ipfilter v1.0.6 h1:r+8UGIcmjL6h2KfLRlQaDsa0tR4kLfw/hp2a4+CRLLI=
4143
github.com/admpub/ipfilter v1.0.6/go.mod h1:45m0qCpyx2wyhGMPeEbYmdOUKghgQSMWji7UqgqwGTs=
4244
github.com/admpub/jet/v6 v6.0.2 h1:Nsx2K6yugNqCwigBUMh34NiFxEQq89WP8D7/3ZzbuBY=
@@ -168,8 +170,11 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1
168170
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
169171
github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE=
170172
github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
173+
github.com/klauspost/compress v1.18.6 h1:2jupLlAwFm95+YDR+NwD2MEfFO9d4z4Prjl1XXDjuao=
174+
github.com/klauspost/compress v1.18.6/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
171175
github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=
172176
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
177+
github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
173178
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
174179
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
175180
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -196,8 +201,8 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk
196201
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
197202
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
198203
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
199-
github.com/mattn/go-isatty v0.0.21 h1:xYae+lCNBP7QuW4PUnNG61ffM4hVIfm+zUzDuSzYLGs=
200-
github.com/mattn/go-isatty v0.0.21/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4=
204+
github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4=
205+
github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4=
201206
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
202207
github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4=
203208
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
@@ -230,6 +235,8 @@ github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTm
230235
github.com/phuslu/iploc v1.0.20220630/go.mod h1:gsgExGWldwv1AEzZm+Ki9/vGfyjkL33pbSr9HGpt2Xg=
231236
github.com/phuslu/iploc v1.0.20260401 h1:G4utm7peTxVjapk1UORdUN/hf+kHCNgKmD/8OFYgb4o=
232237
github.com/phuslu/iploc v1.0.20260401/go.mod h1:VZqAWoi2A80YPvfk1AizLGHavNIG9nhBC8d87D/SeVs=
238+
github.com/phuslu/iploc v1.0.20260501 h1:jGTTY2Kon9e+QjMYAAHbiTsY2UzR/+PoTFouF/yVvZQ=
239+
github.com/phuslu/iploc v1.0.20260501/go.mod h1:VZqAWoi2A80YPvfk1AizLGHavNIG9nhBC8d87D/SeVs=
233240
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
234241
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
235242
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -241,10 +248,14 @@ github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7q
241248
github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
242249
github.com/redis/go-redis/v9 v9.18.0 h1:pMkxYPkEbMPwRdenAzUNyFNrDgHx9U+DrBabWNfSRQs=
243250
github.com/redis/go-redis/v9 v9.18.0/go.mod h1:k3ufPphLU5YXwNTUcCRXGxUoF1fqxnhFQmscfkCoDA0=
251+
github.com/redis/go-redis/v9 v9.19.0 h1:XPVaaPSnG6RhYf7p+rmSa9zZfeVAnWsH5h3lxthOm/k=
252+
github.com/redis/go-redis/v9 v9.19.0/go.mod h1:v/M13XI1PVCDcm01VtPFOADfZtHf8YW3baQf57KlIkA=
244253
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
245254
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
246255
github.com/rs/zerolog v1.35.0 h1:VD0ykx7HMiMJytqINBsKcbLS+BJ4WYjz+05us+LRTdI=
247256
github.com/rs/zerolog v1.35.0/go.mod h1:EjML9kdfa/RMA7h/6z6pYmq1ykOuA8/mjWaEvGI+jcw=
257+
github.com/rs/zerolog v1.35.1 h1:m7xQeoiLIiV0BCEY4Hs+j2NG4Gp2o2KPKmhnnLiazKI=
258+
github.com/rs/zerolog v1.35.1/go.mod h1:EjML9kdfa/RMA7h/6z6pYmq1ykOuA8/mjWaEvGI+jcw=
248259
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
249260
github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww=
250261
github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY=
@@ -293,8 +304,8 @@ github.com/webx-top/captcha v0.1.0 h1:uBTGMevM0tlII5Zyj4QbJPI6vTPI0uF+BA4zKLA8av
293304
github.com/webx-top/captcha v0.1.0/go.mod h1:E7chb3O5Dqbcta3hBEGRGXGreItjbjPy72ihuqS4+d4=
294305
github.com/webx-top/codec v0.3.0 h1:IQT59k2TMBCVG7XhpEXKgICftk3iJALm5EmeKy1xncI=
295306
github.com/webx-top/codec v0.3.0/go.mod h1:FL2TNTorudSTop040uNCTONOlIJfl6kElJLxyoHHs/g=
296-
github.com/webx-top/com v1.5.1 h1:sUSsA2Fb3D0QKAeqJSQ2WHrlrUytwN9U9bD6mcZjyH4=
297-
github.com/webx-top/com v1.5.1/go.mod h1:c56DpJ+r3MQS/UPQ2zTWK+I1Fu+epk/VuaU/lItIPxU=
307+
github.com/webx-top/com v1.5.2 h1:QIdtrGDkJEXQqkS63fr8F1cNLLAMYd2yGEcQSuncvgY=
308+
github.com/webx-top/com v1.5.2/go.mod h1:YmFX7OwyX2yFJasgtAFC8S1wpElrWAKRgb0sswIG7Q8=
298309
github.com/webx-top/poolx v0.0.0-20210912044716-5cfa2d58e380 h1:YUDmvTQjrixwGCtlJFm1piLLo7lxMEBnWUqMrlnqyxM=
299310
github.com/webx-top/poolx v0.0.0-20210912044716-5cfa2d58e380/go.mod h1:JGnKm+kSTq2yvbFHttHLvbo2kqY9wZOTXY98YGhZu6Y=
300311
github.com/webx-top/tagfast v0.0.0-20161020041435-9a2065ce3dd2/go.mod h1:pMe3sJitHxbxX2EAI/v9HEAXjodP4c+yUVw3rbKcljI=
@@ -309,6 +320,7 @@ github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da h1:NimzV1aGyq29m5u
309320
github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA=
310321
github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0=
311322
github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
323+
github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs=
312324
go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
313325
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
314326
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
@@ -319,8 +331,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
319331
golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
320332
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
321333
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
322-
golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI=
323-
golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q=
334+
golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI=
335+
golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8=
324336
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
325337
golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
326338
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -341,6 +353,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
341353
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
342354
golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA=
343355
golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs=
356+
golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w=
357+
golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ=
344358
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
345359
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
346360
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -376,15 +390,15 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc
376390
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
377391
golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
378392
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
379-
golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
380-
golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
393+
golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ=
394+
golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
381395
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
382396
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
383397
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
384398
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
385399
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
386-
golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
387-
golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
400+
golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
401+
golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
388402
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
389403
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
390404
golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=

middleware/compress.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func (w *gzipWriter) WriteHeader(code int) {
4747
w.Header().Del(echo.HeaderContentEncoding)
4848
}
4949
w.Header().Del(echo.HeaderContentLength)
50-
w.WriteHeader(code)
50+
w.Response.WriteHeader(code)
5151
}
5252

5353
func (w *gzipWriter) Write(b []byte) (int, error) {

middleware/cors.go

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ type (
4444
// can be cached.
4545
// Optional with default value as 0.
4646
MaxAge int
47+
48+
allowOriginLookup map[string]bool
49+
allowAllOrigins bool
4750
}
4851
)
4952

@@ -56,13 +59,23 @@ var (
5659
}
5760
)
5861

62+
func (c *CORSConfig) resolveAllowOrigin(origin string) string {
63+
if c.allowAllOrigins {
64+
return "*"
65+
}
66+
if c.allowOriginLookup[origin] {
67+
return origin
68+
}
69+
return ""
70+
}
71+
5972
// CORS returns a cross-origin HTTP request (CORS) middleware.
6073
// See https://developer.mozilla.org/en/docs/Web/HTTP/Access_control_CORS
6174
func CORS() echo.MiddlewareFunc {
6275
return CORSWithConfig(DefaultCORSConfig)
6376
}
6477

65-
// CORSFromConfig returns a CORS middleware from config.
78+
// CORSWithConfig returns a CORS middleware from config.
6679
// See `CORS()`.
6780
func CORSWithConfig(config CORSConfig) echo.MiddlewareFunc {
6881
// Defaults
@@ -75,7 +88,17 @@ func CORSWithConfig(config CORSConfig) echo.MiddlewareFunc {
7588
if len(config.AllowMethods) == 0 {
7689
config.AllowMethods = DefaultCORSConfig.AllowMethods
7790
}
78-
allowOrigins := strings.Join(config.AllowOrigins, ",")
91+
92+
// Pre-build origin lookup map for O(1) validation
93+
config.allowOriginLookup = make(map[string]bool, len(config.AllowOrigins))
94+
for _, o := range config.AllowOrigins {
95+
if o == "*" {
96+
config.allowAllOrigins = true
97+
} else {
98+
config.allowOriginLookup[o] = true
99+
}
100+
}
101+
79102
allowMethods := strings.Join(config.AllowMethods, ",")
80103
allowHeaders := strings.Join(config.AllowHeaders, ",")
81104
exposeHeaders := strings.Join(config.ExposeHeaders, ",")
@@ -88,11 +111,17 @@ func CORSWithConfig(config CORSConfig) echo.MiddlewareFunc {
88111
}
89112
req := c.Request()
90113
header := c.Response().Header()
114+
origin := req.Header().Get(echo.HeaderOrigin)
115+
116+
// Determine allowed origin
117+
allowOrigin := config.resolveAllowOrigin(origin)
91118

92119
// Simple request
93120
if req.Method() != echo.OPTIONS {
94121
header.Add(echo.HeaderVary, echo.HeaderOrigin)
95-
header.Set(echo.HeaderAccessControlAllowOrigin, allowOrigins)
122+
if allowOrigin != "" {
123+
header.Set(echo.HeaderAccessControlAllowOrigin, allowOrigin)
124+
}
96125
if config.AllowCredentials {
97126
header.Set(echo.HeaderAccessControlAllowCredentials, "true")
98127
}
@@ -106,7 +135,9 @@ func CORSWithConfig(config CORSConfig) echo.MiddlewareFunc {
106135
header.Add(echo.HeaderVary, echo.HeaderOrigin)
107136
header.Add(echo.HeaderVary, echo.HeaderAccessControlRequestMethod)
108137
header.Add(echo.HeaderVary, echo.HeaderAccessControlRequestHeaders)
109-
header.Set(echo.HeaderAccessControlAllowOrigin, allowOrigins)
138+
if allowOrigin != "" {
139+
header.Set(echo.HeaderAccessControlAllowOrigin, allowOrigin)
140+
}
110141
header.Set(echo.HeaderAccessControlAllowMethods, allowMethods)
111142
if config.AllowCredentials {
112143
header.Set(echo.HeaderAccessControlAllowCredentials, "true")

middleware/jwt/jwt.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package middleware
1818
import (
1919
"fmt"
2020
"net/http"
21-
"reflect"
2221
"strings"
2322

2423
"github.com/golang-jwt/jwt/v5"
@@ -210,8 +209,7 @@ func JWTWithConfig(config JWTConfig) echo.MiddlewareFuncd {
210209
if _, ok := config.Claims.(jwt.MapClaims); ok {
211210
token, err = jwt.Parse(auth, config.keyFunc)
212211
} else {
213-
claims := reflect.ValueOf(config.Claims).Interface().(jwt.Claims)
214-
token, err = jwt.ParseWithClaims(auth, claims, config.keyFunc)
212+
token, err = jwt.ParseWithClaims(auth, config.Claims, config.keyFunc)
215213
}
216214
if err == nil && token.Valid {
217215
// Store user information from token into context.
@@ -234,7 +232,7 @@ func jwtFromHeader(header string) jwtExtractor {
234232
return func(c echo.Context) (string, error) {
235233
auth := c.Request().Header().Get(header)
236234
l := len(bearer)
237-
if len(auth) > l+1 && auth[:l] == bearer {
235+
if len(auth) > l+1 && strings.EqualFold(auth[:l], bearer) {
238236
return auth[l+1:], nil
239237
}
240238
return "", ErrJWTMissing

middleware/ratelimit/ratelimit.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ func BuildKeys(limiter *config.Limiter, r engine.Request) [][]string {
189189
// Limit by HTTP methods and HTTP headers+values and Basic Auth credentials.
190190
if StringInSlice(limiter.Methods, r.Method()) {
191191
for headerKey, headerValues := range limiter.Headers {
192-
if (headerValues == nil || len(headerValues) <= 0) && r.Header().Get(headerKey) != "" {
192+
if len(headerValues) <= 0 && r.Header().Get(headerKey) != "" {
193193
// If header values are empty, rate-limit all request with headerKey.
194194
username, _, ok := r.BasicAuth()
195195
if ok && StringInSlice(limiter.BasicAuthUsers, username) {
@@ -212,7 +212,7 @@ func BuildKeys(limiter *config.Limiter, r engine.Request) [][]string {
212212
// Limit by HTTP methods and HTTP headers+values.
213213
if StringInSlice(limiter.Methods, r.Method()) {
214214
for headerKey, headerValues := range limiter.Headers {
215-
if (headerValues == nil || len(headerValues) <= 0) && r.Header().Get(headerKey) != "" {
215+
if len(headerValues) <= 0 && r.Header().Get(headerKey) != "" {
216216
// If header values are empty, rate-limit all request with headerKey.
217217
sliceKeys = append(sliceKeys, []string{remoteIP, path, r.Method(), headerKey})
218218

0 commit comments

Comments
 (0)