blob: 91bc1ad49aa26caea398bfcdb55cec631c450ece (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
#!/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
}
|