diff options
-rw-r--r-- | src/camera.go | 2 | ||||
-rw-r--r-- | src/main.go | 5 | ||||
-rw-r--r-- | src/runtime_config.go | 6 | ||||
-rw-r--r-- | src/transport.go | 125 |
4 files changed, 0 insertions, 138 deletions
diff --git a/src/camera.go b/src/camera.go index e836cf3..4a2fc90 100644 --- a/src/camera.go +++ b/src/camera.go @@ -79,8 +79,6 @@ func singlePicture(m *Machine) { // process result m.SendEvent("single_picture_taken") - log.Println("Picture taken. Sending transport_request ...") - transporter.statemachine.SendEvent("transport_request") } func (cam *Camera) run() { diff --git a/src/main.go b/src/main.go index 572e5f9..e61dfb5 100644 --- a/src/main.go +++ b/src/main.go @@ -9,7 +9,6 @@ import ( var ( config RuntimeConfig camera Camera - transporter Transporter ) func main() { @@ -26,10 +25,6 @@ func main() { // create camera camera = NewCamera() - // setup transporter - transporter = NewTransporter() - go transporter.Run() // daemon to copy files via rsync - // start goroutines server := NewWebServer() go server.run() // http server / user interface diff --git a/src/runtime_config.go b/src/runtime_config.go index 07e4a7c..8c484d0 100644 --- a/src/runtime_config.go +++ b/src/runtime_config.go @@ -13,7 +13,6 @@ import ( type RuntimeConfig struct { Flag FlagConfig Web WebConfig `json:"webserver"` - Transport TransportConfig `json:"file_transport"` } func GetRuntimeConfig() RuntimeConfig { @@ -42,11 +41,6 @@ func GetRuntimeConfig() RuntimeConfig { log.Fatalf("Could not parse configuration file %s", retval.Flag.ConfigPath) } - // patch default config in case of debugging - if retval.Flag.Debug { - retval.Transport.Enabled = true - } - return retval } diff --git a/src/transport.go b/src/transport.go deleted file mode 100644 index 3e91355..0000000 --- a/src/transport.go +++ /dev/null @@ -1,125 +0,0 @@ -// vim: shiftwidth=4 tabstop=4 noexpandtab - -package main - -import ( - "time" - "log" - "os/exec" - "fmt" - "io" -) - -type Transporter struct { - statemachine Machine -} - -type TransportConfig struct { - Enabled bool `json:"enabled"` - LocalPathToSshPrivateKey string `json:"local_path_to_ssh_private_key"` - FileserverHostOrIp string `json:"fileserver_host_or_ip"` - FileserverSshPort string `json:"fileserver_ssh_port"` - RemoteUser string `json:"remote_user"` - RemotePathToTargetDirectory string `json:"remote_path_to_target_directory"` -} - -func NewTransporter() Transporter { - return Transporter{ - statemachine: Machine{ - name: "transporter", - initial: "idle", - states: StateMap{ - "idle": MachineState{ // nothing to transport - on: TransitionMap{ - "transport_request": MachineTransition{ - to: "transport", - }, - }, - }, - "transport": MachineState{ // rsync process for transport is running - on: TransitionMap{ - "transport_request": MachineTransition{ - to: "transport_queue", - }, - "transport_finished": MachineTransition{ - to: "idle", - }, - }, - }, - "transport_queue": MachineState{ // like transport but also a pending transport request - on: TransitionMap{ - "transport_finished": MachineTransition{ - to: "transport", - }, - }, - }, - }, - api: make(chan string), - state_listeners: make([]*(chan string), 0), - hook: runTransporterHooks, - }, - } -} - -func (transp *Transporter) Run() { - transp.statemachine.Run() -} - -func runTransporterHooks(last string, next string, m *Machine) { - if last == "idle" && next == "transport" { - go transportData(m) - } - if last == "transport_queue" && next == "transport" { - go transportData(m) - } -} - -func transportData(m *Machine) { - if config.Transport.Enabled { - if !config.Flag.Debug { - - // generate command string from config - cmdString := fmt.Sprintf( - "\"rsync --remove-source-files -rltgoDv -e 'ssh -p %s -i %s' /var/lib/birdscan/ %s@%s:%s\"", - config.Transport.FileserverSshPort, - config.Transport.LocalPathToSshPrivateKey, - config.Transport.RemoteUser, - config.Transport.FileserverHostOrIp, - config.Transport.RemotePathToTargetDirectory, - ) - - // create command - cmd := exec.Command( - "/bin/bash", - "-c", - cmdString, - ) - log.Printf("Executing: '%s'", cmd.String()) - - // get stderr - stderr,err := cmd.StderrPipe() - if err != nil { - log.Print(err) - } - defer stderr.Close() - - // execute command and fetch stderr - err = cmd.Start() - if err != nil { - log.Print(err) - } - stderrData,err := io.ReadAll(stderr) - if err != nil { - log.Print(err) - } - err = cmd.Wait() - if err != nil { - log.Print(err) - log.Println(string(stderrData)) - } - } else { - time.Sleep(8 * time.Second) - } - } - m.SendEvent("transport_finished") -} |