This commit is contained in:
GoEdgeLab
2024-07-27 14:15:25 +08:00
parent be70925770
commit 5a17ae9d79
520 changed files with 2515 additions and 762 deletions

View File

@@ -2,6 +2,10 @@ package tasks
import (
"encoding/json"
"net"
"strings"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
dnsmodels "github.com/TeaOSLab/EdgeAPI/internal/db/models/dns"
"github.com/TeaOSLab/EdgeAPI/internal/dnsclients"
@@ -12,9 +16,6 @@ import (
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/iwind/TeaGo/dbs"
"github.com/iwind/TeaGo/lists"
"net"
"strings"
"time"
)
func init() {

View File

@@ -3,10 +3,11 @@
package tasks_test
import (
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
"testing"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
)
func TestDNSTaskExecutor_Loop(t *testing.T) {

View File

@@ -1,10 +1,11 @@
package tasks
import (
"time"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/iwind/TeaGo/dbs"
"time"
)
func init() {

View File

@@ -3,6 +3,9 @@ package tasks
import (
"bytes"
"encoding/json"
"strings"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/TeaOSLab/EdgeAPI/internal/utils"
@@ -11,8 +14,6 @@ import (
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/iwind/TeaGo/maps"
"github.com/iwind/TeaGo/types"
"strings"
"time"
)
// HealthCheckClusterTask 单个集群的健康检查任务

View File

@@ -1,9 +1,10 @@
package tasks_test
import (
"testing"
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
"testing"
)
func TestHealthCheckClusterTask_Loop(t *testing.T) {

View File

@@ -4,6 +4,13 @@ import (
"context"
"crypto/tls"
"encoding/json"
"net"
"net/http"
"strconv"
"strings"
"sync"
"time"
teaconst "github.com/TeaOSLab/EdgeAPI/internal/const"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/errors"
@@ -17,12 +24,6 @@ import (
"github.com/iwind/TeaGo/maps"
"github.com/iwind/TeaGo/types"
timeutil "github.com/iwind/TeaGo/utils/time"
"net"
"net/http"
"strconv"
"strings"
"sync"
"time"
)
type HealthCheckExecutor struct {

View File

@@ -1,4 +1,4 @@
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cloud .
//go:build !plus
package tasks

View File

@@ -4,10 +4,11 @@
package tasks_test
import (
"testing"
teaconst "github.com/TeaOSLab/EdgeAPI/internal/const"
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
"testing"
)
func TestHealthCheckExecutor_Run(t *testing.T) {

View File

@@ -3,6 +3,8 @@ package tasks
import (
"bytes"
"encoding/json"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
@@ -10,7 +12,6 @@ import (
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/iwind/TeaGo/dbs"
"github.com/iwind/TeaGo/lists"
"time"
)
func init() {

View File

@@ -1,11 +1,12 @@
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cloud .
package tasks_test
import (
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"testing"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
)
func TestNewHealthCheckTask(t *testing.T) {

View File

@@ -3,12 +3,13 @@ package tasks
import (
"encoding/json"
"fmt"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/TeaOSLab/EdgeAPI/internal/utils/numberutils"
"github.com/TeaOSLab/EdgeCommon/pkg/systemconfigs"
"github.com/iwind/TeaGo/dbs"
"time"
)
func init() {

View File

@@ -1,10 +1,11 @@
package tasks_test
import (
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
"testing"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
)
func TestLogTask_LoopClean(t *testing.T) {

View File

@@ -1,10 +1,11 @@
package tasks
import (
"time"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/iwind/TeaGo/dbs"
"time"
)
func init() {

View File

@@ -3,11 +3,12 @@
package tasks
import (
"time"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/iwind/TeaGo/Tea"
"github.com/iwind/TeaGo/dbs"
"time"
)
func init() {

View File

@@ -3,10 +3,11 @@
package tasks_test
import (
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
"testing"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
)
func TestMonitorItemValueTask_Loop(t *testing.T) {

View File

@@ -1,10 +1,11 @@
package tasks
import (
"time"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/iwind/TeaGo/dbs"
"time"
)
func init() {

View File

@@ -1,10 +1,11 @@
package tasks_test
import (
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
"testing"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
)
func TestNodeLogCleaner_loop(t *testing.T) {

View File

@@ -1,14 +1,15 @@
package tasks
import (
"strings"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/TeaOSLab/EdgeAPI/internal/installers"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/iwind/TeaGo/dbs"
"github.com/iwind/TeaGo/types"
"strings"
"time"
)
func init() {

View File

@@ -1,11 +1,12 @@
package tasks_test
import (
"testing"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
"testing"
"time"
)
func TestNodeMonitorTask_loop(t *testing.T) {

View File

@@ -1,11 +1,12 @@
package tasks
import (
"time"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/iwind/TeaGo/dbs"
"time"
)
func init() {

View File

@@ -2,15 +2,16 @@ package tasks
import (
"encoding/json"
"regexp"
"strings"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/errors"
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/TeaOSLab/EdgeCommon/pkg/systemconfigs"
"github.com/iwind/TeaGo/dbs"
timeutil "github.com/iwind/TeaGo/utils/time"
"regexp"
"strings"
"time"
)
func init() {

View File

@@ -1,10 +1,11 @@
package tasks_test
import (
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
"testing"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
)
func TestServerAccessLogCleaner_Loop(t *testing.T) {

View File

@@ -2,6 +2,10 @@ package tasks
import (
"encoding/json"
"strconv"
"strings"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/db/models/acme"
"github.com/TeaOSLab/EdgeAPI/internal/goman"
@@ -9,9 +13,6 @@ import (
"github.com/iwind/TeaGo/maps"
"github.com/iwind/TeaGo/types"
timeutil "github.com/iwind/TeaGo/utils/time"
"strconv"
"strings"
"time"
)
func init() {

View File

@@ -1,11 +1,12 @@
package tasks_test
import (
"testing"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
timeutil "github.com/iwind/TeaGo/utils/time"
"testing"
"time"
)
func TestSSLCertExpireCheckExecutor_loop(t *testing.T) {

View File

@@ -0,0 +1,121 @@
package tasks
import (
"github.com/TeaOSLab/EdgeAPI/internal/db/models/acme"
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/iwind/TeaGo/dbs"
"github.com/iwind/TeaGo/logs"
"sync"
"time"
)
func init() {
dbs.OnReadyDone(func() {
goman.New(func() {
NewSSLCertIssueExecutor(5 * time.Second).Start()
})
})
}
// SSLCertIssueExecutor 证书签发任务
type SSLCertIssueExecutor struct {
BaseTask
ticker *time.Ticker
}
func NewSSLCertIssueExecutor(duration time.Duration) *SSLCertIssueExecutor {
return &SSLCertIssueExecutor{
ticker: time.NewTicker(duration),
}
}
// Start 启动任务
func (this *SSLCertIssueExecutor) Start() {
for range this.ticker.C {
err := this.Loop()
if err != nil {
this.logErr("SSLCertExpireCheckExecutor", err.Error())
}
}
}
var (
concurrent = 10
mutex sync.Mutex
queue = make(chan *acme.ACMETask, 10)
runningTaskIds = make(map[int64]bool)
)
func taskConsumer(wg *sync.WaitGroup) {
defer wg.Done()
for task := range queue {
mutex.Lock()
runningTaskIds[int64(task.Id)] = true
mutex.Unlock()
go func(t *acme.ACMETask) {
defer func() {
mutex.Lock()
delete(runningTaskIds, int64(t.Id))
mutex.Unlock()
}()
ok, errMsg := acme.SharedACMETaskDAO.RunTaskAndAutoBindServer(nil, int64(t.Id), t.DecodeDomains())
if !ok {
logs.Printf(errMsg)
}
}(task)
}
}
func taskProducer(wg *sync.WaitGroup) {
defer wg.Done()
for {
time.Sleep(2 * time.Second)
if len(runningTaskIds) < concurrent {
excludeTasks := make([]int64, 0, len(runningTaskIds))
for k := range runningTaskIds {
excludeTasks = append(excludeTasks, k)
}
tasks, err := acme.SharedACMETaskDAO.FindIssueACMETask(nil, 2, int64(concurrent-len(runningTaskIds)), excludeTasks)
if err != nil {
logs.Printf("Failed to find tasks from database, %v", err)
continue
}
if len(tasks) == 0 {
continue
}
for _, task := range tasks {
queue <- task
}
}
}
}
// Loop 单次执行
func (this *SSLCertIssueExecutor) Loop() error {
// 检查是否为主节点
if !this.IsPrimaryNode() {
return nil
}
var queue = make(chan *acme.ACMETask, concurrent)
tasks, err := acme.SharedACMETaskDAO.FindIssueACMETask(nil, 2, int64(concurrent), nil)
if err != nil {
return err
}
if len(tasks) == 0 {
return nil
}
for _, task := range tasks {
queue <- task
}
var wg sync.WaitGroup
wg.Add(2)
go taskConsumer(&wg)
go taskProducer(&wg)
wg.Wait()
return nil
}

View File

@@ -9,6 +9,10 @@ import (
"crypto/x509"
"errors"
"fmt"
"io"
"net/http"
"time"
teaconst "github.com/TeaOSLab/EdgeAPI/internal/const"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
"github.com/TeaOSLab/EdgeAPI/internal/goman"
@@ -16,9 +20,6 @@ import (
"github.com/TeaOSLab/EdgeAPI/internal/utils"
"github.com/iwind/TeaGo/dbs"
"golang.org/x/crypto/ocsp"
"io"
"net/http"
"time"
)
func init() {

View File

@@ -3,10 +3,11 @@
package tasks_test
import (
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
"testing"
"time"
"github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/dbs"
)
func TestSSLCertUpdateOCSPTask_Loop(t *testing.T) {

View File

@@ -1,4 +1,4 @@
// Copyright 2022 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
// Copyright 2022 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cloud .
package tasks

View File

@@ -1,4 +1,4 @@
// Copyright 2022 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
// Copyright 2022 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cloud .
package tasks