|
|
@ -12,7 +12,7 @@ |
|
|
|
export LC_ALL=C |
|
|
|
export PATH="/usr/sbin:/usr/bin:/sbin:/bin" |
|
|
|
set -o pipefail |
|
|
|
ban_ver="0.7.7" |
|
|
|
ban_ver="0.7.8" |
|
|
|
ban_enabled="0" |
|
|
|
ban_mail_enabled="0" |
|
|
|
ban_proto4_enabled="0" |
|
|
@ -63,6 +63,7 @@ ban_wan_forwardchains_4="" |
|
|
|
ban_wan_forwardchains_6="" |
|
|
|
ban_action="${1:-"start"}" |
|
|
|
ban_pidfile="/var/run/banip.pid" |
|
|
|
ban_bgpidfile="/var/run/banip_bg.pid" |
|
|
|
ban_tmpbase="/tmp" |
|
|
|
ban_rtfile="${ban_tmpbase}/ban_runtime.json" |
|
|
|
ban_srcfile="${ban_tmpbase}/ban_sources.json" |
|
|
@ -921,18 +922,29 @@ f_log() |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
# kill all relevant background processes |
|
|
|
# |
|
|
|
f_pidx() |
|
|
|
{ |
|
|
|
local pids ppid="${1}" |
|
|
|
|
|
|
|
pids="$(pgrep -P "${ppid}" 2>/dev/null | awk '{ORS=" ";print $0}')" |
|
|
|
kill -HUP "${ppid}" "${pids}" 2>/dev/null |
|
|
|
> "${ban_bgpidfile}" |
|
|
|
} |
|
|
|
|
|
|
|
# start log service to trace failed ssh/luci logins |
|
|
|
# |
|
|
|
f_bgsrv() |
|
|
|
{ |
|
|
|
local bg_pid action="${1}" |
|
|
|
|
|
|
|
bg_pid="$(pgrep -f "^/bin/sh ${ban_logservice}|${ban_logread_cmd}|^grep -qE Exit before auth|^grep -qE error: maximum|^grep -qE luci: failed|^grep -qE nginx" | awk '{ORS=" "; print $1}')" |
|
|
|
bg_pid="$(cat "${ban_bgpidfile}" 2>/dev/null)" |
|
|
|
if [ "${action}" = "start" ] && [ -x "${ban_logservice}" ] && [ "${ban_monitor_enabled}" = "1" ] && [ "${ban_whitelistonly}" = "0" ] |
|
|
|
then |
|
|
|
if [ -n "${bg_pid}" ] |
|
|
|
then |
|
|
|
kill -HUP "${bg_pid}" 2>/dev/null |
|
|
|
f_pidx "${bg_pid}" |
|
|
|
fi |
|
|
|
if [ -n "$(printf "%s\n" "${ban_logterms}" | grep -F "dropbear")" ] |
|
|
|
then |
|
|
@ -950,12 +962,15 @@ f_bgsrv() |
|
|
|
then |
|
|
|
ban_search="${ban_search}nginx\[[0-9]+\]:.*\[error\].*open().*client: [[:alnum:].:]+|" |
|
|
|
fi |
|
|
|
( "${ban_logservice}" "${ban_ver}" "${ban_search%?}" & ) |
|
|
|
elif [ "${action}" = "stop" ] && [ -n "${bg_pid}" ] |
|
|
|
( |
|
|
|
"${ban_logservice}" "${ban_ver}" "${ban_search%?}" & |
|
|
|
printf "%s" "${!}" > "${ban_bgpidfile}" |
|
|
|
) |
|
|
|
elif { [ "${action}" = "stop" ] || [ "${ban_monitor_enabled}" = "0" ]; } && [ -n "${bg_pid}" ] |
|
|
|
then |
|
|
|
kill -HUP "${bg_pid}" 2>/dev/null |
|
|
|
f_pidx "${bg_pid}" |
|
|
|
fi |
|
|
|
f_log "debug" "f_bgsrv ::: action: ${action:-"-"}, bg_pid: ${bg_pid:-"-"}, monitor_enabled: ${ban_monitor_enabled:-"-"}, log_service: ${ban_logservice:-"-"}" |
|
|
|
f_log "debug" "f_bgsrv ::: action: ${action:-"-"}, bg_pid (old/new): ${bg_pid}/$(cat "${ban_bgpidfile}" 2>/dev/null), monitor_enabled: ${ban_monitor_enabled:-"-"}, log_service: ${ban_logservice:-"-"}" |
|
|
|
} |
|
|
|
|
|
|
|
# download controller |
|
|
|