#!/bin/sh /etc/rc.common # Copyright (C) 2009-2014 OpenWrt.org START=90 STOP=10 USE_PROCD=1 PROG=/usr/bin/mjpg_streamer error() { echo "${initscript}:" "$@" 1>&2 } start_instance() { local s="$1" config_get_bool enabled "$1" 'enabled' 0 [ $enabled -eq 0 ] && return config_get input "$s" 'input' if [ -z "$input" ]; then error "in section '$s' option input is missing" return 1 fi config_get output "$s" 'output' if [ -z "$output" ]; then error "in section '$s' option output is missing" return 1 fi local input_arg if [ "x$input" = 'xuvc' ]; then input_arg="input_uvc.so" config_get device "$s" 'device' if [ ! -c "$device" ]; then error "device '$device' does not exist" return 1 fi input_arg="${input_arg} --device $device" config_get fps "$s" 'fps' [ -n "$fps" ] && input_arg="${input_arg} --fps $fps" config_get_bool yuv "$s" 'yuv' 0 if [ $yuv -ne 0 ]; then input_arg="${input_arg} --yuv" config_get quality "$s" 'quality' [ -n "$quality" ] && input_arg="${input_arg} --quality $quality" fi config_get resolution "$s" 'resolution' [ -n "$resolution" ] && input_arg="${input_arg} --resolution $resolution" config_get led "$s" 'led' [ -n "$led" ] && input_arg="${input_arg} --led $led" fi if [ -z "$input_arg" ]; then error "unsuported input option '$input' in section '$s'" return 1 fi local output_arg if [ "x$output" = 'xhttp' ]; then output_arg="output_http.so" config_get port "$s" 'port' [ -n "$port" ] && output_arg="${output_arg} --port $port" config_get listen_ip "$s" 'listen_ip' [ -n "$listen_ip" ] && output_arg="${output_arg} --listen $listen_ip" config_get www "$s" 'www' [ -n "$www" ] && output_arg="${output_arg} --www $www" config_get username "$s" 'username' config_get password "$s" 'password' [ -n "$username" ] && [ -n "$password" ] && output_arg="${output_arg} --credentials $username:$password" fi if [ "x$output" = 'xfile' ]; then output_arg="output_file.so" config_get folder "$s" 'folder' [ -n "$folder" ] && output_arg="${output_arg} --folder $folder" config_get delay "$s" 'delay' [ -n "$delay" ] && output_arg="${output_arg} --delay $delay" config_get link "$s" 'link' [ -n "$link" ] && output_arg="${output_arg} --link $link" config_get ringbuffer "$s" 'ringbuffer' [ -n "$ringbuffer" ] && output_arg="${output_arg} --size $ringbuffer" config_get exceed "$s" 'exceed' [ -n "$exceed" ] && output_arg="${output_arg} --exceed $exceed" config_get command "$s" 'command' [ -n "$command" ] && output_arg="${output_arg} --command $command" fi if [ -z "$output_arg" ]; then error "unsuported output option '$output' in section '$s'" return 1 fi procd_open_instance procd_set_param command "$PROG" --input "$input_arg" --output "$output_arg" [ "x$output" = 'xhttp' ] && procd_add_mdns "http" "tcp" "$port" "daemon=mjpg-streamer" procd_close_instance } start_service() { config_load 'mjpg-streamer' config_foreach start_instance 'mjpg-streamer' } service_triggers() { procd_add_reload_trigger 'mjpg-streamer' }