diff --git a/client.go b/client.go index 994f6be2..e762b364 100644 --- a/client.go +++ b/client.go @@ -829,6 +829,9 @@ func (c *client) runPlay(path string) { var onReadCmd *exec.Cmd if confp.RunOnRead != "" { onReadCmd = exec.Command("/bin/sh", "-c", confp.RunOnRead) + onReadCmd.Env = append(os.Environ(), + "RTSP_SERVER_PATH="+path, + ) onReadCmd.Stdout = os.Stdout onReadCmd.Stderr = os.Stderr err := onReadCmd.Start() @@ -928,6 +931,9 @@ func (c *client) runRecord(path string) { var onPublishCmd *exec.Cmd if confp.RunOnPublish != "" { onPublishCmd = exec.Command("/bin/sh", "-c", confp.RunOnPublish) + onPublishCmd.Env = append(os.Environ(), + "RTSP_SERVER_PATH="+path, + ) onPublishCmd.Stdout = os.Stdout onPublishCmd.Stderr = os.Stderr err := onPublishCmd.Start() diff --git a/main.go b/main.go index 1a86ea5d..fe6c254a 100644 --- a/main.go +++ b/main.go @@ -260,9 +260,12 @@ func newProgram(args []string, stdin io.Reader) (*program, error) { return nil, err } - for _, confp := range conf.Paths { + for path, confp := range conf.Paths { if confp.RunOnInit != "" { onInitCmd := exec.Command("/bin/sh", "-c", confp.RunOnInit) + onInitCmd.Env = append(os.Environ(), + "RTSP_SERVER_PATH="+path, + ) onInitCmd.Stdout = os.Stdout onInitCmd.Stderr = os.Stderr err := onInitCmd.Start() diff --git a/path.go b/path.go index cf07be9d..2326e371 100644 --- a/path.go +++ b/path.go @@ -122,6 +122,9 @@ func (pa *path) describe(client *client) { pa.lastActivation = time.Now() pa.onDemandCmd = exec.Command("/bin/sh", "-c", pa.confp.RunOnDemand) + pa.onDemandCmd.Env = append(os.Environ(), + "RTSP_SERVER_PATH="+pa.id, + ) pa.onDemandCmd.Stdout = os.Stdout pa.onDemandCmd.Stderr = os.Stderr err := pa.onDemandCmd.Start() diff --git a/rtsp-simple-server.yml b/rtsp-simple-server.yml index 67db2919..d30a0229 100644 --- a/rtsp-simple-server.yml +++ b/rtsp-simple-server.yml @@ -43,19 +43,26 @@ paths: # command to run when this path is loaded by the program. # this can be used, for example, to publish a stream and keep it always opened. # This is terminated with SIGINT when the program closes. + # The path is available as an environment variable $RTSP_SERVER_PATH runOnInit: # command to run when this path is requested. # This can be used, for example, to publish a stream on demand. # This is terminated with SIGINT when the path is not requested anymore. + # The actual path from the request (useful for wildcard paths) is available as an + # environment variable $RTSP_SERVER_PATH runOnDemand: # command to run when a client starts publishing. # This is terminated with SIGINT when a client stops publishing. + # The actual path from the client (useful for wildcard paths) is available as an + # environment variable $RTSP_SERVER_PATH runOnPublish: # command to run when a clients starts reading. # This is terminated with SIGINT when a client stops reading. + # The actual path from the client (useful for wildcard paths) is available as an + # environment variable $RTSP_SERVER_PATH runOnRead: # username required to publish