diff --git a/vpnmonitor.sh b/vpnmonitor.sh index 35fbfd7..964e7ec 100644 --- a/vpnmonitor.sh +++ b/vpnmonitor.sh @@ -14,8 +14,8 @@ else fi currentTime="date +%T" -connectFormat="^(?:\s|[0-9])+[0-9]+:[0-9]+\sClientConnect:.*IP:\s[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" -echo "VPN monitor - original version by devon, modified by Spaghetti" +connectFormat="^(\s|[0-9])+[0-9]+:[0-9]+\sClientConnect:.*IP:\s[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" +echo "VPN monitor - original version by devon, modified by Spaghetti, further modified by 2cwldys" echo "version 1.1 - 2021/9/12" echo "`$currentTime` Monitoring `echo $logpath | awk -F '/' '{print $NF}'` for server at $rconip:$rconport" @@ -37,7 +37,7 @@ do echo "`$currentTime` $connectIP : was not found in database" echo "`$currentTime` $connectIP : checking for VPN" response=$(curl -s http://v2.api.iphub.info/ip/"$connectIP" -H "X-Key: $apikey") - #echo "`$currentTime` $connectIP : $response" # uncomment if you need to debug the API response + echo "`$currentTime` $connectIP : $response" # uncomment if you need to debug the API response if [[ "$response" =~ '"block":0' ]]; then vpn=0 elif [[ "$response" =~ '"block":1' ]]; then @@ -58,12 +58,24 @@ do printf '\xFF\xFF\xFF\xFFrcon '"$rconpass"' svsay ^3Potential VPN detection for client '"$connectID"'\n' | nc -u -n -w 1 $rconip $rconport > /dev/null echo "`$currentTime` $connectIP : allowed & warned" elif [[ $vpn == 1 || $vpn == 2 ]]; then - echo "`$currentTime` $connectIP : VPN detected" + echo "`$currentTime` $connectIP : VPN detected, kicked in 15 seconds!" + printf '\xFF\xFF\xFF\xFFrcon '"$rconpass"' svsay ^5[Bot] ^1VPN ^7use detected! ^3'"$connectID"' ^7kicked in 15 seconds!\n' | nc -u -n -w 1 $rconip $rconport > /dev/null sqlite3 "$databasepath" "INSERT INTO iplist(ip, vpn) VALUES ('$connectIP', $vpn)" printf '\xFF\xFF\xFF\xFFrcon '"$rconpass"' addip '"$connectIP"'\n' | nc -u -n -w 1 $rconip $rconport > /dev/null + printf '\xFF\xFF\xFF\xFFrcon '"$rconpass"' marktk '"$connectID"'\n' | nc -u -n -w 1 $rconip $rconport > /dev/null + printf '\xFF\xFF\xFF\xFFrcon '"$rconpass"' mute '"$connectID"'\n' | nc -u -n -w 1 $rconip $rconport > /dev/null + sleep 5s + echo "`$currentTime` $connectIP : VPN detected, kicked in 10 seconds!" + printf '\xFF\xFF\xFF\xFFrcon '"$rconpass"' svsay ^5[Bot] ^1VPN ^7use detected! ^3'"$connectID"' ^7kicked in 10 seconds!\n' | nc -u -n -w 1 $rconip $rconport > /dev/null + printf '\xFF\xFF\xFF\xFFrcon '"$rconpass"' marktk '"$connectID"'\n' | nc -u -n -w 1 $rconip $rconport > /dev/null + sleep 5s + echo "`$currentTime` $connectIP : VPN detected, kicked in 5 seconds!" + printf '\xFF\xFF\xFF\xFFrcon '"$rconpass"' svsay ^5[Bot] ^1VPN ^7use detected! ^3'"$connectID"' ^7kicked in 5 seconds!\n' | nc -u -n -w 1 $rconip $rconport > /dev/null + printf '\xFF\xFF\xFF\xFFrcon '"$rconpass"' marktk '"$connectID"'\n' | nc -u -n -w 1 $rconip $rconport > /dev/null + sleep 5s printf '\xFF\xFF\xFF\xFFrcon '"$rconpass"' kick '"$connectID"'\n' | nc -u -n -w 1 $rconip $rconport > /dev/null - printf '\xFF\xFF\xFF\xFFrcon '"$rconpass"' svsay ^1Banned client '"$connectID"' for VPN use\n' | nc -u -n -w 1 $rconip $rconport > /dev/null - echo "`$currentTime` $connectIP : banned & kicked" + printf '\xFF\xFF\xFF\xFFrcon '"$rconpass"' svsay ^5[Bot] ^1Banned client ^3'"$connectID"' ^1for VPN use!\n' | nc -u -n -w 1 $rconip $rconport > /dev/null + echo "`$currentTime` $connectIP : banned & kicked." else echo "invalid response, doing nothing" fi