From 78bf257edd4d99bb5f2ba8d54598a77acc2108e7 Mon Sep 17 00:00:00 2001 From: Rich Date: Fri, 3 Sep 2021 17:30:26 +0100 Subject: [PATCH] , --- app/__init__.py | 3 +++ app/network_utils.py | 38 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index 39161d3..614cc2e 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -3,6 +3,7 @@ from config import Config from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate from flask_login import LoginManager +from app.network_utils import cleanup_network app = Flask(__name__) app.config.from_object(Config) @@ -11,4 +12,6 @@ migrate = Migrate(app, db) login = LoginManager(app) login.login_view = "login" +cleanup_network() + from app import routes2, models diff --git a/app/network_utils.py b/app/network_utils.py index 45eb86a..1bf545e 100644 --- a/app/network_utils.py +++ b/app/network_utils.py @@ -116,8 +116,17 @@ def scan_networks(): current = output.partition("ESSID:")[2].strip().strip('"') - output = run_subprocess("sudo iwlist {} scan".format(ClientInterface)) - + worked = False + while not worked: + try: + output = run_subprocess("sudo iwlist {} scan".format(ClientInterface)) + worked = True + except: + try: + output = run_subprocess("sudo ifup {}".format(ClientInterface)) + time.sleep(1) + except: + pass scan = parse_iwlist(output, current) return scan @@ -176,6 +185,31 @@ def disconnect_network(): return True +def cleanup_network(): + run_subprocess_interface("sudo /usr/sbin/ifdown {}") + + with open("/etc/wpa_supplicant/wpa_supplicant.conf", "wt") as f: + f.write(wpafile_none) + + run_subprocess("sudo /usr/bin/systemctl stop wpa_supplicant") + + with open("/etc/network/interfaces", "r") as sources: + lines = sources.readlines() + with open("/etc/network/interfaces", "w") as sources: + for line in lines: + sources.write( + re.sub(r"^iface {} inet dhcp".format(ClientInterface), "iface {} inet manual".format(ClientInterface), line) + ) + + try: + run_subprocess("sudo /usr/bin/systemctl start wpa_supplicant") + run_subprocess_interface("sudo /usr/sbin/ifup {}") + except: + return False + + return True + + def vpn_connected(): if run_subprocess("nordvpn status").find("Disconnected") != -1: return False