/
eb
/
Surf
Обзор
Документация
Войти
/
eb
/
Surf
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
node_modules/stream-throttle/bin/throttleproxy.js
83 строки
2 KB
EvgeniyBudaev
Initial commit
17 фев 2020, 09:02
17 фев 2020, 09:02
bb6f06f
Код
Авторство
О чём код?
#!/usr/bin/env node var net = require('net'); var opts = require('commander'); var Throttle = require('../src/throttle.js').Throttle; function parseAddr(addr) { var result = /^(([^:]*):)?(\d+)$/.exec(addr); if (!result) return null; return { host: result[2], port: result[3] }; } function parseInteger(s) { if (!/^\d+$/.test(s)) return undefined; return parseInt(s, 10); } function runProxy(localAddr, remoteAddr, downRate, upRate) { var server = net.createServer(function(local) { var remote = net.createConnection(remoteAddr); var localThrottle = new Throttle({rate: upRate}); var remoteThrottle = new Throttle({rate: downRate}); local.pipe(localThrottle).pipe(remote); local.on('error', function() { remote.destroy(); local.destroy(); }); remote.pipe(remoteThrottle).pipe(local); remote.on('error', function() { local.destroy(); remote.destroy(); }); }); server.listen(localAddr.port, localAddr.host); } function main() { var localAddr, remoteAddr, downRate, upRate; opts .option('-l, --localaddr <addr>', 'local address, default 0.0.0.0:8080') .option('-r, --remoteaddr <addr>', 'remote address, default localhost:80') .option('-d, --downstream <bps>', 'downstream bandwidth', parseInteger) .option('-u, --upstream <bps>', 'upstream bandwidth, default equal to downstream', parseInteger) .parse(process.argv); if (opts.localaddr !== undefined) { localAddr = parseAddr(opts.localaddr); if (!localAddr) opts.help(); } else localAddr = {host: undefined, port: 8080}; if (opts.remoteaddr !== undefined) { remoteAddr = parseAddr(opts.remoteaddr); if (!remoteAddr) opts.help(); } else remoteAddr = {host: undefined, port: 80}; if (opts.downstream === undefined) opts.help(); downRate = opts.downstream; if (opts.upstream !== undefined) upRate = opts.upstream; else upRate = downRate; runProxy(localAddr, remoteAddr, downRate, upRate); } main();