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 /routes | |
| parent | 096ea59db20e729098066435ab5a8c4cfa01457d (diff) | |
| download | coinos-server-3dd0d83f3900818344e534681cf13155c210bd22.tar.gz coinos-server-3dd0d83f3900818344e534681cf13155c210bd22.zip | |
handle login decode
Diffstat (limited to 'routes')
| -rw-r--r-- | routes/lnurl.js | 31 |
1 files changed, 23 insertions, 8 deletions
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); |
