b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 1 | #!/bin/sh /etc/rc.common |
| 2 | # Copyright (C) 2009-2015 OpenWrt.org |
| 3 | |
| 4 | START=90 |
| 5 | USE_PROCD=1 |
| 6 | |
| 7 | PROG=/usr/bin/owserver |
| 8 | |
| 9 | append_arg() { |
| 10 | local cfg="$1" |
| 11 | local var="$2" |
| 12 | local opt="$3" |
| 13 | local def="$4" |
| 14 | local val |
| 15 | |
| 16 | config_get val "$cfg" "$var" |
| 17 | [ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}" |
| 18 | } |
| 19 | |
| 20 | append_bool() { |
| 21 | local cfg="$1" |
| 22 | local var="$2" |
| 23 | local opt="$3" |
| 24 | local def="$4" |
| 25 | local val |
| 26 | |
| 27 | config_get_bool val "$cfg" "$var" "$def" |
| 28 | [ "$val" = 1 ] && procd_append_param command "$opt" |
| 29 | } |
| 30 | |
| 31 | append_plain() { |
| 32 | procd_append_param command "$1" |
| 33 | } |
| 34 | |
| 35 | append_param() { |
| 36 | local cfg="$1" |
| 37 | local var="$2" |
| 38 | local opt="$3" |
| 39 | local def="$4" |
| 40 | local val |
| 41 | |
| 42 | config_get val "$cfg" "$var" |
| 43 | [ -n "$val" -o -n "$def" ] && procd_append_param "$opt" "${val:-$def}" |
| 44 | } |
| 45 | |
| 46 | start_instance() { |
| 47 | local cfg="$1" |
| 48 | local enabled |
| 49 | |
| 50 | config_get_bool enabled "$cfg" 'enabled' '0' |
| 51 | [ "$enabled" = 0 ] && return 1 |
| 52 | |
| 53 | procd_open_instance |
| 54 | |
| 55 | procd_set_param command "$PROG" --foreground --error_print=1 |
| 56 | |
| 57 | # common parameters |
| 58 | append_bool "$cfg" readonly "--readonly" |
| 59 | append_arg "$cfg" error_level "--error_level" |
| 60 | config_list_foreach "$cfg" options append_plain |
| 61 | config_list_foreach "$cfg" devices append_plain |
| 62 | append_param "$cfg" user user |
| 63 | |
| 64 | # owserver-specific |
| 65 | append_arg "$cfg" port "--port" |
| 66 | append_arg "$cfg" max_connections "--max_connections" |
| 67 | |
| 68 | procd_set_param respawn |
| 69 | |
| 70 | procd_close_instance |
| 71 | |
| 72 | } |
| 73 | |
| 74 | service_triggers() { |
| 75 | procd_add_reload_trigger owserver |
| 76 | } |
| 77 | |
| 78 | start_service() { |
| 79 | config_load owserver |
| 80 | config_foreach start_instance owserver |
| 81 | } |