From 75ab16eae3b85010a70f49f29fe8b7408c17e704 Mon Sep 17 00:00:00 2001 From: akdeb Date: Thu, 22 Jan 2026 16:48:44 +0700 Subject: [PATCH] add isDev gate in deno server --- README.md | 6 ++++-- assets/docs.png | Bin 22208 -> 21074 bytes firmware-arduino/src/Config.cpp | 4 ++-- server-deno/main.ts | 3 ++- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c41fd81..89b813c 100644 --- a/README.md +++ b/README.md @@ -8,10 +8,12 @@
+ - + - + + diff --git a/assets/docs.png b/assets/docs.png index 8755c27b96b7d51f0f1af64ff26f79023c612acf..3fc34f1bfc561739d280cee354d28d8e24937e06 100644 GIT binary patch literal 21074 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 F{6BM-6L$ar diff --git a/firmware-arduino/src/Config.cpp b/firmware-arduino/src/Config.cpp index fc6ca44..135fb08 100644 --- a/firmware-arduino/src/Config.cpp +++ b/firmware-arduino/src/Config.cpp @@ -33,11 +33,11 @@ volatile bool sleepRequested = false; */ #ifdef DEV_MODE -const char *ws_server = "172.20.10.2"; +const char *ws_server = "192.168.1.155"; const uint16_t ws_port = 8000; const char *ws_path = "/"; // Backend server details -const char *backend_server = "172.20.10.2"; +const char *backend_server = "192.168.1.155"; const uint16_t backend_port = 3000; #elif defined(PROD_MODE) diff --git a/server-deno/main.ts b/server-deno/main.ts index 3e2a8c7..c2b6313 100644 --- a/server-deno/main.ts +++ b/server-deno/main.ts @@ -142,8 +142,9 @@ server.on("upgrade", async (req, socket, head) => { supabase = getSupabaseClient(authToken as string); user = await authenticateUser(supabase, authToken as string); + // allow any mac address for dev const expectedMac = user.device?.mac_address; - if (deviceMac && deviceMac !== expectedMac) { + if (!isDev && deviceMac && deviceMac !== expectedMac) { socket.write("HTTP/1.1 401 Unauthorized\r\n\r\n"); socket.destroy(); return;