From 6c4eeaab95c2e8babf484e7dd8a6f5a300a40dcd Mon Sep 17 00:00:00 2001 From: polarDefender Date: Tue, 23 Apr 2024 19:55:27 +0200 Subject: [PATCH] added web view --- src/auth.ts | 4 + static/LightningPub.png | Bin 0 -> 3369 bytes static/connect.html | 47 +++++++++++ static/index.html | 49 ++++++++++++ static/pub_logo.png | Bin 0 -> 14937 bytes static/script.js | 10 +++ static/styles.css | 168 ++++++++++++++++++++++++++++++++++++++++ 7 files changed, 278 insertions(+) create mode 100644 static/LightningPub.png create mode 100644 static/connect.html create mode 100644 static/index.html create mode 100644 static/pub_logo.png create mode 100644 static/script.js create mode 100644 static/styles.css diff --git a/src/auth.ts b/src/auth.ts index febe1e5f..e98e1652 100644 --- a/src/auth.ts +++ b/src/auth.ts @@ -1,11 +1,15 @@ +import express from 'express'; +import path from 'path'; import { ServerOptions } from "../proto/autogenerated/ts/express_server"; import { AdminContext, MetricsContext } from "../proto/autogenerated/ts/types"; import Main from './services/main' import { getLogger } from './services/helpers/logger.js' + const serverOptions = (mainHandler: Main): ServerOptions => { const log = getLogger({}) return { logger: { log, error: err => log("ERROR", err) }, + staticFiles: path.resolve('static'), AdminAuthGuard: adminAuth, MetricsAuthGuard: metricsAuth, AppAuthGuard: async (authHeader) => { return { app_id: mainHandler.applicationManager.DecodeAppToken(stripBearer(authHeader)) } }, diff --git a/static/LightningPub.png b/static/LightningPub.png new file mode 100644 index 0000000000000000000000000000000000000000..1cbc35de1f30c44cda6e5ae49f7effa1500d6d6c GIT binary patch literal 3369 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 O1B0ilpUXO@geCxruwCf@ literal 0 HcmV?d00001 diff --git a/static/connect.html b/static/connect.html new file mode 100644 index 00000000..9e6a60e5 --- /dev/null +++ b/static/connect.html @@ -0,0 +1,47 @@ + + + + + + + + + + + Lightning.Pub + + + +
+ Lightning Pub logo + Lightning Pub logo +
+ +
+
+

Connect

+

To access the dashboard, use ShockWallet and tap the logo 3 times.

+

Scan the QR with ShockWallet to insert the connection details.

+
+ +
+ +
+
+

strfry.shock.network
npub123abcdefghhhhhhhhhhhhhhh


+

Note: Code contains a one-time pairing secret.

+
+ +
+ + +
+ + + + + + + \ No newline at end of file diff --git a/static/index.html b/static/index.html new file mode 100644 index 00000000..54674617 --- /dev/null +++ b/static/index.html @@ -0,0 +1,49 @@ + + + + + + + + + + + Lightning.Pub + + + +
+ Lightning Pub logo + Lightning Pub logo +
+ +
+
+

Setup

+

To manage your Pub, you will connect a via remote dashboard.

+

Confirm a few things to generate a connection string:

+
+ +
+ +
+

Use default managed relay,
1000 sats per month paid automatically after grace period.

+
+ + +
+

Or, enter a custom relay:

+


+ +

Need Help?

+
+ +
+ + +
+ + \ No newline at end of file diff --git a/static/pub_logo.png b/static/pub_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..36cc43b4e6dc07f88eeb587f2e6adb81907a6324 GIT binary patch literal 14937 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%0DIeEoa6}C!XbFK1 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 pVjubd@img:nth-child(1){ + width: 30px; + height: auto; + } + + header>img:nth-child(2){ + width: auto; + height: 26px; + } +} + +input[type="text"] { + background-color: transparent; + padding: 7px 10px; + border: 1px solid #c740c7; + border-radius: 5px; + font-size: 14px; + color: #999999; + text-align: center; + box-shadow: 0px 0px 2px rgba(0,0,0,1); +} + +button { + background-color: transparent; + padding: 10px 55px; + font-size: 20px; + color: var(--color); + text-align: center; + box-shadow: 0px 0px 2px rgba(0,0,0,1); + background: linear-gradient(var(--background-color), var(--background-color)) padding-box, var(--gradient) border-box; + border-radius: 5px; + border: 1px solid transparent; +} + + +h2 { + font-size: var(--font-size-h2); + font-weight: 400; +} + +p { + font-size: var(--font-size-p); +} + +a { + color: var(--color); + text-decoration: none; +} + +.text-gray { + color: #a3a3a3; + margin-block-end: 5px; +} + +/* Hide the default checkbox */ +.checkbox input[type="checkbox"] { + display: none; +} + +/* Create a new box */ +.checkbox label { + position: relative; +} + +.checkbox label::before { + content: ""; + display: inline-block; + width: 20px; + height: 20px; + margin-right: 10px; + background-color: transparent; + border: 1px solid #a3a3a3; + border-radius: 5px; +} + +/* Display a checkmark when the checkbox is checked */ +.checkbox input[type="checkbox"]:checked + label::after { + content: "✔"; + color: #a012c7; + font-size: 20px; + position: absolute; + left: 1px; + top: -11px; + width: 20px; + height: 20px; + text-align: center; +} + +.line { + margin-block: 30px; + background: var(--gradient); + width: 347px; + height: 2px; + margin-inline: auto; +} + +.marked { + color: var(--color-marked); +} + +.linked { + color: var(--color-linked); +} + +.setup-footer>p { + line-height: 4px; +} + +.setup-header>h2 { + margin-block-start: 20px; +} + +#qrcode { + display: flex; + margin: auto; + justify-content: center; + margin-block-start: 40px; + margin-block-end: 15px; +}