From 673d823599335a73ee52cf86df4d0f35c16d3e96 Mon Sep 17 00:00:00 2001 From: Rich Date: Sun, 4 Jul 2021 09:32:50 +0100 Subject: [PATCH] . --- app/routes.py | 28 ++++++++++++++++++++++++++-- config.py | 2 ++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/app/routes.py b/app/routes.py index 3e70163..c17555f 100644 --- a/app/routes.py +++ b/app/routes.py @@ -1,13 +1,29 @@ +import subprocess +from pprint import pformat + from flask import flash, redirect, render_template, url_for from flask_login import current_user, login_required, login_user, logout_user from app import app from app.forms import LoginForm, WPAForm -from app.models import User, Network, Networks +from app.models import Network, Networks, User +from config import debug CMD_SCAN = "sudo nmcli -t -f SSID,SIGNAL,IN-USE,SECURITY -e yes -m tab device wifi list ifname wlxf81a6719febb --rescan yes" CMD_JOIN = 'sudo nmcli device wifi connect "*SSID*" ifname wlxf81a6719febb' CMD_JOINPW = 'sudo nmcli device wifi connect "*SSID*" ifname wlxf81a6719febb password "*PASSWORD*"' +# Error: Connection activation failed: (7) Secrets were required, but not provided. +# Device 'wlxf81a6719febb' successfully activated with '11111-1111-11111-111111-11111111' + + +def scan_networks(): + scan = [] + output = subprocess.run(CMD_SCAN.split(" "), stdout=subprocess.PIPE).stdout.decode("utf-8") + for line in output.splitlines(): + t = line.split(":") + if t[0] != "": + scan.append(line) + return scan @app.route("/") @@ -16,6 +32,9 @@ CMD_JOINPW = 'sudo nmcli device wifi connect "*SSID*" ifname wlxf81a6719febb pas def index(): results = [] scan = ["rpi:100: :WPA2", "Home:94:*:WPA2", "HOME2:48: :WPA2", "BT:23: :"] + if not debug: + scan = scan_networks() + for network in scan: item = Network( network.split(":")[0], @@ -58,7 +77,12 @@ def wpa(ssid): if form.validate_on_submit(): cmd = CMD_JOINPW.replace("*SSID*", ssid) cmd = cmd.replace("*PASSWORD*", form.password.data) - return cmd + + output = subprocess.run(cmd.split(" "), stdout=subprocess.PIPE).stdout.decode("utf-8") + if output.find("Error") == "-1": + return "Successfully connected to {}".format(ssid) + + return "Failed to connect to {} {} {}".format(ssid, pformat(cmd.split(" ")), cmd) return render_template("wpa.html", title="WPA Password", form=form) diff --git a/config.py b/config.py index 6c7b18b..54b5512 100644 --- a/config.py +++ b/config.py @@ -2,6 +2,8 @@ import os basedir = os.path.abspath(os.path.dirname(__file__)) +debug = False + class Config(object): SECRET_KEY = os.environ.get("SECRET_KEY") or "dfsads1!FASASF231(*&FADSs"