mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-23 11:15:13 +03:00
105 lines
2.3 KiB
Bash
105 lines
2.3 KiB
Bash
#!/sbin/openrc-run
|
|
|
|
name="uHTTPd"
|
|
description="Tiny HTTP server from OpenWrt"
|
|
|
|
: ${command_user="uhttpd"}
|
|
: ${capabilities="^cap_net_bind_service"}
|
|
: ${error_logger="logger -t uhttpd -p daemon.err >/dev/null 2>&1"}
|
|
|
|
command="/usr/bin/uhttpd"
|
|
command_args="-f $command_args"
|
|
command_background="yes"
|
|
pidfile="/run/$RC_SVCNAME.pid"
|
|
|
|
depend() {
|
|
need net
|
|
after firewall
|
|
}
|
|
|
|
start_pre() {
|
|
append_list -p "$listen_http" '0.0.0.0:80 [::]:80'
|
|
append_list -s "$listen_https"
|
|
append_bool -q "$redirect_https" no
|
|
append_arg -h "$home" '/var/www'
|
|
append_bool -R "$rfc1918_filter" yes
|
|
append_arg -n "$max_requests" 3
|
|
append_arg -N "$max_connections" 100
|
|
append_arg -C "$cert"
|
|
append_arg -K "$key"
|
|
append_arg -x "$cgi_prefix" '/cgi-bin'
|
|
append_list -i "$interpreter"
|
|
append_handler_mapping lua "$lua_prefix"
|
|
append_handler_mapping ucode "$ucode_prefix"
|
|
|
|
append_arg -t "$script_timeout" 60
|
|
append_arg -T "$network_timeout" 30
|
|
append_arg -k "$http_keepalive" 20
|
|
append_arg -A "$tcp_keepalive" 1
|
|
append_arg -r "$realm" "$(hostname)"
|
|
#append_arg -c "$config" # FIXME
|
|
append_list -I "$index_file" 'index.html index.htm'
|
|
append_arg -E "$error_page"
|
|
append_bool -S "$no_symlinks" no
|
|
append_bool -D "$no_dirlists" no
|
|
}
|
|
|
|
append_arg() {
|
|
local flag="$1"
|
|
local value="${2:-$3}"
|
|
|
|
if [ "$value" ]; then
|
|
command_args="$command_args $flag $value"
|
|
fi
|
|
}
|
|
|
|
append_bool() {
|
|
local flag="$1"
|
|
local value="${2:-$3}"
|
|
|
|
if yesno "$value"; then
|
|
command_args="$command_args $flag"
|
|
fi
|
|
}
|
|
|
|
append_list() {
|
|
local flag="$1"
|
|
local value="${2:-$3}"
|
|
|
|
[ "$value" ] || return
|
|
|
|
local item; for item in $value; do
|
|
command_args="$command_args $flag $item"
|
|
done
|
|
}
|
|
|
|
append_handler_mapping() {
|
|
local lang="$1"
|
|
local value="$2"
|
|
|
|
[ "$value" ] || return
|
|
|
|
if ! [ -f /usr/lib/uhttpd_$lang.so ]; then
|
|
ewarn "uhttpd-mod-$lang is not installed, ignoring \$${lang}_prefix"
|
|
return
|
|
fi
|
|
|
|
local prefix_flag handler_flag
|
|
case "$lang" in
|
|
lua) prefix_flag='-l'; handler_flag='-L';;
|
|
ucode) prefix_flag='-o'; handler_flag='-O';;
|
|
esac
|
|
|
|
local item prefix handler
|
|
for item in $value; do
|
|
prefix="${item%%=*}"
|
|
handler="${item#*=}"
|
|
|
|
if [ "$prefix" != "$handler" ] && [ "$prefix" ] && [ -f "$handler" ]; then
|
|
append_arg "$prefix_flag" "$prefix"
|
|
append_arg "$handler_flag" "$handler"
|
|
else
|
|
ewarn "Skipping invalid $lang prefix \"$item\""
|
|
fi
|
|
done
|
|
}
|