X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=blobdiff_plain;f=package%2Fnetwork%2Fservices%2Fuhttpd%2Ffiles%2Fuhttpd.init;h=fcde52a5640f6a037b49f50a25da01bcd050f561;hp=26fb0422a28931af2a04ddf939254c9035bf5c24;hb=00df239f60681dfee3ee14992f437a756de62fd4;hpb=1150e299bb82cf2f81d99a2995bc821921d38cb6 diff --git a/package/network/services/uhttpd/files/uhttpd.init b/package/network/services/uhttpd/files/uhttpd.init index 26fb0422a2..fcde52a564 100755 --- a/package/network/services/uhttpd/files/uhttpd.init +++ b/package/network/services/uhttpd/files/uhttpd.init @@ -3,8 +3,7 @@ START=50 -SERVICE_DAEMONIZE=1 -SERVICE_WRITE_PID=1 +USE_PROCD=1 UHTTPD_BIN="/usr/sbin/uhttpd" PX5G_BIN="/usr/sbin/px5g" @@ -17,7 +16,7 @@ append_arg() { local val config_get val "$cfg" "$var" - [ -n "$val" -o -n "$def" ] && append UHTTPD_ARGS "$opt ${val:-$def}" + [ -n "$val" -o -n "$def" ] && procd_append_param command "$opt" "${val:-$def}" } append_bool() { @@ -28,7 +27,7 @@ append_bool() { local val config_get_bool val "$cfg" "$var" "$def" - [ "$val" = 1 ] && append UHTTPD_ARGS "$opt" + [ "$val" = 1 ] && procd_append_param command "$opt" } generate_keys() { @@ -46,29 +45,42 @@ generate_keys() { [ -x "$PX5G_BIN" ] && { $PX5G_BIN selfsigned -der \ - -days ${days:-730} -newkey rsa:${bits:-1024} -keyout "$UHTTPD_KEY" -out "$UHTTPD_CERT" \ + -days ${days:-730} -newkey rsa:${bits:-1024} -keyout "${UHTTPD_KEY}.new" -out "${UHTTPD_CERT}.new" \ -subj /C="${country:-DE}"/ST="${state:-Saxony}"/L="${location:-Leipzig}"/CN="${commonname:-OpenWrt}" + sync + mv "${UHTTPD_KEY}.new" "${UHTTPD_KEY}" + mv "${UHTTPD_CERT}.new" "${UHTTPD_CERT}" } } start_instance() { - UHTTPD_ARGS="" UHTTPD_CERT="" UHTTPD_KEY="" local cfg="$1" local realm="$(uci_get system.@system[0].hostname)" - local listen http https interpreter indexes path + local listen http https interpreter indexes path handler + + procd_open_instance + procd_set_param respawn + procd_set_param stderr 1 + procd_set_param command "$UHTTPD_BIN" -f append_arg "$cfg" home "-h" append_arg "$cfg" realm "-r" "${realm:-OpenWrt}" append_arg "$cfg" config "-c" append_arg "$cfg" cgi_prefix "-x" - append_arg "$cfg" lua_prefix "-l" - append_arg "$cfg" lua_handler "-L" - append_arg "$cfg" ubus_prefix "-u" - append_arg "$cfg" ubus_socket "-U" + [ -f /usr/lib/uhttpd_lua.so ] && { + config_get handler "$cfg" lua_handler + [ -f "$handler" ] && append_arg "$cfg" lua_prefix "-l" && { + procd_append_param command "-L" "$handler" + } + } + [ -f /usr/lib/uhttpd_ubus.so ] && { + append_arg "$cfg" ubus_prefix "-u" + append_arg "$cfg" ubus_socket "-U" + } append_arg "$cfg" script_timeout "-t" append_arg "$cfg" network_timeout "-T" append_arg "$cfg" http_keepalive "-k" @@ -82,27 +94,32 @@ start_instance() append_bool "$cfg" no_dirlists "-D" 0 append_bool "$cfg" rfc1918_filter "-R" 0 + config_get alias_list "$cfg" alias + for alias in $alias_list; do + procd_append_param command -y "$alias" + done + config_get http "$cfg" listen_http for listen in $http; do - append UHTTPD_ARGS "-p $listen" + procd_append_param command -p "$listen" done config_get interpreter "$cfg" interpreter for path in $interpreter; do - append UHTTPD_ARGS "-i $path" + procd_append_param command -i "$path" done config_get indexes "$cfg" index_page for path in $indexes; do - append UHTTPD_ARGS "-I $path" + procd_append_param command -I "$path" done config_get https "$cfg" listen_https config_get UHTTPD_KEY "$cfg" key /etc/uhttpd.key config_get UHTTPD_CERT "$cfg" cert /etc/uhttpd.crt - [ -n "$https" ] && { - [ -f "$UHTTPD_CERT" -a -f "$UHTTPD_KEY" ] || { + [ -f /lib/libustream-ssl.so ] && [ -n "$https" ] && { + [ -s "$UHTTPD_CERT" -a -s "$UHTTPD_KEY" ] || { config_foreach generate_keys cert } @@ -111,34 +128,22 @@ start_instance() append_arg "$cfg" key "-K" for listen in $https; do - append UHTTPD_ARGS "-s $listen" + procd_append_param command -s "$listen" done } - } - SERVICE_PID_FILE=/var/run/uhttpd_${cfg}.pid - service_start $UHTTPD_BIN -f $UHTTPD_ARGS + append_bool "$cfg" redirect_https "-q" 0 + } - # Check if daemon is running, if not then - # re-execute in foreground to display error. - sleep 1 && service_check $UHTTPD_BIN || \ - $UHTTPD_BIN -f $UHTTPD_ARGS + procd_close_instance } -stop_instance() +service_triggers() { - local cfg="$1" - - SERVICE_PID_FILE=/var/run/uhttpd_${cfg}.pid - service_stop $UHTTPD_BIN + procd_add_reload_trigger "uhttpd" } -start() { +start_service() { config_load uhttpd config_foreach start_instance uhttpd } - -stop() { - config_load uhttpd - config_foreach stop_instance uhttpd -}