aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/bbfw.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/bbfw.in')
-rwxr-xr-xsrc/bbfw.in105
1 files changed, 103 insertions, 2 deletions
diff --git a/src/bbfw.in b/src/bbfw.in
index f4450a3..7a3cebf 100755
--- a/src/bbfw.in
+++ b/src/bbfw.in
@@ -155,6 +155,102 @@ config_option()
155} 155}
156 156
157 157
158checkconfig()
159{
160 if test ! -f "${FW_CONF}";then
161 return 0;
162 fi
163
164 CONFIG_OK=yes
165
166 {
167 for OPT in order_prehook order_posthook order_ipsets order_iptables;do
168 # checks for duplicates
169 config_option ${OPT} > /dev/null
170 if test $? -ne 0;then
171 echo "config error: duplicate config entry for '${OPT}'"
172 CONFIG_OK=no
173 fi
174
175 # checks for invalid values
176 TMP_GLOBAL=no
177 TMP_LOCAL=no
178 TMP_CLUSTER=no
179 TMP_APPS=no
180 OPTVALS="$(config_option ${OPT} "global local apps cluster" A-Z a-z)"
181 for VAL in ${OPTVALS};do
182 case "${VAL}" in
183 global) TMP_GLOBAL=YES ;;
184 local) TMP_LOCAL=YES ;;
185 cluster) TMP_CLUSTER=YES ;;
186 apps) TMP_APPS=YES ;;
187 *)
188 echo "config error: unknown level order in '${OPT}'"
189 CONFIG_OK=no
190 ;;
191 esac
192 done
193 if test "${TMP_GLOBAL}" == "no";then
194 echo "config warning: option '${OPT}' does not have 'global' level"
195 fi
196 if test "${TMP_LOCAL}" == "no";then
197 echo "config warning: option '${OPT}' does not have 'local' level"
198 fi
199 if test "${TMP_CLUSTER}" == "no";then
200 echo "config warning: option '${OPT}' does not have 'cluster' level"
201 fi
202 if test "${TMP_APPS}" == "no";then
203 echo "config warning: option '${OPT}' does not have 'apps' level"
204 fi
205 done
206
207 # checks verbose option
208 config_option verbose |egrep -i '^yes$|^no$|^$' > /dev/null
209 TMPSTATUS=( ${PIPESTATUS[@]} )
210 if test ${TMPSTATUS[0]} -ne 0;then
211 echo "config error: duplicate config entry for 'verbose'"
212 CONFIG_OK=no
213 elif test ${TMPSTATUS[1]} -ne 0;then
214 echo "config error: invalid config value for 'verbose'"
215 CONFIG_OK=no
216 fi
217
218 # checks quiet option
219 config_option quiet |egrep -i '^yes$|^no$|^$' > /dev/null
220 TMPSTATUS=( ${PIPESTATUS[@]} )
221 if test ${TMPSTATUS[0]} -ne 0;then
222 echo "config error: duplicate config entry for 'quiet'"
223 CONFIG_OK=no
224 elif test ${TMPSTATUS[1]} -ne 0;then
225 echo "config error: invalid config value for 'quiet'"
226 CONFIG_OK=no
227 fi
228
229 # checks firewall_dir option
230 config_option firewall_dir |egrep -i '^yes$|^no$|^$' > /dev/null
231 TMPSTATUS=( ${PIPESTATUS[@]} )
232 if test ${TMPSTATUS[0]} -ne 0;then
233 echo "config error: duplicate config entry for 'quiet'"
234 CONFIG_OK=no
235 fi
236
237 # checks for firewall directory
238 if test ! -d "${FW_PREFIX}";then
239 echo "error: firewall directory not found"
240 CONFIG_OK=no
241 fi
242
243 } 1>&2
244
245 if test "x${CONFIG_OK}" == "xno";then
246 return 1
247 fi
248
249 echo "config ok"
250 return 0
251}
252
253
158conftest() 254conftest()
159{ 255{
160 # quiet option 256 # quiet option
@@ -485,6 +581,7 @@ version()
485} 581}
486 582
487 583
584
488############ 585############
489### MAIN ### 586### MAIN ###
490############ 587############
@@ -501,7 +598,7 @@ FW_ORDER_IPSETS="$( config_option order_ipsets "${FW_ORDER_IPSETS}" A-Z
501 598
502case "$1" in 599case "$1" in
503 -h|--help) 600 -h|--help)
504 echo "Usage: ${PROGRAM_NAME} [ start | stop | restart | dump ]" 601 echo "Usage: ${PROGRAM_NAME} [ start | stop | restart | dump | checkconfig ]"
505 echo " ${PROGRAM_NAME} [ -h | --help ]" 602 echo " ${PROGRAM_NAME} [ -h | --help ]"
506 echo " ${PROGRAM_NAME} [ -v | --version ]" 603 echo " ${PROGRAM_NAME} [ -v | --version ]"
507 echo "" 604 echo ""
@@ -515,6 +612,10 @@ case "$1" in
515 dump 612 dump
516 ;; 613 ;;
517 614
615 'checkconfig')
616 checkconfig || { echo "configuration error"; exit 1; }
617 ;;
618
518 'start') # "start" brings up all configured interfaces: 619 'start') # "start" brings up all configured interfaces:
519 version | $LOGGER 620 version | $LOGGER
520 conftest || exit 1 621 conftest || exit 1
@@ -535,7 +636,7 @@ case "$1" in
535 ;; 636 ;;
536 637
537 *) # The default is to bring up all configured interfaces: 638 *) # The default is to bring up all configured interfaces:
538 echo "Usage: ${PROGRAM_NAME} [ start | stop | restart | dump ]" 639 echo "Usage: ${PROGRAM_NAME} [ start | stop | restart | dump | checkconfig ]"
539 echo " ${PROGRAM_NAME} [ -h | --help ]" 640 echo " ${PROGRAM_NAME} [ -h | --help ]"
540 echo " ${PROGRAM_NAME} [ -v | --version ]" 641 echo " ${PROGRAM_NAME} [ -v | --version ]"
541 echo "" 642 echo ""