summaryrefslogtreecommitdiffstats
path: root/pkg/runner/testdata/actions/node20/node_modules/tunnel
diff options
context:
space:
mode:
authorDaniel Baumann <daniel@debian.org>2024-10-20 23:07:42 +0200
committerDaniel Baumann <daniel@debian.org>2024-11-09 15:38:42 +0100
commit714c83b2736d7e308bc33c49057952490eb98be2 (patch)
tree1d9ba7035798368569cd49056f4d596efc908cd8 /pkg/runner/testdata/actions/node20/node_modules/tunnel
parentInitial commit. (diff)
downloadforgejo-act-debian.tar.xz
forgejo-act-debian.zip
Adding upstream version 1.21.4.HEADupstream/1.21.4upstreamdebian
Signed-off-by: Daniel Baumann <daniel@debian.org>
Diffstat (limited to 'pkg/runner/testdata/actions/node20/node_modules/tunnel')
-rw-r--r--pkg/runner/testdata/actions/node20/node_modules/tunnel/.travis.yml6
-rw-r--r--pkg/runner/testdata/actions/node20/node_modules/tunnel/CHANGELOG.md22
-rw-r--r--pkg/runner/testdata/actions/node20/node_modules/tunnel/LICENSE21
-rw-r--r--pkg/runner/testdata/actions/node20/node_modules/tunnel/README.md185
-rw-r--r--pkg/runner/testdata/actions/node20/node_modules/tunnel/index.js1
-rw-r--r--pkg/runner/testdata/actions/node20/node_modules/tunnel/lib/tunnel.js264
-rw-r--r--pkg/runner/testdata/actions/node20/node_modules/tunnel/package.json34
7 files changed, 533 insertions, 0 deletions
diff --git a/pkg/runner/testdata/actions/node20/node_modules/tunnel/.travis.yml b/pkg/runner/testdata/actions/node20/node_modules/tunnel/.travis.yml
new file mode 100644
index 0000000..cb6e182
--- /dev/null
+++ b/pkg/runner/testdata/actions/node20/node_modules/tunnel/.travis.yml
@@ -0,0 +1,6 @@
+language: node_js
+node_js:
+ - "4"
+ - "6"
+ - "8"
+ - "10"
diff --git a/pkg/runner/testdata/actions/node20/node_modules/tunnel/CHANGELOG.md b/pkg/runner/testdata/actions/node20/node_modules/tunnel/CHANGELOG.md
new file mode 100644
index 0000000..baf6b18
--- /dev/null
+++ b/pkg/runner/testdata/actions/node20/node_modules/tunnel/CHANGELOG.md
@@ -0,0 +1,22 @@
+# Changelog
+
+ - 0.0.6 (2018/09/11)
+ - Fix `localAddress` not working (#25)
+ - Fix `Host:` header for CONNECT method by @tmurakam (#29, #30)
+ - Fix default port for https (#32)
+ - Fix error handling when the proxy send illegal response body (#33)
+
+ - 0.0.5 (2017/06/12)
+ - Fix socket leak.
+
+ - 0.0.4 (2016/01/23)
+ - supported Node v0.12 or later.
+
+ - 0.0.3 (2014/01/20)
+ - fixed package.json
+
+ - 0.0.1 (2012/02/18)
+ - supported Node v0.6.x (0.6.11 or later).
+
+ - 0.0.0 (2012/02/11)
+ - first release.
diff --git a/pkg/runner/testdata/actions/node20/node_modules/tunnel/LICENSE b/pkg/runner/testdata/actions/node20/node_modules/tunnel/LICENSE
new file mode 100644
index 0000000..8b8a895
--- /dev/null
+++ b/pkg/runner/testdata/actions/node20/node_modules/tunnel/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2012 Koichi Kobayashi
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/pkg/runner/testdata/actions/node20/node_modules/tunnel/README.md b/pkg/runner/testdata/actions/node20/node_modules/tunnel/README.md
new file mode 100644
index 0000000..f54bca5
--- /dev/null
+++ b/pkg/runner/testdata/actions/node20/node_modules/tunnel/README.md
@@ -0,0 +1,185 @@
+# node-tunnel - HTTP/HTTPS Agents for tunneling proxies
+
+[![Build Status](https://img.shields.io/travis/koichik/node-tunnel.svg?style=flat)](https://travis-ci.org/koichik/node-tunnel)
+[![Dependency Status](http://img.shields.io/david/koichik/node-tunnel.svg?style=flat)](https://david-dm.org/koichik/node-tunnel#info=dependencies)
+[![DevDependency Status](http://img.shields.io/david/dev/koichik/node-tunnel.svg?style=flat)](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.
diff --git a/pkg/runner/testdata/actions/node20/node_modules/tunnel/index.js b/pkg/runner/testdata/actions/node20/node_modules/tunnel/index.js
new file mode 100644
index 0000000..2947757
--- /dev/null
+++ b/pkg/runner/testdata/actions/node20/node_modules/tunnel/index.js
@@ -0,0 +1 @@
+module.exports = require('./lib/tunnel');
diff --git a/pkg/runner/testdata/actions/node20/node_modules/tunnel/lib/tunnel.js b/pkg/runner/testdata/actions/node20/node_modules/tunnel/lib/tunnel.js
new file mode 100644
index 0000000..10cc382
--- /dev/null
+++ b/pkg/runner/testdata/actions/node20/node_modules/tunnel/lib/tunnel.js
@@ -0,0 +1,264 @@
+'use strict';
+
+var net = require('net');
+var tls = require('tls');
+var http = require('http');
+var https = require('https');
+var events = require('events');
+var assert = require('assert');
+var util = require('util');
+
+
+exports.httpOverHttp = httpOverHttp;
+exports.httpsOverHttp = httpsOverHttp;
+exports.httpOverHttps = httpOverHttps;
+exports.httpsOverHttps = httpsOverHttps;
+
+
+function httpOverHttp(options) {
+ var agent = new TunnelingAgent(options);
+ agent.request = http.request;
+ return agent;
+}
+
+function httpsOverHttp(options) {
+ var agent = new TunnelingAgent(options);
+ agent.request = http.request;
+ agent.createSocket = createSecureSocket;
+ agent.defaultPort = 443;
+ return agent;
+}
+
+function httpOverHttps(options) {
+ var agent = new TunnelingAgent(options);
+ agent.request = https.request;
+ return agent;
+}
+
+function httpsOverHttps(options) {
+ var agent = new TunnelingAgent(options);
+ agent.request = https.request;
+ agent.createSocket = createSecureSocket;
+ agent.defaultPort = 443;
+ return agent;
+}
+
+
+function TunnelingAgent(options) {
+ var self = this;
+ self.options = options || {};
+ self.proxyOptions = self.options.proxy || {};
+ self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;
+ self.requests = [];
+ self.sockets = [];
+
+ self.on('free', function onFree(socket, host, port, localAddress) {
+ var options = toOptions(host, port, localAddress);
+ for (var i = 0, len = self.requests.length; i < len; ++i) {
+ var pending = self.requests[i];
+ if (pending.host === options.host && pending.port === options.port) {
+ // Detect the request to connect same origin server,
+ // reuse the connection.
+ self.requests.splice(i, 1);
+ pending.request.onSocket(socket);
+ return;
+ }
+ }
+ socket.destroy();
+ self.removeSocket(socket);
+ });
+}
+util.inherits(TunnelingAgent, events.EventEmitter);
+
+TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {
+ var self = this;
+ var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));
+
+ if (self.sockets.length >= this.maxSockets) {
+ // We are over limit so we'll add it to the queue.
+ self.requests.push(options);
+ return;
+ }
+
+ // If we are under maxSockets create a new one.
+ self.createSocket(options, function(socket) {
+ socket.on('free', onFree);
+ socket.on('close', onCloseOrRemove);
+ socket.on('agentRemove', onCloseOrRemove);
+ req.onSocket(socket);
+
+ function onFree() {
+ self.emit('free', socket, options);
+ }
+
+ function onCloseOrRemove(err) {
+ self.removeSocket(socket);
+ socket.removeListener('free', onFree);
+ socket.removeListener('close', onCloseOrRemove);
+ socket.removeListener('agentRemove', onCloseOrRemove);
+ }
+ });
+};
+
+TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
+ var self = this;
+ var placeholder = {};
+ self.sockets.push(placeholder);
+
+ var connectOptions = mergeOptions({}, self.proxyOptions, {
+ method: 'CONNECT',
+ path: options.host + ':' + options.port,
+ agent: false,
+ headers: {
+ host: options.host + ':' + options.port
+ }
+ });
+ if (options.localAddress) {
+ connectOptions.localAddress = options.localAddress;
+ }
+ if (connectOptions.proxyAuth) {
+ connectOptions.headers = connectOptions.headers || {};
+ connectOptions.headers['Proxy-Authorization'] = 'Basic ' +
+ new Buffer(connectOptions.proxyAuth).toString('base64');
+ }
+
+ debug('making CONNECT request');
+ var connectReq = self.request(connectOptions);
+ connectReq.useChunkedEncodingByDefault = false; // for v0.6
+ connectReq.once('response', onResponse); // for v0.6
+ connectReq.once('upgrade', onUpgrade); // for v0.6
+ connectReq.once('connect', onConnect); // for v0.7 or later
+ connectReq.once('error', onError);
+ connectReq.end();
+
+ function onResponse(res) {
+ // Very hacky. This is necessary to avoid http-parser leaks.
+ res.upgrade = true;
+ }
+
+ function onUpgrade(res, socket, head) {
+ // Hacky.
+ process.nextTick(function() {
+ onConnect(res, socket, head);
+ });
+ }
+
+ function onConnect(res, socket, head) {
+ connectReq.removeAllListeners();
+ socket.removeAllListeners();
+
+ if (res.statusCode !== 200) {
+ debug('tunneling socket could not be established, statusCode=%d',
+ res.statusCode);
+ socket.destroy();
+ var error = new Error('tunneling socket could not be established, ' +
+ 'statusCode=' + res.statusCode);
+ error.code = 'ECONNRESET';
+ options.request.emit('error', error);
+ self.removeSocket(placeholder);
+ return;
+ }
+ if (head.length > 0) {
+ debug('got illegal response body from proxy');
+ socket.destroy();
+ var error = new Error('got illegal response body from proxy');
+ error.code = 'ECONNRESET';
+ options.request.emit('error', error);
+ self.removeSocket(placeholder);
+ return;
+ }
+ debug('tunneling connection has established');
+ self.sockets[self.sockets.indexOf(placeholder)] = socket;
+ return cb(socket);
+ }
+
+ function onError(cause) {
+ connectReq.removeAllListeners();
+
+ debug('tunneling socket could not be established, cause=%s\n',
+ cause.message, cause.stack);
+ var error = new Error('tunneling socket could not be established, ' +
+ 'cause=' + cause.message);
+ error.code = 'ECONNRESET';
+ options.request.emit('error', error);
+ self.removeSocket(placeholder);
+ }
+};
+
+TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
+ var pos = this.sockets.indexOf(socket)
+ if (pos === -1) {
+ return;
+ }
+ this.sockets.splice(pos, 1);
+
+ var pending = this.requests.shift();
+ if (pending) {
+ // If we have pending requests and a socket gets closed a new one
+ // needs to be created to take over in the pool for the one that closed.
+ this.createSocket(pending, function(socket) {
+ pending.request.onSocket(socket);
+ });
+ }
+};
+
+function createSecureSocket(options, cb) {
+ var self = this;
+ TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
+ var hostHeader = options.request.getHeader('host');
+ var tlsOptions = mergeOptions({}, self.options, {
+ socket: socket,
+ servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host
+ });
+
+ // 0 is dummy port for v0.6
+ var secureSocket = tls.connect(0, tlsOptions);
+ self.sockets[self.sockets.indexOf(socket)] = secureSocket;
+ cb(secureSocket);
+ });
+}
+
+
+function toOptions(host, port, localAddress) {
+ if (typeof host === 'string') { // since v0.10
+ return {
+ host: host,
+ port: port,
+ localAddress: localAddress
+ };
+ }
+ return host; // for v0.11 or later
+}
+
+function mergeOptions(target) {
+ for (var i = 1, len = arguments.length; i < len; ++i) {
+ var overrides = arguments[i];
+ if (typeof overrides === 'object') {
+ var keys = Object.keys(overrides);
+ for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
+ var k = keys[j];
+ if (overrides[k] !== undefined) {
+ target[k] = overrides[k];
+ }
+ }
+ }
+ }
+ return target;
+}
+
+
+var debug;
+if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
+ debug = function() {
+ var args = Array.prototype.slice.call(arguments);
+ if (typeof args[0] === 'string') {
+ args[0] = 'TUNNEL: ' + args[0];
+ } else {
+ args.unshift('TUNNEL:');
+ }
+ console.error.apply(console, args);
+ }
+} else {
+ debug = function() {};
+}
+exports.debug = debug; // for test
diff --git a/pkg/runner/testdata/actions/node20/node_modules/tunnel/package.json b/pkg/runner/testdata/actions/node20/node_modules/tunnel/package.json
new file mode 100644
index 0000000..bcd7b95
--- /dev/null
+++ b/pkg/runner/testdata/actions/node20/node_modules/tunnel/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "tunnel",
+ "version": "0.0.6",
+ "description": "Node HTTP/HTTPS Agents for tunneling proxies",
+ "keywords": [
+ "http",
+ "https",
+ "agent",
+ "proxy",
+ "tunnel"
+ ],
+ "homepage": "https://github.com/koichik/node-tunnel/",
+ "bugs": "https://github.com/koichik/node-tunnel/issues",
+ "license": "MIT",
+ "author": "Koichi Kobayashi <koichik@improvement.jp>",
+ "main": "./index.js",
+ "directories": {
+ "lib": "./lib"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/koichik/node-tunnel.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "devDependencies": {
+ "mocha": "^5.2.0",
+ "should": "^13.2.3"
+ },
+ "engines": {
+ "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
+ }
+}