From 7dc0cbef080cf77b5ac876b9d69c722d7051284f Mon Sep 17 00:00:00 2001 From: jinyaoMa Date: Thu, 15 Sep 2022 16:12:24 -0400 Subject: [PATCH] . --- README.md | 3 ++ backend/model/model.go | 4 +- backend/model/my_option.go | 25 ++++++++++++ backend/web/air.go | 15 ++++++- backend/web/api/test/test.go | 20 ++++++++++ backend/web/auth/login.go | 21 ++++++++++ backend/web/certs/localhost.crt | 38 ++++++++---------- backend/web/certs/localhost.key | 52 ++++++++++++------------- backend/web/config.go | 21 ++++++++++ backend/web/docs/docs.go | 32 +++++++++++++-- backend/web/docs/swagger.json | 33 +++++++++++++++- backend/web/docs/swagger.yaml | 22 ++++++++++- backend/web/middleware/auth.go | 9 +++++ backend/web/router.go | 29 +++++++++----- backend/web/web.go | 67 ++++++++++++++++++++------------ build/mypic-dark.png | Bin 11436 -> 0 bytes build/mypic-dark2x.png | Bin 23441 -> 0 bytes build/mypic-light.png | Bin 11436 -> 0 bytes build/mypic-light2x.png | Bin 23441 -> 0 bytes build/mypic.png | Bin 11436 -> 0 bytes build/mypic2x.png | Bin 23441 -> 0 bytes package.json | 2 +- 22 files changed, 303 insertions(+), 90 deletions(-) create mode 100644 backend/model/my_option.go create mode 100644 backend/web/api/test/test.go create mode 100644 backend/web/auth/login.go create mode 100644 backend/web/config.go create mode 100644 backend/web/middleware/auth.go delete mode 100644 build/mypic-dark.png delete mode 100644 build/mypic-dark2x.png delete mode 100644 build/mypic-light.png delete mode 100644 build/mypic-light2x.png delete mode 100644 build/mypic.png delete mode 100644 build/mypic2x.png diff --git a/README.md b/README.md index c0fa8df..cc53375 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,15 @@ My App is a continuously updated personal service collection. Prepare and install environment for development in Window 10/11? +- Git v2.37+, https://git-scm.com/ - Go v1.19+, https://go.dev/ - Node.js v16+, https://nodejs.org/ - PNPM v7+, https://pnpm.io/ - VS Code v1.71+ with GCC, https://code.visualstudio.com/docs/cpp/config-mingw - WebView2 v104+, https://developer.microsoft.com/en-us/microsoft-edge/webview2/ +> Setup VS Code by installing recommended extensions. To do this, enter in `@recommended` while searching for extensions. + > Run command `go env -w CGO_ENABLED=1` to prepare for _CGO_ enabled packages > Run command `pnpm install` at project root directory to setup. diff --git a/backend/model/model.go b/backend/model/model.go index ea5a648..d833fde 100644 --- a/backend/model/model.go +++ b/backend/model/model.go @@ -25,5 +25,7 @@ func init() { log.Fatalf("failed to connect database: %+v\n", err) } - db.AutoMigrate() + db.AutoMigrate( + &MyOption{}, + ) } diff --git a/backend/model/my_option.go b/backend/model/my_option.go new file mode 100644 index 0000000..95e420a --- /dev/null +++ b/backend/model/my_option.go @@ -0,0 +1,25 @@ +package model + +import "gorm.io/gorm" + +type MyOption struct { + gorm.Model + Name string `gorm:"unique"` // Option name + Value string `` // Option value associated with name +} + +func (mo *MyOption) Update(newValue string) *gorm.DB { + return db.Model(mo).Where(mo).Updates(MyOption{ + Value: newValue, + }) +} + +type MyOptions []MyOption + +func (mos MyOptions) Load() *gorm.DB { + return db.Find(&mos) +} + +func (mos MyOptions) Save() *gorm.DB { + return db.Save(&mos) +} diff --git a/backend/web/air.go b/backend/web/air.go index 4a8b8a5..570adfb 100644 --- a/backend/web/air.go +++ b/backend/web/air.go @@ -1,14 +1,25 @@ package web -import "flag" +import ( + // "context" + "flag" + // "time" +) -// for API service test purpose, testing with air +// For API service test purpose, testing with air +// Uncomment code below to run http redirector func (w *web) Air() { var flagAir int flag.IntVar(&flagAir, "air", 0, "set `-air 1` to enable web.Air function") flag.Parse() if flagAir == 1 { w.reset() + // go w.http.ListenAndServe() w.https.ListenAndServeTLS("", "") + + // ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + // defer cancel() + // w.http.Shutdown(ctx) + // <-ctx.Done() } } diff --git a/backend/web/api/test/test.go b/backend/web/api/test/test.go new file mode 100644 index 0000000..57fbb95 --- /dev/null +++ b/backend/web/api/test/test.go @@ -0,0 +1,20 @@ +package test + +import ( + "net/http" + + "github.com/gin-gonic/gin" +) + +// @Summary Pass +// @Description Test pass path +// @Tags Test +// @Accept json +// @Produce json +// @Success 200 {string} string "Pass Path" +// @Router /test [get] +func Test() gin.HandlerFunc { + return func(ctx *gin.Context) { + ctx.String(http.StatusOK, "Pass "+ctx.Request.URL.Path) + } +} diff --git a/backend/web/auth/login.go b/backend/web/auth/login.go new file mode 100644 index 0000000..52189e7 --- /dev/null +++ b/backend/web/auth/login.go @@ -0,0 +1,21 @@ +package auth + +import ( + "net/http" + + "github.com/gin-gonic/gin" +) + +// @Summary Login +// @Description Login and get access token +// @Tags Auth +// @Accept x-www-form-urlencoded +// @Produce json +// @Param username formData string true "Username" +// @Param password formData string true "Password" +// @Router /auth/login [post] +func Login() gin.HandlerFunc { + return func(ctx *gin.Context) { + ctx.JSON(http.StatusOK, gin.H{}) + } +} diff --git a/backend/web/certs/localhost.crt b/backend/web/certs/localhost.crt index 97593e5..dc28d4b 100644 --- a/backend/web/certs/localhost.crt +++ b/backend/web/certs/localhost.crt @@ -1,23 +1,19 @@ -----BEGIN CERTIFICATE----- -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 +3DbsOJaCgMVGpv/SMGkJ -----END CERTIFICATE----- diff --git a/backend/web/certs/localhost.key b/backend/web/certs/localhost.key index d001431..275a6c4 100644 --- a/backend/web/certs/localhost.key +++ b/backend/web/certs/localhost.key @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCqVmq8voUpyqT6 -crTeghGbcBOHF7Liw3pf10hz26TCQPFgTwdGrZY8j/W5su8Sb1MhfVVo1pVWSpyt -veVIcDK8Dtxs+9zKmnJLp4gzDr29eHAWCnyaoDzX5fhgCJBqBvzrW5g8PbjWKrFf -B9BxSUmVutkDyslfx1K3GUPNDNNYUcPx85ira7BDPd7v/0MA4J8AXJ8eOiWduYdS -rhZS3uq7yx2VOPpU2HUc5xB93oCKY3MJ+8Gw6I+comP6XSkzrs1DYaJEiULVhm/p -pcqaQRNra6hvKIBhur5qjpD8usTcSeGjGBTSD8P22oRmb9FCqQIeM9uJyeM6h/MT -GRxKZkQ9AgMBAAECggEBAJYUhAD+4Hc8+/VKwb/W3EqXCi2aHNwdnaH6HfUuzlD1 -RXc0ylVktp1vvfK7DFeyzI0SUAGKJ5QbM0cFrJIRgTIe6eoAU74TLKcp2iAaWeUp -y6Av5y+aBWG4VwnOIee5dnisgEp7m3LftN3lFavrBbGuKm1j69++0EtRMGLnbQM/ -vwL9GHvgzoDllhTPui6yeZcQhVjlcIwxD5B72qwS/XYWrhNIjICVVsBQjm3U+VrT -QO9ItmZdKnJ61t9ShzrwOxmbzq4RVVJMcl7CI8EhbQQaaPCUQK+Yl4atmf7HNUqN -BnVryJT/yI6tPKRWuNov0Cy9LJQKxV9JpV9TZapTpAUCgYEA3ZudMqrj0pUbwupa -R+cFTKAS+5u1lTimz2wK9ZcLJQ557LGe6w7K9ClD0/UkjUch00XtuN3z/nAjmD5q -Mhnptfzzk2NxY4RxgBjlVv3mFE0zzQelgLO8WjpROkkkV412RgZxzRXM1REawoPb -ezZVfvVQ4kqXOrJL/KffOwOb6pMCgYEAxMXbEALf7hgXjbT5duhFLqB+ATDiyTKZ -pGsBJ+zQVFcbu1q3dW/sPzyEfwMDGMHXcuEb1AsrOAqGaA+XzWydkQ/3LbtsGftK -llfjuef5zltTqdND/DDzqXJHjye9A+v2xhq8RSJJWtKx7rfHBLHphB+uZoe38F3t -BJIM/K5Kx+8CgYEAoviBznUmPgMx+1HlOuOGXieKTkbgbvDOm9PU62883u+acprd -R/gFATInk4TAcLVTBtByVnXDreZCBwA/kMDFwvRXHJkRFiKcZZvpbOQjg+KSqcFp -0RBc/+3LNpX7h/ecdzreDfhuPnLpvwrBKgd3MHqwFPrN5HiisRezbu7khskCgYA2 -X+5fCExVAPdRQ1dEUn77mYH4Vkf1DTSDyMXzAG+5PrD9Ht5fZ2RDPTfn2S874iTl -K+uCtutkexQVIWnzbDZGZcEKNCZ1L4m27eaR8taG/Zmq7iR1RhmvE1NO7c4/jS8O -I0kvWYAnxt1AeCxY0ckTp6WL06kylOHwR2OrV4Z2pQKBgHkm+pWuMJizccRXhuYg -VfR9dCfY6NNz6fkD+QbA9fuasxNftTb/2S4yF4OFUeZvSOQ8h+TtLS8w73JXnMR3 -w5D569Z7gIqpRXVOMyCmWNguMVuRZpA6Mo7hAoPAWNk7GjW/XfSXQzTRVf0WRZ5z -zLmYOG1EKPx6x0Rp8Pr8hYiw +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDhN02/EzY2pPDB +0EsKMFrhzjT4Y9pSDX/qx7wSxZif29cNqsRRdQ6uNnkMwWv7L97erMXsWjx0nzm4 +rhGcxa+bASursRBcI+u0oQ4AkI0uxBvyguhjhnwxyuMnfpT7zgrMtzirU9wxDwjX +LAmNcKFrWrT0sTaeWlyOWRpswCRyG3n9nGj7JEYOCMK7EhnIcBspLE+3b0v5oYAP +p4arUWieUyHOJ+APeVtI4W9L/LDuLkwrtjCd8JEEke0oMpDP10G1o5H1MjPssARN +6yIqoqanaM7fiukeZeoTJi8ZJrCGyuuOwlvm24o8JXqWTlR0TqDXPgAFoLL3wHYx +Jnxby+G3AgMBAAECggEAb03KsaUIBQeNKOwNOfLd53zmtt96dVTQpDKkI07eeBrI +9KsxrORCJh0rw/8Po6tr5PbUNlP+TtCmUTxN3gHhIKT6dTbj0/W4tqNl7SeDbtpi +yX6i5RUA6gbQLqOjc7LHqZbffeTLDL/WaakM64b/b7P7fHbcfHRCC+PDaH2pRW6b +StZdTRcEJHHYE8E0HDedQB3cbyoIJmtmPhsjp1T+y/z8ChugGZq2FI2IC4ixnM5R ++fluDIAH7on3GiKVlRRGvJJncF0CJazqRd/cyoTxWYeEauKgMdaA+Y6kI5svmZ1q +93gD0TKfYiXksBaK84w1EjJNyljvvDAmgyP5FQ3K+QKBgQD7gL3MKA/Ef7FhlbFV +K7T9LG1gCICJCfXppKh2DibWl9FbmGjHJZHHpQaJtkJMQtqGeRpOO2gFxnOzxR+M +vXcqQaLjrVsyOuFxSfHGekxwtSvl7IdzuywYWmNdqfL743MOLta74Brg4AuqMg7K +F09FlIODzpg59tdGrRXh0PbEcwKBgQDlPjvWlTCeVJ5+q5mhPyynOaMB4sdXluu0 +8mEpjhKUvJFIEhIiXW4EVwYujacA9xxL301n+DWQrxbugyywqA+VcVqOX9UnL3J2 +YZxW73/DPah9mFbkRJvEHFZtGZ+p4eUKOPA9HXUCMZdkjPmrZqOWTLta0NZsphR4 +RuyZfapgrQKBgQCu5rEXMSUF+edZfch8+pA7IJJPnpoEszCY8zFUKDNKOPoXQL5c +//uJY3JQgrdIYZWmvsFUdmu42HHOKt/t+DTO5iZpPz2UiO4O4uWIqbRPDS8iDoOE +MD5SEUnY8T9RfLOewWQD8629hRGXoog2ck9mjAmJuDqU1NyRAf2dtLxnkQKBgAWT +X+02L7qKIFjAX7o2SSXAFyDinSqaNx1tj8Ns+zK262mvVtWTJCvi2fmj5F33pK6L +vdw7g0IDoDEo65tYWxitayBvYEXVt5j9gsnyhU8AXuq/G83thURd1BRPPTzqi6GW +BPHXl5L4FdCSRThQBMaREzWAQtbdqz3Jq9OH5O75AoGAAhoECDGhC6QxTN8aCZgN +LN0rdnNKrCPJJl9xE6Xc4rv8Cwslk5tUiQ0CjfMwhZnAFrZB0rA4eBlRaUPvirpq +mUz765m/DZGPi+5Gj/P7Shs2X8YgFJRzO7lnYWOZRsx4PeNkBK11Xq2pcju8rykk +Bsdr+3HKTnM4gywLnuNFzOg= -----END PRIVATE KEY----- diff --git a/backend/web/config.go b/backend/web/config.go new file mode 100644 index 0000000..902266c --- /dev/null +++ b/backend/web/config.go @@ -0,0 +1,21 @@ +package web + +const ( + CfgPortHttp = Package + ".PortHttp" + CfgPortHttps = Package + ".PortHttps" + CfgDirCerts = Package + ".DirCerts" +) + +type Config struct { + PortHttp string + PortHttps string + DirCerts string +} + +func DefaultConfig() Config { + return Config{ + PortHttp: ":10080", + PortHttps: ":10443", + DirCerts: "", + } +} diff --git a/backend/web/docs/docs.go b/backend/web/docs/docs.go index dce7843..6c9117c 100644 --- a/backend/web/docs/docs.go +++ b/backend/web/docs/docs.go @@ -12,7 +12,8 @@ const docTemplate = `{ "title": "{{.Title}}", "contact": { "name": "Github Issues", - "url": "https://github.com/jinyaoMa/my-app/issues" + "url": "https://github.com/jinyaoMa/my-app/issues", + "email": "jinyao.ma@outlook.com" }, "license": { "name": "MIT", @@ -22,9 +23,34 @@ const docTemplate = `{ }, "host": "{{.Host}}", "basePath": "{{.BasePath}}", - "paths": {}, + "paths": { + "/test": { + "get": { + "description": "Test pass path", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Test" + ], + "summary": "Pass", + "responses": { + "200": { + "description": "Pass Path", + "schema": { + "type": "string" + } + } + } + } + } + }, "securityDefinitions": { "BearerToken": { + "description": "Authorization Header should contain value started with \"Bearer \" and followed by a JSON Web Token.", "type": "apiKey", "name": "Authorization", "in": "header" @@ -37,7 +63,7 @@ var SwaggerInfo = &swag.Spec{ Version: "1.0.0", Host: "", BasePath: "/api", - Schemes: []string{}, + Schemes: []string{"https"}, Title: "My App (backend/web/router.go)", Description: "\"My App is a continuously updated personal service collection.\"", InfoInstanceName: "swagger", diff --git a/backend/web/docs/swagger.json b/backend/web/docs/swagger.json index 3eacb19..05f33a7 100644 --- a/backend/web/docs/swagger.json +++ b/backend/web/docs/swagger.json @@ -1,11 +1,15 @@ { + "schemes": [ + "https" + ], "swagger": "2.0", "info": { "description": "\"My App is a continuously updated personal service collection.\"", "title": "My App (backend/web/router.go)", "contact": { "name": "Github Issues", - "url": "https://github.com/jinyaoMa/my-app/issues" + "url": "https://github.com/jinyaoMa/my-app/issues", + "email": "jinyao.ma@outlook.com" }, "license": { "name": "MIT", @@ -14,9 +18,34 @@ "version": "1.0.0" }, "basePath": "/api", - "paths": {}, + "paths": { + "/test": { + "get": { + "description": "Test pass path", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Test" + ], + "summary": "Pass", + "responses": { + "200": { + "description": "Pass Path", + "schema": { + "type": "string" + } + } + } + } + } + }, "securityDefinitions": { "BearerToken": { + "description": "Authorization Header should contain value started with \"Bearer \" and followed by a JSON Web Token.", "type": "apiKey", "name": "Authorization", "in": "header" diff --git a/backend/web/docs/swagger.yaml b/backend/web/docs/swagger.yaml index e8d67ba..80de75b 100644 --- a/backend/web/docs/swagger.yaml +++ b/backend/web/docs/swagger.yaml @@ -1,6 +1,7 @@ basePath: /api info: contact: + email: jinyao.ma@outlook.com name: Github Issues url: https://github.com/jinyaoMa/my-app/issues description: '"My App is a continuously updated personal service collection."' @@ -9,9 +10,28 @@ info: url: https://github.com/jinyaoMa/my-app/blob/main/LICENSE title: My App (backend/web/router.go) version: 1.0.0 -paths: {} +paths: + /test: + get: + consumes: + - application/json + description: Test pass path + produces: + - application/json + responses: + "200": + description: Pass Path + schema: + type: string + summary: Pass + tags: + - Test +schemes: +- https securityDefinitions: BearerToken: + description: Authorization Header should contain value started with "Bearer " + and followed by a JSON Web Token. in: header name: Authorization type: apiKey diff --git a/backend/web/middleware/auth.go b/backend/web/middleware/auth.go new file mode 100644 index 0000000..d3b1c5a --- /dev/null +++ b/backend/web/middleware/auth.go @@ -0,0 +1,9 @@ +package middleware + +import "github.com/gin-gonic/gin" + +func Auth() gin.HandlerFunc { + return func(ctx *gin.Context) { + ctx.Next() + } +} diff --git a/backend/web/router.go b/backend/web/router.go index e1ded31..64c5577 100644 --- a/backend/web/router.go +++ b/backend/web/router.go @@ -1,11 +1,12 @@ package web import ( - _ "my-app/backend/web/docs" - "net/http" + "my-app/backend/web/api/test" + "my-app/backend/web/docs" + "my-app/backend/web/middleware" "github.com/gin-gonic/gin" - swaggerfiles "github.com/swaggo/files" + swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" ) @@ -15,29 +16,39 @@ import ( // @contact.name Github Issues // @contact.url https://github.com/jinyaoMa/my-app/issues +// @contact.email jinyao.ma@outlook.com // @license.name MIT // @license.url https://github.com/jinyaoMa/my-app/blob/main/LICENSE +// @schemes https // @BasePath /api // @securityDefinitions.apikey BearerToken // @in header // @name Authorization +// @description Authorization Header should contain value started with "Bearer " and followed by a JSON Web Token. func router() *gin.Engine { r := gin.Default() - r.GET("/", func(ctx *gin.Context) { - ctx.JSON(http.StatusOK, gin.H{ - "Author": "pong", - }) - }) + r.GET("/", test.Test()) + + a := r.Group("/auth") + { + a.GET("/", middleware.Auth(), func(ctx *gin.Context) {}) + } + + // "/api" + b := r.Group(docs.SwaggerInfo.BasePath) + { + b.GET("/test", test.Test()) + } r.GET( "/swagger/*any", ginSwagger.WrapHandler( - swaggerfiles.Handler, + swaggerFiles.Handler, ginSwagger.PersistAuthorization(true), ), ) diff --git a/backend/web/web.go b/backend/web/web.go index b9f5781..5ec7b11 100644 --- a/backend/web/web.go +++ b/backend/web/web.go @@ -15,6 +15,8 @@ import ( "golang.org/x/sync/errgroup" ) +const Package = "Web" + //go:embed certs var certs embed.FS @@ -28,15 +30,23 @@ type web struct { errGroup errgroup.Group http *http.Server // redirector https *http.Server // server (tls) + config Config } func Web() *web { once.Do(func() { - instance = &web{} + instance = &web{ + config: DefaultConfig(), + } }) return instance } +func (w *web) SetConfig(cfg Config) *web { + w.config = cfg + return w +} + func (w *web) Start() (ok bool) { if w.isRunning { return false @@ -56,15 +66,18 @@ func (w *web) Start() (ok bool) { func (w *web) Stop() (ok bool) { if w.isRunning { - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - defer cancel() - - if err := w.http.Shutdown(ctx); err != nil && err != http.ErrServerClosed { + ctxHttp, cancelHttp := context.WithTimeout(context.Background(), 5*time.Second) + defer cancelHttp() + if err := w.http.Shutdown(ctxHttp); err != nil && err != http.ErrServerClosed { log.Printf("server (http) shutdown error: %+v\n", err) } - if err := w.https.Shutdown(ctx); err != nil && err != http.ErrServerClosed { + + ctxHttps, cancelHttps := context.WithTimeout(context.Background(), 5*time.Second) + defer cancelHttps() + if err := w.https.Shutdown(ctxHttps); err != nil && err != http.ErrServerClosed { log.Printf("server (http/s) shutdown error: %+v\n", err) } + if err := w.errGroup.Wait(); err != nil && err != http.ErrServerClosed { log.Printf("server running error: %+v\n", err) } @@ -76,18 +89,16 @@ func (w *web) Stop() (ok bool) { } func (w *web) reset() { - portHttp := ":10080" - portHttps := ":10443" - manager := &autocert.Manager{ Prompt: autocert.AcceptTOS, + Cache: autocert.DirCache(w.config.DirCerts), } w.http = &http.Server{ - Addr: portHttp, - Handler: manager.HTTPHandler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - target := "https://" + strings.Replace(r.Host, portHttp, portHttps, 1) + r.RequestURI - http.Redirect(w, r, target, http.StatusMovedPermanently) + Addr: w.config.PortHttp, + Handler: manager.HTTPHandler(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { + target := "https://" + strings.Replace(r.Host, w.config.PortHttp, w.config.PortHttps, 1) + r.RequestURI + http.Redirect(rw, r, target, http.StatusMovedPermanently) })), } @@ -95,25 +106,33 @@ func (w *web) reset() { tlsConfig.GetCertificate = w.getSelfSignedOrLetsEncryptCert(manager) w.https = &http.Server{ - Addr: portHttps, + Addr: w.config.PortHttps, Handler: router(), TLSConfig: tlsConfig, } } func (s *web) getSelfSignedOrLetsEncryptCert(certManager *autocert.Manager) func(hello *tls.ClientHelloInfo) (*tls.Certificate, error) { + dirCerts := "certs" + + var certificate tls.Certificate + var err error + isCustomDirCerts := false + dirCache, ok := certManager.Cache.(autocert.DirCache) + if ok && string(dirCache) != "" { + dirCerts = string(dirCache) + isCustomDirCerts = true + } else { + key, _ := certs.ReadFile(dirCerts + "/localhost.key") // embed use slash as separator + crt, _ := certs.ReadFile(dirCerts + "/localhost.crt") // embed use slash as separator + certificate, err = tls.X509KeyPair(crt, key) + } + return func(hello *tls.ClientHelloInfo) (*tls.Certificate, error) { - var certificate tls.Certificate - var err error - dirCache, ok := certManager.Cache.(autocert.DirCache) - if ok { - keyFile := filepath.Join(string(dirCache), hello.ServerName+".key") - crtFile := filepath.Join(string(dirCache), hello.ServerName+".crt") + if isCustomDirCerts { + keyFile := filepath.Join(dirCerts, hello.ServerName+".key") + crtFile := filepath.Join(dirCerts, hello.ServerName+".crt") certificate, err = tls.LoadX509KeyPair(crtFile, keyFile) - } else { - key, _ := certs.ReadFile("certs/localhost.key") - crt, _ := certs.ReadFile("certs/localhost.crt") - certificate, err = tls.X509KeyPair(crt, key) } if err != nil { return certManager.GetCertificate(hello) diff --git a/build/mypic-dark.png b/build/mypic-dark.png deleted file mode 100644 index 97c26c9c288f9a68a26e0c8fa6959446d1ccab19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11436 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 diff --git a/build/mypic-dark2x.png b/build/mypic-dark2x.png deleted file mode 100644 index 8a4a50ae5047511588e17b9cb39939e926aee8e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23441 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%0A}#?p0MxsNwp z|F#p5M|P>fJJI{uCKCO(yf3!l`{>uXegQ>g>;{E0wPF-n6mHO_+VIH*JK(+MIT1vr zq9{`w}YJ4M|>1jepPbt_ID zu~!CrVJ^RZ%6{{S4?AHZ*csU4!^a$m(eAUQ6x_v57juF(d|>8rL>uL@8A|~5|4s4= z9e9sk&W4e$NP`_v?d)26J#EP|UyWisBX6OSl0m03kj9)=*r#tZ;l=JHC z<5HRqx4@tfwUdTb0?qj?7ystjFUQEeLJ|80$u#r@eSX#wih&VhN}e{I!A@VK*zn|f zDB;IX-*f|BmcpP2$S)`7z+}BPVW*^0<+&>!=!sQyUr2ccMwzzF1B2`)5P-+}`Z)d` zJ%~F%9ppWW0gE{>vXi=^N;_d22+<1O(GPl+VVg@2b{B=3<{l6cBRlg`B?y34E^|S! zonpe{6tZlk6d&hGA_14-xw5gEECW#G$@h!=8hl<>5hR1J1=yUl2;clWyxO8Pz|mj-KpJ{Q3Jt_nurFV6bP# z@zwMdKeFGKE}pBS{i3b_IE_?%iss7$FAL2l(8NYo(Z0|3;e*yL7X|!m%>)@h3`FF$ zTgS)8A3XTVKLtt9L^^oQ@ zYM{J?Op&4UzH>(!k65S*0cd^Jdv_S&QaCwbI(5hvw#z`-Rjsc>v&{cHR zS=bs3u?hxv{;=%1#p{r``opuH<@PrN#RtXepG+U~bHgF^B2)&**_|NcqJt$i`2Q=D z(b0(p=0fZf+Y~_Cym1;1X``H;F1+#Lu=C03&9c-gfUq{6p|E6-tUc+<+-b*$Ge~c~ zOypKSpWKh&5+3}GhBa-YAN^-}xymTJg~c~?r=Nx&4oUv=JqzUEm>Vm6U=U=M4{^=E zVw#(O4ejm0fFd*v9SEYl)KY=z@>W&e#HCHwB{dBxSK~SXwF|5Tp(SYiy@HXj96{VW zR@X@d5c%!HLghxk3&;ZUx@N)jQ%*&rVawO~6Ret5Q2fE1f{~H{I63W~fs%4$v2yKf zQ6v(AOLvdh&^`(_+kX^kvnW*gaAR$&2m55r)AM1j3YpwfuwAI(5*FZ|1nNv|g0#SF zorpRFAYl;yNIsVj7+?Io2556O^l@!4LmatOs|ZsY=X+MS3Xu;bc+%OckxDQP&3}j0 z2Qi<3^bZSV6f@A3JD~U`rFE*vK_7AFokJ2Z%ue4|`!|Pm+6y5t91b)v0${w5UE;Ye zUfWr83UuR%=W*c5rW`qoh(r7zQ{Gh^lf=7^Fs=E|u{`;x%|ejboYp^c^7gxqHM%h8 z^#R(GWJNUMvxlWIy@OBjq#9S1UxdLf$Wn>{Ms|%yU4xNJn+9JUGLBl4-|qUG7yo3dg|yzh@llFUhA(KiI_F-Y{9Rw^_=G30zOU*BGS9K_2q=nqCs`*D^Bd=fyV zq}JA<PihRo4{ez-DW!iQU`5(kv)Dm6>Voj zezde-NfD@_xmT4_r2murv#UDjQ!?JYdMrsz&Pd^KrAZg*!y#MK{ancn`V4O3HB+cd z8cmBD;lAOc$Z-K!*Il<}jdm60$KepCLk(lrVov6WtT?;!R<)+f^g^5ZK`>`Bo?9^+Je}_ zi)mjfn1H?BaR!aXETNeXqs#R40@n}q4#%73cvEZdNn@!+F({V*;ZKiv-<7_p_Q1KrQ07wm?4d^H#Kxc*Kg zoq&kpe#zbHZ`(q~{#Hw=bEB+U^bO}E|sp3itu=3@>BuP(WE<5OA1~61% zen9&cWR<6)KsNK_dB8Xpd~Cl%#u=9Fl5tjAR)sviikobq3-AJ?_QB55#}f^x@HZQN zeV4YG_I{)xtM=mJP?VKS0u4o|)X}a)zhLXFI2Z7;pZBO^xYBW03?o!mu~(|5+yHHe zs?ukgBowqopOnt4oln+>Eikm7jo+i^TNn5WB7fcm4#khfswK1U#`yq@G-mvCS^wQu zY)(F;E99?!t(kw1d;*341snyX{h@`iPn6>NU2n{Y9d%*4IA)wx(n7OQzdTiRO~wIS zL8A>?F$gHcaOJImXt3s!AL*1@_O-V9BfMS)`?=L@5;VaJ3{&inKCq4MM5su#lK~&d zRFK9jO2Sg#_P6b=TW;D;f51*+9nl_0TAVWPCt=9gIP&auXOH5NJIARz;96?B&4A{mrsMsg>r`f zaK_t7cD!P)=+rZs*@~?Tu)$0j>q%6k{b4-DQSGT&;HVIHvpm>rbn4M#i67bMAGUe* z_j$NGoEOeP!uMSKB^5|Ir9mhqDyWc4RNx_YqUy7y#Rb$?@8ETV@!@Y`J-;}q@IbCkf2 zirD=all!t+^I~T};%QZoDd`}S`kyLv5Y5;zatIXO z+^+CGvFA_@e|ZMjP1e_`P2kTHYS435M^C}@SfK#zyHAp$@7;GHxh9Yynu@s+hoc_-lpJ?b`ncqwk7IdtS6KJiIjfO6 zbd}20$n946jy0dhT(PEb2)T32>)B^?cv81aM;f94%#BE0@Go$Ly8;zP9s>j!z&8ewU+0#$ruEMBSDtv6 zY^5-DmPU)-YGS&1gxv-}g0Qh?UQGLKXJN9r$u<`)CT z!D?R}O3OZsDQjnPoYjh_Q01tP6Pe#W7v+!eK8zuuj4fKt9@v7Rtp^gHm}?}>(?r*2UAK~$gAsT#@q zs1sN_TqhvdOTTk|cq!YH?Xg}Wvv_Fu&ZA!sJs>#N6`Ltzn*W<%ocb+X_dEf10sr?4u zH6Q9|#k<6-{Ne;Z*|R&Q^o^|sijnV0=)pVqJO+vo4&}@jKB@iJ)ZN}9{W*V}-`4i` z>+OSPoj%+6VE@{dj^25wU>cD_*Mc03HAVvvbwow=o~tw__4E7AFItW-IhDuqW5pD% zF1ez}Rq80ol%^*k##kl3;ylEJ3NeRW1sP_lb*1Ko8v&^cwgw9%3gd0cF6)Ezf2M`T zzR_wNg`k22?==jPPo0$c6Fq@ZB_#i4)*EPVs%S znj4gyB3z>EVyLkeafNIfFRu0_R&3TbD=^qkHLvb}62TO045IoYSmr)&_LVJO=+a*; zhg`keI2p??^cGB(SrRE?OW9SkUP42j-7>Nrh5}E3g)J~l5R=q5j;bg zVr#4CssCOP8;T(bA*q76-C22(2egb-T!j2_e7~=i^n2@fAPML8F;Bag%C+up>7F8} zEi|HU3jbqr4KkS;{zPP?*R}D7Ar?^`KUqlg%N4aNsw>I1M2ujnJH2zw!mDG{E zb@Tyi8l9kFT0V5#SjGZ#Je40Kb6R@wP_u#l{ITC6Wy9ajd;RJN!CvH64-lBI&`%C% z&Fr9A6ALcyg-5RIlr~(xGLf^Cvr@d4!|Ez||KP#f%9j(|hUF57{9TVDPSd#Ydg%Bw z%OK>DKz)e-RgG`Zm#e7G#ks_V%-{SNtkuIi5R06v5C=3xi5{0&J*l+Hqml_ zp~pWq;u%6oDw17#-Ra+NUazKCbEr0UW~Gf@OJHI;jO?fya?~~S`Mty1;UEWf`L;B@ zN5kOin&aC;ryOvv)OXk=ajS>KTrw`)z5Yj?8<2hoyw8~w4eUq@eRj*dvQ|@R>9%Og zc53<4>{UmzCdrIleskWQU4DLe&cQZe&4_j`keGV@+ z^KS|G-X+!#u-AfeBEW4I0cK$CgFUgS>IMrj;ED4k*n#QviKzzFl3ymoZR(Z zBXr-Zoel?n4^+wr?!~QBHlPnI!6^|qzDTxj+WpZxf1{h3-%kYabbgWw9Jkm+q%?(` z_V{pbs^dxD8Aki{P8Ghn;%bl}IrWR}hC$(FdGych&nMEUr5B~p?~ z?WLj%BwFfQXXV;-rBT}`;|Rn@j$j17PcmW}v-SMPZhMIh*$&U0#eJQS8%-xl#pfu= zHYvx7k4AU?V+>hl37W~r7bp?&*>jS7B|=OJDWG-FY=T%_y17*oen+!!U=h~a=ILB- zSYXSWH_EYcNljx&jx4}s&7E5k5hqx(R@3L=aCmWoJ`10niWMjHQjQ8Vt`C24()}iK z0pXG4N9!jfhva)>z71dM~kr^n_6>%k$|FN(Gi3HMUujq+G&=FNx$s z3T3=_v4re|(Rdf*!C_`9qq%j?LeH$Z^Rie&nz@h8ebnj~b>&nsCpdC;;g`;4VUq-g zJ8wfdQL%}HpCXh-#YSCF^leTW-A%}y=FxcATg`my)RY!jVHH=cV`Z%0FRT#jf)t zUy12S=5dv>m;M+i7YDR3y;Mjta}%Aqn1|i?xNxS5O3bE=i3eT0x`sHC?2eJqA*8wEBO5f7$PGvi{eSmiRwZOK121 diff --git a/build/mypic-light.png b/build/mypic-light.png deleted file mode 100644 index 97c26c9c288f9a68a26e0c8fa6959446d1ccab19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11436 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 diff --git a/build/mypic-light2x.png b/build/mypic-light2x.png deleted file mode 100644 index 8a4a50ae5047511588e17b9cb39939e926aee8e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23441 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%0A}#?p0MxsNwp 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 diff --git a/build/mypic.png b/build/mypic.png deleted file mode 100644 index 97c26c9c288f9a68a26e0c8fa6959446d1ccab19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11436 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 diff --git a/build/mypic2x.png b/build/mypic2x.png deleted file mode 100644 index 8a4a50ae5047511588e17b9cb39939e926aee8e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23441 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%0A}#?p0MxsNwp z|F#p5M|P>fJJI{uCKCO(yf3!l`{>uXegQ>g>;{E0wPF-n6mHO_+VIH*JK(+MIT1vr zq9{`w}YJ4M|>1jepPbt_ID zu~!CrVJ^RZ%6{{S4?AHZ*csU4!^a$m(eAUQ6x_v57juF(d|>8rL>uL@8A|~5|4s4= z9e9sk&W4e$NP`_v?d)26J#EP|UyWisBX6OSl0m03kj9)=*r#tZ;l=JHC z<5HRqx4@tfwUdTb0?qj?7ystjFUQEeLJ|80$u#r@eSX#wih&VhN}e{I!A@VK*zn|f zDB;IX-*f|BmcpP2$S)`7z+}BPVW*^0<+&>!=!sQyUr2ccMwzzF1B2`)5P-+}`Z)d` zJ%~F%9ppWW0gE{>vXi=^N;_d22+<1O(GPl+VVg@2b{B=3<{l6cBRlg`B?y34E^|S! zonpe{6tZlk6d&hGA_14-xw5gEECW#G$@h!=8hl<>5hR1J1=yUl2;clWyxO8Pz|mj-KpJ{Q3Jt_nurFV6bP# z@zwMdKeFGKE}pBS{i3b_IE_?%iss7$FAL2l(8NYo(Z0|3;e*yL7X|!m%>)@h3`FF$ zTgS)8A3XTVKLtt9L^^oQ@ zYM{J?Op&4UzH>(!k65S*0cd^Jdv_S&QaCwbI(5hvw#z`-Rjsc>v&{cHR zS=bs3u?hxv{;=%1#p{r``opuH<@PrN#RtXepG+U~bHgF^B2)&**_|NcqJt$i`2Q=D z(b0(p=0fZf+Y~_Cym1;1X``H;F1+#Lu=C03&9c-gfUq{6p|E6-tUc+<+-b*$Ge~c~ zOypKSpWKh&5+3}GhBa-YAN^-}xymTJg~c~?r=Nx&4oUv=JqzUEm>Vm6U=U=M4{^=E zVw#(O4ejm0fFd*v9SEYl)KY=z@>W&e#HCHwB{dBxSK~SXwF|5Tp(SYiy@HXj96{VW zR@X@d5c%!HLghxk3&;ZUx@N)jQ%*&rVawO~6Ret5Q2fE1f{~H{I63W~fs%4$v2yKf zQ6v(AOLvdh&^`(_+kX^kvnW*gaAR$&2m55r)AM1j3YpwfuwAI(5*FZ|1nNv|g0#SF zorpRFAYl;yNIsVj7+?Io2556O^l@!4LmatOs|ZsY=X+MS3Xu;bc+%OckxDQP&3}j0 z2Qi<3^bZSV6f@A3JD~U`rFE*vK_7AFokJ2Z%ue4|`!|Pm+6y5t91b)v0${w5UE;Ye zUfWr83UuR%=W*c5rW`qoh(r7zQ{Gh^lf=7^Fs=E|u{`;x%|ejboYp^c^7gxqHM%h8 z^#R(GWJNUMvxlWIy@OBjq#9S1UxdLf$Wn>{Ms|%yU4xNJn+9JUGLBl4-|qUG7yo3dg|yzh@llFUhA(KiI_F-Y{9Rw^_=G30zOU*BGS9K_2q=nqCs`*D^Bd=fyV zq}JA<PihRo4{ez-DW!iQU`5(kv)Dm6>Voj zezde-NfD@_xmT4_r2murv#UDjQ!?JYdMrsz&Pd^KrAZg*!y#MK{ancn`V4O3HB+cd z8cmBD;lAOc$Z-K!*Il<}jdm60$KepCLk(lrVov6WtT?;!R<)+f^g^5ZK`>`Bo?9^+Je}_ zi)mjfn1H?BaR!aXETNeXqs#R40@n}q4#%73cvEZdNn@!+F({V*;ZKiv-<7_p_Q1KrQ07wm?4d^H#Kxc*Kg zoq&kpe#zbHZ`(q~{#Hw=bEB+U^bO}E|sp3itu=3@>BuP(WE<5OA1~61% zen9&cWR<6)KsNK_dB8Xpd~Cl%#u=9Fl5tjAR)sviikobq3-AJ?_QB55#}f^x@HZQN zeV4YG_I{)xtM=mJP?VKS0u4o|)X}a)zhLXFI2Z7;pZBO^xYBW03?o!mu~(|5+yHHe zs?ukgBowqopOnt4oln+>Eikm7jo+i^TNn5WB7fcm4#khfswK1U#`yq@G-mvCS^wQu zY)(F;E99?!t(kw1d;*341snyX{h@`iPn6>NU2n{Y9d%*4IA)wx(n7OQzdTiRO~wIS zL8A>?F$gHcaOJImXt3s!AL*1@_O-V9BfMS)`?=L@5;VaJ3{&inKCq4MM5su#lK~&d zRFK9jO2Sg#_P6b=TW;D;f51*+9nl_0TAVWPCt=9gIP&auXOH5NJIARz;96?B&4A{mrsMsg>r`f zaK_t7cD!P)=+rZs*@~?Tu)$0j>q%6k{b4-DQSGT&;HVIHvpm>rbn4M#i67bMAGUe* z_j$NGoEOeP!uMSKB^5|Ir9mhqDyWc4RNx_YqUy7y#Rb$?@8ETV@!@Y`J-;}q@IbCkf2 zirD=all!t+^I~T};%QZoDd`}S`kyLv5Y5;zatIXO z+^+CGvFA_@e|ZMjP1e_`P2kTHYS435M^C}@SfK#zyHAp$@7;GHxh9Yynu@s+hoc_-lpJ?b`ncqwk7IdtS6KJiIjfO6 zbd}20$n946jy0dhT(PEb2)T32>)B^?cv81aM;f94%#BE0@Go$Ly8;zP9s>j!z&8ewU+0#$ruEMBSDtv6 zY^5-DmPU)-YGS&1gxv-}g0Qh?UQGLKXJN9r$u<`)CT z!D?R}O3OZsDQjnPoYjh_Q01tP6Pe#W7v+!eK8zuuj4fKt9@v7Rtp^gHm}?}>(?r*2UAK~$gAsT#@q zs1sN_TqhvdOTTk|cq!YH?Xg}Wvv_Fu&ZA!sJs>#N6`Ltzn*W<%ocb+X_dEf10sr?4u zH6Q9|#k<6-{Ne;Z*|R&Q^o^|sijnV0=)pVqJO+vo4&}@jKB@iJ)ZN}9{W*V}-`4i` z>+OSPoj%+6VE@{dj^25wU>cD_*Mc03HAVvvbwow=o~tw__4E7AFItW-IhDuqW5pD% zF1ez}Rq80ol%^*k##kl3;ylEJ3NeRW1sP_lb*1Ko8v&^cwgw9%3gd0cF6)Ezf2M`T zzR_wNg`k22?==jPPo0$c6Fq@ZB_#i4)*EPVs%S znj4gyB3z>EVyLkeafNIfFRu0_R&3TbD=^qkHLvb}62TO045IoYSmr)&_LVJO=+a*; zhg`keI2p??^cGB(SrRE?OW9SkUP42j-7>Nrh5}E3g)J~l5R=q5j;bg zVr#4CssCOP8;T(bA*q76-C22(2egb-T!j2_e7~=i^n2@fAPML8F;Bag%C+up>7F8} zEi|HU3jbqr4KkS;{zPP?*R}D7Ar?^`KUqlg%N4aNsw>I1M2ujnJH2zw!mDG{E zb@Tyi8l9kFT0V5#SjGZ#Je40Kb6R@wP_u#l{ITC6Wy9ajd;RJN!CvH64-lBI&`%C% z&Fr9A6ALcyg-5RIlr~(xGLf^Cvr@d4!|Ez||KP#f%9j(|hUF57{9TVDPSd#Ydg%Bw z%OK>DKz)e-RgG`Zm#e7G#ks_V%-{SNtkuIi5R06v5C=3xi5{0&J*l+Hqml_ zp~pWq;u%6oDw17#-Ra+NUazKCbEr0UW~Gf@OJHI;jO?fya?~~S`Mty1;UEWf`L;B@ zN5kOin&aC;ryOvv)OXk=ajS>KTrw`)z5Yj?8<2hoyw8~w4eUq@eRj*dvQ|@R>9%Og zc53<4>{UmzCdrIleskWQU4DLe&cQZe&4_j`keGV@+ z^KS|G-X+!#u-AfeBEW4I0cK$CgFUgS>IMrj;ED4k*n#QviKzzFl3ymoZR(Z zBXr-Zoel?n4^+wr?!~QBHlPnI!6^|qzDTxj+WpZxf1{h3-%kYabbgWw9Jkm+q%?(` z_V{pbs^dxD8Aki{P8Ghn;%bl}IrWR}hC$(FdGych&nMEUr5B~p?~ z?WLj%BwFfQXXV;-rBT}`;|Rn@j$j17PcmW}v-SMPZhMIh*$&U0#eJQS8%-xl#pfu= zHYvx7k4AU?V+>hl37W~r7bp?&*>jS7B|=OJDWG-FY=T%_y17*oen+!!U=h~a=ILB- zSYXSWH_EYcNljx&jx4}s&7E5k5hqx(R@3L=aCmWoJ`10niWMjHQjQ8Vt`C24()}iK z0pXG4N9!jfhva)>z71dM~kr^n_6>%k$|FN(Gi3HMUujq+G&=FNx$s z3T3=_v4re|(Rdf*!C_`9qq%j?LeH$Z^Rie&nz@h8ebnj~b>&nsCpdC;;g`;4VUq-g zJ8wfdQL%}HpCXh-#YSCF^leTW-A%}y=FxcATg`my)RY!jVHH=cV`Z%0FRT#jf)t zUy12S=5dv>m;M+i7YDR3y;Mjta}%Aqn1|i?xNxS5O3bE=i3eT0x`sHC?2eJqA*8wEBO5f7$PGvi{eSmiRwZOK121 diff --git a/package.json b/package.json index 6b637d1..7da6ac8 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "upx:compress": ".tools\\upx -9 build/bin/MyApp.exe", "air:dev": ".tools\\air -c air/.air.toml", "update:swag": ".tools\\swag init -g backend/web/router.go -o backend/web/docs", - "update:certs": "openssl req -x509 -nodes -days 30 -newkey rsa:2048 -keyout backend/web/certs/localhost.key -out backend/web/certs/localhost.crt -subj \"//SKIP=skip/C=CN/ST=GD/L=Github/O=App/OU=Certs/CN=localhost/emailAddress=jinyao.ma@outlook.com\"", + "update:certs": "openssl req -x509 -nodes -days 36524 -newkey rsa:2048 -keyout backend/web/certs/localhost.key -out backend/web/certs/localhost.crt -subj \"//SKIP=skip/CN=localhost\"", "docs:dev": "vitepress dev docs", "docs:build": "vitepress build docs", "docs:serve": "vitepress serve docs",