when i toggle to add rule it adds 1 rule but when i toggle to remove the rule it creates somehow 3 of them
β¨β¨β¨β¨```py
import keyboard, subprocess
settings = {"test": False}
firewall = {
"rule_name": "test",
"ip": "111.11.111.111",
"port": 80}
def add_test(rule_name, ip, port):
cmd = f'netsh advfirewall firewall delete rule name="{rule_name}"'
subprocess.run(cmd, shell=True, capture_output=True)
cmd = (
f'netsh advfirewall firewall add rule name="{rule_name}" '
f'dir=out action=block remoteip={ip} protocol=TCP remoteport={port}'
)
try:
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
if result.returncode == 0:
print(f"Successfully created rule: {rule_name}")
return
else:
print(f"CMD Error: {result.stderr}")
print(f"CMD Output: {result.stdout}")
except Exception as e:
print(f"An error occurred: {e}")
def remove_test(rule_name):
cmd = f'netsh advfirewall firewall delete rule name="{rule_name}"'
subprocess.run(cmd, shell=True)
print(f"Rule {rule_name} deleted.")
def toggle_setting(setting, name, print_out):
settings[setting] = not settings[setting]
if print_out == True: print(f"{name} = {settings[setting]}")
if setting == "nosave":
if settings[setting] == True:
add_test(firewall['rule_name'], firewall['ip'], firewall['port']); return
else:
remove_test(firewall['rule_name']); return
return settings[setting]
def hotkeys():
def hotkey(button, setting, name, print_out): keyboard.add_hotkey(button, lambda: toggle_setting(setting, name, print_out))
hotkey("ctrl+f9", "test", "test", True)```β©β©β©β©
terminal:
test = True
Successfully created rule: test
test = False
Deleted 1 rule(s).
Ok.
Rule test deleted.