diff options
| author | Adam Soltys <[email protected]> | 2022-09-20 22:48:18 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2022-09-20 22:48:18 -0700 |
| commit | 4569736bac949bd2b06ce03b11299b11984e8d3c (patch) | |
| tree | d4e7c71c5be97903a43e0e25f816b2a4b9fde0a5 /routes | |
| parent | f2fb6b587bb171101b0f91722c0c29e358b386e0 (diff) | |
| parent | b53875cf6bdf47c359139aa846c6597fa3627c87 (diff) | |
| download | coinos-server-4569736bac949bd2b06ce03b11299b11984e8d3c.tar.gz coinos-server-4569736bac949bd2b06ce03b11299b11984e8d3c.zip | |
Merge branch 'master' into prod
Diffstat (limited to 'routes')
| -rw-r--r-- | routes/info.js | 3 | ||||
| -rw-r--r-- | routes/lightning/channel.js | 7 | ||||
| -rw-r--r-- | routes/lightning/channelRequest.js | 3 | ||||
| -rw-r--r-- | routes/lightning/invoice.js | 3 | ||||
| -rw-r--r-- | routes/lightning/receive.js | 46 | ||||
| -rw-r--r-- | routes/lnurl.js | 23 | ||||
| -rw-r--r-- | routes/payments.js | 8 | ||||
| -rw-r--r-- | routes/send.js | 1 |
8 files changed, 62 insertions, 32 deletions
diff --git a/routes/info.js b/routes/info.js index 63f353a5..fd77c5d1 100644 --- a/routes/info.js +++ b/routes/info.js @@ -6,6 +6,7 @@ import store from "$lib/store"; import bc from "$lib/bitcoin"; import lq from "$lib/liquid"; import lnd from "$lib/lnd"; +import ln from "$lib/ln"; import { getChannelBalance, getChainBalance } from "lightning"; import sequelize from "@sequelize/core"; @@ -50,7 +51,7 @@ app.get("/balances", async (req, res, next) => { if (config.lna) { if (config.lna.clightning) { - const funds = await lna.listfunds(); + const funds = await ln.listfunds(); lnchannel = parseInt( funds.channels.reduce((a, b) => a + b.channel_sat, 0) ); diff --git a/routes/lightning/channel.js b/routes/lightning/channel.js index 1c7bab10..107896f4 100644 --- a/routes/lightning/channel.js +++ b/routes/lightning/channel.js @@ -1,6 +1,7 @@ import axios from "axios"; import { addPeer, getIdentity } from "lightning"; import lnd from "$lib/lnd"; +import ln from "$lib/ln"; export default async (req, res) => { const { params } = req.body; @@ -24,7 +25,11 @@ export default async (req, res) => { const { callback, k1 } = params; let remoteid; try { - remoteid = (await getIdentity({ lnd })).public_key; + if (config.lna.clightning) { + remoteid = (await ln.getinfo()).id; + } else { + remoteid = (await getIdentity({ lnd })).public_key; + } } catch (e) { err("problem getting lightning node info", e.message); return res.code(500).send(e.message); diff --git a/routes/lightning/channelRequest.js b/routes/lightning/channelRequest.js index 530fad48..74e4cbba 100644 --- a/routes/lightning/channelRequest.js +++ b/routes/lightning/channelRequest.js @@ -1,6 +1,7 @@ import { lnurlServer } from "$routes/lnurl"; +import { err } from "$lib/logging"; -export default async (req, res) => { +export const channelRequest = async (req, res) => { let { localAmt, pushAmt } = req.body; pushAmt = 0; diff --git a/routes/lightning/invoice.js b/routes/lightning/invoice.js index 94aac768..94961b35 100644 --- a/routes/lightning/invoice.js +++ b/routes/lightning/invoice.js @@ -2,6 +2,7 @@ import config from "$config"; import { createInvoice } from "lightning"; import { err } from "$lib/logging"; import lnd from "$lib/lnd"; +import ln from "$lib/ln"; export default async (req, res) => { let { amount, memo, tip } = req.body; @@ -11,7 +12,7 @@ export default async (req, res) => { try { if (config.lna.clightning) { if (!memo) memo = "coinos"; - const invoice = await lna.invoice( + const invoice = await ln.invoice( value ? `${value}sat` : "any", new Date(), memo, diff --git a/routes/lightning/receive.js b/routes/lightning/receive.js index 56714da7..084161b5 100644 --- a/routes/lightning/receive.js +++ b/routes/lightning/receive.js @@ -8,11 +8,11 @@ import { computeConversionFee } from "./conversionFee"; import { sendLiquid } from "$routes/liquid/send"; import { subscribeToInvoices } from "lightning"; import lnd from "$lib/lnd"; +import ln from "$lib/ln"; import { l, err, warn } from "$lib/logging"; const handlePayment = async msg => { try { - console.log(msg) l("incoming lightning payment", msg.received); if (!msg.secret) return; @@ -134,29 +134,33 @@ const handlePayment = async msg => { if (config.lna.clightning) { const poll = async ln => { - const wait = async i => { - const { - bolt11: payment_request, - pay_index, - status, - msatoshi_received, - payment_preimage: r_preimage - } = await ln.waitanyinvoice(i); + try { + const wait = async i => { + const { + bolt11: request, + pay_index, + status, + msatoshi_received, + payment_preimage: secret + } = await ln.waitanyinvoice(i); + console.log("um"); - let settled = status === "paid"; - let amt_paid_sat = parseInt(msatoshi_received / 1000); + let settled = status === "paid"; + let received = parseInt(msatoshi_received / 1000); - await handlePayment({ - payment_request, - settled, - amt_paid_sat, - r_preimage - }); - wait(pay_index); - }; + await handlePayment({ + request, + received, + secret + }); + await wait(pay_index); + }; - const { invoices } = await ln.listinvoices(); - wait(Math.max(...invoices.map(i => i.pay_index).filter(n => n))); + const { invoices } = await ln.listinvoices(); + await wait(Math.max(...invoices.map(i => i.pay_index).filter(n => n))); + } catch (e) { + err("problem waiting for c-lightning invoice", e.message); + } }; poll(ln); diff --git a/routes/lnurl.js b/routes/lnurl.js index 547a41dd..fc2e5a52 100644 --- a/routes/lnurl.js +++ b/routes/lnurl.js @@ -91,7 +91,17 @@ app.post("/withdraw", auth, async (req, res, next) => { amount: value, params: { callback, k1 } } = req.body; - const invoice = await createInvoice({ lnd, value }); + + let invoice; + if (config.lna.clightning) { + let label = new Date(); + let desc = label; + + invoice = await ln.invoice(`${value}sats`, label, desc); + } else { + invoice = await createInvoice({ lnd, value }); + } + const { payment_request: pr } = invoice; const url = `${callback}?k1=${k1}&pr=${pr}`; @@ -260,6 +270,7 @@ app.get("/decode", async (req, res, next) => { } const { data: params } = await axios.get(url); + res.send(params); } catch (e) { err("problem decoding lnurl", e.message); @@ -366,8 +377,14 @@ lnurlServer.bindToHook( } try { - let decoded = await decodePaymentRequest({ lnd, request: pr }); - let amount = decoded.num_satoshis; + let amount; + + if (config.lna.clightning) { + let { msatoshi } = await ln.decodepay(pr); + amount = parseInt(msatoshi/1000); + } else { + ({ num_satoshis: amount } = await decodePaymentRequest({ lnd, request: pr })); + } let conversionFee = computeConversionFee(amount); await db.transaction(async transaction => { diff --git a/routes/payments.js b/routes/payments.js index 4ffeb6b3..fa7da641 100644 --- a/routes/payments.js +++ b/routes/payments.js @@ -62,10 +62,10 @@ app.post("/lightning/invoice", lnRoutes.invoice); app.post("/lightning/query", auth, lnRoutes.query); app.post("/lightning/send", auth, lnRoutes.send); -// if (config.lnurl) { -// let channelRequest = await import("$routes/lightning/channelRequest"); -// app.post("/lightning/channelRequest", channelRequest) -// } +if (config.lnurl) { + let { channelRequest } = await import("$routes/lightning/channelRequest"); + app.post("/lightning/channelRequest", channelRequest) +} app.post("/bitcoin/broadcast", optionalAuth, btcRoutes.broadcast); app.get("/bitcoin/generate", auth, btcRoutes.generate); diff --git a/routes/send.js b/routes/send.js index 360ad5b2..b57d8fc3 100644 --- a/routes/send.js +++ b/routes/send.js @@ -1,3 +1,4 @@ +import { err } from "$lib/logging"; import sendInternal from "$lib/sendInternal"; export default async (req, res, next) => { |
