#
LC_ALL=C
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-ban_ver="0.3.6"
+ban_ver="0.3.7"
ban_basever=""
ban_enabled=0
ban_automatic="1"
if { [ "${rc}" -ne 0 ] && { [ "${action}" = "-A" ] || [ "${action}" = "-I" ]; } } || \
{ [ "${rc}" -eq 0 ] && [ "${action}" = "-D" ]; }
then
- "${ban_ipt6}" "${timeout}" "${action}" ${rule}
+ "${ban_ipt6}" "${timeout}" "${action}" ${rule} 2>/dev/null
fi
fi
else
if { [ "${rc}" -ne 0 ] && { [ "${action}" = "-A" ] || [ "${action}" = "-I" ]; } } || \
{ [ "${rc}" -eq 0 ] && [ "${action}" = "-D" ]; }
then
- "${ban_ipt}" "${timeout}" "${action}" ${rule}
+ "${ban_ipt}" "${timeout}" "${action}" ${rule} 2>/dev/null
fi
fi
fi
+ if [ "${?}" -ne 0 ]
+ then
+ > "${tmp_err}"
+ f_log "info" "can't create iptables rule: action: '${action:-"-"}', rule: '${rule:-"-"}'"
+ fi
}
# remove/add iptables rules
"initial")
if [ -x "${ban_ipt}" ] && [ -z "$("${ban_ipt}" "${timeout}" -nL "${ban_chain}" 2>/dev/null)" ]
then
- "${ban_ipt}" "${timeout}" -N "${ban_chain}"
+ "${ban_ipt}" "${timeout}" -N "${ban_chain}" 2>/dev/null
+ out_rc="${?}"
elif [ -x "${ban_ipt}" ]
then
src_name="ruleset"
fi
if [ -x "${ban_ipt6}" ] && [ -z "$("${ban_ipt6}" "${timeout}" -nL "${ban_chain}" 2>/dev/null)" ]
then
- "${ban_ipt6}" "${timeout}" -N "${ban_chain}"
+ "${ban_ipt6}" "${timeout}" -N "${ban_chain}" 2>/dev/null
+ out_rc="${?}"
elif [ -x "${ban_ipt6}" ]
then
src_name="ruleset_6"
f_iptrule "-D" "${rule} -j ${ban_chain}"
done
fi
- f_log "debug" "f_ipset ::: name: -, mode: ${mode:-"-"}, chain: ${ban_chain:-"-"}, ruleset: ${ruleset:-"-"}, ruleset_6: ${ruleset_6:-"-"}"
+ out_rc="${out_rc:-"${in_rc}"}"
+ f_log "debug" "f_ipset ::: name: -, mode: ${mode:-"-"}, chain: ${ban_chain:-"-"}, ruleset: ${ruleset:-"-"}, ruleset_6: ${ruleset_6:-"-"}, out_rc: ${out_rc}"
+ return "${out_rc}"
;;
"create")
if [ -x "${ban_ipset}" ]
end_ts="$(date +%s)"
out_rc="${out_rc:-"${in_rc}"}"
f_log "debug" "f_ipset ::: name: ${src_name:-"-"}, mode: ${mode:-"-"}, settype: ${src_settype:-"-"}, setipv: ${src_setipv:-"-"}, ruletype: ${src_ruletype:-"-"}, count(sum/ip/cidr): ${cnt}/${cnt_ip}/${cnt_cidr}, time: $((end_ts-start_ts)), out_rc: ${out_rc}"
+ return "${out_rc}"
;;
"refresh")
if [ -x "${ban_ipset}" ] && [ -n "$("${ban_ipset}" -q -n list "${src_name}")" ]
[ -n "$("${ban_ipt}" "${timeout}" -nL "${ban_chain}" 2>/dev/null)" ]
then
"${ban_ipt_save}" | grep -v -- "-j ${ban_chain}" | "${ban_ipt_restore}"
- "${ban_ipt}" "${timeout}" -F "${ban_chain}"
- "${ban_ipt}" "${timeout}" -X "${ban_chain}"
+ "${ban_ipt}" "${timeout}" -F "${ban_chain}" 2>/dev/null
+ "${ban_ipt}" "${timeout}" -X "${ban_chain}" 2>/dev/null
fi
if [ -x "${ban_ipt6}" ] && [ -x "${ban_ipt6_save}" ] && [ -x "${ban_ipt6_restore}" ] && \
[ -n "$("${ban_ipt6}" "${timeout}" -nL "${ban_chain}" 2>/dev/null)" ]
then
"${ban_ipt6_save}" | grep -v -- "-j ${ban_chain}" | "${ban_ipt6_restore}"
- "${ban_ipt6}" "${timeout}" -F "${ban_chain}"
- "${ban_ipt6}" "${timeout}" -X "${ban_chain}"
+ "${ban_ipt6}" "${timeout}" -F "${ban_chain}" 2>/dev/null
+ "${ban_ipt6}" "${timeout}" -X "${ban_chain}" 2>/dev/null
fi
for source in ${ban_sources}
do
mem_free="$(awk '/^MemFree/ {print int($2/1000)}' "/proc/meminfo" 2>/dev/null)"
f_log "debug" "f_main ::: fetch_util: ${ban_fetchutil:-"-"}, fetch_parm: ${ban_fetchparm:-"-"}, ssh_daemon: ${ban_sshdaemon}, interface(s): ${ban_iface:-"-"}, device(s): ${ban_dev:-"-"}, all_devices: ${ban_dev_all:-"-"}, backup_dir: ${ban_backupdir:-"-"}, mem_total: ${mem_total:-0}, mem_free: ${mem_free:-0}, max_queue: ${ban_maxqueue}"
- # main loop
+ # chain creation
#
f_ipset initial
+ if [ "${?}" -ne 0 ]
+ then
+ f_log "err" "banIP processing failed, fatal error during iptables chain creation (${ban_sysver})"
+ fi
+
+ # main loop
+ #
for src_name in ${ban_sources}
do
unset src_on
tmp_file="${ban_tmpfile}.${src_name}.file"
tmp_raw="${tmp_file}.raw"
tmp_cnt="${tmp_file}.cnt"
+ tmp_err="${tmp_file}.err"
+
# basic pre-checks
#
f_log "debug" "f_main ::: name: ${src_name}, src_on: ${src_on:-"-"}"
done
wait
- for cnt in $(cat "${ban_tmpfile}".*.cnt 2>/dev/null)
- do
- ban_cnt="$((ban_cnt+cnt))"
- done
- if [ "${ban_cnt}" -gt 0 ]
+ if [ -z "$(ls "${ban_tmpfile}".*.err 2>/dev/null)" ]
then
- ban_setcnt="$(ls "${ban_tmpfile}".*.cnt 2>/dev/null | wc -l)"
+ for cnt in $(cat "${ban_tmpfile}".*.cnt 2>/dev/null)
+ do
+ ban_cnt="$((ban_cnt+cnt))"
+ done
+ if [ "${ban_cnt}" -gt 0 ]
+ then
+ ban_setcnt="$(ls "${ban_tmpfile}".*.cnt 2>/dev/null | wc -l)"
+ fi
+ f_log "info" "${ban_setcnt} IPSets with overall ${ban_cnt} IPs/Prefixes loaded successfully (${ban_sysver})"
+ f_bgserv "start"
+ f_jsnup
+ f_rmtemp
+ else
+ f_log "err" "banIP processing failed, fatal iptables error(s) during subshell processing (${ban_sysver})"
fi
- f_log "info" "${ban_setcnt} IPSets with overall ${ban_cnt} IPs/Prefixes loaded successfully (${ban_sysver})"
- f_bgserv "start"
- f_jsnup
- f_rmtemp
}
# update runtime information