|
|
- #!/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
- }
|