package main
import (
+ "fmt"
"log"
"os"
"time"
- "fmt"
-
"github.com/Sirupsen/logrus"
"github.com/codegangsta/cli"
"github.com/iotbzh/xds-agent/lib/agent"
"github.com/iotbzh/xds-agent/lib/syncthing"
+ "github.com/iotbzh/xds-agent/lib/webserver"
"github.com/iotbzh/xds-agent/lib/xdsconfig"
- "github.com/iotbzh/xds-agent/lib/xdsserver"
)
const (
// xdsAgent main routine
func xdsAgent(cliCtx *cli.Context) error {
+ var err error
// Create Agent context
ctx := agent.NewAgent(cliCtx)
// Load config
- cfg, err := xdsconfig.Init(cliCtx, ctx.Log)
+ ctx.Config, err = xdsconfig.Init(cliCtx, ctx.Log)
if err != nil {
return cli.NewExitError(err, 2)
}
- ctx.Config = &cfg
// Start local instance of Syncthing and Syncthing-notify
- ctx.SThg = st.NewSyncThing(ctx.Config.FileConf.SThgConf, ctx.Log)
+ ctx.SThg = st.NewSyncThing(ctx.Config, ctx.Log)
ctx.Log.Infof("Starting Syncthing...")
ctx.SThgCmd, err = ctx.SThg.Start()
if err != nil {
return cli.NewExitError(err, 2)
}
- ctx.Log.Infof("Syncthing started (PID %d)", ctx.SThgCmd.Process.Pid)
+ fmt.Printf("Syncthing started (PID %d)\n", ctx.SThgCmd.Process.Pid)
ctx.Log.Infof("Starting Syncthing-inotify...")
ctx.SThgInotCmd, err = ctx.SThg.StartInotify()
if err != nil {
return cli.NewExitError(err, 2)
}
- ctx.Log.Infof("Syncthing-inotify started (PID %d)", ctx.SThgInotCmd.Process.Pid)
+ fmt.Printf("Syncthing-inotify started (PID %d)\n", ctx.SThgInotCmd.Process.Pid)
// Establish connection with local Syncthing (retry if connection fail)
time.Sleep(3 * time.Second)
if err := ctx.SThg.Connect(); err == nil {
break
}
- ctx.Log.Infof("Establishing connection to Syncthing (retry %d/5)", retry)
+ ctx.Log.Infof("Establishing connection to Syncthing (retry %d/10)", retry)
time.Sleep(time.Second)
retry--
}
- if ctx.SThg == nil {
- err = fmt.Errorf("ERROR: cannot connect to Syncthing (url: %s)", ctx.SThg.BaseURL)
+ if err != nil || retry == 0 {
return cli.NewExitError(err, 2)
}
ctx.Log.Infof("Local Syncthing ID: %s", id)
// Create and start Web Server
- ctx.WWWServer = xdsserver.NewServer(ctx.Config, ctx.Log)
+ ctx.WWWServer = webserver.New(ctx.Config, ctx.Log)
if err = ctx.WWWServer.Serve(); err != nil {
log.Println(err)
return cli.NewExitError(err, 3)