X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=lib%2Fxdsconfig%2Ffileconfig.go;h=57e7043f0cfd5404bbafb83e713ff40655f88592;hb=5dc2ff003106f0ced38caadb06033f24c792f9b9;hp=dafb034718cd159860fc4f94e0ec9dbb1f7cacbe;hpb=985b32b78da6e5ea008e45f6cf2df140df350ea9;p=src%2Fxds%2Fxds-server.git diff --git a/lib/xdsconfig/fileconfig.go b/lib/xdsconfig/fileconfig.go index dafb034..57e7043 100644 --- a/lib/xdsconfig/fileconfig.go +++ b/lib/xdsconfig/fileconfig.go @@ -1,3 +1,20 @@ +/* + * Copyright (C) 2017-2018 "IoT.bzh" + * Author Sebastien Douheret + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package xdsconfig import ( @@ -8,18 +25,18 @@ import ( "path/filepath" "strings" - common "github.com/iotbzh/xds-common/golib" + common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git" ) const ( - // ConfigDir Directory in user HOME directory where xds config will be saved - ConfigDir = ".xds-server" // GlobalConfigFilename Global config filename - GlobalConfigFilename = "config.json" + GlobalConfigFilename = "server-config.json" // ServerDataFilename Server data filename ServerDataFilename = "server-data.xml" // FoldersConfigFilename Folders config filename FoldersConfigFilename = "server-config_folders.xml" + // TargetsConfigFilename Targets config filename + TargetsConfigFilename = "server-config_targets.xml" ) // SyncThingConf definition @@ -31,34 +48,36 @@ type SyncThingConf struct { RescanIntervalS int `json:"rescanIntervalS"` } -// FileConfig is the JSON structure of xds-server config file (config.json) +// FileConfig is the JSON structure of xds-server config file (server-config.json) type FileConfig struct { - WebAppDir string `json:"webAppDir"` - ShareRootDir string `json:"shareRootDir"` - SdkRootDir string `json:"sdkRootDir"` - HTTPPort string `json:"httpPort"` - SThgConf *SyncThingConf `json:"syncthing"` - LogsDir string `json:"logsDir"` + WebAppDir string `json:"webAppDir"` + ShareRootDir string `json:"shareRootDir"` + SdkScriptsDir string `json:"sdkScriptsDir"` + XdsUtilsScriptsDir string `json:"xdsUtilsScriptsDir"` + SdkDbUpdate string `json:"sdkDbUpdate"` + HTTPPort string `json:"httpPort"` + SThgConf *SyncThingConf `json:"syncthing"` + LogsDir string `json:"logsDir"` + XdsSrvUpdateTime string `json:"xdsSrvUpdateTime"` } // readGlobalConfig reads configuration from a config file. // Order to determine which config file is used: // 1/ from command line option: "--config myConfig.json" -// 2/ $HOME/.xds-server/config.json file -// 3/ /etc/xds-server/config.json file -// 4/ /config.json file +// 2/ $HOME/.xds/server/server-config.json file +// 3/ /etc/xds/server/server-config.json file +// 4/ /server-config.json file func readGlobalConfig(c *Config, confFile string) error { searchIn := make([]string, 0, 3) if confFile != "" { searchIn = append(searchIn, confFile) } - if usr, err := user.Current(); err == nil { - searchIn = append(searchIn, path.Join(usr.HomeDir, ConfigDir, - GlobalConfigFilename)) + if _, err := user.Current(); err == nil { + searchIn = append(searchIn, path.Join(ConfigRootDir(), GlobalConfigFilename)) } - searchIn = append(searchIn, "/etc/xds-server/config.json") + searchIn = append(searchIn, "/etc/xds/server/server-config.json") exePath := os.Args[0] ee, _ := os.Executable() @@ -71,7 +90,7 @@ func readGlobalConfig(c *Config, confFile string) error { exePath = filepath.Dir(exeAbsPath) } } - searchIn = append(searchIn, path.Join(exePath, "config.json")) + searchIn = append(searchIn, path.Join(exePath, "server-config.json")) var cFile *string for _, p := range searchIn { @@ -96,22 +115,17 @@ func readGlobalConfig(c *Config, confFile string) error { return err } - // Support environment variables (IOW ${MY_ENV_VAR} syntax) in config.json + // Support environment variables (IOW ${MY_ENV_VAR} syntax) in server-config.json vars := []*string{ &fCfg.WebAppDir, &fCfg.ShareRootDir, - &fCfg.SdkRootDir, - &fCfg.LogsDir} + &fCfg.SdkScriptsDir, + &fCfg.XdsUtilsScriptsDir, + &fCfg.LogsDir, + &fCfg.XdsSrvUpdateTime} if fCfg.SThgConf != nil { vars = append(vars, &fCfg.SThgConf.Home, &fCfg.SThgConf.BinDir) } - for _, field := range vars { - var err error - if *field, err = common.ResolveEnvVar(*field); err != nil { - return err - } - } - // Use config file settings else use default config if fCfg.WebAppDir == "" { fCfg.WebAppDir = c.FileConf.WebAppDir @@ -119,8 +133,14 @@ func readGlobalConfig(c *Config, confFile string) error { if fCfg.ShareRootDir == "" { fCfg.ShareRootDir = c.FileConf.ShareRootDir } - if fCfg.SdkRootDir == "" { - fCfg.SdkRootDir = c.FileConf.SdkRootDir + if fCfg.SdkScriptsDir == "" { + fCfg.SdkScriptsDir = c.FileConf.SdkScriptsDir + } + if fCfg.XdsUtilsScriptsDir == "" { + fCfg.XdsUtilsScriptsDir = c.FileConf.XdsUtilsScriptsDir + } + if fCfg.SdkDbUpdate == "" { + fCfg.SdkDbUpdate = c.FileConf.SdkDbUpdate } if fCfg.HTTPPort == "" { fCfg.HTTPPort = c.FileConf.HTTPPort @@ -128,6 +148,16 @@ func readGlobalConfig(c *Config, confFile string) error { if fCfg.LogsDir == "" { fCfg.LogsDir = c.FileConf.LogsDir } + if fCfg.XdsSrvUpdateTime == "" { + fCfg.XdsSrvUpdateTime = c.FileConf.XdsSrvUpdateTime + } + + for _, field := range vars { + var err error + if *field, err = common.ResolveEnvVar(*field); err != nil { + return err + } + } // Resolve webapp dir (support relative or full path) fCfg.WebAppDir = strings.Trim(fCfg.WebAppDir, " ") @@ -149,19 +179,20 @@ func readGlobalConfig(c *Config, confFile string) error { } func configFilenameGet(cfgFile string) (string, error) { - usr, err := user.Current() - if err != nil { - return "", err - } - return path.Join(usr.HomeDir, ConfigDir, cfgFile), nil + return path.Join(ConfigRootDir(), cfgFile), nil } -// FoldersConfigFilenameGet +// FoldersConfigFilenameGet Return the FoldersConfig filename func FoldersConfigFilenameGet() (string, error) { return configFilenameGet(FoldersConfigFilename) } -// ServerDataFilenameGet +// TargetsConfigFilenameGet Return the TargetsConfig filename +func TargetsConfigFilenameGet() (string, error) { + return configFilenameGet(TargetsConfigFilename) +} + +// ServerDataFilenameGet Return the ServerData filename func ServerDataFilenameGet() (string, error) { return configFilenameGet(ServerDataFilename) }