etherpad-lite/tests/ratelimit/send_changesets.js
webzwo0i ceb09ce99a
security: Support proxy with rate limiting and include CI test coverage for nginx rev proxy (#4373)
Previously Etherpad would not pass the correct client IP address through and this caused the rate limiter to limit users behind reverse proxies.  This change allows Etherpad to use a client IP passed from a reverse proxy.

Note to devs: This header can be spoofed and spoofing the header could be used in an attack.  To mitigate additional *steps should be taken by Etherpad site admins IE doing rate limiting at proxy.*  This only really applies to large scale deployments but it's worth noting.
2020-10-01 10:39:01 +01:00

25 lines
604 B
JavaScript

try{
var etherpad = require("../../src/node_modules/etherpad-cli-client");
//ugly
} catch {
var etherpad = require("etherpad-cli-client")
}
var pad = etherpad.connect(process.argv[2]);
pad.on("connected", function(){
setTimeout(function(){
setInterval(function(){
pad.append("1");
}, process.argv[3]);
},500); // wait because CLIENT_READY message is included in ratelimit
setTimeout(function(){
process.exit(0);
},11000)
});
// in case of disconnect exit code 1
pad.on("message", function(message){
if(message.disconnect == 'rateLimited'){
process.exit(1);
}
})