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: //proc/1526/task/1529/cwd/tana/frontend/node_modules/localtunnel/test/index.js
var http = require('http');
var https = require('https');
var url = require('url');
var assert = require('assert');

var localtunnel = require('../');

test('setup local http server', function(done) {
    var server = http.createServer();
    server.on('request', function(req, res) {
        res.write(req.headers.host);
        res.end();
    });
    server.listen(function() {
        var port = server.address().port;

        test._fake_port = port;
        console.log('local http on:', port);
        done();
    });
});

test('setup localtunnel client', function(done) {
    localtunnel(test._fake_port, function(err, tunnel) {
        assert.ifError(err);
        assert.ok(new RegExp('^https:\/\/.*localtunnel.me' + '$').test(tunnel.url));
        test._fake_url = tunnel.url;
        done();
    });
});

test('query localtunnel server w/ ident', function(done) {
    var uri = test._fake_url;
    var parsed = url.parse(uri);

    var opt = {
        host: parsed.host,
        port: 443,
        headers: {
            host: parsed.hostname
        },
        path: '/'
    };

    var req = https.request(opt, function(res) {
        res.setEncoding('utf8');
        var body = '';

        res.on('data', function(chunk) {
            body += chunk;
        });

        res.on('end', function() {
            assert(/.*[.]localtunnel[.]me/.test(body), body);
            done();
        });
    });

    req.end();
});

test('request specific domain', function(done) {
    localtunnel(test._fake_port, { subdomain: 'abcd' }, function(err, tunnel) {
        assert.ifError(err);
        assert.ok(new RegExp('^https:\/\/abcd.localtunnel.me' + '$').test(tunnel.url));
        tunnel.close();
        done();
    });
});

suite('--local-host localhost');

test('setup localtunnel client', function(done) {
    var opt = {
        local_host: 'localhost'
    };
    localtunnel(test._fake_port, opt, function(err, tunnel) {
        assert.ifError(err);
        assert.ok(new RegExp('^https:\/\/.*localtunnel.me' + '$').test(tunnel.url));
        test._fake_url = tunnel.url;
        done();
    });
});

test('override Host header with local-host', function(done) {
    var uri = test._fake_url;
    var parsed = url.parse(uri);

    var opt = {
        host: parsed.host,
        port: 443,
        headers: {
            host: parsed.hostname
        },
        path: '/'
    };

    var req = https.request(opt, function(res) {
        res.setEncoding('utf8');
        var body = '';

        res.on('data', function(chunk) {
            body += chunk;
        });

        res.on('end', function() {
            assert.equal(body, 'localhost');
            done();
        });
    });

    req.end();
});

suite('--local-host 127.0.0.1');

test('setup localtunnel client', function(done) {
    var opt = {
        local_host: '127.0.0.1'
    };
    localtunnel(test._fake_port, opt, function(err, tunnel) {
        assert.ifError(err);
        assert.ok(new RegExp('^https:\/\/.*localtunnel.me' + '$').test(tunnel.url));
        test._fake_url = tunnel.url;
        done();
    });
});

test('override Host header with local-host', function(done) {
    var uri = test._fake_url;
    var parsed = url.parse(uri);

    var opt = {
        host: parsed.host,
        port: 443,
        headers: {
            host: parsed.hostname
        },
        path: '/'
    };

    var req = https.request(opt, function(res) {
        res.setEncoding('utf8');
        var body = '';

        res.on('data', function(chunk) {
            body += chunk;
        });

        res.on('end', function() {
            assert.equal(body, '127.0.0.1');
            done();
        });
    });

    req.end();
});

test('send chunked request', function(done) {
    var uri = test._fake_url;
    var parsed = url.parse(uri);

    var opt = {
        host: parsed.host,
        port: 443,
        headers: {
            host: parsed.hostname,
            'Transfer-Encoding': 'chunked'
        },
        path: '/'
    };

    var req = https.request(opt, function(res) {
        res.setEncoding('utf8');
        var body = '';

        res.on('data', function(chunk) {
            body += chunk;
        });

        res.on('end', function() {
            assert.equal(body, '127.0.0.1');
            done();
        });
    });

    req.end(require('crypto').randomBytes(1024 * 8).toString('base64'));
});