From 3fbc76fc3fc9c4702717af5b88d78d0d866946cb Mon Sep 17 00:00:00 2001 From: Mahad <mahad@xconn.io> Date: Fri, 2 Aug 2024 13:57:32 +0500 Subject: [PATCH] apply lint changes --- wireguard/__main__.py | 6 +-- wireguard/backend/backend.py | 77 +++++++++++++++++++----------------- 2 files changed, 44 insertions(+), 39 deletions(-) diff --git a/wireguard/__main__.py b/wireguard/__main__.py index 6f53d0b..46691f7 100644 --- a/wireguard/__main__.py +++ b/wireguard/__main__.py @@ -10,11 +10,11 @@ def manage_menu(): choice = input("Choose an option: ") - if choice == '1': + if choice == "1": backend.new_client() - elif choice == '2': + elif choice == "2": backend.list_clients() - elif choice == '3': + elif choice == "3": break else: print("Invalid choice. Please try again.") diff --git a/wireguard/backend/backend.py b/wireguard/backend/backend.py index 0cf948e..83aea30 100644 --- a/wireguard/backend/backend.py +++ b/wireguard/backend/backend.py @@ -4,7 +4,7 @@ import json import subprocess -CONFIG_FILE = 'config.json' +CONFIG_FILE = "config.json" def is_root(): @@ -17,7 +17,7 @@ def get_home_dir(client_name): if os.path.exists(home_dir): return home_dir - sudo_user = os.getenv('SUDO_USER', None) + sudo_user = os.getenv("SUDO_USER", None) if sudo_user is not None: if sudo_user == "root": return "/root" @@ -33,17 +33,17 @@ def create_config(): print() server_pub_ip = subprocess.check_output(["ip", "-4", "addr"]).decode().strip() - server_pub_ip = re.search(r'inet (\S+)/\d+ scope global', server_pub_ip) + server_pub_ip = re.search(r"inet (\S+)/\d+ scope global", server_pub_ip) if server_pub_ip: server_pub_ip = server_pub_ip.group(1) else: server_pub_ip = subprocess.check_output(["ip", "-6", "addr"]).decode().strip() - server_pub_ip = re.search(r'inet6 (\S+)/', server_pub_ip).group(1) + server_pub_ip = re.search(r"inet6 (\S+)/", server_pub_ip).group(1) server_pub_ip = input(f"IPv4 or IPv6 public address: [{server_pub_ip}] ") or server_pub_ip server_pub_nic = subprocess.check_output(["ip", "-4", "route", "ls"]).decode().strip() - server_pub_nic = re.search(r'dev (\S+)', server_pub_nic).group(1) + server_pub_nic = re.search(r"dev (\S+)", server_pub_nic).group(1) server_pub_nic = input(f"Public interface: [{server_pub_nic}] ") or server_pub_nic server_wg_nic = input("WireGuard interface name: [wg0] ") or "wg0" @@ -57,8 +57,10 @@ def create_config(): client_dns_1 = input("First DNS resolver to use for the clients: [1.1.1.1] ") or "1.1.1.1" client_dns_2 = input("Second DNS resolver to use for the clients (optional): [1.0.0.1] ") or "1.0.0.1" - allowed_ips = input( - "Allowed IPs list for generated clients (leave default to route everything): [0.0.0.0/0,::/0] ") or "0.0.0.0/0,::/0" + allowed_ips = ( + input("Allowed IPs list for generated clients (leave default to route everything): [0.0.0.0/0,::/0] ") + or "0.0.0.0/0,::/0" + ) config = { "server_pub_ip": server_pub_ip, @@ -69,7 +71,7 @@ def create_config(): "server_port": server_port, "client_dns_1": client_dns_1, "client_dns_2": client_dns_2, - "allowed_ips": allowed_ips + "allowed_ips": allowed_ips, } with open(CONFIG_FILE, "w") as f: @@ -77,42 +79,45 @@ def create_config(): def read_config(): - with open(CONFIG_FILE, 'r') as f: + with open(CONFIG_FILE, "r") as f: return json.loads(f.read()) def generate_keys(): - private_key = subprocess.check_output(["wg", "genkey"]).strip().decode('utf-8') - public_key = subprocess.check_output(["wg", "pubkey"], input=private_key.encode()).strip().decode('utf-8') + private_key = subprocess.check_output(["wg", "genkey"]).strip().decode("utf-8") + public_key = subprocess.check_output(["wg", "pubkey"], input=private_key.encode()).strip().decode("utf-8") return private_key, public_key def get_client_name(server_wg_nic): while True: client_name = input("Client name: ") - if re.match(r'^[a-zA-Z0-9_-]+$', client_name) and len(client_name) < 16: + if re.match(r"^[a-zA-Z0-9_-]+$", client_name) and len(client_name) < 16: result = subprocess.run( - ['grep', '-c', f'^### Client {client_name}$', f'/etc/wireguard/{server_wg_nic}.conf'], - capture_output=True, text=True) - if result.stdout.strip() == '0': + ["grep", "-c", f"^### Client {client_name}$", f"/etc/wireguard/{server_wg_nic}.conf"], + capture_output=True, + text=True, + ) + if result.stdout.strip() == "0": return client_name print("A client with the specified name was already created, please choose another name.") else: print( - "The client name must consist of alphanumeric characters, underscores, or dashes and can't exceed 15 chars.") + "The client name must consist of alphanumeric characters, " + "underscores, or dashes and can't exceed 15 chars." + ) def find_available_ip(base_ip, conf_file): for dot_ip in range(2, 255): - result = subprocess.run(['grep', '-c', f'{base_ip[:-1]}{dot_ip}', conf_file], capture_output=True, - text=True) - if result.stdout.strip() == '0': + result = subprocess.run(["grep", "-c", f"{base_ip[:-1]}{dot_ip}", conf_file], capture_output=True, text=True) + if result.stdout.strip() == "0": return dot_ip raise RuntimeError("The subnet configured supports only 253 clients.") def generate_preshared_key(): - preshared_key = subprocess.check_output(["wg", "genpsk"]).strip().decode('utf-8') + preshared_key = subprocess.check_output(["wg", "genpsk"]).strip().decode("utf-8") return preshared_key @@ -125,27 +130,27 @@ def new_client(): config = read_config() server_pub_ip = config["server_pub_ip"] - server_port = config['server_port'] - server_wg_nic = config['server_wg_nic'] - server_wg_ipv4 = config['server_wg_ipv4'] - server_wg_ipv6 = config['server_wg_ipv6'] - client_dns_1 = config['client_dns_1'] - client_dns_2 = config['client_dns_2'] + server_port = config["server_port"] + server_wg_nic = config["server_wg_nic"] + server_wg_ipv4 = config["server_wg_ipv4"] + server_wg_ipv6 = config["server_wg_ipv6"] + client_dns_1 = config["client_dns_1"] + client_dns_2 = config["client_dns_2"] private_key, public_key = generate_keys() server_pub_key = public_key - allowed_ips = config['allowed_ips'] + allowed_ips = config["allowed_ips"] - if ':' in server_pub_ip and not (server_pub_ip.startswith('[') and server_pub_ip.endswith(']')): + if ":" in server_pub_ip and not (server_pub_ip.startswith("[") and server_pub_ip.endswith("]")): server_pub_ip = f"[{server_pub_ip}]" endpoint = f"{server_pub_ip}:{server_port}" client_name = get_client_name(server_wg_nic) - dot_ip = find_available_ip(server_wg_ipv4, f'/etc/wireguard/{server_wg_nic}.conf') + dot_ip = find_available_ip(server_wg_ipv4, f"/etc/wireguard/{server_wg_nic}.conf") client_wg_ipv4 = f"{server_wg_ipv4.rsplit('.', 1)[0]}.{dot_ip}" - dot_ip = find_available_ip(server_wg_ipv6, f'/etc/wireguard/{server_wg_nic}.conf') + dot_ip = find_available_ip(server_wg_ipv6, f"/etc/wireguard/{server_wg_nic}.conf") client_wg_ipv6 = f"{server_wg_ipv6.split('::')[0]}::{dot_ip}" client_priv_key = private_key @@ -168,7 +173,7 @@ def new_client(): """ client_dir = os.path.join(home_dir, f"{client_name}.conf") - with open(client_dir, 'w') as f: + with open(client_dir, "w") as f: f.write(client_conf) server_conf = f""" @@ -178,10 +183,10 @@ def new_client(): PresharedKey = {client_pre_shared_key} AllowedIPs = {client_wg_ipv4}/32,{client_wg_ipv6}/128 """ - with open(f"/etc/wireguard/{server_wg_nic}.conf", 'a') as f: + with open(f"/etc/wireguard/{server_wg_nic}.conf", "a") as f: f.write(server_conf) - subprocess.run(['wg', 'syncconf', server_wg_nic, f"<(wg-quick strip {server_wg_nic})"], shell=True) + subprocess.run(["wg", "syncconf", server_wg_nic, f"<(wg-quick strip {server_wg_nic})"], shell=True) qr_file = f"{client_dir}.png" subprocess.run(["qrencode", "-o", qr_file, "-t", "png", server_conf], check=True) @@ -193,7 +198,7 @@ def new_client(): def list_clients(): is_root() - wg_dir = '/etc/wireguard' + wg_dir = "/etc/wireguard" if not os.path.exists(wg_dir): print("WireGuard directory does not exist.") @@ -208,13 +213,13 @@ def list_clients(): config_file = f"{wg_dir}/{server_wg_nic}.conf" try: - with open(config_file, 'r') as file: + with open(config_file, "r") as file: lines = file.readlines() except FileNotFoundError: print(f"Configuration file {config_file} not found.") sys.exit(1) - clients = [line.split(' ')[2].strip() for line in lines if line.startswith('### Client')] + clients = [line.split(" ")[2].strip() for line in lines if line.startswith("### Client")] if len(clients) == 0: print("\nYou have no existing clients!")