]> 127.0.0.1 Git - front/.git/commitdiff
1 v0.1.20240310124414
authorqydysky <qydysky@foxmail.com>
Sun, 10 Mar 2024 12:43:55 +0000 (20:43 +0800)
committerqydysky <qydysky@foxmail.com>
Sun, 10 Mar 2024 12:43:55 +0000 (20:43 +0800)
.gitignore
config.go
http.go
main.go
ws.go

index ea2548f7ecac8f7e82804c98b49df387bd31f36d..0dffc1aaa4e3818858a69f2b9e381f77e6ae0899 100755 (executable)
@@ -1,2 +1,3 @@
-main/main
-main/main.exe
+*.exe
+*.run
+main/main.json
index 3870b041427417c2f26e9fccbef5e9f67f27521d..5fd13c6c0f01563aa14ea17acadb4877c2f548f6 100755 (executable)
--- a/config.go
+++ b/config.go
@@ -92,8 +92,9 @@ func (t *Config) SwapSign(ctx context.Context, logger Logger) {
                        }
 
                        var backIs []*Back
+
                        if t, e := r.Cookie("_psign_" + cookie); e == nil {
-                               if backP, ok := route.backMap.Load(t.Value); ok && backP.(*Back).IsLive() && HeaderMatchs(backP.(*Back).ReqHeader, r) {
+                               if backP, ok := route.backMap.Load(t.Value); ok && HeaderMatchs(backP.(*Back).ReqHeader, r) {
                                        backP.(*Back).cloneDealer()
                                        for i := 0; i < backP.(*Back).Weight; i++ {
                                                backIs = append(backIs, backP.(*Back))
@@ -104,9 +105,9 @@ func (t *Config) SwapSign(ctx context.Context, logger Logger) {
                        backIs = append(backIs, route.FiliterBackByRequest(r)...)
 
                        if len(backIs) == 0 {
-                               logger.Warn(`W:`, fmt.Sprintf("%v > %v %v", route.config.Addr, route.Path, ErrAllBacksFail))
-                               w.Header().Add(header+"Error", ErrAllBacksFail.Error())
-                               w.WriteHeader(http.StatusServiceUnavailable)
+                               logger.Warn(`W:`, fmt.Sprintf("%v > %v %v %v", route.config.Addr, route.Path, r.URL.RequestURI(), ErrNoRoute))
+                               w.Header().Add(header+"Error", ErrNoRoute.Error())
+                               w.WriteHeader(http.StatusNotFound)
                                return
                        }
 
@@ -211,7 +212,7 @@ func (t *Route) SwapSign(add func(string, *Back), del func(string, *Back), logge
 func (t *Route) FiliterBackByRequest(r *http.Request) []*Back {
        var backLink []*Back
        for i := 0; i < len(t.Backs); i++ {
-               if t.Backs[i].IsLive() && HeaderMatchs(t.Backs[i].ReqHeader, r) {
+               if HeaderMatchs(t.Backs[i].ReqHeader, r) {
                        t.Backs[i].cloneDealer()
                        for k := 0; k < t.Backs[i].Weight; k++ {
                                backLink = append(backLink, &t.Backs[i])
diff --git a/http.go b/http.go
index c46e55cbbbc885748683d803c629b432e35a5cfc..eb0d40d221fbeb6b3a6c7f3ab71d461ce06e29c8 100644 (file)
--- a/http.go
+++ b/http.go
@@ -24,9 +24,13 @@ func httpDealer(ctx context.Context, w http.ResponseWriter, r *http.Request, rou
                chosenBack = backs[0]
                backs = backs[1:]
 
+               if !chosenBack.IsLive() {
+                       continue
+               }
+
                url := chosenBack.To
                if chosenBack.PathAdd {
-                       url += r.URL.String()
+                       url += r.URL.RequestURI()
                }
 
                url = "http" + url
@@ -59,11 +63,9 @@ func httpDealer(ctx context.Context, w http.ResponseWriter, r *http.Request, rou
                }
        }
 
-       if 0 == len(backs) && resp == nil {
+       if resp == nil {
                logger.Warn(`W:`, fmt.Sprintf("%v > %v > %v http %v %v", chosenBack.route.config.Addr, routePath, chosenBack.Name, ErrAllBacksFail, time.Since(opT)))
                return ErrAllBacksFail
-       } else if resp == nil {
-               return ErrBacksFail
        }
 
        if chosenBack.ErrToSec != 0 && time.Since(opT).Seconds() > chosenBack.ErrToSec {
diff --git a/main.go b/main.go
index 3e4798996fed4b73e0b003d6e0a4f005248d565e..fe86ce03506e5411dc7886e6c686d0e55e7e67b8 100755 (executable)
--- a/main.go
+++ b/main.go
@@ -179,5 +179,5 @@ var (
        ErrHeaderCheckFail = errors.New("ErrHeaderCheckFail")
        ErrBodyCheckFail   = errors.New("ErrBodyCheckFail")
        ErrAllBacksFail    = errors.New("ErrAllBacksFail")
-       ErrBacksFail       = errors.New("ErrBacksFail")
+       ErrNoRoute         = errors.New("ErrNoRoute")
 )
diff --git a/ws.go b/ws.go
index bb9be74a1b598b5391ba91affaeb0016633ffee3..b3006add293e2883f5df6dee9486e59a574b8da6 100644 (file)
--- a/ws.go
+++ b/ws.go
@@ -33,6 +33,10 @@ func wsDealer(ctx context.Context, w http.ResponseWriter, r *http.Request, route
                chosenBack = backs[0]
                backs = backs[1:]
 
+               if !chosenBack.IsLive() {
+                       continue
+               }
+
                _, e := BodyMatchs(chosenBack.tmp.ReqBody, r)
                if e != nil {
                        logger.Warn(`W:`, fmt.Sprintf("%v > %v > %v ws %v %v", chosenBack.route.config.Addr, routePath, chosenBack.Name, e, time.Since(opT)))
@@ -41,7 +45,7 @@ func wsDealer(ctx context.Context, w http.ResponseWriter, r *http.Request, route
 
                url := chosenBack.To
                if chosenBack.PathAdd {
-                       url += r.URL.String()
+                       url += r.URL.RequestURI()
                }
 
                url = "ws" + url
@@ -61,11 +65,9 @@ func wsDealer(ctx context.Context, w http.ResponseWriter, r *http.Request, route
                }
        }
 
-       if 0 == len(backs) && (resp == nil || conn == nil) {
+       if resp == nil || conn == nil {
                logger.Warn(`W:`, fmt.Sprintf("%v > %v > %v ws %v %v", chosenBack.route.config.Addr, routePath, chosenBack.Name, ErrAllBacksFail, time.Since(opT)))
                return ErrAllBacksFail
-       } else if resp == nil || conn == nil {
-               return ErrBacksFail
        }
 
        if chosenBack.ErrToSec != 0 && time.Since(opT).Seconds() > chosenBack.ErrToSec {