From 14bea9750ce4067f2f78bcd8a5543962350b4b74 Mon Sep 17 00:00:00 2001 From: Rich Date: Thu, 8 Jul 2021 19:49:21 +0100 Subject: [PATCH] . --- app/routes.py | 58 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 7 deletions(-) diff --git a/app/routes.py b/app/routes.py index 15f78f4..ba5aeab 100644 --- a/app/routes.py +++ b/app/routes.py @@ -42,7 +42,7 @@ def scan_networks(): connected = "*" if a == 1: if line.find("Encryption key:off") != -1: - password = " " + password = "" a = 2 else: password = "WPA2" @@ -146,7 +146,10 @@ network={{ try: output = subprocess.run( - ["sudo", "/usr/bin/systemctl", "start", "wpa_supplicant"], stdout=subprocess.PIPE, stderr=subprocess.PIPE,timeout=20 + ["sudo", "/usr/bin/systemctl", "start", "wpa_supplicant"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + timeout=20, ).stdout.decode("utf-8") output = subprocess.run( ["sudo", "/usr/sbin/ifup", "wlan0"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=20 @@ -165,14 +168,55 @@ def connect(ssid, security): if security == "WPA2": return redirect(url_for("wpa", ssid=ssid)) - cmd = CMD_JOIN.replace("*SSID*", ssid) + # network={ + # ssid="my ssid with spaces" + # key_mgmt=NONE + # } + + if not RPI: + cmd = CMD_JOIN.replace("*SSID*", ssid) + + output = subprocess.run(cmd.split(" "), stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.decode("utf-8") + if output.find("Error") == -1: + return render_template("message.html", message="Successfully connected to {}".format(ssid)) + + return render_template("message.html", message="Failed to connect to {}".format(ssid)) + else: + wpa = """country=GB # Your 2-digit country code +ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev +network={{ + ssid="{}" + key_mgmt=NONE +}} +""".format( + ssid + ) + + output = subprocess.run( + ["sudo", "/usr/sbin/ifdown", "wlan0"], stdout=subprocess.PIPE, stderr=subprocess.PIPE + ).stdout.decode("utf-8") + output = subprocess.run( + ["sudo", "/usr/bin/systemctl", "stop", "wpa_supplicant"], stdout=subprocess.PIPE, stderr=subprocess.PIPE + ).stdout.decode("utf-8") + + with open("/etc/wpa_supplicant/wpa_supplicant.conf", "wt") as f: + f.write(wpa) + + try: + output = subprocess.run( + ["sudo", "/usr/bin/systemctl", "start", "wpa_supplicant"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + timeout=20, + ).stdout.decode("utf-8") + output = subprocess.run( + ["sudo", "/usr/sbin/ifup", "wlan0"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=20 + ).stdout.decode("utf-8") + except: + return render_template("message.html", message="Failt to connected to {}".format(ssid)) - output = subprocess.run(cmd.split(" "), stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.decode("utf-8") - if output.find("Error") == -1: return render_template("message.html", message="Successfully connected to {}".format(ssid)) - return render_template("message.html", message="Failed to connect to {}".format(ssid)) - @app.route("/disconnect/", methods=["GET", "POST"]) @login_required