From b7d106b499aa33e456326d1a71d81418047af851 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Wed, 27 Oct 2021 01:20:37 +0000 Subject: [PATCH 1/4] fix: upgrade ioredis from 4.27.9 to 4.27.10 Snyk has created this PR to upgrade ioredis from 4.27.9 to 4.27.10. See this package in npm: https://www.npmjs.com/package/ioredis See this project in Snyk: https://app.snyk.io/org/bluewallet/project/29c066bc-abce-44d9-b68e-064466e610e7?utm_source=github&utm_medium=referral&page=upgrade-pr --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0195f17..67333c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3493,9 +3493,9 @@ } }, "ioredis": { - "version": "4.27.9", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.27.9.tgz", - "integrity": "sha512-hAwrx9F+OQ0uIvaJefuS3UTqW+ByOLyLIV+j0EH8ClNVxvFyH9Vmb08hCL4yje6mDYT5zMquShhypkd50RRzkg==", + "version": "4.27.10", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.27.10.tgz", + "integrity": "sha512-BtV2mEoZlhnW0EyxuK49V5iutLeZeJAYi/+Fuc4Q6DpDjq0cGMLODdS/+Kb5CHpT7v3YT6SK0vgJF6y0Ls4+Bg==", "requires": { "cluster-key-slot": "^1.1.0", "debug": "^4.3.1", diff --git a/package.json b/package.json index dfd3369..f15eec6 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "express-rate-limit": "^5.3.0", "frisbee": "^3.1.4", "helmet": "^4.6.0", - "ioredis": "^4.27.8", + "ioredis": "^4.27.10", "jayson": "^3.6.4", "morgan": "^1.10.0", "mustache": "^4.1.0", From ac4461c7f317cbcd2802e5f1e6b19ed27c23f6c1 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Wed, 27 Oct 2021 01:20:34 +0000 Subject: [PATCH 2/4] fix: upgrade express-rate-limit from 5.3.0 to 5.4.1 Snyk has created this PR to upgrade express-rate-limit from 5.3.0 to 5.4.1. See this package in npm: https://www.npmjs.com/package/express-rate-limit See this project in Snyk: https://app.snyk.io/org/bluewallet/project/29c066bc-abce-44d9-b68e-064466e610e7?utm_source=github&utm_medium=referral&page=upgrade-pr --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 67333c8..3e9ffdc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2885,9 +2885,9 @@ } }, "express-rate-limit": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.3.0.tgz", - "integrity": "sha512-qJhfEgCnmteSeZAeuOKQ2WEIFTX5ajrzE0xS6gCOBCoRQcU+xEzQmgYQQTpzCcqUAAzTEtu4YEih4pnLfvNtew==" + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.4.1.tgz", + "integrity": "sha512-ZQh2h3qiu7wWdvWNYHznBhaOp2ZIXNnT4hl2Ff608STeWtCuJ251NzqQlk7mo5wnO2HmrydBYHuVA9Z3S3ZtXg==" }, "extend": { "version": "3.0.2", diff --git a/package.json b/package.json index f15eec6..da737de 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^3.4.0", "express": "^4.17.1", - "express-rate-limit": "^5.3.0", + "express-rate-limit": "^5.4.1", "frisbee": "^3.1.4", "helmet": "^4.6.0", "ioredis": "^4.27.10", From 53361d2e3ab07a2e7aaf22ead9e7c3819985f73a Mon Sep 17 00:00:00 2001 From: Overtorment Date: Thu, 28 Oct 2021 14:00:31 +0100 Subject: [PATCH 3/4] FIX: process locked script would wrongfully evict successfull payment --- scripts/process-locked-payments.js | 45 ++++++++++++++++++------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/scripts/process-locked-payments.js b/scripts/process-locked-payments.js index 520572c..9b5d414 100644 --- a/scripts/process-locked-payments.js +++ b/scripts/process-locked-payments.js @@ -6,6 +6,12 @@ import { User, Lock, Paym } from '../class/'; const config = require('../config'); +/****** START SET FEES FROM CONFIG AT STARTUP ******/ +/** GLOBALS */ +global.forwardFee = config.forwardReserveFee || 0.01; +global.internalFee = config.intraHubFee || 0.003; +/****** END SET FEES FROM CONFIG AT STARTUP ******/ + const fs = require('fs'); var Redis = require('ioredis'); var redis = new Redis(config.redis); @@ -20,6 +26,7 @@ let lightning = require('../lightning'); console.log('fetching listPayments...'); let tempPaym = new Paym(redis, bitcoinclient, lightning); let listPayments = await tempPaym.listPayments(); + // DEBUG let listPayments = JSON.parse(fs.readFileSync('listpayments.txt').toString('ascii')); console.log('done', 'got', listPayments['payments'].length, 'payments'); fs.writeFileSync('listPayments.json', JSON.stringify(listPayments['payments'], null, 2)); @@ -30,7 +37,7 @@ let lightning = require('../lightning'); let user = new User(redis, bitcoinclient, lightning); user._userid = userid; let lockedPayments = await user.getLockedPayments(); - // lockedPayments = [{pay_req : 'lnbc2m1pwgd4tdpp5vjz80mm8murdkskrnre6w4kphzy3d6gap5jyffr93u02ruaj0wtsdq2xgcrqvpsxqcqzysk34zva4h9ce9jdf08nfdm2sh2ek4y4hjse8ww9jputneltjl24krkv50sene4jh0wpull6ujgrg632u2qt3lkva74vpkqr5e5tuuljspasqfhx'}]; + // DEBUG let lockedPayments = [{ pay_req : 'lnbc108130n1pshdaeupp58kw9djt9vcdx26wkdxl07tgncdmxz2w7s9hzul45tf8gfplme94sdqqcqzzgxqrrssrzjqw8c7yfutqqy3kz8662fxutjvef7q2ujsxtt45csu0k688lkzu3ld93gutl3k6wauyqqqqryqqqqthqqpysp5jcmk82hypuud0lhpf66dg3w5ta6aumc4w9g9sxljazglq9wkwstq9qypqsqnw8hwwauvzrala3g4yrkgazk2l2fh582j9ytz7le46gmsgglvmrknx842ej9z4c63en5866l8tpevm8cwul8g94kf2nepppn256unucp43jnsw', amount: 10813, timestamp: 1635186606 }]; for (let lockedPayment of lockedPayments) { let daysPassed = (+new Date() / 1000 - lockedPayment.timestamp) / 3600 / 24; @@ -38,8 +45,25 @@ let lightning = require('../lightning'); let payment = new Paym(redis, bitcoinclient, lightning); payment.setInvoice(lockedPayment.pay_req); + + // first things first: + // trying to lookup this stuck payment in an array of delivered payments + let isPaid = false; + for (let sentPayment of listPayments['payments']) { + if ((await payment.getPaymentHash()) == sentPayment.payment_hash) { + console.log('found this payment in listPayments array, so it is paid successfully'); + let sendResult = payment.processSendPaymentResponse({ payment_error: 'already paid' } /* hacky */); // adds fees + console.log('saving paid invoice:', sendResult); + await user.savePaidLndInvoice(sendResult); + await user.unlockFunds(lockedPayment.pay_req); + isPaid = true; + console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!', await payment.getPaymentHash(), sentPayment.payment_hash); + break; + } + } + // could not find... + if (daysPassed > 1 / 24 && daysPassed <= 1) { - // if (!await payment.isExpired()) { let sendResult; console.log('attempting to pay to route'); try { @@ -68,22 +92,7 @@ let lightning = require('../lightning'); console.log('-----------------------------------------------------------------------------------'); await User._sleep(0); } else if (daysPassed > 1) { - // trying to lookup this stuck payment in an array of delivered payments - let isPaid = false; - for (let sentPayment of listPayments['payments']) { - if ((await payment.getPaymentHash()) == sentPayment.payment_hash) { - console.log('found this payment in listPayments array, so it is paid successfully'); - let sendResult = payment.processSendPaymentResponse({ payment_error: 'already paid' } /* hacky */); // adds fees - console.log('saving paid invoice:', sendResult); - await user.savePaidLndInvoice(sendResult); - await user.unlockFunds(lockedPayment.pay_req); - isPaid = true; - console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!', await payment.getPaymentHash(), sentPayment.payment_hash); - process.exit(); - break; - } - } - + // could not find in listpayments array; too late to retry if (!isPaid) { console.log('very old payment, evict the lock'); await user.unlockFunds(lockedPayment.pay_req); From aca47a23e95d741097295e382512e8e612739bda Mon Sep 17 00:00:00 2001 From: Overtorment Date: Thu, 28 Oct 2021 14:25:51 +0100 Subject: [PATCH 4/4] ref --- scripts/process-locked-payments.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/process-locked-payments.js b/scripts/process-locked-payments.js index 9b5d414..8b770f6 100644 --- a/scripts/process-locked-payments.js +++ b/scripts/process-locked-payments.js @@ -3,7 +3,7 @@ * sentout payments from LND. If locked payment is in there we moe locked payment to array of real payments for the user * (it is effectively spent coins by user), if not - we attempt to pay it again (if it is not too old). */ -import { User, Lock, Paym } from '../class/'; +import { User, Paym } from '../class/'; const config = require('../config'); /****** START SET FEES FROM CONFIG AT STARTUP ******/ @@ -12,7 +12,6 @@ global.forwardFee = config.forwardReserveFee || 0.01; global.internalFee = config.intraHubFee || 0.003; /****** END SET FEES FROM CONFIG AT STARTUP ******/ -const fs = require('fs'); var Redis = require('ioredis'); var redis = new Redis(config.redis); @@ -28,7 +27,6 @@ let lightning = require('../lightning'); let listPayments = await tempPaym.listPayments(); // DEBUG let listPayments = JSON.parse(fs.readFileSync('listpayments.txt').toString('ascii')); console.log('done', 'got', listPayments['payments'].length, 'payments'); - fs.writeFileSync('listPayments.json', JSON.stringify(listPayments['payments'], null, 2)); for (let key of keys) { const userid = key.replace('locked_payments_for_', '');