# except for development and debug purposes!
# option no_ubusauth 0
+ # For this instance of uhttpd use the listed httpauth
+ # sections to require Basic auth to the specified
+ # resources.
+# list httpauth prefix_user
+
# Defaults for automatic certificate and key generation
config cert defaults
# Common name
option commonname '%D'
+
+# config httpauth prefix_user
+# option prefix /protected/url/path
+# option username user
+# option password 'plaintext_or_md5_or_$p$user_for_system_user'
}
}
+create_httpauth() {
+ local cfg="$1"
+ local prefix username password
+
+ config_get prefix "$cfg" prefix
+ config_get username "$cfg" username
+ config_get password "$cfg" password
+
+ if [ -z "$prefix" ] || [ -z "$username" ] || [ -z "$password" ]; then
+ return
+ fi
+ echo "${prefix}:${username}:${password}" >>$httpdconf
+ haveauth=1
+}
+
start_instance()
{
UHTTPD_CERT=""
local cfg="$1"
local realm="$(uci_get system.@system[0].hostname)"
- local listen http https interpreter indexes path handler
+ local listen http https interpreter indexes path handler httpdconf haveauth
procd_open_instance
procd_set_param respawn
procd_set_param stderr 1
procd_set_param command "$UHTTPD_BIN" -f
+ config_get config "$cfg" config
+ if [ -z "$config" ]; then
+ mkdir -p /var/etc/uhttpd
+ httpdconf="/var/etc/uhttpd/httpd.${cfg}.conf"
+ rm -f ${httpdconf}
+ config_list_foreach "$cfg" httpauth create_httpauth
+ if [ "$haveauth" = "1" ]; then
+ procd_append_param command -c ${httpdconf}
+ [ -r /etc/httpd.conf ] && cat /etc/httpd.conf >>/var/etc/uhttpd/httpd.${cfg}.conf
+ fi
+ fi
+
append_arg "$cfg" home "-h"
append_arg "$cfg" realm "-r" "${realm:-OpenWrt}"
append_arg "$cfg" config "-c"