]> 127.0.0.1 Git - front/.git/commitdiff
1 v0.1.20231203025759
authorqydysky <qydysky@foxmail.com>
Sun, 3 Dec 2023 02:57:20 +0000 (10:57 +0800)
committerqydysky <qydysky@foxmail.com>
Sun, 3 Dec 2023 02:57:20 +0000 (10:57 +0800)
.github/workflows/main.yml
config.go

index d94b51703c554d1c50e27c62812746b5080674ee..2cc718f9c48a8cbb90f4df559308e29543647c91 100644 (file)
@@ -3,8 +3,18 @@ name: test
 on:
   push:
     branches: [ main ]
+    paths:
+      - '**.yml'
+      - '**.go'
+      - '**.mod'
+      - '**.sum'
   pull_request:
     branches: [ main ]
+    paths:
+      - '**.yml'
+      - '**.go'
+      - '**.mod'
+      - '**.sum'
 
 jobs:
 
index 7edf81a677c2ea6dfa5ec84e6b8feb9bb1783bfb..837779b217e266e80876a1ce737c616fe7badbf2 100644 (file)
--- a/config.go
+++ b/config.go
@@ -5,6 +5,7 @@ import (
        "encoding/json"
        "fmt"
        "sync"
+       "time"
 )
 
 type Config struct {
@@ -39,6 +40,7 @@ func (t *Route) GenBack() []*Back {
                        Name:      back.Name,
                        To:        back.To,
                        Weight:    back.Weight,
+                       ErrBanSec: back.ErrBanSec,
                        PathAdd:   back.PathAdd,
                        ReqHeader: append([]Header{}, back.ReqHeader...),
                        ResHeader: append([]Header{}, back.ResHeader...),
@@ -51,14 +53,29 @@ func (t *Route) GenBack() []*Back {
 }
 
 type Back struct {
+       lock      sync.RWMutex
+       upT       time.Time
        Name      string   `json:"name"`
        To        string   `json:"to"`
        Weight    int      `json:"weight"`
+       ErrBanSec int      `json:"errBanSec"`
        PathAdd   bool     `json:"pathAdd"`
        ReqHeader []Header `json:"reqHeader"`
        ResHeader []Header `json:"resHeader"`
 }
 
+func (t *Back) IsLive() bool {
+       t.lock.RLock()
+       defer t.lock.RUnlock()
+       return t.upT.Before(time.Now())
+}
+
+func (t *Back) Disable() {
+       t.lock.Lock()
+       defer t.lock.Unlock()
+       t.upT = time.Now().Add(time.Second * time.Duration(t.ErrBanSec))
+}
+
 type Header struct {
        Action string `json:"action"`
        Key    string `json:"key"`