Use go module as dependency tool instead of glide
[src/xds/xds-server.git] / lib / syncthing / st.go
index e8e9f44..7ac170b 100644 (file)
@@ -1,3 +1,20 @@
+/*
+ * Copyright (C) 2017-2018 "IoT.bzh"
+ * Author Sebastien Douheret <sebastien@iot.bzh>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package st
 
 import (
@@ -19,9 +36,9 @@ import (
 
        "regexp"
 
+       common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git"
+       "gerrit.automotivelinux.org/gerrit/src/xds/xds-server.git/lib/xdsconfig"
        "github.com/Sirupsen/logrus"
-       common "github.com/iotbzh/xds-common/golib"
-       "github.com/iotbzh/xds-server/lib/xdsconfig"
        "github.com/syncthing/syncthing/lib/config"
 )
 
@@ -34,16 +51,16 @@ type SyncThing struct {
        STICmd    *exec.Cmd
        MyID      string
        Connected bool
+       Events    *Events
 
        // Private fields
        binDir      string
        logsDir     string
        exitSTChan  chan ExitChan
        exitSTIChan chan ExitChan
-       conf        *xdsconfig.Config
        client      *common.HTTPClient
        log         *logrus.Logger
-       Events      *Events
+       conf        *xdsconfig.Config
 }
 
 // ExitChan Channel used for process exit
@@ -134,7 +151,8 @@ func (s *SyncThing) startProc(exeName string, args []string, env []string, eChan
 
        // Kill existing process (useful for debug ;-) )
        if os.Getenv("DEBUG_MODE") != "" {
-               exec.Command("bash", "-c", "pkill -9 "+exeName).Output()
+               fmt.Printf("\n!!! DEBUG_MODE set: KILL existing %s process(es) !!!\n", exeName)
+               exec.Command("bash", "-c", "ps -ax |grep "+exeName+" |grep "+s.BaseURL+" |cut  -d' ' -f 1|xargs -I{} kill -9 {}").Output()
        }
 
        // When not set (or set to '.') set bin to path of xds-agent executable
@@ -173,7 +191,7 @@ func (s *SyncThing) startProc(exeName string, args []string, env []string, eChan
 
                cmdOut, err := cmd.StdoutPipe()
                if err != nil {
-                       return nil, fmt.Errorf("Pipe stdout error for : %s", err)
+                       return nil, fmt.Errorf("Pipe stdout error for : %v", err)
                }
 
                go io.Copy(outfile, cmdOut)
@@ -231,7 +249,7 @@ func (s *SyncThing) Start() (*exec.Cmd, error) {
 
        s.STCmd, err = s.startProc("syncthing", args, env, &s.exitSTChan)
 
-       // Use autogenerated apikey if not set by config.json
+       // Use autogenerated apikey if not set by server-config.json
        if err == nil && s.APIKey == "" {
                if fd, err := os.Open(filepath.Join(s.Home, "config.xml")); err == nil {
                        defer fd.Close()
@@ -316,7 +334,12 @@ func (s *SyncThing) Connect() error {
                common.HTTPClientConfig{
                        URLPrefix:           "/rest",
                        HeaderClientKeyName: "X-Syncthing-ID",
+                       LogOut:              s.conf.LogVerboseOut,
+                       LogPrefix:           "SYNCTHING: ",
+                       LogLevel:            common.HTTPLogLevelWarning,
                })
+       s.client.SetLogLevel(s.log.Level.String())
+
        if err != nil {
                msg := ": " + err.Error()
                if strings.Contains(err.Error(), "connection refused") {
@@ -328,11 +351,6 @@ func (s *SyncThing) Connect() error {
                return fmt.Errorf("ERROR: cannot connect to Syncthing (null client)")
        }
 
-       // Redirect HTTP log into a file
-       s.client.SetLogLevel(s.conf.Log.Level.String())
-       s.client.LoggerPrefix = "SYNCTHING: "
-       s.client.LoggerOut = s.conf.LogVerboseOut
-
        s.MyID, err = s.IDGet()
        if err != nil {
                return fmt.Errorf("ERROR: cannot retrieve ID")