From 98080968a483743c5f5bd73617cabdf04ba07bbc Mon Sep 17 00:00:00 2001 From: hatim boufnichel Date: Tue, 14 Sep 2021 18:56:01 +0200 Subject: [PATCH] unpolished-page --- .env.example | 2 +- src/localHomepage.html | 67 +++++++++++++++++++++++++++++ src/{index.html => obsOverlay.html} | 0 src/routes.js | 66 +++++++++++++++++++++++++++- src/server.js | 12 +++--- utils/protectedRoutes.js | 4 +- 6 files changed, 143 insertions(+), 8 deletions(-) create mode 100644 src/localHomepage.html rename src/{index.html => obsOverlay.html} (100%) diff --git a/.env.example b/.env.example index 9ad5cf8a..371cd77a 100644 --- a/.env.example +++ b/.env.example @@ -19,4 +19,4 @@ TORRENT_SEED_TOKEN=jibberish # "default" or "hosting" DEPLOYMENT_TYPE=hosting # allow to create a user with unlocked lnd -ALLOW_UNLOCKED_LND="true" \ No newline at end of file +ALLOW_UNLOCKED_LND=false \ No newline at end of file diff --git a/src/localHomepage.html b/src/localHomepage.html new file mode 100644 index 00000000..94295c84 --- /dev/null +++ b/src/localHomepage.html @@ -0,0 +1,67 @@ + + + + + + + Document + + +

+
+

Tunnel

+

+
+
+

Access Secret

+

+
+ + + \ No newline at end of file diff --git a/src/index.html b/src/obsOverlay.html similarity index 100% rename from src/index.html rename to src/obsOverlay.html diff --git a/src/routes.js b/src/routes.js index c5dd90c2..869d066e 100644 --- a/src/routes.js +++ b/src/routes.js @@ -2694,7 +2694,7 @@ module.exports = async ( //this is for OBS notifications, not wired with UI. ap.get('/api/subscribeStream', (req, res) => { try { - res.sendFile(path.join(__dirname, '/index.html')) + res.sendFile(path.join(__dirname, '/obsOverlay.html')) } catch (e) { logger.error(e) res.status(500).json({ @@ -2750,6 +2750,70 @@ module.exports = async ( }) } }) + + ap.get('/', (req, res) => { + try { + res.sendFile(path.join(__dirname, '/localHomepage.html')) + } catch (e) { + logger.error(e) + res.status(500).json({ + errorMessage: e.message + }) + } + }) + + ap.get('/api/accessInfo', async (req, res) => { + if (req.ip !== '127.0.0.1') { + res.json({ + field: 'origin', + message: 'invalid origin, cant serve access info' + }) + return + } + try { + const [relayId, relayUrl, accessSecret] = await Promise.all([ + Storage.getItem('relay/id'), + Storage.getItem('relay/url'), + Storage.getItem('FirstAccessSecret') + ]) + const response = {} + if (config.cliArgs.tunnel) { + if (!relayId || !relayUrl) { + response.relayNotFound = true + } else { + response.relayId = relayId + response.relayUrl = relayUrl + } + } else { + response.tunnelDisabled = true + } + + if (process.env.ALLOW_UNLOCKED_LND !== 'true') { + response.accessSecretDisabled = true + return res.json(response) + } + + if (!accessSecret) { + response.accessCodeNotFound = true + res.json(response) + return + } + const codeUsed = await Storage.getItem( + `UnlockedAccessSecrets/${accessSecret}` + ) + if (codeUsed !== false) { + response.accessCodeUsed = true + return res.json(response) + } + response.accessCode = accessSecret + res.json(response) + } catch (e) { + logger.error(e) + res.status(500).json({ + errorMessage: e.message + }) + } + }) } catch (err) { logger.warn('Unhandled rejection:', err) } diff --git a/src/server.js b/src/server.js index b62c0d34..e8a2a8ca 100644 --- a/src/server.js +++ b/src/server.js @@ -382,7 +382,8 @@ const server = program => { app, { ...defaults, - lndAddress: program.lndAddress + lndAddress: program.lndAddress, + cliArgs: program }, Sockets, { @@ -439,15 +440,16 @@ const server = program => { } }) } - if(process.env.ALLOW_UNLOCKED_LND === 'true'){ const codes = await Storage.valuesWithKeyMatch(/^UnlockedAccessSecrets\//u) if(codes.length === 0){ - const code = generateRandomString(12) + const code = await generateRandomString(12) await Storage.setItem(`UnlockedAccessSecrets/${code}`, false) + await Storage.setItem(`FirstAccessSecret`, code) logger.info("the access code is:"+code) - } else if(codes.length === 1 || codes[0] === false){ - logger.info("the access code is:"+codes[0]) + } else if(codes.length === 1 && codes[0] === false){ + const firstCode = await Storage.getItem("FirstAccessSecret") + logger.info("the access code is:"+firstCode) } } serverInstance.listen(serverPort, serverHost) diff --git a/utils/protectedRoutes.js b/utils/protectedRoutes.js index 24b1f47e..d0e42d0f 100644 --- a/utils/protectedRoutes.js +++ b/utils/protectedRoutes.js @@ -12,6 +12,8 @@ module.exports = { // "/api/gun/auth": true, "/api/subscribeStream":true, + "/":true, + "/api/accessInfo":true, }, POST: { "/api/lnd/connect": true, @@ -33,5 +35,5 @@ module.exports = { PUT: {}, DELETE: {} }, - nonEncryptedRoutes: ['/api/security/exchangeKeys', "/api/encryption/exchange", '/healthz', '/ping', '/tunnel/status', '/api/lnd/wallet/status', '/api/gun/auth',"/api/subscribeStream"] + nonEncryptedRoutes: ['/api/security/exchangeKeys', "/api/encryption/exchange", '/healthz', '/ping', '/tunnel/status', '/api/lnd/wallet/status', '/api/gun/auth',"/api/subscribeStream", "/", "/api/accessInfo"] } \ No newline at end of file