This commit is contained in:
Rich
2021-07-04 09:32:50 +01:00
parent bb4120a076
commit 673d823599
2 changed files with 28 additions and 2 deletions

View File

@@ -1,13 +1,29 @@
import subprocess
from pprint import pformat
from flask import flash, redirect, render_template, url_for from flask import flash, redirect, render_template, url_for
from flask_login import current_user, login_required, login_user, logout_user from flask_login import current_user, login_required, login_user, logout_user
from app import app from app import app
from app.forms import LoginForm, WPAForm 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_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_JOIN = 'sudo nmcli device wifi connect "*SSID*" ifname wlxf81a6719febb'
CMD_JOINPW = 'sudo nmcli device wifi connect "*SSID*" ifname wlxf81a6719febb password "*PASSWORD*"' 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("/") @app.route("/")
@@ -16,6 +32,9 @@ CMD_JOINPW = 'sudo nmcli device wifi connect "*SSID*" ifname wlxf81a6719febb pas
def index(): def index():
results = [] results = []
scan = ["rpi:100: :WPA2", "Home:94:*:WPA2", "HOME2:48: :WPA2", "BT:23: :"] scan = ["rpi:100: :WPA2", "Home:94:*:WPA2", "HOME2:48: :WPA2", "BT:23: :"]
if not debug:
scan = scan_networks()
for network in scan: for network in scan:
item = Network( item = Network(
network.split(":")[0], network.split(":")[0],
@@ -58,7 +77,12 @@ def wpa(ssid):
if form.validate_on_submit(): if form.validate_on_submit():
cmd = CMD_JOINPW.replace("*SSID*", ssid) cmd = CMD_JOINPW.replace("*SSID*", ssid)
cmd = cmd.replace("*PASSWORD*", form.password.data) 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) return render_template("wpa.html", title="WPA Password", form=form)

View File

@@ -2,6 +2,8 @@ import os
basedir = os.path.abspath(os.path.dirname(__file__)) basedir = os.path.abspath(os.path.dirname(__file__))
debug = False
class Config(object): class Config(object):
SECRET_KEY = os.environ.get("SECRET_KEY") or "dfsads1!FASASF231(*&FADSs" SECRET_KEY = os.environ.get("SECRET_KEY") or "dfsads1!FASASF231(*&FADSs"