Bläddra i källkod

更新标志解析和版本号

将标志解析函数改为小写,修正了标志变量名错误,并增加了环境变量初始化。重构了主函数以添加错误处理和条件启动HTTP服务器。同时,更新了项目版本号到v1.0.0。
SongZihuan 3 månader sedan
förälder
incheckning
2cc1ad6dc7
7 ändrade filer med 79 tillägg och 16 borttagningar
  1. 1 1
      VERSION
  2. 0 0
      src/cmd/version1/main.go
  3. 1 1
      src/flagparser/data.go
  4. 36 0
      src/flagparser/env.go
  5. 3 3
      src/flagparser/flag.go
  6. 17 0
      src/flagparser/main.go
  7. 21 11
      src/mainfunc/version1.go

+ 1 - 1
VERSION

@@ -1 +1 @@
-v0.4.0
+v1.0.0

+ 0 - 0
src/cmd/v1/main.go → src/cmd/version1/main.go


+ 1 - 1
src/flagparser/data.go

@@ -13,7 +13,7 @@ var HttpsCertDir = "./ssl-certs"
 var HttpsAliyunKey string
 var HttpsAliyunSecret string
 var DryRun = false
-var Verbose = false
+var Version = false
 
 func Print() {
 	fmt.Println("HttpAddress:", HttpAddress)

+ 36 - 0
src/flagparser/env.go

@@ -0,0 +1,36 @@
+package flagparser
+
+import "os"
+
+const ENV_PREFIX = "DH_"
+const HTTP_PREFIX = "HTTP_"
+const HTTPS_PREFIX = "HTTPS_"
+const ALIYUN_PREFIX = "ALIYUN_"
+
+const (
+	HTTP_ADDRESS = ENV_PREFIX + HTTP_PREFIX + "ADDRESS"
+
+	HTTPS_ADDRESS       = ENV_PREFIX + HTTPS_PREFIX + "ADDRESS"
+	HTTPS_DOMAIN        = ENV_PREFIX + HTTPS_PREFIX + "DOMAIN"
+	HTTPS_EMAIL         = ENV_PREFIX + HTTPS_PREFIX + "EMAIL"
+	HTTPS_CERT_DIR      = ENV_PREFIX + HTTPS_PREFIX + "CERT_DIR"
+	HTTPS_ALIYUN_KEY    = ENV_PREFIX + HTTPS_PREFIX + ALIYUN_PREFIX + "KEY"
+	HTTPS_ALIYUN_SECRET = ENV_PREFIX + HTTPS_PREFIX + ALIYUN_PREFIX + "SECRET"
+)
+
+func initEnv() error {
+	_HttpAddress := os.Getenv(HTTP_ADDRESS)
+	if _HttpAddress != "" {
+		HttpAddress = _HttpAddress
+	}
+	HttpsAddress = os.Getenv(HTTPS_ADDRESS)
+	HttpsDomain = os.Getenv(HTTPS_DOMAIN)
+	HttpsEmail = os.Getenv(HTTPS_EMAIL)
+	_HttpsCertDir := os.Getenv(HTTPS_CERT_DIR)
+	if _HttpsCertDir != "" {
+		HttpsCertDir = _HttpsCertDir
+	}
+	HttpsAliyunKey = os.Getenv(HTTPS_ALIYUN_KEY)
+	HttpsAliyunSecret = os.Getenv(HTTPS_ALIYUN_SECRET)
+	return nil
+}

+ 3 - 3
src/flagparser/flag.go

@@ -5,7 +5,7 @@ import (
 	"fmt"
 )
 
-func InitFlag() (err error) {
+func initFlag() (err error) {
 	defer func() {
 		e := recover()
 		if e != nil {
@@ -27,8 +27,8 @@ func InitFlag() (err error) {
 
 	flag.BoolVar(&DryRun, "dry-run", DryRun, "only parser the options")
 
-	flag.BoolVar(&Verbose, "version", Verbose, "show the version")
-	flag.BoolVar(&Verbose, "v", Verbose, "show the version")
+	flag.BoolVar(&Version, "version", Version, "show the version")
+	flag.BoolVar(&Version, "v", Version, "show the version")
 
 	flag.Parse()
 

+ 17 - 0
src/flagparser/main.go

@@ -0,0 +1,17 @@
+package flagparser
+
+import "fmt"
+
+func InitFlagParser() error {
+	err := initEnv()
+	if err != nil {
+		return fmt.Errorf("init env error: %v", err)
+	}
+
+	err = initFlag()
+	if err != nil {
+		return fmt.Errorf("init flag error: %v", err)
+	}
+
+	return nil
+}

+ 21 - 11
src/mainfunc/v1.go → src/mainfunc/version1.go

@@ -12,14 +12,21 @@ import (
 )
 
 func MainV1() (exitcode int) {
+	defer func() {
+		if recover() != nil {
+			exitcode = 1
+			return
+		}
+	}()
+
 	fmt.Printf("")
-	err := flagparser.InitFlag()
+	err := flagparser.InitFlagParser()
 	if err != nil {
 		fmt.Printf("init flag fail: %s\n", err.Error())
 		return 1
 	}
 
-	if flagparser.Verbose {
+	if flagparser.Version {
 		fmt.Printf("Version: %s\n", resource.Version)
 		return 0
 	}
@@ -42,12 +49,6 @@ func MainV1() (exitcode int) {
 	}
 	defer signalchan.CloseSignal()
 
-	err = httpserver.InitHttpServer()
-	if err != nil {
-		fmt.Printf("init http server fail: %s\n", err.Error())
-		return 1
-	}
-
 	var httpchan = make(chan error)
 	var httpsslchan = make(chan error)
 	defer func() {
@@ -55,9 +56,17 @@ func MainV1() (exitcode int) {
 		close(httpsslchan)
 	}()
 
-	go func() {
-		httpchan <- httpserver.RunServer()
-	}()
+	if flagparser.HttpAddress != "" {
+		err = httpserver.InitHttpServer()
+		if err != nil {
+			fmt.Printf("init http server fail: %s\n", err.Error())
+			return 1
+		}
+
+		go func() {
+			httpchan <- httpserver.RunServer()
+		}()
+	}
 
 	if flagparser.HttpsAddress != "" {
 		err = httpsslserver.InitHttpSSLServer()
@@ -90,4 +99,5 @@ func MainV1() (exitcode int) {
 		fmt.Printf("Https Server error closed: %s\n", err.Error())
 		return 1
 	}
+	// 后续不可达
 }