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.
 
 
 
 
 
 

136 lines
3.4 KiB

#!/bin/sh /etc/rc.common
START=82
USE_PROCD=1
ETESYNC_INI="/var/etc/etesync-server/etesync-server.ini"
etesync_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
}
etesync_validate_global() {
cd /usr/share/etesync-server/ >/dev/null || return
uci_load_validate etesync_server django "global" "$1" \
'secret_file:file:secret.txt' \
'static_url:string:/etesync/static' \
'language_code:string:en-us' \
'time_zone:string:UTC' \
'debug:bool:false' \
;
}
etesync_print_global() {
printf "\n[global]\n"
echo "secret_file = ${secret_file}"
echo "static_root = /www/etesync/static" #sic!
echo "static_url = ${static_url}"
echo "language_code = ${language_code}"
echo "time_zone = ${time_zone}"
echo "debug = ${debug}"
}
etesync_validate_allowed_hosts() {
uci_load_validate etesync_server django "allowed_hosts" "$1" \
'uci_allow_all_ips_of:network' \
'allowed_host:host' \
;
}
etesync_print_allowed_hosts() {
printf "\n[allowed_hosts]\n"
local iface
for iface in ${uci_allow_all_ips_of}
do etesync_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
}
etesync_validate_database() {
cd /usr/share/etesync-server/ >/dev/null || return
uci_load_validate etesync_server django "database" "$1" \
'engine:hostname:django.db.backends.sqlite3' \
'name:file:db.sqlite3' \
;
}
etesync_print_database() {
printf "\n[database]\n"
echo "engine = ${engine}"
echo "name = ${name}"
}
etesync_init() { # This must print ONLY configuration lines:
echo "; This file is re-created from /etc/config/etesync_server "
etesync_validate_global etesync_print_global
etesync_validate_allowed_hosts etesync_print_allowed_hosts
etesync_validate_database etesync_print_database
} >"${ETESYNC_INI}"
start_service() {
mkdir -p /var/etc/etesync-server/
etesync_init
logger -p 'daemon.info' -t 'etesync-server_init' 'starting ...'
ln -sf /etc/uwsgi/vassals/etesync-server.available \
/var/etc/etesync-server/uwsgi.ini
}
stop_service() {
rm -f /var/etc/etesync-server/uwsgi.ini "${ETESYNC_INI}"
}
reload_service() {
etesync_init
logger -p 'daemon.info' -t 'etesync-server_init' 'reloading ...'
kill -SIGHUP "$(cat "/var/etc/etesync-server/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
etesync_validate_global "$@"
etesync_validate_allowed_hosts "$@"
etesync_validate_database "$@"
procd_close_validate
config_load etesync_server
config_list_foreach "allowed_hosts" "uci_allow_all_ips_of" \
procd_add_reload_interface_trigger
procd_add_reload_trigger etesync_server
}