You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

137 lines
3.3 KiB

#!/bin/sh /etc/rc.common
START=82
USE_PROCD=1
ETEBASE_INI="/var/etc/etebase/server.ini"
etebase_print_uci_allow_all_ips_of() {
local ifstat="$(ifstatus "$1")"
for ip in $(echo "${ifstat}" | jsonfilter -e '@["ipv4-address"].*.address')
do echo "allowed_host_${ip//[^0-9]/_} = ${ip}"
done
for ip in $(echo "${ifstat}" | jsonfilter -e '@["ipv6-address"].*.address')
do echo "allowed_host_${ip//[^0-9A-Fa-f]/_} = [${ip}]"
done
for ip in $(echo "${ifstat}" | \
jsonfilter -e '@["ipv6-prefix-assignment"].*["local-address"].address')
do echo "allowed_host_${ip//[^0-9A-Fa-f]/_} = [${ip}]"
done
}
etebase_validate_global() {
cd /usr/share/etebase/ >/dev/null || return
uci_load_validate etebase django "global" "$1" \
'secret_file:file:secret.txt' \
'static_url:string:static/' \
'language_code:string:en-us' \
'time_zone:string:UTC' \
'debug:bool:false' \
;
}
etebase_print_global() {
printf "\n[global]\n"
echo "secret_file = ${secret_file}"
echo "static_root = /www/etebase/static" #sic!
echo "static_url = ${static_url}"
echo "language_code = ${language_code}"
echo "time_zone = ${time_zone}"
echo "debug = ${debug}"
}
etebase_validate_allowed_hosts() {
cd /usr/share/etebase/ >/dev/null || return
uci_load_validate etebase django "allowed_hosts" "$1" \
'uci_allow_all_ips_of:network' \
'allowed_host:host' \
;
}
etebase_print_allowed_hosts() {
printf "\n[allowed_hosts]\n"
local iface
for iface in ${uci_allow_all_ips_of}
do etebase_print_uci_allow_all_ips_of "${iface}"
done
local host
for host in ${allowed_host}
do echo "allowed_host_${host//[^0-9A-Za-z]/_} = ${host}"
done
}
etebase_validate_database() {
cd /usr/share/etebase/ >/dev/null || return
uci_load_validate etebase django "database" "$1" \
'engine:hostname:django.db.backends.sqlite3' \
'name:file:db.sqlite3' \
;
}
etebase_print_database() {
printf "\n[database]\n"
echo "engine = ${engine}"
echo "name = ${name}"
}
etebase_init() { # This must print ONLY configuration lines:
echo "; This file is re-created from /etc/config/etebase "
etebase_validate_global etebase_print_global
etebase_validate_allowed_hosts etebase_print_allowed_hosts
etebase_validate_database etebase_print_database
} >"${ETEBASE_INI}"
start_service() {
mkdir -p /var/etc/etebase/
etebase_init
logger -p 'daemon.info' -t 'etebase_init' 'starting ...'
ln -sf /etc/uwsgi/vassals/etebase.available /var/etc/etebase/uwsgi.ini
}
stop_service() {
rm -f /var/etc/etebase/uwsgi.ini "${ETEBASE_INI}"
}
reload_service() {
etebase_init
logger -p 'daemon.info' -t 'etebase_init' 'reloading ...'
kill -SIGHUP "$(cat "/var/etc/etebase/master.pid")" 2>/dev/null
#if the server is in on-demand mode, the ini files are reloaded then, too.
}
service_triggers() {
procd_open_validate
etebase_validate_global "$@"
etebase_validate_allowed_hosts "$@"
etebase_validate_database "$@"
procd_close_validate
config_load etebase
config_list_foreach "allowed_hosts" "uci_allow_all_ips_of" procd_add_reload_interface_trigger
procd_add_reload_trigger etebase
}