57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
import os, subprocess
|
|
from xmlrpc.server import SimpleXMLRPCServer
|
|
|
|
def firewall_rule():
|
|
rule_name = "Inetaccess"
|
|
|
|
check_cmd = f'''
|
|
$rule = Get-NetFirewallRule -DisplayName "{rule_name}" -ErrorAction SilentlyContinue
|
|
if ($rule) {{ Write-Host "exists" }} else {{ Write-Host "not_exist" }}
|
|
'''
|
|
|
|
try:
|
|
result = subprocess.run(
|
|
['powershell', '-Command', check_cmd],
|
|
capture_output=True,
|
|
text=True,
|
|
check=True
|
|
)
|
|
|
|
if "exists" in result.stdout:
|
|
return True
|
|
|
|
create_cmd = f'''
|
|
New-NetFirewallRule -DisplayName "{rule_name}" -Direction Outbound -Action Block -Protocol TCP -RemotePort 80,443 -Enabled False
|
|
'''
|
|
|
|
subprocess.run(
|
|
['powershell', '-Command', create_cmd],
|
|
capture_output=True,
|
|
text=True,
|
|
check=True
|
|
)
|
|
return True
|
|
|
|
except Exception:
|
|
return False
|
|
|
|
def enable():
|
|
try:
|
|
firewall_rule()
|
|
os.system("netsh advfirewall firewall set rule name=Inetaccess new enable=yes")
|
|
return 0
|
|
except Exception:
|
|
return 1
|
|
|
|
def disable():
|
|
try:
|
|
firewall_rule()
|
|
os.system("netsh advfirewall firewall set rule name=Inetaccess new enable=no")
|
|
return 0
|
|
except Exception:
|
|
return 1
|
|
|
|
server = SimpleXMLRPCServer(("localhost", 6767))
|
|
server.register_function(enable, "enable")
|
|
server.register_function(disable, "disable")
|
|
server.serve_forever() |