mirror of
https://github.com/fullstack-cash/bch-api.git
synced 2026-09-22 01:02:05 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c70fc5007 | ||
|
|
b24b659124 | ||
|
|
7ad5acef34 | ||
|
|
304a3f1d5a | ||
|
|
86a58e9ff3 | ||
|
|
d7d722b27b | ||
|
|
d439165dd2 | ||
|
|
65356051f8 | ||
|
|
9728b64edb |
@@ -33,7 +33,9 @@ util.inspect.defaultOptions = { depth: 1 }
|
||||
// let _this
|
||||
|
||||
// Set default rate limit value for testing
|
||||
const PRO_PASSES = process.env.PRO_PASSES ? process.env.PRO_PASSES : 'testpassword'
|
||||
const PRO_PASSES = process.env.PRO_PASS
|
||||
? process.env.PRO_PASS
|
||||
: 'testpassword'
|
||||
// Convert the pro-tier password string into an array split by ':'.
|
||||
const PRO_PASS = PRO_PASSES.split(':')
|
||||
|
||||
@@ -47,6 +49,8 @@ class AuthMW {
|
||||
// Initialize passport for 'anonymous' authentication.
|
||||
passport.use(new AnonymousStrategy())
|
||||
|
||||
console.log(`PRO_PASS: ${JSON.stringify(PRO_PASS, null, 2)}`)
|
||||
|
||||
// Initialize passport for 'basic' authentication.
|
||||
passport.use(
|
||||
new BasicStrategy({ passReqToCallback: true }, function (
|
||||
|
||||
@@ -12,10 +12,12 @@
|
||||
|
||||
'use strict'
|
||||
|
||||
const jwt = require('jsonwebtoken')
|
||||
|
||||
const wlogger = require('../util/winston-logging')
|
||||
const config = require('../../config')
|
||||
|
||||
const jwt = require('jsonwebtoken')
|
||||
const ANON_LIMITS = 50
|
||||
|
||||
// Redis
|
||||
const redisOptions = {
|
||||
@@ -111,7 +113,7 @@ class RateLimits {
|
||||
}
|
||||
|
||||
// Default value is 50 points per request = 20 RPM
|
||||
let rateLimit = 50
|
||||
let rateLimit = ANON_LIMITS
|
||||
|
||||
// Only evaluate the JWT token if the user is not using Basic Authentication.
|
||||
if (!req.locals.proLimit) {
|
||||
@@ -146,6 +148,7 @@ class RateLimits {
|
||||
origin &&
|
||||
(origin.toString().indexOf('wallet.fullstack.cash') > -1 ||
|
||||
origin.toString().indexOf('sandbox.fullstack.cash') > -1 ||
|
||||
origin.toString().indexOf('splitbch.com') > -1 ||
|
||||
origin === 'slp-api')
|
||||
) {
|
||||
pointsToConsume = 10
|
||||
@@ -154,9 +157,11 @@ class RateLimits {
|
||||
|
||||
// For internal calls, increase rate limits to as fast as possible.
|
||||
if (
|
||||
key.toString().indexOf('172.17.') > -1
|
||||
// Comment out the line below when running bch-js e2e rate limit tests.
|
||||
// key.toString().indexOf('::ffff:127.0.0.1') > -1
|
||||
key.toString().indexOf('::ffff:127.0.0.1') > -1 ||
|
||||
|
||||
// Do not comment out this line.
|
||||
key.toString().indexOf('172.17.') > -1
|
||||
) {
|
||||
pointsToConsume = 1
|
||||
res.locals.pointsToConsume = pointsToConsume // Feedback for tests.
|
||||
@@ -197,7 +202,7 @@ class RateLimits {
|
||||
// Calculates the points consumed, based on the jwt information and the route
|
||||
// requested.
|
||||
calcPoints (jwtInfo) {
|
||||
let retVal = 50 // By default, use anonymous tier.
|
||||
let retVal = ANON_LIMITS // By default, use anonymous tier.
|
||||
|
||||
try {
|
||||
// console.log(`jwtInfo: ${JSON.stringify(jwtInfo, null, 2)}`)
|
||||
@@ -216,12 +221,12 @@ class RateLimits {
|
||||
if (level40Routes.includes(resource)) {
|
||||
if (apiLevel >= 40) retVal = 10
|
||||
// else if (apiLevel >= 10) retVal = 10
|
||||
else retVal = 50
|
||||
else retVal = ANON_LIMITS
|
||||
|
||||
// Normal indexer routes
|
||||
} else if (level30Routes.includes(resource)) {
|
||||
if (apiLevel >= 30) retVal = 10
|
||||
else retVal = 50
|
||||
else retVal = ANON_LIMITS
|
||||
|
||||
// Full node tier
|
||||
} else if (apiLevel >= 20) {
|
||||
@@ -229,7 +234,7 @@ class RateLimits {
|
||||
|
||||
// Free tier, full node only.
|
||||
} else {
|
||||
retVal = 50
|
||||
retVal = ANON_LIMITS
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,7 +242,7 @@ class RateLimits {
|
||||
} catch (err) {
|
||||
wlogger.error('Error in route-ratelimit.js/calcPoints()')
|
||||
// throw err
|
||||
retVal = 50
|
||||
retVal = ANON_LIMITS
|
||||
}
|
||||
|
||||
return retVal
|
||||
|
||||
Reference in New Issue
Block a user