ソースを参照

move version config

reid 2 年 前
コミット
4b57b790bc
2 ファイル変更111 行追加97 行削除
  1. 1 97
      config/config.go
  2. 110 0
      config/version.go

+ 1 - 97
config/config.go

@@ -8,7 +8,6 @@ import (
 	"io/ioutil"
 	"log/slog"
 	"net"
-	"net/http"
 	"os"
 	"path/filepath"
 	"runtime"
@@ -23,8 +22,6 @@ var (
 	Architecture       = getArchitecture()
 	DebugMode          = false
 	Ready              = false
-	VersionServerReady = false
-	VersionInfo        structs.Channel
 	GSContainers       = make(map[string]structs.ContainerState)
 	checkInterval      = 5 * time.Minute
 	confMutex          sync.Mutex
@@ -184,97 +181,4 @@ func NetCheck(netCheck string) bool {
 		_ = conn.Close()
 	}
 	return internet
-}
-
-// check the version server and return struct
-func CheckVersion() (structs.Channel, bool) {
-	versMutex.Lock()
-	defer versMutex.Unlock()
-	conf := Conf()
-	releaseChannel := conf.UpdateBranch
-	const retries = 10
-	const delay = time.Second
-	url := globalConfig.UpdateUrl
-	var fetchedVersion structs.Version
-	for i := 0; i < retries; i++ {
-		resp, err := http.Get(url)
-		if err != nil {
-			errmsg := fmt.Sprintf("Unable to connect to update server: %v", err)
-			logger.Warn(errmsg)
-			if i < retries-1 {
-				time.Sleep(delay)
-				continue
-			} else {
-				VersionServerReady = false
-				return VersionInfo, false
-			}
-		}
-		// read the body bytes
-		body, err := ioutil.ReadAll(resp.Body)
-		resp.Body.Close()
-		if err != nil {
-			errmsg := fmt.Sprintf("Error reading version info: %v", err)
-			logger.Warn(errmsg)
-			if i < retries-1 {
-				time.Sleep(delay)
-				continue
-			} else {
-				VersionServerReady = false
-				return VersionInfo, false
-			}
-		}
-		// unmarshal values into Version struct
-		err = json.Unmarshal(body, &fetchedVersion)
-		if err != nil {
-			errmsg := fmt.Sprintf("Error unmarshalling JSON: %v", err)
-			logger.Warn(errmsg)
-			if i < retries-1 {
-				time.Sleep(delay)
-				continue
-			} else {
-				VersionServerReady = false
-				return VersionInfo, false
-			}
-		}
-		VersionInfo = fetchedVersion.Groundseg[releaseChannel]
-		// debug: re-marshal and write the entire fetched version to disk
-		confPath := filepath.Join(BasePath, "settings", "version_info.json")
-		file, err := os.Create(confPath)
-		if err != nil {
-			errmsg := fmt.Sprintf("Failed to create file: %v", err)
-			logger.Error(errmsg)
-			VersionServerReady = false
-			return VersionInfo, false
-		}
-		defer file.Close()
-		encoder := json.NewEncoder(file)
-		encoder.SetIndent("", "    ")
-		if err := encoder.Encode(&fetchedVersion); err != nil {
-			errmsg := fmt.Sprintf("Failed to write JSON: %v", err)
-			logger.Error(errmsg)
-		}
-		VersionServerReady = true
-		return VersionInfo, true
-	}
-	VersionServerReady = false
-	return VersionInfo, false
-}
-
-func CheckVersionLoop() {
-	ticker := time.NewTicker(checkInterval)
-	conf := Conf()
-	releaseChannel := conf.UpdateBranch
-	for {
-		select {
-		case <-ticker.C:
-			latestVersion, _ := CheckVersion()
-			currentChannelVersion := VersionInfo
-			latestChannelVersion := latestVersion
-			if latestChannelVersion != currentChannelVersion {
-				fmt.Printf("New version available in %s channel! Current: %+v, Latest: %+v\n", releaseChannel, currentChannelVersion, latestChannelVersion)
-				VersionInfo = latestVersion
-				// Handle the update logic here
-			}
-		}
-	}
-}
+}

+ 110 - 0
config/version.go

@@ -0,0 +1,110 @@
+package config
+
+import (
+	"encoding/json"
+	"fmt"
+	"goseg/structs"
+	"io/ioutil"
+	"net/http"
+	"os"
+	"path/filepath"
+	"time"
+)
+
+var (
+	VersionServerReady = false
+	VersionInfo        structs.Channel
+)
+
+// check the version server and return struct
+func CheckVersion() (structs.Channel, bool) {
+	versMutex.Lock()
+	defer versMutex.Unlock()
+	conf := Conf()
+	releaseChannel := conf.UpdateBranch
+	const retries = 10
+	const delay = time.Second
+	url := globalConfig.UpdateUrl
+	var fetchedVersion structs.Version
+	for i := 0; i < retries; i++ {
+		resp, err := http.Get(url)
+		if err != nil {
+			errmsg := fmt.Sprintf("Unable to connect to update server: %v", err)
+			logger.Warn(errmsg)
+			if i < retries-1 {
+				time.Sleep(delay)
+				continue
+			} else {
+				VersionServerReady = false
+				return VersionInfo, false
+			}
+		}
+		// read the body bytes
+		body, err := ioutil.ReadAll(resp.Body)
+		resp.Body.Close()
+		if err != nil {
+			errmsg := fmt.Sprintf("Error reading version info: %v", err)
+			logger.Warn(errmsg)
+			if i < retries-1 {
+				time.Sleep(delay)
+				continue
+			} else {
+				VersionServerReady = false
+				return VersionInfo, false
+			}
+		}
+		// unmarshal values into Version struct
+		err = json.Unmarshal(body, &fetchedVersion)
+		if err != nil {
+			errmsg := fmt.Sprintf("Error unmarshalling JSON: %v", err)
+			logger.Warn(errmsg)
+			if i < retries-1 {
+				time.Sleep(delay)
+				continue
+			} else {
+				VersionServerReady = false
+				return VersionInfo, false
+			}
+		}
+		VersionInfo = fetchedVersion.Groundseg[releaseChannel]
+		// debug: re-marshal and write the entire fetched version to disk
+		confPath := filepath.Join(BasePath, "settings", "version_info.json")
+		file, err := os.Create(confPath)
+		if err != nil {
+			errmsg := fmt.Sprintf("Failed to create file: %v", err)
+			logger.Error(errmsg)
+			VersionServerReady = false
+			return VersionInfo, false
+		}
+		defer file.Close()
+		encoder := json.NewEncoder(file)
+		encoder.SetIndent("", "    ")
+		if err := encoder.Encode(&fetchedVersion); err != nil {
+			errmsg := fmt.Sprintf("Failed to write JSON: %v", err)
+			logger.Error(errmsg)
+		}
+		VersionServerReady = true
+		return VersionInfo, true
+	}
+	VersionServerReady = false
+	return VersionInfo, false
+}
+
+func CheckVersionLoop() {
+	ticker := time.NewTicker(checkInterval)
+	conf := Conf()
+	releaseChannel := conf.UpdateBranch
+	for {
+		select {
+		case <-ticker.C:
+			latestVersion, _ := CheckVersion()
+			currentChannelVersion := VersionInfo
+			latestChannelVersion := latestVersion
+			if latestChannelVersion != currentChannelVersion {
+				fmt.Printf("New version available in %s channel! Current: %+v, Latest: %+v\n", releaseChannel, currentChannelVersion, latestChannelVersion)
+				VersionInfo = latestVersion
+				// Handle the update logic here
+			}
+		}
+	}
+}