| # node-tunnel - HTTP/HTTPS Agents for tunneling proxies |
| |
| [](https://travis-ci.org/koichik/node-tunnel) |
| [](https://david-dm.org/koichik/node-tunnel#info=dependencies) |
| [](https://david-dm.org/koichik/node-tunnel#info=devDependencies) |
| |
| ## Example |
| |
| ```javascript |
| var tunnel = require('tunnel'); |
| |
| var tunnelingAgent = tunnel.httpsOverHttp({ |
| proxy: { |
| host: 'localhost', |
| port: 3128 |
| } |
| }); |
| |
| var req = https.request({ |
| host: 'example.com', |
| port: 443, |
| agent: tunnelingAgent |
| }); |
| ``` |
| |
| ## Installation |
| |
| $ npm install tunnel |
| |
| ## Usages |
| |
| ### HTTP over HTTP tunneling |
| |
| ```javascript |
| var tunnelingAgent = tunnel.httpOverHttp({ |
| maxSockets: poolSize, // Defaults to http.Agent.defaultMaxSockets |
| |
| proxy: { // Proxy settings |
| host: proxyHost, // Defaults to 'localhost' |
| port: proxyPort, // Defaults to 80 |
| localAddress: localAddress, // Local interface if necessary |
| |
| // Basic authorization for proxy server if necessary |
| proxyAuth: 'user:password', |
| |
| // Header fields for proxy server if necessary |
| headers: { |
| 'User-Agent': 'Node' |
| } |
| } |
| }); |
| |
| var req = http.request({ |
| host: 'example.com', |
| port: 80, |
| agent: tunnelingAgent |
| }); |
| ``` |
| |
| ### HTTPS over HTTP tunneling |
| |
| ```javascript |
| var tunnelingAgent = tunnel.httpsOverHttp({ |
| maxSockets: poolSize, // Defaults to http.Agent.defaultMaxSockets |
| |
| // CA for origin server if necessary |
| ca: [ fs.readFileSync('origin-server-ca.pem')], |
| |
| // Client certification for origin server if necessary |
| key: fs.readFileSync('origin-server-key.pem'), |
| cert: fs.readFileSync('origin-server-cert.pem'), |
| |
| proxy: { // Proxy settings |
| host: proxyHost, // Defaults to 'localhost' |
| port: proxyPort, // Defaults to 80 |
| localAddress: localAddress, // Local interface if necessary |
| |
| // Basic authorization for proxy server if necessary |
| proxyAuth: 'user:password', |
| |
| // Header fields for proxy server if necessary |
| headers: { |
| 'User-Agent': 'Node' |
| }, |
| } |
| }); |
| |
| var req = https.request({ |
| host: 'example.com', |
| port: 443, |
| agent: tunnelingAgent |
| }); |
| ``` |
| |
| ### HTTP over HTTPS tunneling |
| |
| ```javascript |
| var tunnelingAgent = tunnel.httpOverHttps({ |
| maxSockets: poolSize, // Defaults to http.Agent.defaultMaxSockets |
| |
| proxy: { // Proxy settings |
| host: proxyHost, // Defaults to 'localhost' |
| port: proxyPort, // Defaults to 443 |
| localAddress: localAddress, // Local interface if necessary |
| |
| // Basic authorization for proxy server if necessary |
| proxyAuth: 'user:password', |
| |
| // Header fields for proxy server if necessary |
| headers: { |
| 'User-Agent': 'Node' |
| }, |
| |
| // CA for proxy server if necessary |
| ca: [ fs.readFileSync('origin-server-ca.pem')], |
| |
| // Server name for verification if necessary |
| servername: 'example.com', |
| |
| // Client certification for proxy server if necessary |
| key: fs.readFileSync('origin-server-key.pem'), |
| cert: fs.readFileSync('origin-server-cert.pem'), |
| } |
| }); |
| |
| var req = http.request({ |
| host: 'example.com', |
| port: 80, |
| agent: tunnelingAgent |
| }); |
| ``` |
| |
| ### HTTPS over HTTPS tunneling |
| |
| ```javascript |
| var tunnelingAgent = tunnel.httpsOverHttps({ |
| maxSockets: poolSize, // Defaults to http.Agent.defaultMaxSockets |
| |
| // CA for origin server if necessary |
| ca: [ fs.readFileSync('origin-server-ca.pem')], |
| |
| // Client certification for origin server if necessary |
| key: fs.readFileSync('origin-server-key.pem'), |
| cert: fs.readFileSync('origin-server-cert.pem'), |
| |
| proxy: { // Proxy settings |
| host: proxyHost, // Defaults to 'localhost' |
| port: proxyPort, // Defaults to 443 |
| localAddress: localAddress, // Local interface if necessary |
| |
| // Basic authorization for proxy server if necessary |
| proxyAuth: 'user:password', |
| |
| // Header fields for proxy server if necessary |
| headers: { |
| 'User-Agent': 'Node' |
| } |
| |
| // CA for proxy server if necessary |
| ca: [ fs.readFileSync('origin-server-ca.pem')], |
| |
| // Server name for verification if necessary |
| servername: 'example.com', |
| |
| // Client certification for proxy server if necessary |
| key: fs.readFileSync('origin-server-key.pem'), |
| cert: fs.readFileSync('origin-server-cert.pem'), |
| } |
| }); |
| |
| var req = https.request({ |
| host: 'example.com', |
| port: 443, |
| agent: tunnelingAgent |
| }); |
| ``` |
| |
| ## CONTRIBUTORS |
| * [Aleksis Brezas (abresas)](https://github.com/abresas) |
| * [Jackson Tian (JacksonTian)](https://github.com/JacksonTian) |
| * [Dmitry Sorin (1999)](https://github.com/1999) |
| |
| ## License |
| |
| Licensed under the [MIT](https://github.com/koichik/node-tunnel/blob/master/LICENSE) license. |