1
0
Fork 0
mirror of https://gitlab.alpinelinux.org/alpine/aports.git synced 2025-07-23 11:15:13 +03:00
aports/testing/uhttpd/uhttpd.initd
2025-04-21 10:24:36 +00:00

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
}