diff options
| author | David M. Syzdek <syzdek@bindlebinaries.com> | 2019-07-29 16:38:23 -0800 |
|---|---|---|
| committer | David M. Syzdek <syzdek@bindlebinaries.com> | 2019-07-29 16:38:23 -0800 |
| commit | 5d8b911b5a03548f282d28410db5af0733f6873f (patch) | |
| tree | a4f2461348370811de825277b04562db71fb2bef | |
| parent | eafaf52b61d73584b5ab383722907d964037858d (diff) | |
| download | bbfw-5d8b911b5a03548f282d28410db5af0733f6873f.tar.gz bbfw-5d8b911b5a03548f282d28410db5af0733f6873f.tar.bz2 bbfw-5d8b911b5a03548f282d28410db5af0733f6873f.tar.xz bbfw-5d8b911b5a03548f282d28410db5af0733f6873f.zip | |
Adding 'checkconfig' action to bbfw
| -rwxr-xr-x | src/bbfw.in | 105 |
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 | ||
| 158 | checkconfig() | ||
| 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 | |||
| 158 | conftest() | 254 | conftest() |
| 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 | ||
| 502 | case "$1" in | 599 | case "$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 "" |
