"syncthing": {
"binDir": "syncthing binaries directory (default: executable directory)",
"home": "syncthing home directory (usually .../syncthing-config)",
- "gui-address": "syncthing gui url (default http://localhost:8384)"
+ "gui-address": "syncthing gui url (default http://localhost:8384)",
+ "gui-apikey": "syncthing api-key to use (default auto-generated)"
}
}
```
"io"
+ "io/ioutil"
+
+ "regexp"
+
"github.com/Sirupsen/logrus"
"github.com/iotbzh/xds-server/lib/common"
"github.com/iotbzh/xds-server/lib/xdsconfig"
s.STCmd, err = s.startProc("syncthing", args, env, &s.exitSTChan)
+ // Use autogenerated apikey if not set by config.json
+ if s.APIKey == "" {
+ if fd, err := os.Open(filepath.Join(s.Home, "config.xml")); err == nil {
+ defer fd.Close()
+ if b, err := ioutil.ReadAll(fd); err == nil {
+ re := regexp.MustCompile("<apikey>(.*)</apikey>")
+ key := re.FindStringSubmatch(string(b))
+ if len(key) >= 1 {
+ s.APIKey = key[1]
+ }
+ }
+ }
+ }
+
return s.STCmd, err
}
// StartInotify Starts syncthing-inotify process
func (s *SyncThing) StartInotify() (*exec.Cmd, error) {
var err error
+ exeName := "syncthing-inotify"
- s.log.Infof(" STI home=%s", s.Home)
s.log.Infof(" STI url=%s", s.BaseURL)
args := []string{
- "--home=" + s.Home,
"-target=" + s.BaseURL,
}
+ if s.APIKey != "" {
+ args = append(args, "-api="+s.APIKey)
+ s.log.Infof("%s uses apikey=%s", exeName, s.APIKey)
+ }
if s.log.Level == logrus.DebugLevel {
args = append(args, "-verbosity=4")
}
env := []string{}
- s.STICmd, err = s.startProc("syncthing-inotify", args, env, &s.exitSTIChan)
+ s.STICmd, err = s.startProc(exeName, args, env, &s.exitSTIChan)
return s.STICmd, err
}
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 {
}
*field = path.Clean(rep)
}
-
+
// Config file settings overwrite default config
if fCfg.WebAppDir != "" {