From 2e57b24335aece2c4c80a77dac6a94970d667584 Mon Sep 17 00:00:00 2001 From: snowykami Date: Wed, 2 Oct 2024 08:29:09 +0800 Subject: [PATCH] :sparkles: first comm --- .gitignore | 2 +- api/backend/handlers.go | 60 ++++++++++++++++++++++++++++++ api/frontend/handlers.go | 44 ++++++++++++++++++++++ api/handlers.go | 28 -------------- api/router.go | 28 ++++++++++---- dao/mem_store.go | 80 ++++++++++++++++++++++++++++++++++++++++ dao/models.go | 26 ++++++------- go.mod | 34 +++++++++-------- go.sum | 58 +++++++++++++++++++++++++++++ service/config.go | 1 + 10 files changed, 295 insertions(+), 66 deletions(-) create mode 100644 api/backend/handlers.go create mode 100644 api/frontend/handlers.go delete mode 100644 api/handlers.go create mode 100644 dao/mem_store.go diff --git a/.gitignore b/.gitignore index 640015b..8dd876c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ .env - +data.gob .idea/ \ No newline at end of file diff --git a/api/backend/handlers.go b/api/backend/handlers.go new file mode 100644 index 0000000..62ae46d --- /dev/null +++ b/api/backend/handlers.go @@ -0,0 +1,60 @@ +package backend + +import ( + "context" + "encoding/json" + "github.com/LiteyukiStudio/go-logger/log" + "github.com/cloudwego/hertz/pkg/app" + "server-status-be/dao" + "server-status-be/service" +) + +// be api 后端接口 +func fmtReportKey(id string) string { + return "report." + id +} + +func BeAuth(ctx context.Context, c *app.RequestContext) { + // 获取Authorization Bearer Token + token := string(c.GetHeader("Authorization")) + if token == "" { + c.JSON(401, "No Token") + c.Abort() + return + } else { + if service.Token != token { + c.JSON(401, "Invalid Token: "+token) + c.Abort() + return + } else { + c.Next(ctx) + } + } +} + +func OnPostStatus(ctx context.Context, c *app.RequestContext) { + report := dao.Report{} + //err := c.BindJSON(&report) + err := json.Unmarshal(c.GetRawData(), &report) + log.Info(report) + if err != nil { + log.Error("Invalid JSON: ", err) + c.JSON(400, "Invalid JSON: "+err.Error()) + return + } + dao.Save(fmtReportKey(report.Meta.ID), report) +} + +func OnDeleteHost(ctx context.Context, c *app.RequestContext) { + id, _ := c.GetPostForm("id") + if id == "" { + c.JSON(400, "Invalid ID") + return + } + err := dao.Delete(fmtReportKey(id)) + if err != nil { + c.JSON(400, "Delete Error: "+err.Error()) + return + } + c.JSON(200, "Delete Success") +} diff --git a/api/frontend/handlers.go b/api/frontend/handlers.go new file mode 100644 index 0000000..c9d2add --- /dev/null +++ b/api/frontend/handlers.go @@ -0,0 +1,44 @@ +package frontend + +import ( + "context" + "github.com/cloudwego/hertz/pkg/app" + "os" + "server-status-be/dao" + "strings" +) + +func OnGetServerStatus(ctx context.Context, c *app.RequestContext) { + ret := make(map[string]interface{}) + for k, v := range dao.GetAll() { + if strings.HasPrefix(k, "report.") { + reportName := strings.TrimPrefix(k, "report.") + ret[reportName] = v + } + } + c.JSON(200, ret) + ctx.Done() +} + +func OnGetStaticFile(ctx context.Context, c *app.RequestContext) { + file := c.Param("file") + fp := "./web/" + file + + if file == "" { + fp = "web/index.html" + } + // 判断文件是否存在 + if _, err := os.Stat(fp); err != nil { + fp += ".html" + if _, err := os.Stat(fp); err != nil { + c.JSON(404, "File Not Found") + return + } else { + c.File(fp) + return + } + } else { + c.File(fp) + } + ctx.Done() +} diff --git a/api/handlers.go b/api/handlers.go deleted file mode 100644 index c874c91..0000000 --- a/api/handlers.go +++ /dev/null @@ -1,28 +0,0 @@ -package api - -import ( - "context" - "github.com/cloudwego/hertz/pkg/app" - "server-status-be/dao" -) - -// be api 后端接口 - -func BeAuth(ctx context.Context, c *app.RequestContext) { - // 获取Authorization Bearer Token - token := string(c.GetHeader("Authorization")) - if token == "" { - c.JSON(401, "Unauthorized") - c.Abort() - return - } -} - -func OnPostReport(ctx context.Context, c *app.RequestContext) { - report := dao.Report{} - err := c.BindJSON(&report) - if err != nil { - c.JSON(400, "Invalid JSON") - return - } -} diff --git a/api/router.go b/api/router.go index ae1df44..3bcb69b 100644 --- a/api/router.go +++ b/api/router.go @@ -4,37 +4,49 @@ import ( "context" "git.liteyuki.icu/backend/golite/hertz" "git.liteyuki.icu/backend/golite/logger" + "github.com/LiteyukiStudio/go-logger/log" "github.com/cloudwego/hertz/pkg/app" "github.com/cloudwego/hertz/pkg/app/server" "github.com/cloudwego/hertz/pkg/common/config" + "github.com/hertz-contrib/cors" + "server-status-be/api/backend" + "server-status-be/api/frontend" ) var h *server.Hertz func init() { h = hertz.NewHertz([]config.Option{server.WithHostPorts(":8088")}, []app.HandlerFunc{}) - h.GET("/", func(ctx context.Context, c *app.RequestContext) { c.JSON(200, "Hello, status be") }) // cv api 状态客户端接口 - be := h.Group("/be", BeAuth) + h.Use(cors.Default()) + + client := h.Group("/client", backend.BeAuth) { - be.GET("/", func(ctx context.Context, c *app.RequestContext) { c.JSON(200, "Hello, be") }) - be.POST("/report", func(ctx context.Context, c *app.RequestContext) {}) + client.GET("/ping", func(ctx context.Context, c *app.RequestContext) { c.JSON(200, "Hello, cv") }) + client.POST("/status", backend.OnPostStatus) + client.DELETE("/host", backend.OnDeleteHost) } - // fe api 前端接口 - fe := h.Group("/fe") + // api api 前端接口 + api := h.Group("/api") { - fe.GET("/", func(ctx context.Context, c *app.RequestContext) { c.JSON(200, "Hello, fe") }) + api.GET("/", func(ctx context.Context, c *app.RequestContext) { c.JSON(200, "Hello, api") }) + api.GET("/status", frontend.OnGetServerStatus) + } + + // 静态文件 + h.GET("/*file", frontend.OnGetStaticFile) } func Run() { + go func() { err := h.Run() if err != nil { logger.Error("Run error: ", err) } }() - + log.Info("Server running...") select {} } diff --git a/dao/mem_store.go b/dao/mem_store.go new file mode 100644 index 0000000..1bc8232 --- /dev/null +++ b/dao/mem_store.go @@ -0,0 +1,80 @@ +package dao + +import ( + "encoding/gob" + "github.com/LiteyukiStudio/go-logger/log" + "os" + "time" +) + +var memStore = make(map[string]interface{}) + +func Save(key string, value interface{}) { + memStore[key] = value +} + +func Delete(key string) error { + if _, ok := memStore[key]; ok { + delete(memStore, key) + return nil + } else { + return os.ErrNotExist + } +} + +func Get(key string) interface{} { + if v, ok := memStore[key]; ok { + return v + } + return nil +} + +func GetAll() map[string]interface{} { + return memStore +} + +// init 初始化,从磁盘加载数据到内存 +func init() { + gob.Register(Report{}) + file, err := os.Open("data.gob") + if err != nil { + log.Error("Open file error: ", err) + } + log.Info("Open file success") + defer file.Close() + decoder := gob.NewDecoder(file) + err = decoder.Decode(&memStore) + if err != nil { + log.Error("Decode error: ", err) + } + + // 启动定期持久化goroutine + go func() { + for { + err := persist() + if err != nil { + log.Error("Persist error: ", err) + } + log.Info("Persist success") + time.Sleep(30 * time.Second) + } + }() +} + +// persist 持久化,定期将内存中的数据持久化到磁盘 +func persist() error { + file, err := os.OpenFile("data.gob", os.O_CREATE|os.O_WRONLY, 0644) + if err != nil { + log.Error("Open file error: ", err) + return err + } + defer file.Close() + + encoder := gob.NewEncoder(file) + err = encoder.Encode(memStore) + if err != nil { + log.Error("Encode error: ", err) + return err + } + return nil +} diff --git a/dao/models.go b/dao/models.go index 3a17ac9..67d0ef5 100644 --- a/dao/models.go +++ b/dao/models.go @@ -2,20 +2,20 @@ package dao type Report struct { // 鉴权字段 - Auth struct { - Token string `json:"token"` // 令牌,用于鉴权,防止恶意请求 - } `json:"auth"` Meta struct { + ID string `json:"id"` // 服务器ID,用于标识服务器 Name string `json:"name"` OS struct { Name string `json:"name"` Version string `json:"version"` } - Labels []string `json:"labels"` // 服务器标签 - Location string `json:"location"` // Chongqing, China - Duration int64 `json:"duration"` // uptime in seconds - } + Labels []string `json:"labels"` // 服务器标签 + Location string `json:"location"` // Chongqing, China + UpTime int64 `json:"uptime"` // uptime in seconds + Link string `json:"link"` // 链接或是nil + ObservedAt int64 `json:"observed_at"` // unix timestamp + } `json:"meta"` Hardware struct { Mem struct { @@ -27,14 +27,12 @@ type Report struct { Used int64 `json:"used"` } `json:"swap"` Cpu struct { - Cores int `json:"cores"` - Logics int `json:"logics"` + Cores int `json:"cores"` + Logics int `json:"logics"` + Percent float32 `json:"percent"` // 0-100 } `json:"cpu"` - Disks []struct { - Name string `json:"name"` - Total int64 `json:"total"` - } `json:"disks"` - Net []struct { + Disks map[string]map[string]int64 `json:"disks"` + Net struct { Up int64 `json:"up"` Down int64 `json:"down"` Type string `json:"type"` // IPv4 or IPv6 or IPv4/6 diff --git a/go.mod b/go.mod index b69a436..197f873 100644 --- a/go.mod +++ b/go.mod @@ -3,32 +3,36 @@ module server-status-be go 1.22.6 require ( - git.liteyuki.icu/backend/golite v1.0.9 + git.liteyuki.icu/backend/golite v1.0.10 + github.com/LiteyukiStudio/go-logger v0.0.3 github.com/cloudwego/hertz v0.9.3 + github.com/hertz-contrib/cors v0.1.0 + github.com/joho/godotenv v1.5.1 ) require ( - github.com/LiteyukiStudio/go-logger v0.0.0-20240930221945-00415def7a7f // indirect - github.com/bytedance/go-tagexpr/v2 v2.9.2 // indirect + github.com/andeya/ameda v1.5.3 // indirect + github.com/andeya/goutil v1.0.1 // indirect + github.com/bytedance/go-tagexpr/v2 v2.9.11 // indirect github.com/bytedance/gopkg v0.1.1 // indirect - github.com/bytedance/sonic v1.12.2 // indirect + github.com/bytedance/sonic v1.12.3 // indirect github.com/bytedance/sonic/loader v0.2.0 // indirect github.com/cloudwego/base64x v0.1.4 // indirect github.com/cloudwego/iasm v0.2.0 // indirect github.com/cloudwego/netpoll v0.6.4 // indirect - github.com/fsnotify/fsnotify v1.5.4 // indirect - github.com/golang/protobuf v1.5.2 // indirect - github.com/henrylee2cn/ameda v1.4.10 // indirect - github.com/henrylee2cn/goutil v0.0.0-20210127050712-89660552f6f8 // indirect - github.com/joho/godotenv v1.5.1 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect - github.com/nyaruka/phonenumbers v1.0.55 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/henrylee2cn/ameda v1.5.1 // indirect + github.com/henrylee2cn/goutil v1.0.1 // indirect + github.com/klauspost/cpuid/v2 v2.2.8 // indirect + github.com/nyaruka/phonenumbers v1.4.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/tidwall/gjson v1.17.3 // indirect github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.0 // indirect + github.com/tidwall/pretty v1.2.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect - golang.org/x/arch v0.2.0 // indirect - golang.org/x/sys v0.24.0 // indirect - google.golang.org/protobuf v1.28.1 // indirect + golang.org/x/arch v0.10.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/text v0.18.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect ) diff --git a/go.sum b/go.sum index e99b649..5c0e402 100644 --- a/go.sum +++ b/go.sum @@ -1,25 +1,47 @@ git.liteyuki.icu/backend/golite v1.0.9 h1:pDBNu7I0x4PXpmzrqXE/wvpgjraQgWfZWR1QX68fAYg= git.liteyuki.icu/backend/golite v1.0.9/go.mod h1:GVGfdBdJfycJmV0UgIqQdipwYUcYVMYWMQLxHfIyfGo= +git.liteyuki.icu/backend/golite v1.0.10 h1:mdljqoNg4bz0blIacMO9E+NpN3z7Zr7gCgJnBTGv6WI= +git.liteyuki.icu/backend/golite v1.0.10/go.mod h1:GVGfdBdJfycJmV0UgIqQdipwYUcYVMYWMQLxHfIyfGo= github.com/LiteyukiStudio/go-logger v0.0.0-20240930221945-00415def7a7f h1:oE2v+3cSTBYyRUcIfCAyg6Xmk+KwGYIX8TDT+lh3vTU= github.com/LiteyukiStudio/go-logger v0.0.0-20240930221945-00415def7a7f/go.mod h1:cQ4GUqsUPA3Xq8SkvFfjCX67e7hWzlDqOsEsdm7T46U= +github.com/LiteyukiStudio/go-logger v0.0.1 h1:WKlZUEl39hd1aaeH4IUwBmjx03R3AKuu0AhzIgVVDtA= +github.com/LiteyukiStudio/go-logger v0.0.1/go.mod h1:cQ4GUqsUPA3Xq8SkvFfjCX67e7hWzlDqOsEsdm7T46U= +github.com/LiteyukiStudio/go-logger v0.0.3 h1:r3DxEF9tt5v6zxqkaDCiWlwvF1sb76AJ5VoOkhz1nTA= +github.com/LiteyukiStudio/go-logger v0.0.3/go.mod h1:cQ4GUqsUPA3Xq8SkvFfjCX67e7hWzlDqOsEsdm7T46U= +github.com/andeya/ameda v1.5.3 h1:SvqnhQPZwwabS8HQTRGfJwWPl2w9ZIPInHAw9aE1Wlk= +github.com/andeya/ameda v1.5.3/go.mod h1:FQDHRe1I995v6GG+8aJ7UIUToEmbdTJn/U26NCPIgXQ= +github.com/andeya/goutil v1.0.1 h1:eiYwVyAnnK0dXU5FJsNjExkJW4exUGn/xefPt3k4eXg= +github.com/andeya/goutil v1.0.1/go.mod h1:jEG5/QnnhG7yGxwFUX6Q+JGMif7sjdHmmNVjn7nhJDo= github.com/bytedance/go-tagexpr/v2 v2.9.2 h1:QySJaAIQgOEDQBLS3x9BxOWrnhqu5sQ+f6HaZIxD39I= github.com/bytedance/go-tagexpr/v2 v2.9.2/go.mod h1:5qsx05dYOiUXOUgnQ7w3Oz8BYs2qtM/bJokdLb79wRM= +github.com/bytedance/go-tagexpr/v2 v2.9.11 h1:jJgmoDKPKacGl0llPYbYL/+/2N+Ng0vV0ipbnVssXHY= +github.com/bytedance/go-tagexpr/v2 v2.9.11/go.mod h1:UAyKh4ZRLBPGsyTRFZoPqTni1TlojMdOJXQnEIPCX84= +github.com/bytedance/gopkg v0.0.0-20220413063733-65bf48ffb3a7/go.mod h1:2ZlV9BaUH4+NXIBF0aMdKKAnHTzqH+iMU4KUjAbL23Q= github.com/bytedance/gopkg v0.1.0/go.mod h1:FtQG3YbQG9L/91pbKSw787yBQPutC+457AvDW77fgUQ= github.com/bytedance/gopkg v0.1.1 h1:3azzgSkiaw79u24a+w9arfH8OfnQQ4MHUt9lJFREEaE= github.com/bytedance/gopkg v0.1.1/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM= +github.com/bytedance/mockey v1.2.1/go.mod h1:+Jm/fzWZAuhEDrPXVjDf/jLM2BlLXJkwk94zf2JZ3X4= github.com/bytedance/mockey v1.2.12 h1:aeszOmGw8CPX8CRx1DZ/Glzb1yXvhjDh6jdFBNZjsU4= github.com/bytedance/mockey v1.2.12/go.mod h1:3ZA4MQasmqC87Tw0w7Ygdy7eHIc2xgpZ8Pona5rsYIk= +github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= +github.com/bytedance/sonic v1.8.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= github.com/bytedance/sonic v1.12.2 h1:oaMFuRTpMHYLpCntGca65YWt5ny+wAceDERTkT2L9lg= github.com/bytedance/sonic v1.12.2/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk= +github.com/bytedance/sonic v1.12.3 h1:W2MGa7RCU1QTeYRTPE3+88mVC0yXmsRQRChiyVocVjU= +github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk= github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/hertz v0.6.2/go.mod h1:2em2hGREvCBawsTQcQxyWBGVlCeo+N1pp2q0HkkbwR0= github.com/cloudwego/hertz v0.9.3 h1:uajvLn6LjEPjUqN/ewUZtWoRQWa2es2XTELdqDlOYMw= github.com/cloudwego/hertz v0.9.3/go.mod h1:gGVUfJU/BOkJv/ZTzrw7FS7uy7171JeYIZvAyV3wS3o= github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= +github.com/cloudwego/netpoll v0.3.1/go.mod h1:1T2WVuQ+MQw6h6DpE45MohSvDTKdy2DlzCx2KsnPI4E= github.com/cloudwego/netpoll v0.6.4 h1:z/dA4sOTUQof6zZIO4QNnLBXsDFFFEos9OOGloR6kno= github.com/cloudwego/netpoll v0.6.4/go.mod h1:BtM+GjKTdwKoC8IOzD08/+8eEn2gYoiNLipFca6BVXQ= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -28,10 +50,14 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= @@ -39,8 +65,14 @@ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORR github.com/henrylee2cn/ameda v1.4.8/go.mod h1:liZulR8DgHxdK+MEwvZIylGnmcjzQ6N6f2PlWe7nEO4= github.com/henrylee2cn/ameda v1.4.10 h1:JdvI2Ekq7tapdPsuhrc4CaFiqw6QXFvZIULWJgQyCAk= github.com/henrylee2cn/ameda v1.4.10/go.mod h1:liZulR8DgHxdK+MEwvZIylGnmcjzQ6N6f2PlWe7nEO4= +github.com/henrylee2cn/ameda v1.5.1 h1:4n25dZyVSAgRCJ4DLLYF65ynwr9RYO92oFbdyUJWAFk= +github.com/henrylee2cn/ameda v1.5.1/go.mod h1:wnTERseg26LtcSrHOPlV3pBGnNwQiz3TNIeMEgNoNlg= github.com/henrylee2cn/goutil v0.0.0-20210127050712-89660552f6f8 h1:yE9ULgp02BhYIrO6sdV/FPe0xQM6fNHkVQW2IAymfM0= github.com/henrylee2cn/goutil v0.0.0-20210127050712-89660552f6f8/go.mod h1:Nhe/DM3671a5udlv2AdV2ni/MZzgfv2qrPL5nIi3EGQ= +github.com/henrylee2cn/goutil v1.0.1 h1:/ovGBt82ORDlRW0zmz01mN9yAgr0UxNB/eF1PgnrTY4= +github.com/henrylee2cn/goutil v1.0.1/go.mod h1:I9qYeMYwdKC7UFXMECNzCEv0fYuolqLeBMqsmeG7IVo= +github.com/hertz-contrib/cors v0.1.0 h1:PQ5mATygSMzTlYtfyMyHjobYoJeHKe2Qt3tcAOgbI6E= +github.com/hertz-contrib/cors v0.1.0/go.mod h1:VPReoq+Rvu/lZOfpp5CcX3x4mpZUc3EpSXBcVDcbvOc= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= @@ -48,9 +80,13 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= +github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/nyaruka/phonenumbers v1.0.55 h1:bj0nTO88Y68KeUQ/n3Lo2KgK7lM1hF7L9NFuwcCl3yg= github.com/nyaruka/phonenumbers v1.0.55/go.mod h1:sDaTZ/KPX5f8qyV9qN+hIm+4ZBARJrupC6LuhshJq1U= +github.com/nyaruka/phonenumbers v1.4.0 h1:ddhWiHnHCIX3n6ETDA58Zq5dkxkjlvgrDWM2OHHPCzU= +github.com/nyaruka/phonenumbers v1.4.0/go.mod h1:gv+CtldaFz+G3vHHnasBSirAi3O2XLqZzVWz4V1pl2E= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= @@ -66,33 +102,52 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tidwall/gjson v1.9.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.13.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.17.3 h1:bwWLZU7icoKRG+C+0PNwIKC6FCJO/Q3p2pZvuP0jN94= github.com/tidwall/gjson v1.17.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +golang.org/x/arch v0.0.0-20201008161808-52c3e6f60cff/go.mod h1:flIaEI6LNU6xOCD5PaJvn9wGP0agmIOqjrtsKGRguv4= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/arch v0.2.0 h1:W1sUEHXiJTfjaFJ5SLo0N6lZn+0eO5gWD1MFeTGqQEY= golang.org/x/arch v0.2.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.10.0 h1:S3huipmSclq3PJMNe76NGwkBR504WFkQ5dhzWzP8ZW8= +golang.org/x/arch v0.10.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220110181412-a018aaa089fe/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= @@ -100,9 +155,12 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/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= nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/service/config.go b/service/config.go index 78399d3..fef31fa 100644 --- a/service/config.go +++ b/service/config.go @@ -19,4 +19,5 @@ func init() { if token != "" { Token = token } + log.Info("Token: ", Token) }