From c21385c56565827a4cc930bd69340181973f61aa Mon Sep 17 00:00:00 2001 From: qydysky Date: Fri, 22 Nov 2024 02:31:31 +0000 Subject: [PATCH] 1 --- config.go | 50 +++++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/config.go b/config.go index f7f81c4..aa29ced 100755 --- a/config.go +++ b/config.go @@ -171,28 +171,38 @@ func (t *Config) SwapSign(ctx context.Context, logger Logger) { var backIs []*Back - backIs = append(backIs, route.FiliterBackByRequest(r)...) + { + if t, e := r.Cookie("_psign_" + cookie); e == nil { + if backP, aok := route.backMap.Load(t.Value); aok { + + if ok, e := backP.(*Back).getFiliterReqUri().Match(r); e != nil { + logger.Warn(`W:`, fmt.Sprintf(logFormat, r.RemoteAddr, route.config.Addr, routePath, "Err", e)) + } else if ok { + aok = false + } - if t, e := r.Cookie("_psign_" + cookie); e == nil { - if backP, aok := route.backMap.Load(t.Value); aok { + if ok, e := backP.(*Back).getFiliterReqHeader().Match(r.Header); e != nil { + logger.Warn(`W:`, fmt.Sprintf(logFormat, r.RemoteAddr, route.config.Addr, routePath, "Err", e)) + } else if ok { + aok = false + } - if ok, e := backP.(*Back).getFiliterReqUri().Match(r); e != nil { - logger.Warn(`W:`, fmt.Sprintf(logFormat, r.RemoteAddr, route.config.Addr, routePath, "Err", e)) - } else if ok { - aok = false + if aok { + for i := uint(0); i < backP.(*Back).Weight; i++ { + backIs = append(backIs, backP.(*Back)) + } + } } + } - if ok, e := backP.(*Back).getFiliterReqHeader().Match(r.Header); e != nil { - logger.Warn(`W:`, fmt.Sprintf(logFormat, r.RemoteAddr, route.config.Addr, routePath, "Err", e)) - } else if ok { - aok = false - } + var splicingC = len(backIs) - if aok { - for i := uint(0); i < backP.(*Back).Weight; i++ { - backIs = append(backIs, backP.(*Back)) - } - } + backIs = append(backIs, route.FiliterBackByRequest(r)...) + + if f, ok := rollRuleMap[route.RollRule]; ok { + f(backIs[splicingC:]) + } else { + rand_Shuffle(backIs[splicingC:]) } } @@ -390,12 +400,6 @@ func (t *Route) FiliterBackByRequest(r *http.Request) []*Back { backLink = append(backLink, &t.Backs[i]) } - if f, ok := rollRuleMap[t.RollRule]; ok { - f(backLink) - } else { - rand_Shuffle(backLink) - } - return backLink } -- 2.39.2