58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
from netaddr import IPNetwork
|
|
from utils_v2.string import json
|
|
|
|
src_network = IPNetwork("100.64.0.0/24")
|
|
src_subnets = list(src_network.subnet(28))
|
|
print("SUBNET:", json.to_string(src_subnets, default=str))
|
|
print("COUNT:", len(src_subnets))
|
|
|
|
|
|
dst_network = IPNetwork("100.127.0.0/28")
|
|
dst_subnets = list(dst_network.subnet(32))
|
|
print("SUBNET:", json.to_string(dst_subnets, default=str))
|
|
print("COUNT:", len(dst_subnets))
|
|
|
|
|
|
final_json = [
|
|
{
|
|
"action": "src-nat",
|
|
"chain": "srcnat",
|
|
"disabled": "false",
|
|
"src-address": str(i[0]),
|
|
"to-addresses": str(i[1])
|
|
} for i in zip(src_subnets, dst_subnets)
|
|
]
|
|
print("SUBNET:", json.to_string(final_json, default=str))
|
|
|
|
import asyncio
|
|
import httpx
|
|
|
|
http_client = httpx.AsyncClient(
|
|
limits = httpx.Limits(
|
|
max_connections = 100, # ............ Maximum number of connections allowed in the pool.
|
|
max_keepalive_connections = 50, # ... Maximum number of connections that can be kept alive.
|
|
),
|
|
timeout = httpx.Timeout(
|
|
pool = 120.0, # .... Time to wait for a free connection from the pool.
|
|
connect = 2.5, # ... Time to wait for establishing a connection to the server.
|
|
write = 10.0, # .... Time to wait for sending data.
|
|
read = 9.9 # ....... Time to wait for receiving data.
|
|
)
|
|
)
|
|
|
|
|
|
async def configure_nat():
|
|
|
|
tasks = [
|
|
http_client.put(
|
|
url = r"http://102.210.175.251/rest/ip/firewall/nat",
|
|
auth = httpx.BasicAuth(username = "easyfi", password = "easyfi"),
|
|
json = i
|
|
) for i in final_json
|
|
]
|
|
print("Async NAT")
|
|
results = await asyncio.gather(*tasks)
|
|
print(results)
|
|
|
|
# asyncio.run(configure_nat())
|