HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/zaklada/html/node_modules/browser-sync-ui/lib/plugins/network-throttle/throttle-server.js
var ThrottleGroup = require("stream-throttle").ThrottleGroup;

module.exports = throttle;

/**
 *
 */
function throttle (opts, listenHost) {

    var options = {
        local_host:  listenHost,
        remote_host: listenHost,
        upstream:    10*1024,
        downstream:  opts.speed.speed * 1024,
        keepalive:   false
    };

    var serverOpts = {
        allowHalfOpen: true,
        rejectUnauthorized: false
    };

    var module = "net";
    var method = "createConnection";

    if (opts.key) {
        module = "tls";
        method = "connect";
        serverOpts.key = opts.key;
        serverOpts.cert = opts.cert;
    }

    return require(module).createServer(serverOpts, function (local) {

        var remote = require(module)[method]({
            host: opts.target.hostname,
            port: opts.target.port,
            allowHalfOpen: true,
            rejectUnauthorized: false
        });

        var upThrottle = new ThrottleGroup({ rate: options.upstream });
        var downThrottle = new ThrottleGroup({ rate: options.downstream });

        var localThrottle = upThrottle.throttle();
        var remoteThrottle = downThrottle.throttle();

        setTimeout(function () {
            local
                .pipe(localThrottle)
                .pipe(remote);
        }, opts.speed.latency);

        setTimeout(function () {
            remote
                .pipe(remoteThrottle)
                .pipe(local);
        }, opts.speed.latency);

        local.on("error", function() {
            remote.destroy();
            local.destroy();
        });

        remote.on("error", function() {
            local.destroy();
            remote.destroy();
        });
    });
}