Browse Source

Implement all external commands for Windows

pull/80/head
Fruchtzwerg94 5 years ago
parent
commit
516371fb85
  1. 31
      client.go
  2. 25
      path.go

31
client.go

@ -7,6 +7,7 @@ import (
"net" "net"
"os" "os"
"os/exec" "os/exec"
"runtime"
"strconv" "strconv"
"strings" "strings"
"sync/atomic" "sync/atomic"
@ -229,7 +230,13 @@ var errRunRecord = errors.New("record")
func (c *client) run() { func (c *client) run() {
var onConnectCmd *exec.Cmd var onConnectCmd *exec.Cmd
if c.p.conf.RunOnConnect != "" { if c.p.conf.RunOnConnect != "" {
onConnectCmd = exec.Command("/bin/sh", "-c", c.p.conf.RunOnConnect) var substitutedCommand = strings.ReplaceAll(c.p.conf.RunOnConnect, "$RTSP_SERVER_PATH", c.path.name)
if runtime.GOOS == "windows" {
var command = strings.Fields(substitutedCommand)
onConnectCmd = exec.Command(command[0], command[1:]...)
} else {
onConnectCmd = exec.Command("/bin/sh", "-c", substitutedCommand)
}
onConnectCmd.Stdout = os.Stdout onConnectCmd.Stdout = os.Stdout
onConnectCmd.Stderr = os.Stderr onConnectCmd.Stderr = os.Stderr
err := onConnectCmd.Start() err := onConnectCmd.Start()
@ -926,10 +933,13 @@ func (c *client) runPlay() bool {
var onReadCmd *exec.Cmd var onReadCmd *exec.Cmd
if c.path.confp.RunOnRead != "" { if c.path.confp.RunOnRead != "" {
onReadCmd = exec.Command("/bin/sh", "-c", c.path.confp.RunOnRead) var substitutedCommand = strings.ReplaceAll(c.path.confp.RunOnRead, "$RTSP_SERVER_PATH", c.path.name)
onReadCmd.Env = append(os.Environ(), if runtime.GOOS == "windows" {
"RTSP_SERVER_PATH="+c.path.name, var command = strings.Fields(substitutedCommand)
) onReadCmd = exec.Command(command[0], command[1:]...)
} else {
onReadCmd = exec.Command("/bin/sh", "-c", substitutedCommand)
}
onReadCmd.Stdout = os.Stdout onReadCmd.Stdout = os.Stdout
onReadCmd.Stderr = os.Stderr onReadCmd.Stderr = os.Stderr
err := onReadCmd.Start() err := onReadCmd.Start()
@ -1074,10 +1084,13 @@ func (c *client) runRecord() bool {
var onPublishCmd *exec.Cmd var onPublishCmd *exec.Cmd
if c.path.confp.RunOnPublish != "" { if c.path.confp.RunOnPublish != "" {
onPublishCmd = exec.Command("/bin/sh", "-c", c.path.confp.RunOnPublish) var substitutedCommand = strings.ReplaceAll(c.path.confp.RunOnPublish, "$RTSP_SERVER_PATH", c.path.name)
onPublishCmd.Env = append(os.Environ(), if runtime.GOOS == "windows" {
"RTSP_SERVER_PATH="+c.path.name, var command = strings.Fields(substitutedCommand)
) onPublishCmd = exec.Command(command[0], command[1:]...)
} else {
onPublishCmd = exec.Command("/bin/sh", "-c", substitutedCommand)
}
onPublishCmd.Stdout = os.Stdout onPublishCmd.Stdout = os.Stdout
onPublishCmd.Stderr = os.Stderr onPublishCmd.Stderr = os.Stderr
err := onPublishCmd.Start() err := onPublishCmd.Start()

25
path.go

@ -4,6 +4,8 @@ import (
"fmt" "fmt"
"os" "os"
"os/exec" "os/exec"
"runtime"
"strings"
"time" "time"
) )
@ -62,11 +64,13 @@ func (pa *path) onInit() {
if pa.confp.RunOnInit != "" { if pa.confp.RunOnInit != "" {
pa.log("starting on init command") pa.log("starting on init command")
var substitutedCommand = strings.ReplaceAll(pa.confp.RunOnInit, "$RTSP_SERVER_PATH", pa.name)
pa.onInitCmd = exec.Command("/bin/sh", "-c", pa.confp.RunOnInit) if runtime.GOOS == "windows" {
pa.onInitCmd.Env = append(os.Environ(), var command = strings.Fields(substitutedCommand)
"RTSP_SERVER_PATH="+pa.name, pa.onInitCmd = exec.Command(command[0], command[1:]...)
) } else {
pa.onInitCmd = exec.Command("/bin/sh", "-c", substitutedCommand)
}
pa.onInitCmd.Stdout = os.Stdout pa.onInitCmd.Stdout = os.Stdout
pa.onInitCmd.Stderr = os.Stderr pa.onInitCmd.Stderr = os.Stderr
err := pa.onInitCmd.Start() err := pa.onInitCmd.Start()
@ -233,10 +237,13 @@ func (pa *path) onDescribe(client *client) {
pa.log("starting on demand command") pa.log("starting on demand command")
pa.lastDescribeActivation = time.Now() pa.lastDescribeActivation = time.Now()
pa.onDemandCmd = exec.Command("/bin/sh", "-c", pa.confp.RunOnDemand) var substitutedCommand = strings.ReplaceAll(pa.confp.RunOnDemand, "$RTSP_SERVER_PATH", pa.name)
pa.onDemandCmd.Env = append(os.Environ(), if runtime.GOOS == "windows" {
"RTSP_SERVER_PATH="+pa.name, var command = strings.Fields(substitutedCommand)
) pa.onDemandCmd = exec.Command(command[0], command[1:]...)
} else {
pa.onDemandCmd = exec.Command("/bin/sh", "-c", substitutedCommand)
}
pa.onDemandCmd.Stdout = os.Stdout pa.onDemandCmd.Stdout = os.Stdout
pa.onDemandCmd.Stderr = os.Stderr pa.onDemandCmd.Stderr = os.Stderr
err := pa.onDemandCmd.Start() err := pa.onDemandCmd.Start()

Loading…
Cancel
Save