mirror of
				https://github.com/actions/setup-go.git
				synced 2025-11-04 07:23:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			180 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			180 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# node-tunnel - HTTP/HTTPS Agents for tunneling proxies
 | 
						|
 | 
						|
## 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 5
 | 
						|
 | 
						|
  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 5
 | 
						|
 | 
						|
  // 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 5
 | 
						|
 | 
						|
  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 5
 | 
						|
 | 
						|
  // 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)
 | 
						|
 | 
						|
## License
 | 
						|
 | 
						|
Licensed under the [MIT](https://github.com/koichik/node-tunnel/blob/master/LICENSE) license.
 |