#!/bin/sh /etc/rc.common START=99 STOP=50 USE_PROCD=1 NAME=ttyd PROG=/usr/bin/$NAME validate_section_ttyd() { uci_load_validate ttyd ttyd "$1" "$2" \ 'enable:bool:1' \ 'port:port' \ 'interface:string' \ 'credential:string' \ 'uid:uinteger' \ 'gid:uinteger' \ 'signal:uinteger' \ 'url_arg:bool' \ 'readonly:bool' \ 'client_option:list(string)' \ 'terminal_type:string' \ 'check_origin:bool' \ 'max_clients:uinteger' \ 'once:bool' \ 'index:string' \ 'ipv6:bool' \ 'ssl:bool' \ 'ssl_cert:file' \ 'ssl_key:file' \ 'ssl_ca:file' \ 'debug:uinteger' \ 'command:string' } ttyd_instance() { [ "$2" = 0 ] || { echo "validation failed" return 1 } [ "$enable" = 0 ] && return 1 [ -z "$command" ] && return 1 [ "${interface::1}" = @ ] && { interface=$( . /lib/functions/network.sh network_get_device device "${interface:1}" echo -n "$device" ) } [ "$url_arg" = 0 ] && url_arg="" [ "$readonly" = 0 ] && readonly="" [ "$check_origin" = 0 ] && check_origin="" [ "$once" = 0 ] && once="" [ "$ipv6" = 0 ] && ipv6="" [ "$ssl" = 0 ] && ssl="" procd_open_instance procd_set_param command "$PROG" \ ${port:+-p $port} \ ${interface:+-i $interface} \ ${credential:+-c $credential} \ ${uid:+-u $uid} \ ${gid:+-g $gid} \ ${signal:+-s $signal} \ ${url_arg:+-a} \ ${readonly:+-R} \ ${terminal_type:+-T $terminal_type} \ ${check_origin:+-O} \ ${max_clients:+-m $max_clients} \ ${once:+-o} \ ${index:+-I $index} \ ${ipv6:+-6} \ ${ssl:+-S} \ ${ssl_cert:+-C $ssl_cert} \ ${ssl_key:+-K $ssl_key} \ ${ssl_ca:+-A $ssl_ca} \ ${debug:+-d $debug} config_list_foreach "$1" client_option "procd_append_param command -t" procd_append_param command $command procd_set_param stdout 1 procd_set_param stderr 1 procd_close_instance } start_service() { config_load "$NAME" config_foreach validate_section_ttyd ttyd ttyd_instance } shutdown() { # close all open connections killall "$NAME" } service_triggers() { procd_add_reload_trigger "$NAME" }