Skip to content

Commit ce82634

Browse files
committed
0.11.8: +faucet
1 parent f29088a commit ce82634

17 files changed

+1713
-1430
lines changed

app.js

Lines changed: 53 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Distributed under MS-RSL license: see /LICENSE for terms. Copyright 2019-2020 Dominic Morris.
1+
// Distributed under MS-RSL license: see /LICENSE for terms. Copyright 2019-2021 Dominic Morris.
22
'use strict';
33

44
const express = require('express');
@@ -12,8 +12,9 @@ const scp_eos = require('./scp_eos');
1212
const scp_ext = require('./scp_ext');
1313
const scp_ref = require('./scp_ref');
1414
const scp_xs = require('./scp_xs');
15-
const scp_cm = require('./scp_cm');
15+
//const scp_cm = require('./scp_cm');
1616
const scp_stm = require('./scp_stm');
17+
const scp_faucet = require('./scp_faucet');
1718
const scp_dbg = require('./scp_dbg');
1819
const sql = require('mssql');
1920
const config = require('./config');
@@ -37,17 +38,12 @@ scp_sql_pool.connect()
3738

3839
// SQL connections (StMaster - AC/SD DBs)
3940
//global.stm_sql_pools = [];
40-
const stm_db = config.stm_sql_db();
41-
//const stm_dbs = config.stm_sql_dbs();
42-
//for (let stm_db of stm_dbs) {
43-
//console.log(db.name);
44-
const stm_sql_pool = new sql.ConnectionPool(stm_db.config);
45-
stm_sql_pool.connect()
46-
.then(() => { console.log(`stm_sql_pool connected ok: `, stm_db.config.server); })
47-
.catch((err => { console.error(`## failed to connect to stm_sql_pool: ${err.message}`); }));
48-
//global.stm_sql_pools.push(stm_sql_pool);
49-
global.stm_sql_pool = stm_sql_pool;
50-
//}
41+
// const stm_db = config.stm_sql_db();
42+
// const stm_sql_pool = new sql.ConnectionPool(stm_db.config);
43+
// stm_sql_pool.connect()
44+
// .then(() => { console.log(`stm_sql_pool connected ok: `, stm_db.config.server); })
45+
// .catch((err => { console.error(`## failed to connect to stm_sql_pool: ${err.message}`); }));
46+
// global.stm_sql_pool = stm_sql_pool;
5147

5248
// *** cors is set on the azure web service (host IIS instance) - works much more reliably ***
5349
// but needed for dev
@@ -74,40 +70,42 @@ if (process.env.DEV === "1") {
7470
app.use("/api", cors(corsOptions));
7571
}
7672

77-
// hard rate limits - block
78-
const generous_limiter = rateLimit({
79-
windowMs: 1 * 60 * 1000, // 1 minute
80-
max: 15, // limit per IP per windowMs - clears after windowMs
81-
handler: (req, res, /*next*/) => { console.log(`### generous_limiter - handler: ${req.url}`); /*set_cors(req, res);*/ res.status(429).send("Scoop Limit #1a"); },
82-
onLimitReached: (req, res, options) => { console.log(`### generous_limiter - onLimitReached: ${req.url}`); }
83-
});
84-
app.use("/api/assets", generous_limiter);
85-
app.use("/api/data", generous_limiter);
86-
app.use("/api/login_v2", generous_limiter);
87-
app.use("/api/account", generous_limiter);
88-
app.use("/api/refer", generous_limiter);
89-
//app.use("/api/stm", generous_limiter); // no limit on this endpoint - it's called in parallel by wallet worker threads (see: action/s/wallet.js:newWalletAddressFromPrivKey())
90-
91-
const paranoid_limiter = rateLimit({
92-
windowMs: 10 * 1000, // 10 seconds
93-
max: 4,
94-
handler: (req, res, /*next*/) => { console.log(`### paranoid_limiter - handler: ${req.url}`); /*set_cors(req, res);*/ res.status(429).send("Scoop Limit #1b"); },
95-
onLimitReached: (req, res, options) => { console.log(`### paranoid_limiter - onLimitReached: ${req.url}`); }
96-
});
97-
app.use("/api/login_v2", paranoid_limiter);
98-
app.use("/api/account", paranoid_limiter);
99-
100-
// soft limit - slow down
101-
const speed_limiter = slowDown({
102-
windowMs: 10 * 1000, // 10 secs
103-
delayAfter: 10,
104-
delayMs: 100, // begin adding 100ms of delay per request above delayAfter - clears after windowMs
105-
handler: (req, res, /*next*/) => { console.log(`### slowDown - handler: ${req.url}`); /*set_cors(req, res);*/ res.status(429).send("Scoop Limit #2"); },
106-
onLimitReached: (req, res, options) => { console.log(`### slowDown - onLimitReached: ${req.url}`); }
107-
});
108-
app.use("/api/login_v2", speed_limiter);
109-
app.use("/api/account", speed_limiter);
110-
app.use("/api/refer", speed_limiter);
73+
// hard rate limits - these block requests after limits are breached
74+
const generous_limiter = rateLimit({
75+
windowMs: 1 * 60 * 1000, // 15 per minute max == every 4 seconds
76+
max: 15,
77+
handler: (req, res, /*next*/) => { console.log(`### generous_limiter - handler: ${req.url}`); /*set_cors(req, res);*/ res.status(429).send("Scoop Limit #1a"); },
78+
onLimitReached: (req, res, options) => { console.log(`### generous_limiter - onLimitReached: ${req.url}`); }
79+
});
80+
app.use("/api/assets", generous_limiter);
81+
app.use("/api/data", generous_limiter);
82+
app.use("/api/login_v2", generous_limiter);
83+
app.use("/api/account", generous_limiter);
84+
app.use("/api/refer", generous_limiter);
85+
app.use("/api/faucet", generous_limiter);
86+
//app.use("/api/stm", generous_limiter); // no limit on this endpoint - it's called in parallel by wallet worker threads (see: action/s/wallet.js:newWalletAddressFromPrivKey())
87+
88+
const paranoid_limiter = rateLimit({
89+
windowMs: 1 * 1000, // 2 per second max.
90+
max: 2,
91+
handler: (req, res, /*next*/) => { console.log(`### paranoid_limiter - handler: ${req.url}`); /*set_cors(req, res);*/ res.status(429).send("Scoop Limit #1b"); },
92+
onLimitReached: (req, res, options) => { console.log(`### paranoid_limiter - onLimitReached: ${req.url}`); }
93+
});
94+
app.use("/api/login_v2", paranoid_limiter);
95+
app.use("/api/account", paranoid_limiter);
96+
app.use("/api/faucet", paranoid_limiter);
97+
98+
// soft rate limiter - this slows down requests are limits are breached
99+
const speed_limiter = slowDown({
100+
windowMs: 10 * 1000, // 10 seconds
101+
delayAfter: 10, // allow 10 requests per 10 seconds, then...
102+
delayMs: 100, // begin adding 100ms of delay per request above delayAfter # requests - clears after windowMs
103+
handler: (req, res, /*next*/) => { console.log(`### slowDown - handler: ${req.url}`); /*set_cors(req, res);*/ res.status(429).send("Scoop Limit #2"); },
104+
onLimitReached: (req, res, options) => { console.log(`### slowDown - onLimitReached: ${req.url}`); }
105+
});
106+
app.use("/api/login_v2", speed_limiter);
107+
app.use("/api/account", speed_limiter);
108+
app.use("/api/refer", speed_limiter);
111109

112110
// misc
113111
app.use(bodyParser.urlencoded({ limit: '2mb', extended: false }));
@@ -141,14 +139,19 @@ app.post('/api/refer', function (req, res) { scp_ref.send_refs(req, res); });
141139
app.post('/api/xs/c/sign', function (req, res) { scp_xs.changelly_sign(req, res); });
142140

143141
/*
144-
* CryptoMail - WIP...
142+
* CryptoMail
145143
*/
146-
app.get('/api/cm/otu/new', function (req, res) { scp_cm.new_otu(req, res); });
144+
//app.get('/api/cm/otu/new', function (req, res) { scp_cm.new_otu(req, res); });
147145

148146
/*
149147
* StMaster Integration
150148
*/
151-
app.get('/api/stm', function (req, res) { scp_stm.get_sec_tokens(req, res); });
149+
//app.get('/api/stm', function (req, res) { scp_stm.get_sec_tokens(req, res); });
150+
151+
/*
152+
* Faucet
153+
*/
154+
app.post('/api/faucet', function (req, res) { scp_faucet.faucet_drip(req, res); });
152155

153156
/*
154157
* dbg

config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Distributed under MS-RSL license: see /LICENSE for terms. Copyright 2019-2020 Dominic Morris.
1+
// Distributed under MS-RSL license: see /LICENSE for terms. Copyright 2019-2021 Dominic Morris.
22
'use strict';
33

44
module.exports = {

eos_lib.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Distributed under MS-RSL license: see /LICENSE for terms. Copyright 2019-2020 Dominic Morris.
1+
// Distributed under MS-RSL license: see /LICENSE for terms. Copyright 2019-2021 Dominic Morris.
22
'use strict';
33

44
module.exports = {

ext_bc_config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Distributed under MS-RSL license: see /LICENSE for terms. Copyright 2019-2020 Dominic Morris.
1+
// Distributed under MS-RSL license: see /LICENSE for terms. Copyright 2019-2021 Dominic Morris.
22
/*var config = require('./config');
33
const blockcypher_token = config.get("scp_blockcypher_apikey");
44
module.exports = {

0 commit comments

Comments
 (0)