|
#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2015 OpenWrt.org
|
|
|
|
START=50
|
|
STOP=10
|
|
|
|
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
|
|
SUID_ROOT_HELPERS="exit nat-server nat-client transport-bluetooth transport-wlan vpn"
|
|
|
|
chmodown_execbin() {
|
|
execname=/usr/lib/gnunet/libexec/gnunet-$1
|
|
if [ -x $execname ]; then
|
|
chmod $2 $execname
|
|
[ "$3" ] && chown $3 $execname
|
|
fi
|
|
}
|
|
|
|
fix_libexec_permissions() {
|
|
[ -e /usr/share/gnunet/.permfix ] && return
|
|
for helper in $SUID_ROOT_HELPERS; do
|
|
chmodown_execbin helper-$helper u+s
|
|
done
|
|
chmodown_execbin helper-dns 4750 root:gnunetdns
|
|
chmodown_execbin service-dns 2750 root:gnunetdns
|
|
|
|
touch /usr/share/gnunet/.permfix
|
|
}
|
|
|
|
prepare_config() {
|
|
mkdir -p $GNUNET_HOME
|
|
chown gnunet:gnunet $GNUNET_HOME
|
|
chmod 0750 $GNUNET_HOME
|
|
touch $CONFIGFILE
|
|
chown root:gnunet $CONFIGFILE
|
|
chmod 0640 $CONFIGFILE
|
|
gnunet-config -c $CONFIGFILE -s PATHS -o GNUNET_HOME -V $GNUNET_HOME
|
|
# enable gns2dns service
|
|
defaultservices=$( gnunet-config -c /tmp/run/gnunet/gnunet.conf -s arm -o DEFAULTSERVICES )
|
|
defaultservices="$defaultservices dns2gns"
|
|
# enable all installed transport plugins
|
|
gnunet-config -c $CONFIGFILE -s arm -o DEFAULTSERVICES -V "$defaultservices"
|
|
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' )
|
|
[ -n "$( echo $transport_plugins | grep $transplug )" ] ||
|
|
transport_plugins="$transport_plugins $transplug"
|
|
done
|
|
gnunet-config -c $CONFIGFILE -s transport -o PLUGINS -V "$transport_plugins"
|
|
}
|
|
|
|
start_service() {
|
|
fix_libexec_permissions
|
|
[ ! -e $GNUNET_HOME ] && prepare_config
|
|
|
|
procd_open_instance
|
|
procd_set_param user gnunet
|
|
procd_set_param command $PROG -c $CONFIGFILE -l $LOGFILE
|
|
procd_set_param respawn
|
|
procd_close_instance
|
|
}
|