X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=lib%2Fsyncthing%2Fst.go;h=6199a8f2491be35497d7046a811403aec75ebb98;hb=777204d72f9d184e4416f943d8a1a38051dfb5ae;hp=8fd50d3e386efc4693fb267be020857b7578a59e;hpb=f53cc64ea17876c7ad8f088fc069448b2414b808;p=src%2Fxds%2Fxds-agent.git diff --git a/lib/syncthing/st.go b/lib/syncthing/st.go index 8fd50d3..6199a8f 100644 --- a/lib/syncthing/st.go +++ b/lib/syncthing/st.go @@ -17,8 +17,8 @@ import ( "os/exec" "github.com/Sirupsen/logrus" - "github.com/iotbzh/xds-agent/lib/common" "github.com/iotbzh/xds-agent/lib/xdsconfig" + common "github.com/iotbzh/xds-common/golib" "github.com/syncthing/syncthing/lib/config" ) @@ -48,7 +48,6 @@ type ExitChan 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 { @@ -59,20 +58,14 @@ func NewSyncThing(conf *xdsconfig.Config, log *logrus.Logger) *SyncThing { } if url == "" { - url = "http://localhost:8384" + url = "http://localhost:8386" } if url[0:7] != "http://" { url = "http://" + url } if home == "" { - home = "/mnt/share" - } - - if binDir == "" { - if binDir, err = filepath.Abs(filepath.Dir(os.Args[0])); err != nil { - binDir = "/usr/local/bin" - } + panic("home parameter must be set") } s := SyncThing{ @@ -89,17 +82,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) @@ -170,7 +180,6 @@ func (s *SyncThing) Start() (*exec.Cmd, error) { env := []string{ "STNODEFAULTFOLDER=1", "STNOUPGRADE=1", - "STNORESTART=1", } // XXX - temporary hack because -gui-apikey seems to correctly handle by @@ -185,7 +194,7 @@ func (s *SyncThing) Start() (*exec.Cmd, error) { time.Sleep(500 * time.Millisecond) if common.Exists(stConfigFile) { break - } + } } if tmo <= 0 { return nil, fmt.Errorf("Cannot start Syncthing for config file creation") @@ -301,7 +310,9 @@ func (s *SyncThing) Connect() error { return fmt.Errorf("ERROR: cannot connect to Syncthing (null client)") } - s.client.SetLogger(s.log) + s.client.SetLogLevel(s.log.Level.String()) + s.client.LoggerPrefix = "SYNCTHING: " + s.client.LoggerOut = s.log.Out return nil }