#!/bin/sh /etc/rc.common
|
|
#
|
|
# Fwknop is developed primarily by the people listed in the file 'AUTHORS'.
|
|
# Copyright (C) 2009-2014 fwknop developers and contributors. For a full
|
|
# list of contributors, see the file 'CREDITS'.
|
|
#
|
|
. /lib/functions.sh
|
|
START=95
|
|
|
|
FWKNOPD_BIN=/usr/sbin/fwknopd
|
|
|
|
start()
|
|
{
|
|
gen_confs
|
|
$FWKNOPD_BIN
|
|
}
|
|
|
|
stop()
|
|
{
|
|
$FWKNOPD_BIN -K
|
|
}
|
|
|
|
restart()
|
|
{
|
|
stop;
|
|
sleep 1;
|
|
start;
|
|
}
|
|
|
|
reload()
|
|
{
|
|
gen_confs
|
|
$FWKNOPD_BIN -R
|
|
}
|
|
|
|
gen_confs()
|
|
{
|
|
[ -f /tmp/access.conf.tmp ] && rm /tmp/access.conf.tmp
|
|
if [ -z "$( uci get fwknopd.@config[0].PCAP_INTF )" ]
|
|
then
|
|
. /lib/functions/network.sh
|
|
network_get_physdev device wan
|
|
uci set fwknopd.@config[0].PCAP_INTF="$device"
|
|
uci commit
|
|
fi
|
|
config_cb() {
|
|
local type="$1"
|
|
local name="$2"
|
|
if [ "$type" = "global" ]; then
|
|
option_cb() {
|
|
local option="$1"
|
|
local value="$2"
|
|
if [ "$option" = "uci_enabled" ] && [ "$value" -eq 1 ] ; then
|
|
> /etc/fwknop/fwknopd.conf
|
|
> /etc/fwknop/access.conf
|
|
chmod 600 /etc/fwknop/fwknopd.conf
|
|
chmod 600 /etc/fwknop/access.conf
|
|
UCI_ENABLED=1
|
|
fi
|
|
}
|
|
elif [ "$type" = "config" ]; then
|
|
option_cb() {
|
|
local option="$1"
|
|
local value="$2"
|
|
if [ $UCI_ENABLED ]; then
|
|
echo "$option $value" >> /etc/fwknop/fwknopd.conf #writing each option to fwknopd.conf
|
|
fi
|
|
}
|
|
elif [ "$type" = "access" ]
|
|
then
|
|
if [ -f /tmp/access.conf.tmp ] ; then
|
|
cat /tmp/access.conf.tmp >> /etc/fwknop/access.conf
|
|
rm /tmp/access.conf.tmp
|
|
fi
|
|
option_cb() {
|
|
local option="$1"
|
|
local value="$2"
|
|
if [ $UCI_ENABLED ] && [ $option = "SOURCE" ]; then
|
|
echo "$option $value" >> /etc/fwknop/access.conf #writing each option to access.conf
|
|
fi
|
|
if [ $UCI_ENABLED ] && [ $option != "SOURCE" ]; then
|
|
echo "$option $value" >> /tmp/access.conf.tmp #writing each option to access.conf
|
|
fi
|
|
}
|
|
fi
|
|
}
|
|
|
|
if [ -f /etc/config/fwknopd ]; then
|
|
config_load fwknopd
|
|
if [ -f /tmp/access.conf.tmp ] ; then
|
|
cat /tmp/access.conf.tmp >> /etc/fwknop/access.conf
|
|
rm /tmp/access.conf.tmp
|
|
fi
|
|
fi
|
|
|
|
}
|