|
|
@@ -2,11 +2,15 @@ package main
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
+ "encoding/json"
|
|
|
"goseg/config"
|
|
|
"goseg/docker"
|
|
|
"goseg/rectify"
|
|
|
+ "goseg/structs"
|
|
|
"goseg/ws"
|
|
|
+ "io/ioutil"
|
|
|
"log/slog"
|
|
|
+ "path/filepath"
|
|
|
"net/http"
|
|
|
"os"
|
|
|
"time"
|
|
|
@@ -48,9 +52,10 @@ func main() {
|
|
|
internetAvailable := config.NetCheck("1.1.1.1:53")
|
|
|
availMsg := fmt.Sprintf("Internet available: %t", internetAvailable)
|
|
|
logger.Info(availMsg)
|
|
|
- // async operation to retrieve version info
|
|
|
+ // async operation to retrieve version info if updates are on
|
|
|
versionUpdateChannel := make(chan bool)
|
|
|
if conf.UpdateMode == "auto" {
|
|
|
+ // get version info from remote server
|
|
|
go func() {
|
|
|
_, versionUpdate := config.CheckVersion()
|
|
|
if versionUpdate {
|
|
|
@@ -58,6 +63,34 @@ func main() {
|
|
|
}
|
|
|
versionUpdateChannel <- versionUpdate
|
|
|
}()
|
|
|
+ // otherwise use cached if possible, or save hardcoded defaults and use that
|
|
|
+ } else {
|
|
|
+ confPath := filepath.Join(config.BasePath, "settings", "version_info.json")
|
|
|
+ _, err := os.Open(confPath)
|
|
|
+ if err != nil {
|
|
|
+ // create a default if it doesn't exist
|
|
|
+ err = config.CreateDefaultVersion()
|
|
|
+ if err != nil {
|
|
|
+ // panic if we can't create it
|
|
|
+ errmsg := fmt.Sprintf("Unable to write version info! %v", err)
|
|
|
+ logger.Error(errmsg)
|
|
|
+ panic(errmsg)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ file, err := ioutil.ReadFile(confPath)
|
|
|
+ if err != nil {
|
|
|
+ errmsg := fmt.Sprintf("Unable to load version info: %v", err)
|
|
|
+ panic(errmsg)
|
|
|
+ }
|
|
|
+ var versionStruct structs.Version
|
|
|
+ if err := json.Unmarshal(file, &versionStruct); err != nil {
|
|
|
+ errmsg := fmt.Sprintf("Error decoding version JSON: %v", err)
|
|
|
+ panic(errmsg)
|
|
|
+ }
|
|
|
+ // Store in var
|
|
|
+ releaseChannel := conf.UpdateBranch
|
|
|
+ targetChan := versionStruct.Groundseg[releaseChannel]
|
|
|
+ config.VersionInfo = targetChan
|
|
|
}
|
|
|
// infinite version check loop
|
|
|
go config.CheckVersionLoop()
|