import (
"encoding/json"
- "fmt"
"os"
"os/user"
"path"
"path/filepath"
- "regexp"
"strings"
"github.com/iotbzh/xds-server/lib/common"
)
type SyncThingConf struct {
- BinDir string `json:"binDir"`
- Home string `json:"home"`
- GuiAddress string `json:"gui-address"`
- GuiAPIKey string `json:"gui-apikey"`
+ BinDir string `json:"binDir"`
+ Home string `json:"home"`
+ GuiAddress string `json:"gui-address"`
+ GuiAPIKey string `json:"gui-apikey"`
+ RescanIntervalS int `json:"rescanIntervalS"`
}
type FileConfig struct {
WebAppDir string `json:"webAppDir"`
ShareRootDir string `json:"shareRootDir"`
- SdkRootDir string `json:"sdkRootDir"`
+ SdkRootDir string `json:"sdkRootDir"`
HTTPPort string `json:"httpPort"`
SThgConf *SyncThingConf `json:"syncthing"`
LogsDir string `json:"logsDir"`
&fCfg.ShareRootDir,
&fCfg.SdkRootDir,
&fCfg.LogsDir,
- &fCfg.SThgConf.Home} {
+ &fCfg.SThgConf.Home,
+ &fCfg.SThgConf.BinDir} {
- rep, err := resolveEnvVar(*field)
- if err != nil {
+ var err error
+ if *field, err = common.ResolveEnvVar(*field); err != nil {
return err
}
- *field = path.Clean(rep)
}
-
+
// Config file settings overwrite default config
if fCfg.WebAppDir != "" {
return nil
}
-
-// resolveEnvVar Resolved environment variable regarding the syntax ${MYVAR}
-func resolveEnvVar(s string) (string, error) {
- re := regexp.MustCompile("\\${(.*)}")
- vars := re.FindAllStringSubmatch(s, -1)
- res := s
- for _, v := range vars {
- val := os.Getenv(v[1])
- if val == "" {
- return res, fmt.Errorf("ERROR: %s env variable not defined", v[1])
- }
-
- rer := regexp.MustCompile("\\${" + v[1] + "}")
- res = rer.ReplaceAllString(res, val)
- }
-
- return res, nil
-}