summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Douheret <sebastien.douheret@iot.bzh>2017-09-18 18:14:37 +0200
committerSebastien Douheret <sebastien.douheret@iot.bzh>2017-09-18 18:14:37 +0200
commitd4f7b45c3fe483d3864534642f10cf8f6ee23ae9 (patch)
treef87d948e5ab337f4929734e19e3781ed672c0b30
parentd007a7512af1f6c9b9ab9a238b47f1ebfc9f4dc8 (diff)
Fix syncthing binary path detection.
-rw-r--r--lib/model/folders.go2
-rw-r--r--lib/syncthing/st.go32
-rw-r--r--lib/xdsconfig/config.go2
-rw-r--r--lib/xdsconfig/fileconfig.go5
4 files changed, 26 insertions, 15 deletions
diff --git a/lib/model/folders.go b/lib/model/folders.go
index ed0078e..7c08a88 100644
--- a/lib/model/folders.go
+++ b/lib/model/folders.go
@@ -197,7 +197,7 @@ func (f *Folders) createUpdate(newF folder.FolderConfig, create bool, initial bo
// SYNCTHING
case folder.TypeCloudSync:
if f.SThg == nil {
- return nil, fmt.Errorf("ClownSync type not supported (syncthing not initialized)")
+ return nil, fmt.Errorf("CloudSync type not supported (syncthing not initialized)")
}
fld = f.SThg.NewFolderST(f.Conf)
// PATH MAP
diff --git a/lib/syncthing/st.go b/lib/syncthing/st.go
index c76db5a..bc65299 100644
--- a/lib/syncthing/st.go
+++ b/lib/syncthing/st.go
@@ -91,7 +91,6 @@ type FolderStatus struct {
// NewSyncThing creates a new instance of Syncthing
func NewSyncThing(conf *xdsconfig.Config, log *logrus.Logger) *SyncThing {
var url, apiKey, home, binDir string
- var err error
stCfg := conf.FileConf.SThgConf
if stCfg != nil {
@@ -109,13 +108,7 @@ func NewSyncThing(conf *xdsconfig.Config, log *logrus.Logger) *SyncThing {
}
if home == "" {
- home = "/mnt/share"
- }
-
- if binDir == "" {
- if binDir, err = filepath.Abs(filepath.Dir(os.Args[0])); err != nil {
- binDir = "/opt/AGL/bin"
- }
+ panic("home parameter must be set")
}
s := SyncThing{
@@ -136,17 +129,34 @@ func NewSyncThing(conf *xdsconfig.Config, log *logrus.Logger) *SyncThing {
// Start Starts syncthing process
func (s *SyncThing) startProc(exeName string, args []string, env []string, eChan *chan ExitChan) (*exec.Cmd, error) {
+ var err error
+ var exePath string
// Kill existing process (useful for debug ;-) )
if os.Getenv("DEBUG_MODE") != "" {
exec.Command("bash", "-c", "pkill -9 "+exeName).Output()
}
- path, err := exec.LookPath(path.Join(s.binDir, exeName))
+ // When not set (or set to '.') set bin to path of xds-agent executable
+ bdir := s.binDir
+ if bdir == "" || bdir == "." {
+ exe, _ := os.Executable()
+ if exeAbsPath, err := filepath.Abs(exe); err == nil {
+ if exePath, err := filepath.EvalSymlinks(exeAbsPath); err == nil {
+ bdir = filepath.Dir(exePath)
+ }
+ }
+ }
+
+ exePath, err = exec.LookPath(path.Join(bdir, exeName))
if err != nil {
- return nil, fmt.Errorf("Cannot find %s executable in %s", exeName, s.binDir)
+ // Let's try in /opt/AGL/bin
+ exePath, err = exec.LookPath(path.Join("opt", "AGL", "bin", exeName))
+ if err != nil {
+ return nil, fmt.Errorf("Cannot find %s executable in %s", exeName, bdir)
+ }
}
- cmd := exec.Command(path, args...)
+ cmd := exec.Command(exePath, args...)
cmd.Env = os.Environ()
for _, ev := range env {
cmd.Env = append(cmd.Env, ev)
diff --git a/lib/xdsconfig/config.go b/lib/xdsconfig/config.go
index 53d1639..f3cba4a 100644
--- a/lib/xdsconfig/config.go
+++ b/lib/xdsconfig/config.go
@@ -37,7 +37,7 @@ type Options struct {
const (
DefaultAPIVersion = "1"
DefaultPort = "8000"
- DefaultShareDir = "/mnt/share"
+ DefaultShareDir = "${HOME}/.xds-server/projects"
DefaultSdkRootDir = "/xdt/sdk"
)
diff --git a/lib/xdsconfig/fileconfig.go b/lib/xdsconfig/fileconfig.go
index a0724af..2651caf 100644
--- a/lib/xdsconfig/fileconfig.go
+++ b/lib/xdsconfig/fileconfig.go
@@ -59,11 +59,12 @@ func readGlobalConfig(c *Config, confFile string) error {
searchIn = append(searchIn, "/etc/xds-server/config.json")
exePath := os.Args[0]
- exeAbsPath, err := filepath.Abs(os.Args[0])
+ ee, _ := os.Executable()
+ exeAbsPath, err := filepath.Abs(ee)
if err == nil {
exePath, err = filepath.EvalSymlinks(exeAbsPath)
if err == nil {
- exePath = filepath.Dir(exePath)
+ exePath = filepath.Dir(ee)
} else {
exePath = filepath.Dir(exeAbsPath)
}