aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2020-07-07 19:02:37 -0700
committerAdam Soltys <[email protected]>2020-07-07 19:03:10 -0700
commit3dd0d83f3900818344e534681cf13155c210bd22 (patch)
tree5d6c329bd88eaf70881d19b7359c302c92585f13
parent096ea59db20e729098066435ab5a8c4cfa01457d (diff)
downloadcoinos-server-3dd0d83f3900818344e534681cf13155c210bd22.tar.gz
coinos-server-3dd0d83f3900818344e534681cf13155c210bd22.zip
handle login decode
-rw-r--r--package.json1
-rw-r--r--routes/lnurl.js31
-rw-r--r--yarn.lock26
3 files changed, 50 insertions, 8 deletions
diff --git a/package.json b/package.json
index 0db39d70..00f97163 100644
--- a/package.json
+++ b/package.json
@@ -41,6 +41,7 @@
"passport-jwt": "^4.0.0",
"passport-local": "1.0.0",
"pino": "^5.17.0",
+ "query-string": "^6.13.1",
"random-words": "^1.1.1",
"request": "~2.88.0",
"sequelize": "^5.21.3",
diff --git a/routes/lnurl.js b/routes/lnurl.js
index 3e32b1f2..88c2f67a 100644
--- a/routes/lnurl.js
+++ b/routes/lnurl.js
@@ -1,6 +1,7 @@
const axios = require("axios");
const lnurl = require("lnurl");
const jwt = require("jsonwebtoken");
+const qs = require("query-string");
logins = {};
withdrawals = {};
@@ -80,9 +81,19 @@ app.get("/decode", async (req, res) => {
const { text } = req.query;
try {
- const decoded = lnurl.decode(text);
- let result = await axios.get(decoded);
- res.send(result.data);
+ const url = lnurl.decode(text);
+ let spl = url.split("?");
+ if (spl.length > 1 && qs.parse(spl[1]).tag === "login") {
+ return res.send({
+ tag: "login",
+ k1: qs.parse(spl[1]).k1,
+ callback: url,
+ domain: url.split("://")[1].split("/")[0].split("@").slice(-1)[0].split(":")[0],
+ });
+ }
+
+ const { data: params } = await axios.get(url);
+ res.send(params);
} catch (e) {
l.error("problem decoding lnurl", e.message);
res.status(500).send(e.message);
@@ -110,11 +121,15 @@ lnurlServer.bindToHook(
if (keyObj) ({ user } = keyObj);
if (!user) {
- let ip = req.headers["x-forwarded-for"] || req.connection.remoteAddress;
- user = await register({
- username: key.substr(0, 8),
- password: key,
- }, ip);
+ let ip =
+ req.headers["x-forwarded-for"] || req.connection.remoteAddress;
+ user = await register(
+ {
+ username: key.substr(0, 8),
+ password: key,
+ },
+ ip
+ );
}
({ username } = user);
diff --git a/yarn.lock b/yarn.lock
index 40e8d2b1..debe7423 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1569,6 +1569,7 @@ __metadata:
pino-pretty: ^3.6.1
pm2: ^4.4.0
prettier: ^1.18.2
+ query-string: ^6.13.1
random-words: ^1.1.1
request: ~2.88.0
sequelize: ^5.21.3
@@ -5870,6 +5871,17 @@ __metadata:
languageName: node
linkType: hard
+"query-string@npm:^6.13.1":
+ version: 6.13.1
+ resolution: "query-string@npm:6.13.1"
+ dependencies:
+ decode-uri-component: ^0.2.0
+ split-on-first: ^1.0.0
+ strict-uri-encode: ^2.0.0
+ checksum: 5e640f0cf6077f3fd4dcb6d8f3a88306bbb5d5638001450b15a244ca74f76e4a6a1d70baff114cef43ca15670d5d2523f92113f3567561b9dbd1fcb26489066a
+ languageName: node
+ linkType: hard
+
"quick-format-unescaped@npm:^3.0.3":
version: 3.0.3
resolution: "quick-format-unescaped@npm:3.0.3"
@@ -6633,6 +6645,13 @@ __metadata:
languageName: node
linkType: hard
+"split-on-first@npm:^1.0.0":
+ version: 1.1.0
+ resolution: "split-on-first@npm:1.1.0"
+ checksum: 2ef26fee62665be9547e8035734b856e658b08fd13e70271a2f258147f29d1f18e12b5cb7f7670d83e113c172a9c5fe3d87d9d7c02a1d3d57824818d75d942ab
+ languageName: node
+ linkType: hard
+
"split-string@npm:^3.0.1, split-string@npm:^3.0.2":
version: 3.1.0
resolution: "split-string@npm:3.1.0"
@@ -6724,6 +6743,13 @@ __metadata:
languageName: node
linkType: hard
+"strict-uri-encode@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "strict-uri-encode@npm:2.0.0"
+ checksum: 775012e88b9d8dff939d514bf376d615a15e8228a5dd587a94ac3c71fce41aa3635cd808aa796e2c1cd33f3f2fe2fbf89b74ee18a504a1905efa1854311e04bb
+ languageName: node
+ linkType: hard
+
"string-template@npm:~0.2.1":
version: 0.2.1
resolution: "string-template@npm:0.2.1"