]> 127.0.0.1 Git - front/.git/commitdiff
1 v0.1.20241122023343
authorqydysky <qydysky@foxmail.com>
Fri, 22 Nov 2024 02:31:31 +0000 (02:31 +0000)
committerGitHub <noreply@github.com>
Fri, 22 Nov 2024 02:31:31 +0000 (02:31 +0000)
config.go

index f7f81c4cfb9abadac193428b91bdf2826d42190e..aa29ced88c3a95d9caa23a52d0e548deea599428 100755 (executable)
--- 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
 }