From da2b59efe1150c14cc0ad43840f007a8951ed0d2 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sun, 23 Aug 2020 20:11:35 +0000 Subject: [PATCH 01/10] Bump @types/socket.io from 2.1.4 to 2.1.11 Bumps [@types/socket.io](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/socket.io) from 2.1.4 to 2.1.11. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/socket.io) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9ab5289f..7c4287a9 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "@types/jsonwebtoken": "^8.3.7", "@types/lodash": "^4.14.141", "@types/ramda": "types/npm-ramda#dist", - "@types/socket.io": "^2.1.4", + "@types/socket.io": "^2.1.11", "@types/uuid": "^3.4.5", "babel-eslint": "^10.0.3", "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", diff --git a/yarn.lock b/yarn.lock index fd662167..321cb6d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -554,6 +554,13 @@ dependencies: "@types/node" "*" +"@types/engine.io@*": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/engine.io/-/engine.io-3.1.4.tgz#3d9472711d179daa7c95c051e50ad411e18a9bdc" + integrity sha512-98rXVukLD6/ozrQ2O80NAlWDGA4INg+tqsEReWJldqyi2fulC9V7Use/n28SWgROXKm6003ycWV4gZHoF8GA6w== + dependencies: + "@types/node" "*" + "@types/express-serve-static-core@*": version "4.16.9" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.16.9.tgz#69e00643b0819b024bdede95ced3ff239bb54558" @@ -672,11 +679,12 @@ "@types/express-serve-static-core" "*" "@types/mime" "*" -"@types/socket.io@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@types/socket.io/-/socket.io-2.1.4.tgz#674e7bc193c5ccdadd4433f79f3660d31759e9ac" - integrity sha512-cI98INy7tYnweTsUlp8ocveVdAxENUThO0JsLSCs51cjOP2yV5Mqo5QszMDPckyRRA+PO6+wBgKvGvHUCc23TQ== +"@types/socket.io@^2.1.11": + version "2.1.11" + resolved "https://registry.yarnpkg.com/@types/socket.io/-/socket.io-2.1.11.tgz#e0d6759880e5f9818d5297a3328b36641bae996b" + integrity sha512-bVprmqPhJMLb9ZCm8g0Xy8kwBFRbnanOWSxzWkDkkIwxTvud5tKMfAJymXX6LQbizUKCS1yima7JM4BeLqjNqA== dependencies: + "@types/engine.io" "*" "@types/node" "*" "@types/stack-utils@^1.0.1": From 9419713d162d59312896484b4ed68bd1ce6ba43f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sun, 23 Aug 2020 20:11:47 +0000 Subject: [PATCH 02/10] [Security] Bump handlebars from 4.4.0 to 4.7.6 Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.4.0 to 4.7.6. **This update includes a security fix.** - [Release notes](https://github.com/wycats/handlebars.js/releases) - [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md) - [Commits](https://github.com/wycats/handlebars.js/compare/v4.4.0...v4.7.6) Signed-off-by: dependabot-preview[bot] --- yarn.lock | 57 ++++++++++++++++--------------------------------------- 1 file changed, 16 insertions(+), 41 deletions(-) diff --git a/yarn.lock b/yarn.lock index fd662167..b621e0c5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1703,11 +1703,6 @@ commander@^5.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@~2.20.0: - version "2.20.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.1.tgz#3863ce3ca92d0831dcf2a102f5fb4b5926afd0f9" - integrity sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg== - compare-versions@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" @@ -2983,13 +2978,14 @@ grpc@^1.21.1: text-encoding "^0.7.0" handlebars@^4.1.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.4.0.tgz#22e1a897c5d83023d39801f35f6b65cf97ed8b25" - integrity sha512-xkRtOt3/3DzTKMOt3xahj2M/EqNhY988T+imYSlMgs5fVhLN2fmKVVj0LtEGmb+3UUYV5Qmm1052Mm3dIQxOvw== + version "4.7.6" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" + integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== dependencies: + minimist "^1.2.5" neo-async "^2.6.0" - optimist "^0.6.1" source-map "^0.6.1" + wordwrap "^1.0.0" optionalDependencies: uglify-js "^3.1.4" @@ -4561,15 +4557,10 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.1, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== minipass@^2.2.1, minipass@^2.3.5: version "2.5.1" @@ -4668,9 +4659,9 @@ negotiator@0.6.2: integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== neo-async@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== nice-try@^1.0.4: version "1.0.5" @@ -4944,14 +4935,6 @@ openurl@1.1.1: resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" integrity sha1-OHW0sO96UsFW8NtB1GCduw+Us4c= -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - optionator@^0.8.1, optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" @@ -6660,12 +6643,9 @@ typescript@^3.9.6: integrity sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw== uglify-js@^3.1.4: - version "3.6.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" - integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== - dependencies: - commander "~2.20.0" - source-map "~0.6.1" + version "3.10.2" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.2.tgz#8cfa1209fd04199cc8a7f9930ddedb30b0f1912d" + integrity sha512-GXCYNwqoo0MbLARghYjxVBxDCnU0tLqN7IPLdHHbibCb1NI5zBkU2EPcy/GaVxc0BtTjqyGXJCINe6JMR2Dpow== uid-safe@~2.1.5: version "2.1.5" @@ -6979,12 +6959,7 @@ winston@^3.3.3: triple-beam "^1.3.0" winston-transport "^4.4.0" -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wordwrap@~1.0.0: +wordwrap@^1.0.0, wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= From 34fd6d3f932148a496a98080073c8ab1bef8a295 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sun, 23 Aug 2020 20:13:36 +0000 Subject: [PATCH 03/10] Bump @types/gun from 0.9.1 to 0.9.2 Bumps [@types/gun](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/gun) from 0.9.1 to 0.9.2. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/gun) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9ab5289f..579eb85b 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "@types/bluebird": "*", "@types/dotenv": "^6.1.1", "@types/express": "^4.17.1", - "@types/gun": "^0.9.1", + "@types/gun": "^0.9.2", "@types/jest": "^24.0.18", "@types/jsonwebtoken": "^8.3.7", "@types/lodash": "^4.14.141", diff --git a/yarn.lock b/yarn.lock index fd662167..beb49596 100644 --- a/yarn.lock +++ b/yarn.lock @@ -571,10 +571,10 @@ "@types/express-serve-static-core" "*" "@types/serve-static" "*" -"@types/gun@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@types/gun/-/gun-0.9.1.tgz#00ce80f50305e9583f807e750275547aaeb4737d" - integrity sha512-frQF4+FbyG70MhfNmY3jPhXA5nRA+145B5QcXk2mo+n3qpxLhO28YEET/gjH0lxxqQQrHPKjLMt1yEtaIErtgw== +"@types/gun@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@types/gun/-/gun-0.9.2.tgz#72493631c5e7fb3fae9a195b1ea8bf3d727fd19d" + integrity sha512-s3O5tnnXtWaZqA2yjfN+Ty3OINRxV51lUevNVldAeky4lk3/6QHSc8hkfPTc0f44JrJCidILrU5bMBGN0SWz1A== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" From 90d67f0c72ea60ea5869e696050f7f90aa0bcc75 Mon Sep 17 00:00:00 2001 From: hatim boufnichel Date: Sat, 5 Sep 2020 17:40:08 +0200 Subject: [PATCH 04/10] error manager --- utils/lightningServices/errors.js | 142 ++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 utils/lightningServices/errors.js diff --git a/utils/lightningServices/errors.js b/utils/lightningServices/errors.js new file mode 100644 index 00000000..f1051099 --- /dev/null +++ b/utils/lightningServices/errors.js @@ -0,0 +1,142 @@ + +const LightningServices = require('./lightning-services') + +/** + * @typedef {{ + * code:number, + * details:string, + * message:string + * }} LNDError + */ + +/** + * @typedef {(err:LNDError,response:object)=>void} HealthListener + */ + +class LNDErrorManager { + + /** + * @type {boolean} + */ + _isCheckingHealth = false + + /** + * @type {HealthListener[]} + */ + _healthListeners = [] + + getAvailableService(){ + + //require('shock-common').Utils.makePromise((res, rej) => ...) + return new Promise((res,rej)=>{ + if(!this._isCheckingHealth){ + this._isCheckingHealth = true + this.getInfo() + } + /** + * + * @param {LNDError} err + * @param {object} response + */ + const listener = (err,response)=>{ + if (err) { + if (err.code === 12) { + res({ + service: 'walletUnlocker', + message: 'Wallet locked', + code: err.code, + walletStatus: 'locked', + success: true + }) + } else if (err.code === 14) { + rej({ + service: 'unknown', + message: + "Failed to connect to LND server, make sure it's up and running.", + code: 14, + walletStatus: 'unknown', + success: false + }) + } else { + rej({ + service: 'lightning', + message: this.sanitizeLNDError(err), + code: err.code, + walletStatus: 'unlocked', + success: false + }) + } + } + + res({ + service: 'lightning', + message: response, + code: null, + walletStatus: 'unlocked', + success: true + }) + + } + this._healthListeners.push(listener) + }) + + } + + //private + getInfo(){ + const { lightning } = LightningServices.services + /** + * + * @param {LNDError} err + * @param {object} response + */ + const callback = (err, response) => { + this._healthListeners.forEach(l =>{ + l(err,response) + }) + this._healthListeners.length = 0 + this._isCheckingHealth = false + } + const deadline = Date.now() + 2000 + lightning.getInfo({},{deadline}, callback) + } + + /** + * @param {LNDError} e + */ + handleError(e){ + return this.sanitizeLNDError(e) + } + + /** + * @param {LNDError} e + */ + // eslint-disable-next-line + sanitizeLNDError(e){ + let eMessage = '' + if(typeof e === 'string'){ + eMessage = e + }else if(e.details){ + eMessage = e.details + } else if(e.message){ + eMessage = e.message + } + if (eMessage.toLowerCase().includes('unknown')) { + const splittedMessage = eMessage.split('UNKNOWN: ') + return splittedMessage.length > 1 + ? splittedMessage.slice(1).join('') + : splittedMessage.join('') + } + if(eMessage === ''){ + return 'unknown LND error' + } + return eMessage + } + + +} + + +const lndErrorManager = new LNDErrorManager() + +module.exports = lndErrorManager \ No newline at end of file From 7db03de5f1c7f1183b4786e99ebfd1a3f95cf0f7 Mon Sep 17 00:00:00 2001 From: hatim boufnichel Date: Sat, 5 Sep 2020 20:15:55 +0200 Subject: [PATCH 05/10] wire get aval service --- src/routes.js | 23 ++++++++++++++++++----- utils/lightningServices/errors.js | 10 ++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/routes.js b/src/routes.js index 65fc1a68..8a144800 100644 --- a/src/routes.js +++ b/src/routes.js @@ -21,6 +21,7 @@ const auth = require('../services/auth/auth') const FS = require('../utils/fs') const Encryption = require('../utils/encryptionStore') const LightningServices = require('../utils/lightningServices') +const lndErrorManager = require('../utils/lightningServices/errors') const GunDB = require('../services/gunDB/Mediator') const { unprotectedRoutes, @@ -63,7 +64,10 @@ module.exports = async ( return message } - const getAvailableService = () => + const getAvailableService = () => { + return lndErrorManager.getAvailableService() + } + /* new Promise((resolve, reject) => { const { lightning } = LightningServices.services @@ -105,13 +109,22 @@ module.exports = async ( success: true }) }) - }) + })*/ const checkHealth = async () => { logger.info('Getting service status...') - const serviceStatus = await getAvailableService() - logger.info('Received status:', serviceStatus) - const LNDStatus = serviceStatus + let LNDStatus = {} + try { + const serviceStatus = await getAvailableService() + logger.info('Received status:', serviceStatus) + LNDStatus = serviceStatus + } catch (e) { + LNDStatus = { + message: e.message, + success: false + } + } + try { logger.info('Getting API status...') const APIHealth = await Http.get( diff --git a/utils/lightningServices/errors.js b/utils/lightningServices/errors.js index f1051099..04e35aeb 100644 --- a/utils/lightningServices/errors.js +++ b/utils/lightningServices/errors.js @@ -25,6 +25,7 @@ class LNDErrorManager { */ _healthListeners = [] + //rejects if(err && err.code !== 12) getAvailableService(){ //require('shock-common').Utils.makePromise((res, rej) => ...) @@ -57,6 +58,15 @@ class LNDErrorManager { walletStatus: 'unknown', success: false }) + } else if(err.code === 4){ + rej({ + service: 'unknown', + message: + "LND Timeout", + code: 4, + walletStatus: 'unknown', + success: false + }) } else { rej({ service: 'lightning', From ea7b41f426176a445fd86e1a55e771864aa0e4f9 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2020 07:01:57 +0000 Subject: [PATCH 06/10] Bump eslint-plugin-prettier from 3.1.1 to 3.1.4 Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 3.1.1 to 3.1.4. - [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases) - [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md) - [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v3.1.1...v3.1.4) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6ca32faa..f4d6950b 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "eslint-config-prettier": "^6.5.0", "eslint-plugin-babel": "^5.3.1", "eslint-plugin-jest": "^22.20.1", - "eslint-plugin-prettier": "^3.1.1", + "eslint-plugin-prettier": "^3.1.4", "jest": "^24.9.0", "lint-staged": "^10.2.2", "nodemon": "^1.19.3", diff --git a/yarn.lock b/yarn.lock index 1558a45c..5f35f354 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2344,10 +2344,10 @@ eslint-plugin-jest@^22.20.1: dependencies: "@typescript-eslint/experimental-utils" "^1.13.0" -eslint-plugin-prettier@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz#507b8562410d02a03f0ddc949c616f877852f2ba" - integrity sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA== +eslint-plugin-prettier@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" + integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== dependencies: prettier-linter-helpers "^1.0.0" From 818c1bf198aa2434acbf1eb7fd1d3be25616780c Mon Sep 17 00:00:00 2001 From: CapDog <34176400+capitalistdog@users.noreply.github.com> Date: Tue, 8 Sep 2020 21:14:18 -0400 Subject: [PATCH 07/10] redundant peer --- config/defaults.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/defaults.js b/config/defaults.js index 3c467399..3404a6ce 100644 --- a/config/defaults.js +++ b/config/defaults.js @@ -46,7 +46,7 @@ module.exports = (mainnet = false) => { logfile: "shockapi.log", lndLogFile: parsePath(`${lndDirectory}/logs/bitcoin/${network}/lnd.log`), lndDirPath: lndDirectory, - peers: ['https://gun.shock.network'], + peers: ['http://gun.shock.network:8765/gun','http://gun2.shock.network:8765/gun'], useTLS: false, tokenExpirationMS: 259200000 }; From bba51932aab00a0d19d058b9f14ef1e2381dfb23 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 10 Sep 2020 06:59:07 +0000 Subject: [PATCH 08/10] Bump colors from 1.3.3 to 1.4.0 Bumps [colors](https://github.com/Marak/colors.js) from 1.3.3 to 1.4.0. - [Release notes](https://github.com/Marak/colors.js/releases) - [Commits](https://github.com/Marak/colors.js/compare/v1.3.3...v1.4.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 3ca1cee4..09d9c109 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "big.js": "^5.2.2", "bitcore-lib": "^0.15.0", "body-parser": "^1.16.0", - "colors": "^1.3.0", + "colors": "^1.4.0", "command-exists": "^1.2.6", "commander": "^2.9.0", "compression": "^1.7.4", diff --git a/yarn.lock b/yarn.lock index eebaf010..c954bc9b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1734,16 +1734,11 @@ color@3.0.x: color-convert "^1.9.1" color-string "^1.5.2" -colors@^1.2.1: +colors@^1.2.1, colors@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -colors@^1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== - colorspace@1.1.x: version "1.1.2" resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5" From d7c155aa5243874e7409ecd188f63eefbbc303fa Mon Sep 17 00:00:00 2001 From: hatim boufnichel Date: Thu, 10 Sep 2020 18:27:05 +0200 Subject: [PATCH 09/10] better errors on streams --- src/sockets.js | 84 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 67 insertions(+), 17 deletions(-) diff --git a/src/sockets.js b/src/sockets.js index c29e7e9e..fd317c61 100644 --- a/src/sockets.js +++ b/src/sockets.js @@ -122,21 +122,45 @@ module.exports = ( stream.on('end', () => { logger.info('New invoice stream ended, starting a new one...') // Prevents call stack overflow exceptions - process.nextTick(() => onNewInvoice(socket)) + //process.nextTick(() => onNewInvoice(socket)) }) stream.on('error', err => { logger.error('New invoice stream error:' + subID, err) }) stream.on('status', status => { logger.warn('New invoice stream status:' + subID, status) - if (status.code === 14) { - // Prevents call stack overflow exceptions - logger.error( - '[event:invoice:new] LND disconnected, sockets reconnecting in 30 seconds...' - ) - process.nextTick(() => - setTimeout(() => onNewInvoice(socket, subID), 30000) - ) + switch (status.code) { + case 0: { + logger.info('[event:invoice:new] stream ok') + break + } + case 2: { + logger.warn('[event:invoice:new] got UNKNOWN error status') + break + } + case 12: { + logger.warn( + '[event:invoice:new] LND locked, new registration in 60 seconds' + ) + process.nextTick(() => + setTimeout(() => onNewInvoice(socket, subID), 60000) + ) + break + } + case 13: { + //https://grpc.github.io/grpc/core/md_doc_statuscodes.html + logger.error('[event:invoice:new] INTERNAL LND error') + break + } + case 14: { + logger.error( + '[event:invoice:new] LND disconnected, sockets reconnecting in 30 seconds...' + ) + process.nextTick(() => + setTimeout(() => onNewInvoice(socket, subID), 30000) + ) + break + } } }) return () => { @@ -154,20 +178,46 @@ module.exports = ( }) stream.on('end', () => { logger.info('New transactions stream ended, starting a new one...') - process.nextTick(() => onNewTransaction(socket)) + //process.nextTick(() => onNewTransaction(socket)) }) stream.on('error', err => { logger.error('New transactions stream error:' + subID, err) }) stream.on('status', status => { logger.error('New transactions stream status:' + subID, status) - if (status.code === 14) { - logger.error( - '[event:transaction:new] LND disconnected, sockets reconnecting in 30 seconds...' - ) - process.nextTick(() => - setTimeout(() => onNewTransaction(socket, subID), 30000) - ) + switch (status.code) { + case 0: { + logger.info('[event:transaction:new] stream ok') + break + } + case 2: { + //Happens to fire when the grpc client lose access to macaroon file + logger.warn('[event:transaction:new] got UNKNOWN error status') + break + } + case 12: { + logger.warn( + '[event:transaction:new] LND locked, new registration in 60 seconds' + ) + process.nextTick(() => + setTimeout(() => onNewTransaction(socket, subID), 60000) + ) + break + } + case 13: { + //https://grpc.github.io/grpc/core/md_doc_statuscodes.html + logger.error('[event:transaction:new] INTERNAL LND error') + break + } + case 14: { + logger.error( + '[event:transaction:new] LND disconnected, sockets reconnecting in 30 seconds...' + ) + process.nextTick(() => + setTimeout(() => onNewTransaction(socket, subID), 30000) + ) + break + } } }) return () => { From fdbde085a351e895ee3a598d67ae5d174caafd7f Mon Sep 17 00:00:00 2001 From: hatim boufnichel Date: Fri, 11 Sep 2020 20:29:19 +0200 Subject: [PATCH 10/10] handle error codes --- src/routes.js | 74 +++++++++++++++++++++++++++---- utils/lightningServices/errors.js | 2 +- 2 files changed, 67 insertions(+), 9 deletions(-) diff --git a/src/routes.js b/src/routes.js index 8a144800..a0156829 100644 --- a/src/routes.js +++ b/src/routes.js @@ -380,14 +380,31 @@ module.exports = async ( const walletStatus = await walletExists() const availableService = await getAvailableService() const statusMessage = availableService.walletStatus + if (availableService.code === 12) { + return res.status(401).json({ + field: 'lnd_locked', + errorMessage: availableService.message + ? availableService.message + : 'unknown' + }) + } + if (availableService.code === 14) { + return res.status(401).json({ + field: 'lnd_dead', + errorMessage: availableService.message + ? availableService.message + : 'unknown' + }) + } if (walletStatus) { if (statusMessage === 'unlocked') { return next() } - return res.status(401).json({ field: 'wallet', - errorMessage: statusMessage ? statusMessage : 'unknown' + errorMessage: availableService.message + ? availableService.message + : 'unknown' }) } @@ -399,6 +416,18 @@ module.exports = async ( next() } catch (err) { logger.error(err) + if (err.code === 12) { + return res.status(401).json({ + field: 'lnd_locked', + errorMessage: err.message ? err.message : 'unknown' + }) + } + if (err.code === 14) { + return res.status(401).json({ + field: 'lnd_dead', + errorMessage: err.message ? err.message : 'unknown' + }) + } res.status(500).json({ field: 'wallet', errorMessage: err.message ? err.message : err @@ -602,17 +631,46 @@ module.exports = async ( stream.on('end', () => { logger.info('Channel backup stream ended, starting a new one...') // Prevents call stack overflow exceptions - process.nextTick(onNewChannelBackup) + //process.nextTick(onNewChannelBackup) }) stream.on('error', err => { logger.error('Channel backup stream error:', err) }) stream.on('status', status => { - if (status.code === 14) { - // Prevents call stack overflow exceptions - process.nextTick(() => setTimeout(onNewChannelBackup, 30000)) - } else { - logger.error('Channel backup stream status:', status) + logger.error('Channel backup stream status:', status) + switch (status.code) { + case 0: { + logger.info('Channel backup stream ok') + break + } + case 2: { + //Happens to fire when the grpc client lose access to macaroon file + logger.warn('Channel backup got UNKNOWN error status') + break + } + case 12: { + logger.warn( + 'Channel backup LND locked, new registration in 60 seconds' + ) + process.nextTick(() => + setTimeout(() => onNewTransaction(socket, subID), 60000) + ) + break + } + case 13: { + //https://grpc.github.io/grpc/core/md_doc_statuscodes.html + logger.error('Channel backup INTERNAL LND error') + break + } + case 14: { + logger.error( + 'Channel backup LND disconnected, sockets reconnecting in 30 seconds...' + ) + process.nextTick(() => + setTimeout(() => onNewTransaction(socket, subID), 30000) + ) + break + } } }) } diff --git a/utils/lightningServices/errors.js b/utils/lightningServices/errors.js index 04e35aeb..971a0d02 100644 --- a/utils/lightningServices/errors.js +++ b/utils/lightningServices/errors.js @@ -107,7 +107,7 @@ class LNDErrorManager { this._healthListeners.length = 0 this._isCheckingHealth = false } - const deadline = Date.now() + 2000 + const deadline = Date.now() + 4000 lightning.getInfo({},{deadline}, callback) }