d1120123eb
git-svn-id: svn://svn.openwrt.org/openwrt/packages@28035 3c298f89-4303-0410-b956-a3cf2f4a3e73
165 lines
3.7 KiB
Bash
165 lines
3.7 KiB
Bash
#!/bin/sh
|
|
# Copyright (C) 2011 Openwrt.org
|
|
# Copyright (C) 2011 Daniel Dickinson <openwrt@cshore.neomailbox.net>
|
|
|
|
BXBK_CONFIG_PATH=/var/etc/boxbackup
|
|
PID_FILE=/var/run/bbstored.pid
|
|
|
|
EXTERNAL_CONFIG=0
|
|
|
|
EXTERNAL_CONF_FILE=
|
|
RUNAS_USER=
|
|
RUNAS_GROUP=
|
|
BXBK_RAIDFILE_CONF=
|
|
|
|
bbstored_global() {
|
|
local cfg="$1"
|
|
local get_config="$2"
|
|
|
|
local external_config
|
|
local raidfileconf
|
|
local user
|
|
local group
|
|
local config_path
|
|
local pidfile
|
|
local accountdb
|
|
local extended_logging
|
|
local housekeep_time
|
|
local address
|
|
local certfile
|
|
local keyfile
|
|
local cafile
|
|
|
|
config_get external_config "$cfg" external_config
|
|
if [ -n "$external_config" ]; then
|
|
EXTERNAL_CONFIG=1
|
|
EXTERNAL_CONF_FILE="$external_config"
|
|
fi
|
|
|
|
config_get config_path "$cfg" config_path
|
|
[ -n "$config_path" ] && {
|
|
BXBK_CONFIG_PATH="$config_path"
|
|
}
|
|
|
|
[ "$get_config" = "1" ] && return 0
|
|
[ -z "$BXBK_CONFIG_FILE" ] && return 1
|
|
|
|
rm -f "$BXBK_CONFIG_FILE"
|
|
touch "$BXBK_CONFIG_FILE"
|
|
|
|
config_get raidfileconf "$cfg" raidfileconf "$BXBK_CONFIG_PATH/raidfile.conf"
|
|
echo "RaidFileConf = $raidfileconf" >>$BXBK_CONFIG_FILE
|
|
BXBK_RAIDFILE_CONF="$raidfileconf"
|
|
|
|
config_get accountdb "$cfg" accountdb "/etc/bbstored/accounts.txt"
|
|
echo "AccountDatabase = $accountdb" >>$BXBK_CONFIG_FILE
|
|
[ ! -r "$accountdb" ] && {
|
|
echo "Account database missing"
|
|
NORUN=1
|
|
return 1
|
|
}
|
|
|
|
local extlog
|
|
config_get extended_logging "$cfg" extended_logging 1
|
|
if [ "$extended_logging" = "1" ]; then
|
|
extlog=yes
|
|
else
|
|
extlog=no
|
|
fi
|
|
echo "ExtendedLogging = $extlog" >>$BXBK_CONFIG_FILE
|
|
|
|
config_get housekeep_time "$cfg" housekeep_time 900
|
|
echo "TimeBetweenHousekeeping = $housekeep_time" >>$BXBK_CONFIG_FILE
|
|
|
|
echo "" >>$BXBK_CONFIG_FILE
|
|
echo "Server" >>$BXBK_CONFIG_FILE
|
|
echo "{" >>$BXBK_CONFIG_FILE
|
|
|
|
config_get user "$cfg" user
|
|
config_get group "$cfg" group
|
|
[ -n "$user" ] && [ "$group" ] && {
|
|
RUNAS_USER=$user
|
|
RUNAS_GROUP=$group
|
|
}
|
|
echo " User = ${RUNAS_USER:-nobody}" >>$BXBK_CONFIG_FILE
|
|
|
|
config_get address "$cfg" address
|
|
[ -z "$address" ] && NORUN=1
|
|
|
|
echo " ListenAddresses = inet:$address" >>$BXBK_CONFIG_FILE
|
|
|
|
config_get certfile "$cfg" certfile
|
|
[ -z "$certfile" ] && NORUN=1
|
|
|
|
echo " CertificateFile = $certfile" >>$BXBK_CONFIG_FILE
|
|
|
|
config_get keyfile "$cfg" keyfile
|
|
[ -z "$keyfile" ] && NORUN=1
|
|
|
|
echo " PrivateKeyFile = $keyfile" >>$BXBK_CONFIG_FILE
|
|
|
|
config_get cafile "$cfg" cafile
|
|
[ -z "$cafile" ] && NORUN=1
|
|
|
|
echo " TrustedCAsFile = $cafile" >>$BXBK_CONFIG_FILE
|
|
|
|
config_get pidfile "$cfg" pidfile
|
|
[ -n "$pidfile" ] && {
|
|
PID_FILE="$pidfile"
|
|
}
|
|
echo " PidFile = $PID_FILE" >>$BXBK_CONFIG_FILE
|
|
|
|
echo "}" >>$BXBK_CONFIG_FILE
|
|
}
|
|
|
|
raidfile_section() {
|
|
local cfg="$1"
|
|
|
|
local setnum
|
|
local blocksize
|
|
local path
|
|
|
|
config_get setnum "$cfg" setnum
|
|
[ -z "$setnum" ] && return 1
|
|
|
|
config_get blocksize "$cfg" blocksize
|
|
|
|
config_get path "$cfg" path
|
|
[ -z "$path" ] && return 1
|
|
|
|
echo "disc${setnum}" >>$BXBK_RAIDFILE_CONF
|
|
echo "{" >>$BXBK_RAIDFILE_CONF
|
|
echo " SetNumber = ${setnum}" >>$BXBK_RAIDFILE_CONF
|
|
[ -n "$blocksize" ] && echo " BlockSize = ${blocksize}" >>$BXBK_RAIDFILE_CONF
|
|
for i in 0 1 2; do
|
|
echo " Dir${i} = $path" >>$BXBK_RAIDFILE_CONF
|
|
done
|
|
|
|
echo "}" >>$BXBK_RAIDFILE_CONF
|
|
|
|
}
|
|
|
|
create_config() {
|
|
config_load bbstored
|
|
config_foreach bbstored_global bbstored 1
|
|
|
|
if [ "$EXTERNAL_CONFIG" -eq 0 ]
|
|
then
|
|
mkdir -p "$BXBK_CONFIG_PATH/bbstored"
|
|
BXBK_CONFIG_FILE="$BXBK_CONFIG_PATH/bbstored.conf"
|
|
touch "$BXBK_CONFIG_FILE"
|
|
|
|
config_load bbstored
|
|
config_foreach bbstored_global bbstored
|
|
|
|
[ -z "$BXBK_RAIDFILE_CONF" ] && return 1
|
|
rm -f "$BXBK_RAIDFILE_CONF"
|
|
touch "$BXBK_RAIDFILE_CONF"
|
|
|
|
config_foreach raidfile_section raidfile
|
|
|
|
chown -R ${RUNAS_USER:-nobody}:${RUNAS_GROUP:-nogroup} "$BXBK_CONFIG_PATH"
|
|
fi
|
|
}
|
|
|