How to use tunnel - 10 common examples

To help you get started, we’ve selected a few tunnel examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github slackapi / node-slack-sdk / examples / incoming-webhook-with-proxy.js View on Github external
const { IncomingWebhook } = require('../dist');

// Get a URL by creating an app at , and configuring an Incoming Webhook
// It's always a good idea to keep sensitive data like the url outside your source code. Prefer environment variables.
const url = process.env.SLACK_WEBHOOK_URL || '';

if (!url) { console.log('You must specify a webhook url to use this example'); process.exitCode = 1; return; }

const proxyUrl = process.env.SLACK_PROXY_URL || '';
const proxyPort = process.env.SLACK_PROXY_PORT || '';
const proxyScheme = process.env.SLACK_PROXY_SCHEME || 'http';
const proxyEndpoint = `${proxyScheme}://${proxyUrl}:${proxyPort}`;

// Initialize a custom agent for an HTTP proxy
const tunnel = require('tunnel');
const tunnelAgent = tunnel.httpsOverHttp({
  proxy: {
    host: proxyUrl,
    port: proxyPort
  }
});

// Initialize the IncomingWebhook using the custom agent
const webhookTunnelAgent = new IncomingWebhook(url, { agent: tunnelAgent } );

// Send IncomingWebhook Message over tunnel
sendWebhookMessage(webhookTunnelAgent, 'Hello World, over tunnel agent!');

// Initialize a custom agent again, but this time using a different package
const HttpsProxyAgent = require('https-proxy-agent');
const httpsProxyAgent = new HttpsProxyAgent(proxyEndpoint);
github DIYgod / RSSHub / lib / utils / request-wrapper.js View on Github external
});
            agent.https = tunnel.httpsOverHttp({
                proxy: {
                    host: config.proxy.host,
                    port: parseInt(config.proxy.port),
                },
            });
            break;
        case 'https':
            agent.http = tunnel.httpOverHttps({
                proxy: {
                    host: config.proxy.host,
                    port: parseInt(config.proxy.port),
                },
            });
            agent.https = tunnel.httpsOverHttps({
                proxy: {
                    host: config.proxy.host,
                    port: parseInt(config.proxy.port),
                },
            });
            break;
    }
}

const requestWrapper = (url, options) => {
    // agent
    if (agent && new RegExp(config.proxy.url_regex).test(url)) {
        let agentResult;
        try {
            agentResult = agent[(options.protocol || url.match(/(https?:)/)[1]).slice(0, -1)];
        } catch (error) {
github HPSoftware / node-offline-debug / lib / network.js View on Github external
var headers = (optionalHeaders != null ? optionalHeaders : {});
        headers.Authorization = auth;

        if (proxy != null)
        {
            match = proxy.match(/^(http:\/\/)?([^:\/]+)(:([0-9]+))?/i);
            /*
            if (match) {
                    host = match[2];
                    port = (match[4] != null ? match[4] : 80);
                    path = "https://" + config.url + url;
                    headers.Host = config.url;
            }
            */
            tunnelingAgent = tunnel.httpsOverHttp({
              proxy: { // Proxy settings
                host: match[2],
                port: (match[4] != null ? match[4] : 80),
                rejectUnauthorized : false
              }
            });

        }

        var options = {
            "port": port,
            "host": host,
            "path": path,
            "method": method,
            "headers": headers,
            "rejectUnauthorized": false,
github wuchengwei / node-wget / lib / wget.js View on Github external
} else if (options.proxy.protocol === 'https') {
                delete options.proxy.protocol; // delete self-defined arg
                options.agent = tunnel.httpOverHttps({proxy: options.proxy});
            } else {
                throw options.proxy.protocol + ' proxy is not supported!';
            }
        }
        delete options.protocol; // delete self-defined arg
        delete options.proxy; // delete self-defined arg
        return http.request(options, callback);
    }
    if (options.protocol === 'https') {
        if (options.proxy) {
            if (options.proxy.protocol === 'http') {
                delete options.proxy.protocol; // delete self-defined arg
                options.agent = tunnel.httpsOverHttp({proxy: options.proxy});
            } else if (options.proxy.protocol === 'https') {
                delete options.proxy.protocol; // delete self-defined arg
                options.agent = tunnel.httpsOverHttps({proxy: options.proxy});
            } else {
                throw options.proxy.protocol + ' proxy is not supported!';
            }
        }
        delete options.protocol; // delete self-defined arg
        delete options.proxy; // delete self-defined arg
        return https.request(options, callback);
    }
    throw 'only allow http or https request!';
}
github np-maintain / global-tunnel / index.js View on Github external
if (useCONNECT) {
    if (conf.proxyHttpsOptions) {
      assign(opts.proxy, conf.proxyHttpsOptions);
    }
    if (conf.originHttpsOptions) {
      assign(opts, conf.originHttpsOptions);
    }

    if (outerProtocol === 'https:') {
      if (innerProtocol === 'https:') {
        return tunnel.httpsOverHttps(opts);
      }
      return tunnel.httpOverHttps(opts);
    }
    if (innerProtocol === 'https:') {
      return tunnel.httpsOverHttp(opts);
    }
    return tunnel.httpOverHttp(opts);
  }
  if (conf.originHttpsOptions) {
    throw new Error('originHttpsOptions must be combined with a tunnel:true option');
  }
  if (conf.proxyHttpsOptions) {
    // NB: not opts.
    assign(opts, conf.proxyHttpsOptions);
  }

  if (outerProtocol === 'https:') {
    return new agents.OuterHttpsAgent(opts);
  }
  return new agents.OuterHttpAgent(opts);
};
github Azure / azure-sdk-for-js / sdk / cosmosdb / cosmos / src / CosmosClient.ts View on Github external
if (!!this.options.connectionPolicy.ProxyUrl) {
        const proxyUrl = url.parse(this.options.connectionPolicy.ProxyUrl);
        const port = parseInt(proxyUrl.port, 10);
        requestAgentOptions.proxy = {
          host: proxyUrl.hostname,
          port,
          headers: {}
        };

        if (!!proxyUrl.auth) {
          requestAgentOptions.proxy.proxyAuth = proxyUrl.auth;
        }

        this.options.agent =
          proxyUrl.protocol.toLowerCase() === "https:"
            ? tunnel.httpsOverHttps(requestAgentOptions)
            : tunnel.httpsOverHttp(requestAgentOptions); // TODO: type coersion
      } else {
        this.options.agent = new Agent(requestAgentOptions); // TODO: Move to request?
      }
    }

    const globalEndpointManager = new GlobalEndpointManager(this.options, async (opts: RequestOptions) =>
      this.getDatabaseAccount(opts)
    );
    this.clientContext = new ClientContext(options, globalEndpointManager);

    this.databases = new Databases(this, this.clientContext);
    this.offers = new Offers(this, this.clientContext);
  }
github np-maintain / global-tunnel / index.js View on Github external
proxy: pick(conf, 'host', 'port', 'protocol', 'localAddress', 'proxyAuth'),
    maxSockets: conf.sockets
  };
  opts.proxy.innerProtocol = innerProtocol;

  if (useCONNECT) {
    if (conf.proxyHttpsOptions) {
      assign(opts.proxy, conf.proxyHttpsOptions);
    }
    if (conf.originHttpsOptions) {
      assign(opts, conf.originHttpsOptions);
    }

    if (outerProtocol === 'https:') {
      if (innerProtocol === 'https:') {
        return tunnel.httpsOverHttps(opts);
      }
      return tunnel.httpOverHttps(opts);
    }
    if (innerProtocol === 'https:') {
      return tunnel.httpsOverHttp(opts);
    }
    return tunnel.httpOverHttp(opts);
  }
  if (conf.originHttpsOptions) {
    throw new Error('originHttpsOptions must be combined with a tunnel:true option');
  }
  if (conf.proxyHttpsOptions) {
    // NB: not opts.
    assign(opts, conf.proxyHttpsOptions);
  }
github alibaba / anyproxy / test / util / HttpUtil.js View on Github external
function doWebSocket(url, headers = {}, isProxy) {
  let ws;
  if (isProxy) {
    headers['via-proxy'] = 'true';
    let agent = new tunnel.httpOverHttp({
      proxy: {
        hostname: SOCKE_PROXY_URL_OBJ.hostname,
        port: SOCKE_PROXY_URL_OBJ.port
      }
    })

    if (url.indexOf('wss') === 0) {
      agent = new tunnel.httpsOverHttp({
        rejectUnauthorized: false,
        proxy: {
          hostname: SOCKE_PROXY_URL_OBJ.hostname,
          port: SOCKE_PROXY_URL_OBJ.port
        }
      })
    }
github Azure / ms-rest-js / lib / axiosHttpClient.ts View on Github external
export function createTunnel(isRequestHttps: boolean, isProxyHttps: boolean, tunnelOptions: tunnel.HttpsOverHttpsOptions): http.Agent | https.Agent {
  if (isRequestHttps && isProxyHttps) {
    return tunnel.httpsOverHttps(tunnelOptions);
  } else if (isRequestHttps && !isProxyHttps) {
    return tunnel.httpsOverHttp(tunnelOptions);
  } else if (!isRequestHttps && isProxyHttps) {
    return tunnel.httpOverHttps(tunnelOptions);
  } else {
    return tunnel.httpOverHttp(tunnelOptions);
  }
}
github hainproject / hain / app / main / worker / global-proxy-agent.js View on Github external
function createHttpsProxyAgent(host, port) {
  return tunnel.httpsOverHttp({
    proxy: { host, port }
  });
}

tunnel

Node HTTP/HTTPS Agents for tunneling proxies

MIT
Latest version published 5 years ago

Package Health Score

55 / 100
Full package analysis