From f9b2cca0bd7fba79631071dbf4db763639c1222c Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 20 Mar 2020 19:56:22 -0300 Subject: [PATCH 1/5] Check individual invoice's payment --- controllers/api.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/controllers/api.js b/controllers/api.js index 6ef66db..375e41d 100644 --- a/controllers/api.js +++ b/controllers/api.js @@ -255,6 +255,19 @@ router.get('/getbtc', async function(req, res) { res.send([{ address }]); }); +router.get('/checkpayment/:payment_hash', async function(req, res) { + logger.log('/checkpayment', [req.id]); + let u = new User(redis, bitcoinclient, lightning); + await u.loadByAuthorization(req.headers.authorization); + + if (!u.getUserId()) { + return errorBadAuth(res); + } + + let paid = !!(await u.getPaymentHashPaid(req.params.payment_hash)); + res.send({paid: paid}); +}); + router.get('/balance', postLimiter, async function(req, res) { logger.log('/balance', [req.id]); let u = new User(redis, bitcoinclient, lightning); From 7b5c6bc7e01c206d9cc817a878b92c538cb43a97 Mon Sep 17 00:00:00 2001 From: Overtorment Date: Fri, 27 Mar 2020 19:51:06 +0000 Subject: [PATCH 2/5] REF: more logging --- controllers/api.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/controllers/api.js b/controllers/api.js index 375e41d..dff5bdb 100644 --- a/controllers/api.js +++ b/controllers/api.js @@ -306,6 +306,7 @@ router.get('/gettxs', async function(req, res) { if (!(await u.loadByAuthorization(req.headers.authorization))) { return errorBadAuth(res); } + logger.log('/gettxs', [req.id, 'userid: ' + u.getUserId()]); if (!(await u.getAddress())) await u.generateAddress(); // onchain addr needed further try { @@ -334,6 +335,7 @@ router.get('/getuserinvoices', async function(req, res) { if (!(await u.loadByAuthorization(req.headers.authorization))) { return errorBadAuth(res); } + logger.log('/getuserinvoices', [req.id, 'userid: ' + u.getUserId()]); try { let invoices = await u.getUserInvoices(); @@ -354,6 +356,7 @@ router.get('/getpending', async function(req, res) { if (!(await u.loadByAuthorization(req.headers.authorization))) { return errorBadAuth(res); } + logger.log('/getpending', [req.id, 'userid: ' + u.getUserId()]); if (!(await u.getAddress())) await u.generateAddress(); // onchain address needed further await u.accountForPosibleTxids(); From b58e7dac882203b1d36df159e0e339e772e6a045 Mon Sep 17 00:00:00 2001 From: Overtorment Date: Fri, 27 Mar 2020 20:09:50 +0000 Subject: [PATCH 3/5] stricted rate limiting for /getuserinvoices --- controllers/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/api.js b/controllers/api.js index dff5bdb..24a3d39 100644 --- a/controllers/api.js +++ b/controllers/api.js @@ -329,7 +329,7 @@ router.get('/gettxs', async function(req, res) { } }); -router.get('/getuserinvoices', async function(req, res) { +router.get('/getuserinvoices', postLimiter, async function(req, res) { logger.log('/getuserinvoices', [req.id]); let u = new User(redis, bitcoinclient, lightning); if (!(await u.loadByAuthorization(req.headers.authorization))) { From d7e91f51ecf35a30683c76de5ebe58cc46c15d5d Mon Sep 17 00:00:00 2001 From: Overtorment Date: Fri, 27 Mar 2020 21:03:38 +0000 Subject: [PATCH 4/5] REF: get user invoices --- class/User.js | 5 ++++- controllers/api.js | 23 ++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/class/User.js b/class/User.js index 23ba5bc..c203b22 100644 --- a/class/User.js +++ b/class/User.js @@ -234,8 +234,11 @@ export class User { return await this._redis.get('ispaid_' + payment_hash); } - async getUserInvoices() { + async getUserInvoices(limit) { let range = await this._redis.lrange('userinvoices_for_' + this._userid, 0, -1); + if (limit && !isNaN(parseInt(limit))) { + range = range.slice(parseInt(limit) * -1); + } let result = []; for (let invoice of range) { invoice = JSON.parse(invoice); diff --git a/controllers/api.js b/controllers/api.js index 24a3d39..c58d702 100644 --- a/controllers/api.js +++ b/controllers/api.js @@ -265,17 +265,18 @@ router.get('/checkpayment/:payment_hash', async function(req, res) { } let paid = !!(await u.getPaymentHashPaid(req.params.payment_hash)); - res.send({paid: paid}); + res.send({ paid: paid }); }); router.get('/balance', postLimiter, async function(req, res) { - logger.log('/balance', [req.id]); - let u = new User(redis, bitcoinclient, lightning); - if (!(await u.loadByAuthorization(req.headers.authorization))) { - return errorBadAuth(res); - } - try { + logger.log('/balance', [req.id]); + let u = new User(redis, bitcoinclient, lightning); + if (!(await u.loadByAuthorization(req.headers.authorization))) { + return errorBadAuth(res); + } + logger.log('/balance', [req.id, 'userid: ' + u.getUserId()]); + if (!(await u.getAddress())) await u.generateAddress(); // onchain address needed further await u.accountForPosibleTxids(); let balance = await u.getBalance(); @@ -338,12 +339,8 @@ router.get('/getuserinvoices', postLimiter, async function(req, res) { logger.log('/getuserinvoices', [req.id, 'userid: ' + u.getUserId()]); try { - let invoices = await u.getUserInvoices(); - if (req.query.limit && !isNaN(parseInt(req.query.limit))) { - res.send(invoices.slice(parseInt(req.query.limit) * -1)); - } else { - res.send(invoices); - } + let invoices = await u.getUserInvoices(req.query.limit); + res.send(invoices); } catch (Err) { logger.log('', [req.id, 'error getting user invoices:', Err.message, 'userid:', u.getUserId()]); res.send([]); From 9f45c316180096b2281cf6286e631bb566bc1946 Mon Sep 17 00:00:00 2001 From: Overtorment Date: Fri, 27 Mar 2020 21:09:55 +0000 Subject: [PATCH 5/5] REL: ver bump --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index e50e789..256f019 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "LndHub", - "version": "1.1.3", + "version": "1.1.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 33816c3..e956817 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "LndHub", - "version": "1.1.3", + "version": "1.1.4", "description": "", "main": "index.js", "scripts": {