From c77704d26f37918dc95745f370cba36a3f287426 Mon Sep 17 00:00:00 2001 From: huoxue1 <3343780376@qq.com> Date: Mon, 4 Sep 2023 14:02:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/api.go | 2 + api/midware.go | 8 ++-- api/open.go | 2 + api/server/server.go | 35 +++++++++++++++ go.mod | 37 ++++++++-------- go.sum | 76 +++++++++++++++++++++----------- internal/github/download.go | 16 +++++++ internal/github/download_test.go | 8 ++++ models/Apps.go | 2 +- models/Auths.go | 2 +- models/Crontabs.go | 10 ++--- models/Dependences.go | 14 +++--- models/Envs.go | 8 ++-- models/Subscriptions.go | 64 ++++++++++++++++++++------- models/models.go | 9 +++- service/config/config.go | 2 +- service/server/server.go | 71 +++++++++++++++++++++++++++++ service/subscription/manager.go | 58 ++++++++++-------------- utils/run.go | 10 +++-- 19 files changed, 315 insertions(+), 119 deletions(-) create mode 100644 api/server/server.go create mode 100644 internal/github/download.go create mode 100644 internal/github/download_test.go create mode 100644 service/server/server.go diff --git a/api/api.go b/api/api.go index bcf6685..aca7e70 100644 --- a/api/api.go +++ b/api/api.go @@ -10,6 +10,7 @@ import ( "github.com/huoxue1/qinglong-go/api/open" "github.com/huoxue1/qinglong-go/api/public" "github.com/huoxue1/qinglong-go/api/scripts" + "github.com/huoxue1/qinglong-go/api/server" "github.com/huoxue1/qinglong-go/api/subscription" "github.com/huoxue1/qinglong-go/api/system" "github.com/huoxue1/qinglong-go/api/user" @@ -29,4 +30,5 @@ func Api(group *gin.RouterGroup) { dependencies.Api(group.Group("/dependencies")) ws.Api(group.Group("/ws")) public.Api(group.Group("/public")) + server.Api(group.Group("/server")) } diff --git a/api/midware.go b/api/midware.go index cdeb28a..88180ec 100644 --- a/api/midware.go +++ b/api/midware.go @@ -2,14 +2,15 @@ package api import ( "errors" + "strconv" + "strings" + "time" + "github.com/gin-gonic/gin" "github.com/huoxue1/qinglong-go/internal/auth" "github.com/huoxue1/qinglong-go/internal/res" "github.com/huoxue1/qinglong-go/models" "github.com/huoxue1/qinglong-go/utils" - "strconv" - "strings" - "time" ) var ( @@ -20,6 +21,7 @@ var ( "api/public/panel/log", "/api/user/notification/init", "/api/user/two-factor/login", + "/api/server", } ) diff --git a/api/open.go b/api/open.go index ab73d14..12f2731 100644 --- a/api/open.go +++ b/api/open.go @@ -9,6 +9,7 @@ import ( "github.com/huoxue1/qinglong-go/api/logs" "github.com/huoxue1/qinglong-go/api/open" "github.com/huoxue1/qinglong-go/api/scripts" + "github.com/huoxue1/qinglong-go/api/server" "github.com/huoxue1/qinglong-go/api/subscription" "github.com/huoxue1/qinglong-go/api/system" ) @@ -24,4 +25,5 @@ func Open(group *gin.RouterGroup) { subscription.Api(group.Group("/subscriptions")) logs.APi(group.Group("/logs")) dependencies.Api(group.Group("/dependencies")) + server.Api(group.Group("/server")) } diff --git a/api/server/server.go b/api/server/server.go new file mode 100644 index 0000000..af35a31 --- /dev/null +++ b/api/server/server.go @@ -0,0 +1,35 @@ +package server + +import ( + "net/http" + + "github.com/gin-gonic/gin" + "github.com/huoxue1/qinglong-go/service/server" +) + +func Api(group *gin.RouterGroup) { + group.Match([]string{ + http.MethodGet, + http.MethodPost, + http.MethodDelete, + http.MethodPut, + http.MethodOptions, + }, "/:path", handle()) +} + +func handle() gin.HandlerFunc { + return func(ctx *gin.Context) { + path := ctx.Param("path") + query := make(map[string]string) + ctx.ShouldBindQuery(&query) + headers := make(map[string]string) + ctx.ShouldBindHeader(&headers) + + body := make(map[string]any) + ctx.ShouldBind(&body) + data := server.Run(ctx, path, query, body, headers, false) + ctx.Writer.WriteHeader(200) + ctx.Writer.Header().Add("Content-Type", "application/json") + _, _ = ctx.Writer.WriteString(data) + } +} diff --git a/go.mod b/go.mod index aab12d7..2c38e45 100644 --- a/go.mod +++ b/go.mod @@ -7,11 +7,12 @@ require ( github.com/gin-contrib/gzip v0.0.6 github.com/gin-contrib/static v0.0.1 github.com/gin-gonic/gin v1.9.0 + github.com/go-git/go-git/v5 v5.6.2-0.20230511070211-dc2b346ed149 + github.com/go-sql-driver/mysql v1.6.0 github.com/golang-jwt/jwt/v5 v5.0.0 - github.com/google/go-github/v52 v52.0.0 github.com/google/uuid v1.3.0 github.com/huoxue1/go-utils v0.0.0-20230406033646-db359518379e - github.com/imroc/req/v3 v3.33.2 + github.com/imroc/req/v3 v3.41.10 github.com/nutsdb/nutsdb v0.12.1-0.20230420040606-9fe96e4d325b github.com/panjf2000/ants/v2 v2.7.1 github.com/pquerna/otp v1.4.0 @@ -29,6 +30,7 @@ require ( github.com/Microsoft/go-winio v0.5.2 // indirect github.com/ProtonMail/go-crypto v0.0.0-20230417170513-8ee5748c52b5 // indirect github.com/acomagu/bufpipe v1.0.4 // indirect + github.com/andybalholm/brotli v1.0.5 // indirect github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc // indirect github.com/bwmarrin/snowflake v0.3.0 // indirect github.com/bytedance/sonic v1.8.0 // indirect @@ -36,10 +38,10 @@ require ( github.com/cloudflare/circl v1.1.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/gaukas/godicttls v0.0.4 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.4.1 // indirect - github.com/go-git/go-git/v5 v5.6.2-0.20230511070211-dc2b346ed149 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.11.2 // indirect @@ -48,10 +50,8 @@ require ( github.com/goccy/go-json v0.10.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect - github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/go-querystring v1.1.0 // indirect - github.com/google/pprof v0.0.0-20230323073829-e72429f035bd // indirect + github.com/google/pprof v0.0.0-20230811205829-9131a7e9cc17 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/imdario/mergo v0.3.15 // indirect @@ -60,7 +60,7 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/klauspost/compress v1.16.0 // indirect + github.com/klauspost/compress v1.16.7 // indirect github.com/klauspost/cpuid/v2 v2.0.9 // indirect github.com/leodido/go-urn v1.2.1 // indirect github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible // indirect @@ -69,14 +69,15 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/onsi/ginkgo v1.16.5 // indirect - github.com/onsi/ginkgo/v2 v2.9.2 // indirect + github.com/onsi/ginkgo/v2 v2.11.0 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/quic-go/qpack v0.4.0 // indirect github.com/quic-go/qtls-go1-19 v0.3.0 // indirect - github.com/quic-go/qtls-go1-20 v0.2.0 // indirect - github.com/quic-go/quic-go v0.33.0 // indirect + github.com/quic-go/qtls-go1-20 v0.3.3 // indirect + github.com/quic-go/quic-go v0.38.1 // indirect + github.com/refraction-networking/utls v1.4.3 // indirect github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect github.com/sergi/go-diff v1.1.0 // indirect github.com/sirupsen/logrus v1.9.0 // indirect @@ -91,15 +92,13 @@ require ( github.com/xujiajun/mmap-go v1.0.1 // indirect github.com/xujiajun/utils v0.0.0-20220904132955-5f7c5b914235 // indirect golang.org/x/arch v0.1.0 // indirect - golang.org/x/crypto v0.8.0 // indirect - golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect - golang.org/x/mod v0.9.0 // indirect - golang.org/x/net v0.9.0 // indirect - golang.org/x/oauth2 v0.7.0 // indirect - golang.org/x/sys v0.7.0 // indirect - golang.org/x/text v0.9.0 // indirect - golang.org/x/tools v0.7.0 // indirect - google.golang.org/appengine v1.6.7 // indirect + golang.org/x/crypto v0.12.0 // indirect + golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb // indirect + golang.org/x/mod v0.12.0 // indirect + golang.org/x/net v0.14.0 // indirect + golang.org/x/sys v0.11.0 // indirect + golang.org/x/text v0.12.0 // indirect + golang.org/x/tools v0.12.0 // indirect google.golang.org/protobuf v1.29.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index f670594..7a81487 100644 --- a/go.sum +++ b/go.sum @@ -10,8 +10,6 @@ github.com/Lyrics-you/sail-logrus-formatter v1.3.1/go.mod h1:e9FX8+3MxwQGGkK+8ne github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= -github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= github.com/ProtonMail/go-crypto v0.0.0-20230417170513-8ee5748c52b5 h1:QXMwHM/lB4ZQhdEF7JUTNgYOJR/gWoFbgQ/2Aj1h3Dk= github.com/ProtonMail/go-crypto v0.0.0-20230417170513-8ee5748c52b5/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= @@ -24,12 +22,16 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= @@ -85,6 +87,7 @@ github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= @@ -99,6 +102,8 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/gaukas/godicttls v0.0.4 h1:NlRaXb3J6hAnTmWdsEKb9bcSBD6BvcIjdGdeb0zfXbk= +github.com/gaukas/godicttls v0.0.4/go.mod h1:l6EenT4TLWgTdwslVb4sEMOCf7Bv0JAK67deKr9/NCI= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= @@ -110,18 +115,15 @@ github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwv github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= github.com/gin-gonic/gin v1.9.0 h1:OjyFBKICoexlu99ctXNR2gg+c5pKrKMuyjgARg9qeY8= github.com/gin-gonic/gin v1.9.0/go.mod h1:W1Me9+hsUSyj3CePGrd1/QrKJMSJ1Tu/0hFEH89961k= +github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= -github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= -github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= -github.com/go-git/go-git-fixtures/v4 v4.3.1/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo= -github.com/go-git/go-git/v5 v5.6.1 h1:q4ZRqQl4pR/ZJHc1L5CFjGA1a10u76aV1iC+nh+bHsk= -github.com/go-git/go-git/v5 v5.6.1/go.mod h1:mvyoL6Unz0PiTQrGQfSfiLFhBH1c1e84ylC2MDs4ee8= github.com/go-git/go-git/v5 v5.6.2-0.20230511070211-dc2b346ed149 h1:CqIxCvqQExP0R43sF2X3nv5xN594+GQ4tn//AcJ38/M= github.com/go-git/go-git/v5 v5.6.2-0.20230511070211-dc2b346ed149/go.mod h1:LztmJ8tEl/CJsC/N8M9awHbDIe5GczrNIaYmo0dRvs8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -195,7 +197,6 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= @@ -206,18 +207,15 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-github/v52 v52.0.0 h1:uyGWOY+jMQ8GVGSX8dkSwCzlehU3WfdxQ7GweO/JP7M= -github.com/google/go-github/v52 v52.0.0/go.mod h1:WJV6VEEUPuMo5pXqqa2ZCZEdbQqua4zAk2MZTIo+m+4= -github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= -github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20230323073829-e72429f035bd h1:r8yyd+DJDmsUhGrRBxH5Pj7KeFK5l+Y3FsgT8keqKtk= github.com/google/pprof v0.0.0-20230323073829-e72429f035bd/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= +github.com/google/pprof v0.0.0-20230811205829-9131a7e9cc17 h1:0h35ESZ02+hN/MFZb7XZOXg+Rl9+Rk8fBIf5YLws9gA= +github.com/google/pprof v0.0.0-20230811205829-9131a7e9cc17/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= @@ -260,12 +258,12 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/huoxue1/go-utils v0.0.0-20230406033646-db359518379e h1:clQ/DsLQf9Ye97a65mDtF9Tl9HCHlRfesD1u/Lan3Aw= github.com/huoxue1/go-utils v0.0.0-20230406033646-db359518379e/go.mod h1:39wbuJr0Z2wbgxAEAx3gXR0iJg2cwj8wrbsSc3QpztE= -github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= -github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/imroc/req/v3 v3.33.2 h1:mqphLIo++p+IPYdjgP/Wd5rqXUjKvuEIst2U+EsLIwQ= github.com/imroc/req/v3 v3.33.2/go.mod h1:cZ+7C3L/AYOr4tLGG16hZF90F1WzAdAdzt1xFSlizXY= +github.com/imroc/req/v3 v3.41.10 h1:McOPzd9KJ52KA+beKbCwB3Z8GqggVodY+jTD/B6KNKc= +github.com/imroc/req/v3 v3.41.10/go.mod h1:JxpRRITYTOcuqQJxHSPVvEKhAL9ayo7BpUXHbL2T5IE= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= @@ -340,6 +338,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -371,6 +371,7 @@ github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= @@ -431,10 +432,16 @@ github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= +github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= +github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= +github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= +github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= +github.com/onsi/gomega v1.27.8 h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= @@ -490,9 +497,15 @@ github.com/quic-go/qtls-go1-19 v0.3.0 h1:aUBoQdpHzUWtPw5tQZbsD2GnrWCNu7/RIX1PtqG github.com/quic-go/qtls-go1-19 v0.3.0/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI= github.com/quic-go/qtls-go1-20 v0.2.0 h1:jUHn+obJ6WI5JudqBO0Iy1ra5Vh5vsitQ1gXQvkmN+E= github.com/quic-go/qtls-go1-20 v0.2.0/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM= +github.com/quic-go/qtls-go1-20 v0.3.3 h1:17/glZSLI9P9fDAeyCHBFSWSqJcwx1byhLwP5eUIDCM= +github.com/quic-go/qtls-go1-20 v0.3.3/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= github.com/quic-go/quic-go v0.33.0 h1:ItNoTDN/Fm/zBlq769lLJc8ECe9gYaW40veHCCco7y0= github.com/quic-go/quic-go v0.33.0/go.mod h1:YMuhaAV9/jIu0XclDXwZPAsP/2Kgr5yMYhe9oxhhOFA= +github.com/quic-go/quic-go v0.38.1 h1:M36YWA5dEhEeT+slOu/SwMEucbYd0YFidxG3KlGPZaE= +github.com/quic-go/quic-go v0.38.1/go.mod h1:ijnZM7JsFIkp4cRyjxJNIzdSfCLmUMg9wdyhGmg+SN4= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/refraction-networking/utls v1.4.3 h1:BdWS3BSzCwWCFfMIXP3mjLAyQkdmog7diaD/OqFbAzM= +github.com/refraction-networking/utls v1.4.3/go.mod h1:4u9V/awOSBrRw6+federGmVJQfPtemEqLBXkML1b0bo= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= @@ -602,7 +615,6 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -golang.org/x/arch v0.0.0-20210923205945-b76863e36670 h1:18EFjUmQOcUvxNYSkA6jO9VAiXCnxFY6NyDX0bHDmkU= golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/arch v0.1.0 h1:oMxhUYsO9VsR1dcoVUjJjIGhx1LXol3989T/yZ59Xsw= golang.org/x/arch v0.1.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= @@ -627,14 +639,16 @@ golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb h1:mIKbk8weKhSeLH2GmUTrvx8CjkyJmnU1wFmg59CUjFA= +golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -649,6 +663,10 @@ golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -674,14 +692,15 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= -golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -749,6 +768,10 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -756,6 +779,7 @@ golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -768,6 +792,8 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -794,6 +820,10 @@ golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= +golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -804,8 +834,6 @@ google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMt google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -827,7 +855,6 @@ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miE google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.29.0 h1:44S3JjaKmLEE4YIkjzexaP+NzZsudE3Zin5Njn/pYX0= google.golang.org/protobuf v1.29.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= @@ -857,7 +884,6 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/internal/github/download.go b/internal/github/download.go new file mode 100644 index 0000000..b52744a --- /dev/null +++ b/internal/github/download.go @@ -0,0 +1,16 @@ +package git + +import ( + "github.com/go-git/go-git/v5" + "github.com/go-git/go-git/v5/plumbing/transport" + "os" +) + +func Download() { + + git.PlainClone("./data/faker2", false, &git.CloneOptions{URL: "https://github.com/shufflewzc/faker2.git", ProxyOptions: transport.ProxyOptions{ + URL: "socks5://124.70.38.162:12785", + Username: "admin", + Password: "qqqq", + }, Progress: os.Stdout}) +} diff --git a/internal/github/download_test.go b/internal/github/download_test.go new file mode 100644 index 0000000..b458aae --- /dev/null +++ b/internal/github/download_test.go @@ -0,0 +1,8 @@ +package git + +import "testing" + +func TestDownload(t *testing.T) { + Download() + +} diff --git a/models/Apps.go b/models/Apps.go index fc7f664..784483b 100644 --- a/models/Apps.go +++ b/models/Apps.go @@ -1,7 +1,7 @@ package models type Apps struct { - Id int `xorm:"pk autoincr INTEGER" json:"id,omitempty"` + Id int `xorm:"pk autoincr int" json:"id,omitempty"` Name string `xorm:"TEXT unique" json:"name,omitempty"` Scopes []string `xorm:"JSON" json:"scopes,omitempty"` ClientId string `xorm:"TEXT" json:"client_id,omitempty"` diff --git a/models/Auths.go b/models/Auths.go index 42b24d6..9335887 100644 --- a/models/Auths.go +++ b/models/Auths.go @@ -5,7 +5,7 @@ import ( ) type Auths struct { - Id int `xorm:"pk autoincr INTEGER"` + Id int `xorm:"pk autoincr int"` Ip string `xorm:"VARCHAR(255)"` Type string `xorm:"VARCHAR(255)"` Info string `xorm:"JSON"` diff --git a/models/Crontabs.go b/models/Crontabs.go index 853ee1c..359ace0 100644 --- a/models/Crontabs.go +++ b/models/Crontabs.go @@ -6,7 +6,7 @@ import ( ) type Crontabs struct { - Id int `xorm:"pk autoincr INTEGER" json:"id"` + Id int `xorm:"pk autoincr int" json:"id"` Name string `xorm:"VARCHAR(255)" json:"name"` Command string `xorm:"VARCHAR(255)" json:"command"` Schedule string `xorm:"VARCHAR(255)" json:"schedule"` @@ -19,10 +19,10 @@ type Crontabs struct { Ispinned int `xorm:"TINYINT(1)" json:"isPinned"` LogPath string `xorm:"VARCHAR(255)" json:"log_path"` Labels []string `xorm:"JSON" json:"labels"` - LastRunningTime int64 `xorm:"NUMBER" json:"last_running_time"` - LastExecutionTime int64 `xorm:"NUMBER" json:"last_execution_time"` - Createdat string `xorm:"not null TEXT created" json:"createdAt"` - Updatedat string `xorm:"not null TEXT updated" json:"updatedAt"` + LastRunningTime int64 `xorm:"int" json:"last_running_time"` + LastExecutionTime int64 `xorm:"int" json:"last_execution_time"` + Createdat string `xorm:"not null varchar(25) created" json:"createdAt"` + Updatedat string `xorm:"not null varchar(25) updated" json:"updatedAt"` } func QueryCron(page int, size int, searchValue string, orderField string, orderType string) ([]*Crontabs, error) { diff --git a/models/Dependences.go b/models/Dependences.go index 0949ab3..44510a8 100644 --- a/models/Dependences.go +++ b/models/Dependences.go @@ -12,13 +12,13 @@ const ( ) type Dependences struct { - Id int `xorm:"pk autoincr INTEGER" json:"id,omitempty"` - Name string `xorm:"TEXT" json:"name,omitempty"` - Type int `xorm:"INTEGER" json:"type,omitempty"` - Timestamp string `xorm:"TEXT" json:"timestamp,omitempty"` - Status int `xorm:"INTEGER" json:"status,omitempty"` - Log []string `xorm:"JSON" json:"log,omitempty"` - Remark string `xorm:"TEXT" json:"remark,omitempty"` + Id int `xorm:"pk autoincr INTEGER" json:"id"` + Name string `json:"name"` + Type int `xorm:"INTEGER" json:"type"` + Timestamp string `json:"timestamp"` + Status int `xorm:"INTEGER" json:"status"` + Log []string `xorm:"JSON" json:"log"` + Remark string `json:"remark"` Createdat time.Time `xorm:"not null DATETIME created" json:"createdAt"` Updatedat time.Time `xorm:"not null DATETIME updated" json:"updatedAt"` } diff --git a/models/Envs.go b/models/Envs.go index a49249f..0ac4323 100644 --- a/models/Envs.go +++ b/models/Envs.go @@ -7,12 +7,12 @@ import ( type Envs struct { Id int `xorm:"pk autoincr INTEGER" json:"id"` - Value string `xorm:"TEXT" json:"value"` - Timestamp string `xorm:"TEXT" json:"timestamp"` + Value string `json:"value"` + Timestamp string `json:"timestamp"` Status int `xorm:"TINYINT(1)" json:"status"` Position string `xorm:"TINYINT(1)" json:"position"` - Name string `xorm:"TEXT" json:"name"` - Remarks string `xorm:"TEXT" json:"remarks"` + Name string `json:"name"` + Remarks string `json:"remarks"` Createdat time.Time `xorm:"not null DATETIME created" json:"createdAt"` Updatedat time.Time `xorm:"not null DATETIME updated" json:"updatedAt"` SerialIndex int64 `xorm:"serial_index INTEGER" json:"serialIndex"` diff --git a/models/Subscriptions.go b/models/Subscriptions.go index 339b98e..3d5aa79 100644 --- a/models/Subscriptions.go +++ b/models/Subscriptions.go @@ -2,33 +2,67 @@ package models import ( "fmt" + "io" + "os" + "path/filepath" + "time" + + "github.com/google/uuid" "xorm.io/builder" ) type Subscriptions struct { Id int `xorm:"pk autoincr INTEGER" json:"id"` - Name string `xorm:"TEXT" json:"name"` - Url string `xorm:"TEXT" json:"url"` - Schedule string `xorm:"TEXT" json:"schedule"` + Name string `json:"name"` + Url string `json:"url"` + Schedule string `json:"schedule"` IntervalSchedule map[string]any `xorm:"JSON" json:"interval_schedule"` - Type string `xorm:"TEXT" json:"type"` - Whitelist string `xorm:"TEXT" json:"whitelist"` - Blacklist string `xorm:"TEXT" json:"blacklist"` + Type string `json:"type"` + Whitelist string `json:"whitelist"` + Blacklist string `json:"blacklist"` Status int `xorm:"INTEGER default(1)" json:"status"` - Dependences string `xorm:"TEXT" json:"dependences"` - Extensions string `xorm:"TEXT" json:"extensions"` - SubBefore string `xorm:"TEXT" json:"sub_before"` - SubAfter string `xorm:"TEXT" json:"sub_after"` - Branch string `xorm:"TEXT" json:"branch"` - PullType string `xorm:"TEXT" json:"pull_type"` + Dependences string `json:"dependences"` + Extensions string `json:"extensions"` + SubBefore string `json:"sub_before"` + SubAfter string `json:"sub_after"` + Branch string `json:"branch"` + PullType string `json:"pull_type"` PullOption string `xorm:"JSON" json:"pull_option"` Pid int `xorm:"INTEGER" json:"pid"` IsDisabled int `xorm:"INTEGER" json:"is_disabled"` - LogPath string `xorm:"TEXT" json:"log_path"` - ScheduleType string `xorm:"TEXT" json:"schedule_type"` - Alias string `xorm:"TEXT unique" json:"alias"` + LogPath string `json:"log_path"` + ScheduleType string `json:"schedule_type"` + Alias string `xorm:"varchar(255) unique" json:"alias"` Createdat string `xorm:"not null DATETIME created" json:"createdat"` Updatedat string `xorm:"not null DATETIME updated" json:"updatedat"` + + File io.WriteCloser `json:"-" xorm:"-"` +} + +func (s *Subscriptions) Close() error { + return s.File.Close() +} + +func (s *Subscriptions) Write(p []byte) (n int, err error) { + if s.File == nil { + s.LogPath = "data/log/" + time.Now().Format("2006-01-02") + "/" + s.Alias + "_" + uuid.New().String() + ".log" + s.Status = 1 + _ = UpdateSubscription(s) + _ = os.MkdirAll(filepath.Dir(s.LogPath), 0666) + s.File, _ = os.OpenFile(s.LogPath, os.O_CREATE|os.O_RDWR, 0666) + } + return s.File.Write(p) +} +func (s *Subscriptions) WriteString(data string) (n int, err error) { + p := []byte(data) + if s.File == nil { + s.LogPath = "data/log/" + time.Now().Format("2006-01-02") + "/" + s.Alias + "_" + uuid.New().String() + ".log" + s.Status = 1 + _ = UpdateSubscription(s) + _ = os.MkdirAll(filepath.Dir(s.LogPath), 0666) + s.File, _ = os.OpenFile(s.LogPath, os.O_CREATE|os.O_RDWR, 0666) + } + return s.File.Write(p) } func QuerySubscription(searchValue string) ([]*Subscriptions, error) { diff --git a/models/models.go b/models/models.go index e59a230..1f74a8a 100644 --- a/models/models.go +++ b/models/models.go @@ -1,6 +1,7 @@ package models import ( + _ "github.com/go-sql-driver/mysql" "github.com/huoxue1/go-utils/base/log" xLog "github.com/huoxue1/go-utils/base/log/xorm" _ "modernc.org/sqlite" @@ -15,11 +16,17 @@ var ( func InitModels() { _ = os.MkdirAll("data/db", 0666) en, err := xorm.NewEngine("sqlite", "data/db/database.sqlite") + //en, err := xorm.NewEngine("mysql", "root:123@tcp(127.0.0.1:3306)/ql?charset=utf8") + + if err != nil { + log.Errorln("[sql] " + err.Error()) + return + } + err = en.Sync2(new(Apps), new(Auths), new(Crontabs), new(Crontabviews), new(Dependences), new(Envs), new(Subscriptions)) if err != nil { log.Errorln("[sql] " + err.Error()) return } - _ = en.Sync2(new(Apps), new(Auths), new(Crontabs), new(Crontabviews), new(Dependences), new(Envs), new(Subscriptions)) en.SetLogger(xLog.GetXormLogger(log.StandardLogger(), "info", false)) engine = en } diff --git a/service/config/config.go b/service/config/config.go index 438dd58..88d46ca 100644 --- a/service/config/config.go +++ b/service/config/config.go @@ -24,7 +24,7 @@ func GetKey(key, defaultValue string) string { } func GetVersion() string { - return VERSION + return strings.TrimPrefix(VERSION, "v") } var address string diff --git a/service/server/server.go b/service/server/server.go new file mode 100644 index 0000000..14c2b39 --- /dev/null +++ b/service/server/server.go @@ -0,0 +1,71 @@ +package server + +import ( + "bytes" + "context" + "encoding/json" + "regexp" + "strings" + + "github.com/huoxue1/qinglong-go/service/config" + "github.com/huoxue1/qinglong-go/utils" +) + +func Run(ctx context.Context, path string, query map[string]string, body map[string]any, header map[string]string, isLog bool) string { + cmd := getCommand(path) + buffer := bytes.NewBuffer([]byte("")) + option := &utils.RunOption{ + Ctx: ctx, + Command: cmd, + Env: getEnv(query, body, header), + OnStart: func(ctx context.Context) { + + }, + OnEnd: func(ctx context.Context) { + + }, + LogFile: buffer, + CmdDir: "./data/scripts/", + } + utils.RunWithOption(ctx, option) + if isLog { + return string(buffer.Bytes()) + } + return getData(buffer.Bytes()) +} + +func getCommand(path string) (cmd string) { + + pythonCmd := config.GetKey("PythonCmd", "python") + JsCmd := config.GetKey("JsCmd", "node") + ShCmd := config.GetKey("ShCmd", "bash") + + if strings.HasSuffix(path, ".py") { + cmd = pythonCmd + " " + path + } else if strings.HasSuffix(path, ".js") { + cmd = JsCmd + " " + path + } else if strings.HasSuffix(path, ".sh") { + cmd = ShCmd + " " + path + } + return +} + +func getData(data []byte) (result string) { + resultReg := `>>>(.*?)<<<` + compile := regexp.MustCompile(resultReg) + if compile.Match(data) { + result = string(compile.FindAllSubmatch(data, -1)[0][1]) + } + return result +} + +func getEnv(query map[string]string, body map[string]any, header map[string]string) map[string]string { + queryData, _ := json.Marshal(query) + bodyData, _ := json.Marshal(body) + headerData, _ := json.Marshal(header) + return map[string]string{ + "QL_HEADERS": string(headerData), + "QL_BODY": string(bodyData), + "QL_QUERY": string(queryData), + } +} diff --git a/service/subscription/manager.go b/service/subscription/manager.go index 4b7546a..1652926 100644 --- a/service/subscription/manager.go +++ b/service/subscription/manager.go @@ -4,16 +4,6 @@ import ( "context" "errors" "fmt" - "github.com/go-git/go-git/v5" - "github.com/go-git/go-git/v5/plumbing" - "github.com/go-git/go-git/v5/plumbing/transport" - "github.com/google/uuid" - log "github.com/huoxue1/go-utils/base/log" - "github.com/huoxue1/qinglong-go/internal/cron-manager" - "github.com/huoxue1/qinglong-go/models" - "github.com/huoxue1/qinglong-go/service/config" - "github.com/huoxue1/qinglong-go/service/cron" - "github.com/huoxue1/qinglong-go/utils" "os" "path" "path/filepath" @@ -21,6 +11,16 @@ import ( "strings" "sync" "time" + + "github.com/go-git/go-git/v5" + "github.com/go-git/go-git/v5/plumbing" + "github.com/go-git/go-git/v5/plumbing/transport" + "github.com/huoxue1/go-utils/base/log" + "github.com/huoxue1/qinglong-go/internal/cron-manager" + "github.com/huoxue1/qinglong-go/models" + "github.com/huoxue1/qinglong-go/service/config" + "github.com/huoxue1/qinglong-go/service/cron" + "github.com/huoxue1/qinglong-go/utils" ) var ( @@ -96,10 +96,6 @@ func downloadFiles(subscriptions *models.Subscriptions) { } func addRawFiles(subscriptions *models.Subscriptions) { - subscriptions.LogPath = "data/log/" + time.Now().Format("2006-01-02") + "/" + subscriptions.Alias + "_" + uuid.New().String() + ".log" - subscriptions.Status = 0 - file, _ := os.OpenFile(subscriptions.LogPath, os.O_CREATE|os.O_RDWR, 0666) - defer file.Close() _ = models.UpdateSubscription(subscriptions) defer func() { subscriptions.Status = 1 @@ -107,19 +103,19 @@ func addRawFiles(subscriptions *models.Subscriptions) { }() err := utils.DownloadFile(subscriptions.Url, path.Join("data", "raw", subscriptions.Alias)) if err != nil { - _, _ = file.WriteString(err.Error() + "\n") + _, _ = subscriptions.WriteString(err.Error() + "\n") return } name, c, err := getSubCron(path.Join("data", "raw", subscriptions.Alias)) if err != nil { - _, _ = file.WriteString(err.Error() + "\n") + _, _ = subscriptions.WriteString(err.Error() + "\n") return } utils.Copy(path.Join("data", "raw", subscriptions.Alias), path.Join("data", "scripts", subscriptions.Alias)) if c != "" { command, err := models.GetCronByCommand(fmt.Sprintf("task %s", subscriptions.Alias)) if err != nil { - file.WriteString("已添加新的定时任务 " + name + "\n") + subscriptions.WriteString("已添加新的定时任务 " + name + "\n") _, _ = cron.AddCron(&models.Crontabs{ Name: name, Command: fmt.Sprintf("task %s", subscriptions.Alias), @@ -137,22 +133,18 @@ func addRawFiles(subscriptions *models.Subscriptions) { } func downloadPublicRepo(subscriptions *models.Subscriptions) error { - subscriptions.LogPath = "data/log/" + time.Now().Format("2006-01-02") + "/" + subscriptions.Alias + "_" + uuid.New().String() + ".log" - subscriptions.Status = 1 - _ = models.UpdateSubscription(subscriptions) - _ = os.MkdirAll(filepath.Dir(subscriptions.LogPath), 0666) - file, _ := os.OpenFile(subscriptions.LogPath, os.O_CREATE|os.O_RDWR, 0666) - _, _ = file.Write([]byte(fmt.Sprintf("##开始执行.. %s\n\n", time.Now().Format("2006-01-02 15:04:05")))) + + _, _ = subscriptions.Write([]byte(fmt.Sprintf("##开始执行.. %s\n\n", time.Now().Format("2006-01-02 15:04:05")))) _, err := git.PlainClone(path.Join("data", "repo", subscriptions.Alias), false, &git.CloneOptions{ URL: subscriptions.Url, SingleBranch: true, ReferenceName: plumbing.ReferenceName(fmt.Sprintf("refs/heads/%s", subscriptions.Branch)), - Progress: file, + Progress: subscriptions, ProxyOptions: transport.ProxyOptions{URL: config.GetKey("ProxyUrl", "")}, }) if err != nil { - _, _ = file.Write([]byte(fmt.Sprintf("err: %s", err.Error()))) + _, _ = subscriptions.Write([]byte(fmt.Sprintf("err: %s", err.Error()))) return err } @@ -161,8 +153,6 @@ func downloadPublicRepo(subscriptions *models.Subscriptions) error { func addScripts(subscriptions *models.Subscriptions) { depFiles := getDepFiles() - file, _ := os.OpenFile(subscriptions.LogPath, os.O_RDWR|os.O_APPEND, 0666) - defer file.Close() var extensions []string if subscriptions.Extensions != "" { extensions = strings.Split(subscriptions.Extensions, " ") @@ -209,10 +199,10 @@ func addScripts(subscriptions *models.Subscriptions) { Labels: []string{}, }) if err1 != nil { - file.WriteString("定时任务添加失败: " + name + " " + err1.Error()) - err1 = nil + _, _ = subscriptions.WriteString("定时任务添加失败: " + name + " " + err1.Error()) + } else { - file.WriteString("已添加新的定时任务 " + name + "\n") + _, _ = subscriptions.WriteString("已添加新的定时任务 " + name + "\n") } } else { command.Name = name @@ -230,18 +220,18 @@ func addScripts(subscriptions *models.Subscriptions) { } } if utils.In(entry.Name(), depFiles) { - file.WriteString("已替换依赖文件: " + entry.Name() + "\n") + subscriptions.WriteString("已替换依赖文件: " + entry.Name() + "\n") utils.Copy(path.Join("data", "deps", entry.Name()), path.Join("data", "scripts", subscriptions.Alias, entry.Name())) } } if config.GetKey("AutoDelCron", "true") == "true" { for _, m := range cronMap { - file.WriteString("已删除失效的任务 " + m.Name + "\n") + subscriptions.WriteString("已删除失效的任务 " + m.Name + "\n") models.DeleteCron(m.Id) } } if isGoMod { - file.WriteString("检测到go模块,开始自动下载golang依赖!!") + subscriptions.WriteString("检测到go模块,开始自动下载golang依赖!!") cancelChan := make(chan int, 1) ctx := context.WithValue(context.Background(), "cancel", cancelChan) utils.RunWithOption(ctx, &utils.RunOption{ @@ -253,7 +243,7 @@ func addScripts(subscriptions *models.Subscriptions) { OnEnd: func(ctx context.Context) { }, - LogFile: file, + LogFile: subscriptions, CmdDir: path.Join("data", "scripts", subscriptions.Alias), }) } diff --git a/utils/run.go b/utils/run.go index 85ace6f..3801d72 100644 --- a/utils/run.go +++ b/utils/run.go @@ -3,12 +3,13 @@ package utils import ( "context" "fmt" - log "github.com/huoxue1/go-utils/base/log" - "github.com/huoxue1/qinglong-go/service/config" "io" "os" "os/exec" "strings" + + "github.com/huoxue1/go-utils/base/log" + "github.com/huoxue1/qinglong-go/service/config" ) type Context struct { @@ -105,7 +106,10 @@ func RunWithOption(ctx context.Context, option *RunOption) { } ch <- 1 }() - cancel := ctx.Value("cancel").(chan int) + cancel, ok := ctx.Value("cancel").(chan int) + if ok { + cancel = make(chan int) + } select { case <-ch: {