From db1731fde69edf28b2ee58a4b119c121e3929690 Mon Sep 17 00:00:00 2001 From: Tobias Hopp Date: Thu, 28 Mar 2024 04:36:20 +0100 Subject: [PATCH] add password field --- scripts/connectToWifi.sh | 22 ++++++++++++++++++++++ src/OSHandler.ts | 2 +- src/SmartMonopoly.ts | 6 +++++- src/web/WiFi.tsx | 8 ++++++++ 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 scripts/connectToWifi.sh diff --git a/scripts/connectToWifi.sh b/scripts/connectToWifi.sh new file mode 100644 index 0000000..5850dad --- /dev/null +++ b/scripts/connectToWifi.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +sudo ip addr flush dev wlan0 +sudo killall wpa_supplicant +sudo truncate -s 0 /tmp/wifi_connection_status.txt +sudo wpa_supplicant -B -i wlan0 -f /tmp/wifi_connection_status.txt -c /etc/wpa_supplicant/wpa_supplicant.conf + +declare -i i=0 +declare -i timeout=10 +while [ $i -le $timeout ]; do + if grep -iq 'CTRL-EVENT-CONNECTED' /tmp/wifi_connection_status.txt; then + sudo dhclient wlan0 + exit 2 + elif grep -iq '4-Way Handshake failed' /tmp/wifi_connection_status.txt; then + exit 2 + fi + + (( i++ )) + sleep 1 +done + +exit 0 \ No newline at end of file diff --git a/src/OSHandler.ts b/src/OSHandler.ts index 50975d4..41ff6ab 100644 --- a/src/OSHandler.ts +++ b/src/OSHandler.ts @@ -10,7 +10,7 @@ export default class OSHandler { }); } - static addWifi(wifi: WiFiNetwork) { + static addWifi(wifi: WiFiNetwork, passkey: string|null) { return new Promise((resolve, reject) => { }); diff --git a/src/SmartMonopoly.ts b/src/SmartMonopoly.ts index a35a975..cb65f4f 100644 --- a/src/SmartMonopoly.ts +++ b/src/SmartMonopoly.ts @@ -1,6 +1,7 @@ import {IPCHandler} from "./IPCHandler"; import {FunctionTest, WiFiNetwork} from "./IPCConstants"; import OSHandler from "./OSHandler"; +import WiFi from "./web/WiFi"; const wifiScan = require("node-wifi-scanner"); @@ -28,7 +29,10 @@ export default class SmartMonopoly { } }); - IPCHandler("WIFI_CONNECT", (e, request, args) => { + IPCHandler("WIFI_CONNECT", async (e, request, args) => { + let data = request.data as {wifi: WiFiNetwork, password: string} + await OSHandler.addWifi(data.wifi, data.password); + return {status: false} }); diff --git a/src/web/WiFi.tsx b/src/web/WiFi.tsx index 2ef0a2d..a77a8f1 100644 --- a/src/web/WiFi.tsx +++ b/src/web/WiFi.tsx @@ -11,6 +11,7 @@ import { Modal, Select, SelectChangeEvent, Stack, + TextField, Typography } from "@mui/material"; @@ -163,6 +164,7 @@ export default class WiFi extends Component<{}, WiFiState> { {null} + + + + + + +