From d245ddf6de9985d842b674fff21230d61ecd4c61 Mon Sep 17 00:00:00 2001 From: qydysky Date: Sun, 3 Dec 2023 10:57:20 +0800 Subject: [PATCH] 1 --- .github/workflows/main.yml | 10 ++++++++++ config.go | 17 +++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d94b517..2cc718f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -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: diff --git a/config.go b/config.go index 7edf81a..837779b 100644 --- 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"` -- 2.39.2