diff --git a/.github/workflows/push_image.yml b/.github/workflows/push_image.yml index 22802cbf..dbcc776c 100644 --- a/.github/workflows/push_image.yml +++ b/.github/workflows/push_image.yml @@ -56,3 +56,4 @@ jobs: platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} + diff --git a/Makefile b/Makefile index 7c2f0d6d..d5987872 100644 --- a/Makefile +++ b/Makefile @@ -35,3 +35,6 @@ help: @echo " make help - 显示此帮助信息" .PHONY: all build clean help + +local.run: + go mod vendor&& npm --prefix ./ui install && npm --prefix ./ui run build && go run main.go serve --http 127.0.0.1:8090 diff --git a/README.md b/README.md index 274ceb15..af94b0b1 100644 --- a/README.md +++ b/README.md @@ -55,8 +55,7 @@ mkdir -p ~/.certimate && cd ~/.certimate && curl -O https://raw.githubuserconten ```bash git clone EMAIL:usual2970/certimate.git cd certimate -go mod vendor -go run main.go serve +make local.run ``` ## 二、使用 diff --git a/README_EN.md b/README_EN.md index b4f7c34e..9cc42453 100644 --- a/README_EN.md +++ b/README_EN.md @@ -54,8 +54,7 @@ mkdir -p ~/.certimate && cd ~/.certimate && curl -O https://raw.githubuserconten ```bash git clone EMAIL:usual2970/certimate.git cd certimate -go mod vendor -go run main.go serve +make local.run ``` ## Usage diff --git a/internal/deployer/qiniu_cdn.go b/internal/deployer/qiniu_cdn.go index f6e6b167..fa74a0cb 100644 --- a/internal/deployer/qiniu_cdn.go +++ b/internal/deployer/qiniu_cdn.go @@ -76,7 +76,8 @@ func (d *QiniuCDNDeployer) Deploy(ctx context.Context) error { } func (d *QiniuCDNDeployer) enableHttps(certId string) error { - path := fmt.Sprintf("/domain/%s/sslize", getDeployString(d.option.DeployConfig, "domain")) + domain := d.option.DeployConfig.GetDomain() + path := fmt.Sprintf("/domain/%s/sslize", domain) body := &qiniuModifyDomainCertReq{ CertID: certId, @@ -102,7 +103,9 @@ type qiniuDomainInfo struct { } func (d *QiniuCDNDeployer) getDomainInfo() (*qiniuDomainInfo, error) { - path := fmt.Sprintf("/domain/%s", getDeployString(d.option.DeployConfig, "domain")) + domain := d.option.DeployConfig.GetDomain() + + path := fmt.Sprintf("/domain/%s", domain) res, err := d.req(qiniuGateway+path, http.MethodGet, nil) if err != nil { @@ -164,7 +167,8 @@ type qiniuModifyDomainCertReq struct { } func (d *QiniuCDNDeployer) modifyDomainCert(certId string) error { - path := fmt.Sprintf("/domain/%s/httpsconf", getDeployString(d.option.DeployConfig, "domain")) + domain := d.option.DeployConfig.GetDomain() + path := fmt.Sprintf("/domain/%s/httpsconf", domain) body := &qiniuModifyDomainCertReq{ CertID: certId, diff --git a/internal/domain/domains.go b/internal/domain/domains.go index bb481ae3..78acbb3d 100644 --- a/internal/domain/domains.go +++ b/internal/domain/domains.go @@ -1,5 +1,7 @@ package domain +import "strings" + type ApplyConfig struct { Email string `json:"email"` Access string `json:"access"` @@ -16,6 +18,7 @@ type DeployConfig struct { Config map[string]any `json:"config"` } + // 以字符串形式获取配置项。 // // 入参: @@ -82,6 +85,25 @@ func (dc *DeployConfig) GetConfigOrDefaultAsBool(key string, defaultValue bool) return defaultValue } +// GetDomain returns the domain from the deploy config +// if the domain is a wildcard domain, and wildcard is true, return the wildcard domain +func (dc *DeployConfig) GetDomain(wildcard ...bool) string { + val := dc.GetConfigAsString("domain") + if val == "" { + return "" + } + + if !strings.HasPrefix(val, "*") { + return val + } + + if len(wildcard) > 0 && wildcard[0] { + return val + } + + return strings.TrimPrefix(val, "*") +} + type KV struct { Key string `json:"key"` Value string `json:"value"` diff --git a/main.go b/main.go index 7a0bf641..39758d42 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,7 @@ package main import ( - "github.com/usual2970/certimate/ui" + "flag" "log" "os" "strings" @@ -16,6 +16,7 @@ import ( "github.com/usual2970/certimate/internal/domains" "github.com/usual2970/certimate/internal/routes" "github.com/usual2970/certimate/internal/utils/app" + "github.com/usual2970/certimate/ui" _ "time/tzdata" ) @@ -25,6 +26,12 @@ func main() { isGoRun := strings.HasPrefix(os.Args[0], os.TempDir()) + // 获取启动命令中的http参数 + var httpFlag string + flag.StringVar(&httpFlag, "http", "127.0.0.1:8090", "HTTP server address") + // "serve"影响解析 + _ = flag.CommandLine.Parse(os.Args[2:]) + migratecmd.MustRegister(app, app.RootCmd, migratecmd.Config{ // enable auto creation of migration files when making collection changes in the Admin UI // (the isGoRun check is to enable it only during development) @@ -47,6 +54,9 @@ func main() { return nil }) + defer log.Println("Exit!") + log.Printf("Visit the website: http://%s", httpFlag) + if err := app.Start(); err != nil { log.Fatal(err) } diff --git a/ui/src/domain/version.ts b/ui/src/domain/version.ts index 9585a43e..1a412f6a 100644 --- a/ui/src/domain/version.ts +++ b/ui/src/domain/version.ts @@ -1 +1 @@ -export const version = "Certimate v0.2.5"; +export const version = "Certimate v0.2.6";