Files
op-packages/rtp2httpd/files/rtp2httpd.init
T

137 lines
3.3 KiB
Bash

#!/bin/sh /etc/rc.common
START=99
USE_PROCD=1
CONF="rtp2httpd"
PROG="/usr/bin/$CONF"
append_param_arg() {
eval "local val=\"\${$1}\""
[ -n "$val" ] && procd_append_param command "--${1//_/-}" "$val"
}
append_param_bool() {
eval "local val=\"\${$1}\""
[ "$val" -eq "1" ] && procd_append_param command "--${1//_/-}"
}
validate_rtp2httpd_section() {
uci_load_validate "$CONF" "instance" "$1" "$2" \
'enabled:bool:0' \
'listen:string' \
\
'verbose:uinteger' \
'noudpxy:uinteger' \
\
'upstream_interface:string' \
'upstream_interface_fcc:string' \
'upstream_interface_http:string' \
'upstream_interface_multicast:string' \
'upstream_interface_rtsp:string' \
\
'fcc_listen_port_range:or(port,portrange)' \
'http_proxy_user_agent:string' \
'mcast_rejoin_interval:and(uinteger, range(0,86400))' \
'rtsp_stun_server:string' \
'rtsp_user_agent:string' \
\
'maxclients:and(uinteger, range(1,5000))' \
'workers:and(uinteger, range(1,64))' \
'buffer_pool_max_size:and(uinteger, range(1024,1048576))' \
'udp_rcvbuf_size:and(uinteger, range(65536,16777216))' \
'zerocopy_on_send:bool' \
\
'hostname:host' \
'r2h_token:string' \
'cors_allow_origin:string' \
'xff:bool' \
'app_path_prefix:string' \
'player_page_path:string' \
'status_page_path:string' \
'external_m3u:string' \
'external_m3u_update_interval:uinteger' \
'use_relative_path_in_m3u:bool' \
\
'access_log:string' \
'log_format:string' \
\
'ffmpeg_path:string' \
'ffmpeg_args:string' \
'video_snapshot:bool'
}
start_instance() {
local section="$1"
[ "$2" -eq "0" ] || { logger -p daemon.err -t "$CONF" "$section Validation failed."; return 1; }
[ "$enabled" -eq "1" ] || return 1
procd_open_instance "$section"
procd_set_param command "$PROG"
procd_append_param command -C
for addr in $listen; do
procd_append_param command --listen "$addr"
done
append_param_arg verbose
append_param_bool noudpxy
append_param_arg upstream_interface
append_param_arg upstream_interface_fcc
append_param_arg upstream_interface_http
append_param_arg upstream_interface_multicast
append_param_arg upstream_interface_rtsp
append_param_arg fcc_listen_port_range
append_param_arg http_proxy_user_agent
append_param_arg mcast_rejoin_interval
append_param_arg rtsp_stun_server
append_param_arg rtsp_user_agent
append_param_arg maxclients
append_param_arg workers
append_param_arg buffer_pool_max_size
append_param_arg udp_rcvbuf_size
append_param_bool zerocopy_on_send
append_param_arg hostname
append_param_arg r2h_token
append_param_arg cors_allow_origin
append_param_bool xff
append_param_arg app_path_prefix
append_param_arg player_page_path
append_param_arg status_page_path
append_param_arg external_m3u
if [ -n "$external_m3u" ]; then
append_param_arg external_m3u_update_interval
append_param_bool use_relative_path_in_m3u
fi
append_param_arg access_log
append_param_arg log_format
append_param_arg ffmpeg_path
append_param_arg ffmpeg_args
append_param_bool video_snapshot
procd_set_param limits core="unlimited"
procd_set_param limits nofile="1000000 1000000"
procd_set_param respawn
procd_set_param stdout 1
procd_set_param stderr 1
procd_close_instance
}
start_service() {
config_load "$CONF"
config_foreach validate_rtp2httpd_section "instance" start_instance
}
service_triggers() {
procd_add_reload_trigger "$CONF"
}