mirror of
https://github.com/imayushsaini/Bombsquad-Ballistica-Modded-Server.git
synced 2025-10-20 00:00:39 +00:00
added banned ip blocker
This commit is contained in:
parent
2a07c0c840
commit
b7ac3ddb29
1 changed files with 65 additions and 0 deletions
65
block_banned_ips.py
Normal file
65
block_banned_ips.py
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
import urllib.request
|
||||
import json
|
||||
import subprocess
|
||||
import threading
|
||||
|
||||
# URL to fetch banned IPs
|
||||
BAN_LIST_URL = "https://bcsservers.ballistica.workers.dev/fetchbannedips"
|
||||
|
||||
|
||||
def fetch_banned_ips():
|
||||
"""Fetch the list of banned IPs from the server using urllib."""
|
||||
try:
|
||||
with urllib.request.urlopen(BAN_LIST_URL) as response:
|
||||
data = response.read().decode('utf-8')
|
||||
return json.loads(data)
|
||||
except urllib.error.URLError as e:
|
||||
print(f"Error fetching banned IPs: {e}")
|
||||
return {}
|
||||
|
||||
|
||||
def is_ip_blocked(ip):
|
||||
"""Check if the IP is already blocked in iptables."""
|
||||
try:
|
||||
result = subprocess.run(
|
||||
["iptables", "-L", "-n", "-v"],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
text=True,
|
||||
)
|
||||
return ip in result.stdout
|
||||
except Exception as e:
|
||||
print(f"Error checking iptables for IP {ip}: {e}")
|
||||
return False
|
||||
|
||||
|
||||
def block_ip(ip):
|
||||
"""Block the given IP for UDP traffic using iptables."""
|
||||
try:
|
||||
subprocess.run(
|
||||
["iptables", "-A", "INPUT", "-s", ip, "-p", "udp", "-j", "DROP"],
|
||||
check=True,
|
||||
)
|
||||
print(f"Blocked IP: {ip}")
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"Error blocking IP {ip}: {e}")
|
||||
|
||||
|
||||
def main():
|
||||
"""Main function to fetch banned IPs and block them."""
|
||||
banned_ips = fetch_banned_ips()
|
||||
for ip, details in banned_ips.items():
|
||||
if not is_ip_blocked(ip):
|
||||
print(
|
||||
f"Blocking IP: {ip} (Reason: {details.get('reason', 'No reason provided')})")
|
||||
block_ip(ip)
|
||||
else:
|
||||
print(f"IP {ip} is already blocked.")
|
||||
|
||||
|
||||
def schedule_main():
|
||||
"""Schedule the main function to run every hour."""
|
||||
main()
|
||||
print("Scheduled to run again in 1 hour...")
|
||||
# Schedule to run after 1 hour
|
||||
threading.Timer(3600, schedule_main).start()
|
||||
Loading…
Add table
Add a link
Reference in a new issue