diff options
| author | Adam Soltys <[email protected]> | 2020-07-07 19:02:37 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2020-07-07 19:03:10 -0700 |
| commit | 3dd0d83f3900818344e534681cf13155c210bd22 (patch) | |
| tree | 5d6c329bd88eaf70881d19b7359c302c92585f13 | |
| parent | 096ea59db20e729098066435ab5a8c4cfa01457d (diff) | |
| download | coinos-server-3dd0d83f3900818344e534681cf13155c210bd22.tar.gz coinos-server-3dd0d83f3900818344e534681cf13155c210bd22.zip | |
handle login decode
| -rw-r--r-- | package.json | 1 | ||||
| -rw-r--r-- | routes/lnurl.js | 31 | ||||
| -rw-r--r-- | yarn.lock | 26 |
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); @@ -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" |
