|
|
- #!/bin/sh /etc/rc.common
- # Copyright (C) 2015 OpenWrt.org
-
- START=90
-
- USE_PROCD=1
- PROG=/usr/lib/gnunet/libexec/gnunet-service-arm
-
- GNUNET_HOME=/var/run/gnunet
- # LOGFILE=$GNUNET_HOME/gnunet.log
- CONFIGFILE=$GNUNET_HOME/gnunet.conf
-
- extra_command "restart_transport" "Restart transport"
-
- prepare_config() {
- local had_exit_service=0
-
- if [ ! -e "$GNUNET_HOME" ]; then
- mkdir -m 0750 -p "$GNUNET_HOME"
- chown gnunet:gnunet "$GNUNET_HOME"
- fi
- touch "$CONFIGFILE"
- chown gnunet:gnunet "$CONFIGFILE"
- chmod 0640 "$CONFIGFILE"
- gnunet-config -c "$CONFIGFILE" -s PATHS -o GNUNET_HOME -V "$GNUNET_HOME"
-
- # minimal persistency in /etc/gnunet
- [ ! -d /etc/gnunet ] && mkdir -m 0750 -p /etc/gnunet
- chown -R gnunet:gnunet /etc/gnunet
-
- # defaults paths for persistent files
- gnunet-config -c "$CONFIGFILE" -s PATHS -o GNUNET_CONFIG_HOME -V /etc/gnunet
- gnunet-config -c "$CONFIGFILE" -s PEER -o PRIVATE_KEY -V /etc/gnunet/private_key.ecc
- gnunet-config -c "$CONFIGFILE" -s identity -o EGODIR -V /etc/gnunet/identity/egos
- gnunet-config -c "$CONFIGFILE" -s revocation -o DATABASE -V /etc/gnunet/revocation.dat
- gnunet-config -c "$CONFIGFILE" -s nse -o PROOFFILE -V /etc/gnunet/proof.dat
-
- # enable all installed transport plugins
- transport_plugins=$(gnunet-config -c "$CONFIGFILE" -s transport -o PLUGINS)
- for transplug in /usr/lib/gnunet/libgnunet_plugin_transport_*.so; do
- transplug="$( echo "$transplug" |
- sed -ne 's!^.*_transport_\(.*\)\.so$!\1!p' )"
- echo "$transport_plugins" | grep -q "$transplug" ||
- transport_plugins="$transport_plugins $transplug"
- done
- gnunet-config -c "$CONFIGFILE" -s transport -o PLUGINS -V "$transport_plugins"
-
- # do not touch sysctl, iptables and routing
- gnunet-config -c "$CONFIGFILE" -s dns -o SKIP_ROUTING_SETUP -V YES
- gnunet-config -c "$CONFIGFILE" -s exit -o EXIT_IFNAME -V ''
-
- # apply config from UCI
- _gnunet_section=""
- config_cb()
- {
- # $1 "Type"
- # $2 "Name"
- local __TYPE="$1"
- local __NAME="${2/_/-}"
- [ "${__TYPE}" = "gnunet-config" ] && _gnunet_section="${__NAME}"
- [ "${__TYPE}" = "gnunet-exit-service" ] && {
- had_exit_service=1
- _gnunet_section="${__NAME}.gnunet."
- }
- }
- option_cb() {
- # $1 name of variable
- # $2 value
- local __OPT="$1"
- local __VAL="$2"
- gnunet-config -c "$CONFIGFILE" -s "${_gnunet_section}" -o "${__OPT}" -V "${__VAL}"
- }
-
- config_load gnunet
-
- [ "$had_exit_service" -eq 1 ] && gnunet-config -c "$CONFIGFILE" -s exit -o FORCESTART -V YES
-
- return 0
- }
-
- restart_transport() {
- gnunet-arm -c "$CONFIGFILE" -k transport
- gnunet-arm -c "$CONFIGFILE" -i transport
- }
-
- start_service() {
- prepare_config
-
- procd_open_instance
- procd_set_param user gnunet
- # procd_set_param env GNUNET_LOG="dht;;;;info"
- procd_set_param stderr 1
- procd_set_param command "$PROG" -c "$CONFIGFILE"
- [ "$LOGFILE" ] && procd_append_param command -l "$LOGFILE"
- procd_set_param respawn
- procd_close_instance
- }
-
- service_triggers()
- {
- procd_add_reload_trigger "gnunet"
- procd_add_raw_trigger "interface.*.up" 3000 /etc/init.d/gnunet restart_transport
- }
|