aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/apiv1/agent.go2
-rw-r--r--lib/model/folder.go4
-rw-r--r--lib/syncthing/stfolder.go2
-rw-r--r--lib/webserver/server.go10
-rw-r--r--lib/xdsconfig/config.go26
-rw-r--r--lib/xdsconfig/fileconfig.go36
-rw-r--r--main.go8
7 files changed, 47 insertions, 41 deletions
diff --git a/lib/apiv1/agent.go b/lib/apiv1/agent.go
index d8feb61..b693608 100644
--- a/lib/apiv1/agent.go
+++ b/lib/apiv1/agent.go
@@ -27,7 +27,7 @@ func (s *APIService) getXdsAgentInfo(c *gin.Context) {
res := XDSAgentInfo{}
tarballURL := "assets/xds-agent-tarballs"
- tarballDir := filepath.Join(s.cfg.WebAppDir, "assets", "xds-agent-tarballs")
+ tarballDir := filepath.Join(s.cfg.FileConf.WebAppDir, "assets", "xds-agent-tarballs")
if common.Exists(tarballDir) {
files, err := filepath.Glob(path.Join(tarballDir, "xds-agent_*.zip"))
if err != nil {
diff --git a/lib/model/folder.go b/lib/model/folder.go
index fa94409..c73accc 100644
--- a/lib/model/folder.go
+++ b/lib/model/folder.go
@@ -48,7 +48,7 @@ func (c *Folder) UpdateAll(newCfg xdsconfig.Config) error {
Label: f.Label,
RelativePath: f.RelativePath,
SyncThingID: f.SyncThingID,
- ShareRootDir: c.ShareRootDir,
+ ShareRootDir: c.FileConf.ShareRootDir,
}); err != nil {
return err
}
@@ -62,7 +62,7 @@ func (c *Folder) UpdateAll(newCfg xdsconfig.Config) error {
func (c *Folder) UpdateFolder(newFolder xdsconfig.FolderConfig) (xdsconfig.FolderConfig, error) {
// rootPath should not be empty
if newFolder.RootPath == "" {
- newFolder.RootPath = c.Conf.ShareRootDir
+ newFolder.RootPath = c.Conf.FileConf.ShareRootDir
}
// Sanity check of folder settings
diff --git a/lib/syncthing/stfolder.go b/lib/syncthing/stfolder.go
index e7ee0ec..661e19d 100644
--- a/lib/syncthing/stfolder.go
+++ b/lib/syncthing/stfolder.go
@@ -55,7 +55,7 @@ func (s *SyncThing) FolderChange(f xdsconfig.FolderConfig) error {
folder := config.FolderConfiguration{
ID: id,
Label: label,
- RawPath: filepath.Join(s.conf.ShareRootDir, f.RelativePath),
+ RawPath: filepath.Join(s.conf.FileConf.ShareRootDir, f.RelativePath),
}
if s.conf.FileConf.SThgConf.RescanIntervalS > 0 {
diff --git a/lib/webserver/server.go b/lib/webserver/server.go
index 4268b40..8fd7e44 100644
--- a/lib/webserver/server.go
+++ b/lib/webserver/server.go
@@ -100,12 +100,12 @@ func (s *Server) Serve() error {
*/
// Web Application (serve on / )
- idxFile := path.Join(s.cfg.WebAppDir, indexFilename)
+ idxFile := path.Join(s.cfg.FileConf.WebAppDir, indexFilename)
if _, err := os.Stat(idxFile); err != nil {
s.log.Fatalln("Web app directory not found, check/use webAppDir setting in config file: ", idxFile)
}
- s.log.Infof("Serve WEB app dir: %s", s.cfg.WebAppDir)
- s.router.Use(static.Serve("/", static.LocalFile(s.cfg.WebAppDir, true)))
+ s.log.Infof("Serve WEB app dir: %s", s.cfg.FileConf.WebAppDir)
+ s.router.Use(static.Serve("/", static.LocalFile(s.cfg.FileConf.WebAppDir, true)))
s.webApp = s.router.Group("/", s.serveIndexFile)
{
s.webApp.GET("/")
@@ -114,8 +114,8 @@ func (s *Server) Serve() error {
// Serve in the background
serveError := make(chan error, 1)
go func() {
- fmt.Printf("Web Server running on localhost:%s ...\n", s.cfg.HTTPPort)
- serveError <- http.ListenAndServe(":"+s.cfg.HTTPPort, s.router)
+ fmt.Printf("Web Server running on localhost:%s ...\n", s.cfg.FileConf.HTTPPort)
+ serveError <- http.ListenAndServe(":"+s.cfg.FileConf.HTTPPort, s.router)
}()
// Wait for stop, restart or error signals
diff --git a/lib/xdsconfig/config.go b/lib/xdsconfig/config.go
index 465620b..5ada35f 100644
--- a/lib/xdsconfig/config.go
+++ b/lib/xdsconfig/config.go
@@ -19,11 +19,8 @@ type Config struct {
Folders FoldersConfig `json:"folders"`
// Private (un-exported fields in REST GET /config route)
- FileConf FileConfig `json:"-"`
- WebAppDir string `json:"-"`
- HTTPPort string `json:"-"`
- ShareRootDir string `json:"-"`
- Log *logrus.Logger `json:"-"`
+ FileConf FileConfig `json:"-"`
+ Log *logrus.Logger `json:"-"`
}
// Config default values
@@ -31,6 +28,7 @@ const (
DefaultAPIVersion = "1"
DefaultPort = "8000"
DefaultShareDir = "/mnt/share"
+ DefaultSdkRootDir = "/xdt/sdk"
)
// Init loads the configuration on start-up
@@ -44,11 +42,13 @@ func Init(cliCtx *cli.Context, log *logrus.Logger) (*Config, error) {
VersionGitTag: cliCtx.App.Metadata["git-tag"].(string),
Builder: BuilderConfig{},
Folders: FoldersConfig{},
-
- WebAppDir: "webapp/dist",
- HTTPPort: DefaultPort,
- ShareRootDir: DefaultShareDir,
- Log: log,
+ FileConf: FileConfig{
+ WebAppDir: "webapp/dist",
+ ShareRootDir: DefaultShareDir,
+ SdkRootDir: DefaultSdkRootDir,
+ HTTPPort: DefaultPort,
+ },
+ Log: log,
}
// config file settings overwrite default config
@@ -58,12 +58,12 @@ func Init(cliCtx *cli.Context, log *logrus.Logger) (*Config, error) {
}
// Update location of shared dir if needed
- if !common.Exists(c.ShareRootDir) {
- if err := os.MkdirAll(c.ShareRootDir, 0770); err != nil {
+ if !common.Exists(c.FileConf.ShareRootDir) {
+ if err := os.MkdirAll(c.FileConf.ShareRootDir, 0770); err != nil {
return nil, fmt.Errorf("No valid shared directory found: %v", err)
}
}
- c.Log.Infoln("Share root directory: ", c.ShareRootDir)
+ c.Log.Infoln("Share root directory: ", c.FileConf.ShareRootDir)
if c.FileConf.LogsDir != "" && !common.Exists(c.FileConf.LogsDir) {
if err := os.MkdirAll(c.FileConf.LogsDir, 0770); err != nil {
diff --git a/lib/xdsconfig/fileconfig.go b/lib/xdsconfig/fileconfig.go
index 01bd4c9..99e5382 100644
--- a/lib/xdsconfig/fileconfig.go
+++ b/lib/xdsconfig/fileconfig.go
@@ -77,7 +77,6 @@ func updateConfigFromFile(c *Config, confFile string) error {
if err := json.NewDecoder(fd).Decode(&fCfg); err != nil {
return err
}
- c.FileConf = fCfg
// Support environment variables (IOW ${MY_ENV_VAR} syntax) in config.json
for _, field := range []*string{
@@ -94,30 +93,33 @@ func updateConfigFromFile(c *Config, confFile string) error {
}
}
- // Config file settings overwrite default config
-
- if fCfg.WebAppDir != "" {
- c.WebAppDir = strings.Trim(fCfg.WebAppDir, " ")
+ // Use config file settings else use default config
+ if fCfg.WebAppDir == "" {
+ fCfg.WebAppDir = c.FileConf.WebAppDir
+ }
+ if fCfg.ShareRootDir == "" {
+ fCfg.ShareRootDir = c.FileConf.ShareRootDir
}
- // Is it a full path ?
- if !strings.HasPrefix(c.WebAppDir, "/") && exePath != "" {
+ if fCfg.SdkRootDir == "" {
+ fCfg.SdkRootDir = c.FileConf.SdkRootDir
+ }
+ if fCfg.HTTPPort == "" {
+ fCfg.HTTPPort = c.FileConf.HTTPPort
+ }
+
+ // Resolve webapp dir (support relative or full path)
+ fCfg.WebAppDir = strings.Trim(fCfg.WebAppDir, " ")
+ if !strings.HasPrefix(fCfg.WebAppDir, "/") && exePath != "" {
// Check first from current directory
for _, rootD := range []string{cwd, exePath} {
- ff := path.Join(rootD, c.WebAppDir, "index.html")
+ ff := path.Join(rootD, fCfg.WebAppDir, "index.html")
if common.Exists(ff) {
- c.WebAppDir = path.Join(rootD, c.WebAppDir)
+ fCfg.WebAppDir = path.Join(rootD, fCfg.WebAppDir)
break
}
}
}
- if fCfg.ShareRootDir != "" {
- c.ShareRootDir = fCfg.ShareRootDir
- }
-
- if fCfg.HTTPPort != "" {
- c.HTTPPort = fCfg.HTTPPort
- }
-
+ c.FileConf = fCfg
return nil
}
diff --git a/main.go b/main.go
index 8d49bab..fd1480e 100644
--- a/main.go
+++ b/main.go
@@ -179,12 +179,16 @@ func xdsApp(cliCtx *cli.Context) error {
return cli.NewExitError(err, 2)
}
for _, stFld := range stCfg.Folders {
- relativePath := strings.TrimPrefix(stFld.RawPath, ctx.Config.ShareRootDir)
+ relativePath := strings.TrimPrefix(stFld.RawPath, ctx.Config.FileConf.ShareRootDir)
if relativePath == "" {
relativePath = stFld.RawPath
}
- newFld := xdsconfig.NewFolderConfig(stFld.ID, stFld.Label, ctx.Config.ShareRootDir, strings.TrimRight(relativePath, "/"), defaultSdk)
+ newFld := xdsconfig.NewFolderConfig(stFld.ID,
+ stFld.Label,
+ ctx.Config.FileConf.ShareRootDir,
+ strings.TrimRight(relativePath, "/"),
+ defaultSdk)
ctx.Config.Folders = ctx.Config.Folders.Update(xdsconfig.FoldersConfig{newFld})
}