mirror of
				https://github.com/actions/setup-node.git
				synced 2025-10-26 23:36:44 +08: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.
 |