Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4e7731ff54 | ||
|
|
1c8232d1ec | ||
|
|
fd6caf859c | ||
|
|
df6412a525 | ||
|
|
c46c1385c6 | ||
|
|
dd5d96aa56 | ||
|
|
d6d563039e | ||
|
|
f5eb5d0c78 | ||
|
|
9d17ceb23f | ||
|
|
d0406afd31 | ||
|
|
6411e9bd28 | ||
|
|
db218ef440 | ||
|
|
735b65dc0f | ||
|
|
c73d762028 | ||
|
|
4f3dff6022 | ||
|
|
a792432700 | ||
|
|
590bccd4c0 | ||
|
|
d90881771c | ||
|
|
d9d75a0b29 | ||
|
|
34ffd59c1b | ||
|
|
7dce6b848e | ||
|
|
0d337bdc7b | ||
|
|
f0bf066cfd | ||
|
|
f0ad86f1b9 | ||
|
|
12d1e9560f | ||
|
|
1eaf6c5a47 | ||
|
|
dfcaac2cfa | ||
|
|
f11c02d2f2 | ||
|
|
a4eedde3fb | ||
|
|
597615209b | ||
|
|
5fc7b074f9 | ||
|
|
df9b9a71d9 | ||
|
|
ede2359e8a | ||
|
|
b9a55f01d7 |
@@ -1,4 +1,7 @@
|
|||||||
let config = {
|
let config = {
|
||||||
|
enableUpdateDescribeGraph: false,
|
||||||
|
postRateLimit: 100,
|
||||||
|
rateLimit: 200,
|
||||||
bitcoind: {
|
bitcoind: {
|
||||||
rpc: 'http://login:password@1.1.1.1:8332/wallet/wallet.dat',
|
rpc: 'http://login:password@1.1.1.1:8332/wallet/wallet.dat',
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -118,15 +118,17 @@ function updateDescribeGraph() {
|
|||||||
console.log('updated graph');
|
console.log('updated graph');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
updateDescribeGraph();
|
if (config.enableUpdateDescribeGraph) {
|
||||||
setInterval(updateDescribeGraph, 120000);
|
updateDescribeGraph();
|
||||||
|
setInterval(updateDescribeGraph, 120000);
|
||||||
|
}
|
||||||
|
|
||||||
// ######################## ROUTES ########################
|
// ######################## ROUTES ########################
|
||||||
|
|
||||||
const rateLimit = require('express-rate-limit');
|
const rateLimit = require('express-rate-limit');
|
||||||
const postLimiter = rateLimit({
|
const postLimiter = rateLimit({
|
||||||
windowMs: 30 * 60 * 1000,
|
windowMs: 30 * 60 * 1000,
|
||||||
max: 100,
|
max: config.postRateLimit || 100,
|
||||||
});
|
});
|
||||||
|
|
||||||
router.post('/create', postLimiter, async function (req, res) {
|
router.post('/create', postLimiter, async function (req, res) {
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ const pubkey2name = {
|
|||||||
'026c7d28784791a4b31a64eb34d9ab01552055b795919165e6ae886de637632efb': 'LivingRoomOfSatoshi',
|
'026c7d28784791a4b31a64eb34d9ab01552055b795919165e6ae886de637632efb': 'LivingRoomOfSatoshi',
|
||||||
'02816caed43171d3c9854e3b0ab2cf0c42be086ff1bd4005acc2a5f7db70d83774': 'ln.pizza',
|
'02816caed43171d3c9854e3b0ab2cf0c42be086ff1bd4005acc2a5f7db70d83774': 'ln.pizza',
|
||||||
'0254ff808f53b2f8c45e74b70430f336c6c76ba2f4af289f48d6086ae6e60462d3': 'bitrefill thor',
|
'0254ff808f53b2f8c45e74b70430f336c6c76ba2f4af289f48d6086ae6e60462d3': 'bitrefill thor',
|
||||||
|
'03d607f3e69fd032524a867b288216bfab263b6eaee4e07783799a6fe69bb84fac': 'bitrefill 3',
|
||||||
'02a0bc43557fae6af7be8e3a29fdebda819e439bea9c0f8eb8ed6a0201f3471ca9': 'LightningPeachHub',
|
'02a0bc43557fae6af7be8e3a29fdebda819e439bea9c0f8eb8ed6a0201f3471ca9': 'LightningPeachHub',
|
||||||
'02d4531a2f2e6e5a9033d37d548cff4834a3898e74c3abe1985b493c42ebbd707d': 'coinfinity.co',
|
'02d4531a2f2e6e5a9033d37d548cff4834a3898e74c3abe1985b493c42ebbd707d': 'coinfinity.co',
|
||||||
'02d23fa6794d8fd056c757f3c8f4877782138dafffedc831fc570cab572620dc61': 'paywithmoon.com',
|
'02d23fa6794d8fd056c757f3c8f4877782138dafffedc831fc570cab572620dc61': 'paywithmoon.com',
|
||||||
|
|||||||
7
index.js
7
index.js
@@ -5,9 +5,11 @@ process.on('uncaughtException', function (err) {
|
|||||||
|
|
||||||
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
|
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
|
||||||
let express = require('express');
|
let express = require('express');
|
||||||
|
const helmet = require('helmet');
|
||||||
let morgan = require('morgan');
|
let morgan = require('morgan');
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
let logger = require('./utils/logger');
|
let logger = require('./utils/logger');
|
||||||
|
const config = require('./config');
|
||||||
|
|
||||||
morgan.token('id', function getId(req) {
|
morgan.token('id', function getId(req) {
|
||||||
return req.id;
|
return req.id;
|
||||||
@@ -15,11 +17,13 @@ morgan.token('id', function getId(req) {
|
|||||||
|
|
||||||
let app = express();
|
let app = express();
|
||||||
app.enable('trust proxy');
|
app.enable('trust proxy');
|
||||||
|
app.use(helmet.hsts());
|
||||||
|
app.use(helmet.hidePoweredBy());
|
||||||
|
|
||||||
const rateLimit = require('express-rate-limit');
|
const rateLimit = require('express-rate-limit');
|
||||||
const limiter = rateLimit({
|
const limiter = rateLimit({
|
||||||
windowMs: 15 * 60 * 1000,
|
windowMs: 15 * 60 * 1000,
|
||||||
max: 200,
|
max: config.rateLimit || 200,
|
||||||
});
|
});
|
||||||
app.use(limiter);
|
app.use(limiter);
|
||||||
|
|
||||||
@@ -35,7 +39,6 @@ app.use(
|
|||||||
);
|
);
|
||||||
|
|
||||||
let bodyParser = require('body-parser');
|
let bodyParser = require('body-parser');
|
||||||
let config = require('./config');
|
|
||||||
|
|
||||||
app.use(bodyParser.urlencoded({ extended: false })); // parse application/x-www-form-urlencoded
|
app.use(bodyParser.urlencoded({ extended: false })); // parse application/x-www-form-urlencoded
|
||||||
app.use(bodyParser.json(null)); // parse application/json
|
app.use(bodyParser.json(null)); // parse application/json
|
||||||
|
|||||||
950
package-lock.json
generated
950
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
31
package.json
31
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "lndhub",
|
"name": "lndhub",
|
||||||
"version": "1.3.2",
|
"version": "1.3.5",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -12,29 +12,30 @@
|
|||||||
"author": "Igor Korsakov <overtorment@gmail.com>",
|
"author": "Igor Korsakov <overtorment@gmail.com>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/cli": "^7.13.0",
|
"@babel/cli": "^7.14.3",
|
||||||
"@babel/core": "^7.13.8",
|
"@babel/core": "^7.14.3",
|
||||||
"@babel/eslint-parser": "^7.13.10",
|
"@babel/eslint-parser": "^7.14.2",
|
||||||
"@babel/node": "^7.13.0",
|
"@babel/node": "^7.13.0",
|
||||||
"@babel/preset-env": "^7.13.9",
|
"@babel/preset-env": "^7.14.1",
|
||||||
"@babel/register": "^7.13.8",
|
"@babel/register": "^7.13.16",
|
||||||
"@grpc/grpc-js": "^1.2.10",
|
"@grpc/grpc-js": "^1.3.2",
|
||||||
"@grpc/proto-loader": "^0.6.0",
|
"@grpc/proto-loader": "^0.6.2",
|
||||||
"bignumber.js": "^9.0.1",
|
"bignumber.js": "^9.0.1",
|
||||||
"bitcoinjs-lib": "^5.2.0",
|
"bitcoinjs-lib": "^5.2.0",
|
||||||
"bolt11": "^1.3.1",
|
"bolt11": "^1.3.1",
|
||||||
"core-js": "^3.9.1",
|
"core-js": "^3.13.0",
|
||||||
"eslint": "^7.20.0",
|
"eslint": "^7.24.0",
|
||||||
"eslint-config-prettier": "^8.0.0",
|
"eslint-config-prettier": "^8.3.0",
|
||||||
"eslint-plugin-prettier": "^3.3.1",
|
"eslint-plugin-prettier": "^3.4.0",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"express-rate-limit": "^5.2.6",
|
"express-rate-limit": "^5.2.6",
|
||||||
"frisbee": "^3.1.4",
|
"frisbee": "^3.1.4",
|
||||||
"ioredis": "^4.22.0",
|
"helmet": "^4.6.0",
|
||||||
"jayson": "^3.4.4",
|
"ioredis": "^4.27.2",
|
||||||
|
"jayson": "^3.6.3",
|
||||||
"morgan": "^1.10.0",
|
"morgan": "^1.10.0",
|
||||||
"mustache": "^4.1.0",
|
"mustache": "^4.1.0",
|
||||||
"prettier": "^2.2.1",
|
"prettier": "^2.3.0",
|
||||||
"qr-image": "3.2.0",
|
"qr-image": "3.2.0",
|
||||||
"request": "^2.88.2",
|
"request": "^2.88.2",
|
||||||
"request-promise": "^4.2.6",
|
"request-promise": "^4.2.6",
|
||||||
|
|||||||
@@ -9,18 +9,23 @@ const important_channels = {
|
|||||||
uri: '03abf6f44c355dec0d5aa155bdbdd6e0c8fefe318eff402de65c6eb2e1be55dc3e@18.221.23.28:9735',
|
uri: '03abf6f44c355dec0d5aa155bdbdd6e0c8fefe318eff402de65c6eb2e1be55dc3e@18.221.23.28:9735',
|
||||||
wumbo: 1,
|
wumbo: 1,
|
||||||
},
|
},
|
||||||
'0242a4ae0c5bef18048fbecf995094b74bfb0f7391418d71ed394784373f41e4f3': {
|
// '0242a4ae0c5bef18048fbecf995094b74bfb0f7391418d71ed394784373f41e4f3': {
|
||||||
name: 'coingate.com',
|
// name: 'coingate.com',
|
||||||
uri: '0242a4ae0c5bef18048fbecf995094b74bfb0f7391418d71ed394784373f41e4f3@3.124.63.44:9735',
|
// uri: '0242a4ae0c5bef18048fbecf995094b74bfb0f7391418d71ed394784373f41e4f3@3.124.63.44:9735',
|
||||||
},
|
// },
|
||||||
// '0254ff808f53b2f8c45e74b70430f336c6c76ba2f4af289f48d6086ae6e60462d3': {
|
// '0254ff808f53b2f8c45e74b70430f336c6c76ba2f4af289f48d6086ae6e60462d3': {
|
||||||
// name: 'bitrefill thor',
|
// name: 'bitrefill thor',
|
||||||
// uri: '0254ff808f53b2f8c45e74b70430f336c6c76ba2f4af289f48d6086ae6e60462d3@52.30.63.2:9735',
|
// uri: '0254ff808f53b2f8c45e74b70430f336c6c76ba2f4af289f48d6086ae6e60462d3@52.30.63.2:9735',
|
||||||
// wumbo: 1,
|
// wumbo: 1,
|
||||||
// },
|
// },
|
||||||
'030c3f19d742ca294a55c00376b3b355c3c90d61c6b6b39554dbc7ac19b141c14f': {
|
// '030c3f19d742ca294a55c00376b3b355c3c90d61c6b6b39554dbc7ac19b141c14f': {
|
||||||
name: 'bitrefill 2',
|
// name: 'bitrefill 2',
|
||||||
uri: '030c3f19d742ca294a55c00376b3b355c3c90d61c6b6b39554dbc7ac19b141c14f@52.50.244.44:9735',
|
// uri: '030c3f19d742ca294a55c00376b3b355c3c90d61c6b6b39554dbc7ac19b141c14f@52.50.244.44:9735',
|
||||||
|
// wumbo: 1,
|
||||||
|
// },
|
||||||
|
'03d607f3e69fd032524a867b288216bfab263b6eaee4e07783799a6fe69bb84fac': {
|
||||||
|
name: 'bitrefill 3',
|
||||||
|
uri: '03d607f3e69fd032524a867b288216bfab263b6eaee4e07783799a6fe69bb84fac@3.237.23.179:9735',
|
||||||
wumbo: 1,
|
wumbo: 1,
|
||||||
},
|
},
|
||||||
// '025f1456582e70c4c06b61d5c8ed3ce229e6d0db538be337a2dc6d163b0ebc05a5': {
|
// '025f1456582e70c4c06b61d5c8ed3ce229e6d0db538be337a2dc6d163b0ebc05a5': {
|
||||||
@@ -40,6 +45,11 @@ const important_channels = {
|
|||||||
uri: '02816caed43171d3c9854e3b0ab2cf0c42be086ff1bd4005acc2a5f7db70d83774@35.238.153.25:9735',
|
uri: '02816caed43171d3c9854e3b0ab2cf0c42be086ff1bd4005acc2a5f7db70d83774@35.238.153.25:9735',
|
||||||
wumbo: 1,
|
wumbo: 1,
|
||||||
},
|
},
|
||||||
|
'036b53093df5a932deac828cca6d663472dbc88322b05eec1d42b26ab9b16caa1c': {
|
||||||
|
name: 'okcoin',
|
||||||
|
uri: '036b53093df5a932deac828cca6d663472dbc88322b05eec1d42b26ab9b16caa1c@47.243.25.4:26658',
|
||||||
|
wumbo: 1,
|
||||||
|
},
|
||||||
// '0331f80652fb840239df8dc99205792bba2e559a05469915804c08420230e23c7c': {
|
// '0331f80652fb840239df8dc99205792bba2e559a05469915804c08420230e23c7c': {
|
||||||
// name: 'LightningPowerUsers.com',
|
// name: 'LightningPowerUsers.com',
|
||||||
// uri: '0331f80652fb840239df8dc99205792bba2e559a05469915804c08420230e23c7c@34.200.181.109:9735',
|
// uri: '0331f80652fb840239df8dc99205792bba2e559a05469915804c08420230e23c7c@34.200.181.109:9735',
|
||||||
@@ -52,10 +62,10 @@ const important_channels = {
|
|||||||
// name: 'fixedfloat.com',
|
// name: 'fixedfloat.com',
|
||||||
// uri: '037f990e61acee8a7697966afd29dd88f3b1f8a7b14d625c4f8742bd952003a590@185.5.53.91:9735',
|
// uri: '037f990e61acee8a7697966afd29dd88f3b1f8a7b14d625c4f8742bd952003a590@185.5.53.91:9735',
|
||||||
// },
|
// },
|
||||||
'03c2abfa93eacec04721c019644584424aab2ba4dff3ac9bdab4e9c97007491dda': {
|
// '03c2abfa93eacec04721c019644584424aab2ba4dff3ac9bdab4e9c97007491dda': {
|
||||||
name: 'tippin.me',
|
// name: 'tippin.me',
|
||||||
uri: '03c2abfa93eacec04721c019644584424aab2ba4dff3ac9bdab4e9c97007491dda@157.245.68.47:9735',
|
// uri: '03c2abfa93eacec04721c019644584424aab2ba4dff3ac9bdab4e9c97007491dda@157.245.68.47:9735',
|
||||||
},
|
// },
|
||||||
};
|
};
|
||||||
|
|
||||||
let lightning = require('../lightning');
|
let lightning = require('../lightning');
|
||||||
|
|||||||
Reference in New Issue
Block a user