mirror of
https://github.com/Gabi-Zar/Pico-2W-Computer-Power-Controller.git
synced 2026-08-02 23:36:23 +02:00
Convert to https server and remove crypto-js dependencie
This commit is contained in:
6
.gitignore
vendored
6
.gitignore
vendored
@@ -1 +1,5 @@
|
|||||||
config.py
|
config.py
|
||||||
|
cert.pem
|
||||||
|
key.pem
|
||||||
|
cert.der
|
||||||
|
key.der
|
||||||
1
crypto-js.min.js
vendored
1
crypto-js.min.js
vendored
File diff suppressed because one or more lines are too long
28
main.py
28
main.py
@@ -5,6 +5,7 @@ import utime
|
|||||||
import ubinascii
|
import ubinascii
|
||||||
import uhashlib
|
import uhashlib
|
||||||
import uasyncio as asyncio
|
import uasyncio as asyncio
|
||||||
|
import ssl
|
||||||
|
|
||||||
from machine import Pin
|
from machine import Pin
|
||||||
from config import WIFI_SSID, WIFI_PASSWORD, PASSWORD
|
from config import WIFI_SSID, WIFI_PASSWORD, PASSWORD
|
||||||
@@ -31,15 +32,23 @@ HTML = """\
|
|||||||
<input type="password" id="pwd" placeholder="Password" required>
|
<input type="password" id="pwd" placeholder="Password" required>
|
||||||
<button type="submit">Turn On/Off</button>
|
<button type="submit">Turn On/Off</button>
|
||||||
</form>
|
</form>
|
||||||
<script src="/crypto-js.min.js"></script>
|
|
||||||
<script>
|
<script>
|
||||||
document.getElementById('form').addEventListener('submit', async function(event) {
|
document.getElementById('form').addEventListener('submit', async function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const pwd = document.getElementById('pwd').value;
|
const pwd = document.getElementById('pwd').value;
|
||||||
const nonce = document.getElementById('nonce').value;
|
const nonce = document.getElementById('nonce').value;
|
||||||
const hmac = CryptoJS.HmacSHA256(nonce, pwd).toString(CryptoJS.enc.Hex);
|
const enc = new TextEncoder();
|
||||||
|
const key = await crypto.subtle.importKey(
|
||||||
|
'raw', enc.encode(pwd),
|
||||||
|
{name: 'HMAC', hash: 'SHA-256'},
|
||||||
|
false, ['sign']
|
||||||
|
);
|
||||||
|
const sig = await crypto.subtle.sign('HMAC', key, enc.encode(nonce));
|
||||||
|
document.getElementById('hmac').value =
|
||||||
|
Array.from(new Uint8Array(sig))
|
||||||
|
.map(b => b.toString(16).padStart(2, '0'))
|
||||||
|
.join('');
|
||||||
|
|
||||||
document.getElementById('hmac').value = hmac;
|
|
||||||
document.getElementById('pwd').value = '';
|
document.getElementById('pwd').value = '';
|
||||||
this.submit();
|
this.submit();
|
||||||
});
|
});
|
||||||
@@ -229,8 +238,17 @@ async def main():
|
|||||||
print("Connecting to network…")
|
print("Connecting to network…")
|
||||||
connect_wifi()
|
connect_wifi()
|
||||||
|
|
||||||
print("Starting web server on port 80…")
|
print("Starting web server on port 443…")
|
||||||
asyncio.create_task(asyncio.start_server(serve_client, "0.0.0.0", 80))
|
ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
|
||||||
|
ctx.load_cert_chain("cert.der", "key.der")
|
||||||
|
asyncio.create_task(
|
||||||
|
asyncio.start_server(
|
||||||
|
serve_client,
|
||||||
|
"0.0.0.0",
|
||||||
|
443,
|
||||||
|
ssl=ctx,
|
||||||
|
)
|
||||||
|
)
|
||||||
asyncio.create_task(wifi_watchdog())
|
asyncio.create_task(wifi_watchdog())
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
|||||||
Reference in New Issue
Block a user