Compare commits

...

12 Commits

Author SHA1 Message Date
963ad6efa4 2.0.14 2021-02-03 15:11:55 +00:00
d271029302 fix(core): update 2021-02-03 15:11:55 +00:00
018fcbf71e 2.0.13 2021-02-03 11:19:57 +00:00
fa04732241 fix(core): update 2021-02-03 11:19:56 +00:00
da19fab8d8 2.0.12 2021-02-03 11:02:26 +00:00
8d318dca28 fix(core): update 2021-02-03 11:02:26 +00:00
d03bfcc793 2.0.11 2021-02-03 01:14:10 +00:00
4ba2686977 fix(core): update 2021-02-03 01:14:09 +00:00
d24c4d4b7a 2.0.10 2021-02-03 00:30:35 +00:00
e1d4d6cf38 fix(core): update 2021-02-03 00:30:35 +00:00
11344ac0df 2.0.9 2021-02-03 00:23:29 +00:00
85fcfc3c36 fix(core): update 2021-02-03 00:23:28 +00:00
4 changed files with 38 additions and 8 deletions

8
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "@pushrocks/smartproxy",
"version": "2.0.8",
"version": "2.0.14",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -11438,9 +11438,9 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"ws": {
"version": "7.4.2",
"resolved": "https://verdaccio.lossless.one/ws/-/ws-7.4.2.tgz",
"integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA=="
"version": "7.4.3",
"resolved": "https://verdaccio.lossless.one/ws/-/ws-7.4.3.tgz",
"integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA=="
},
"xml-js": {
"version": "1.6.11",

View File

@ -1,6 +1,6 @@
{
"name": "@pushrocks/smartproxy",
"version": "2.0.8",
"version": "2.0.14",
"private": false,
"description": "a proxy for handling high workloads of proxying",
"main": "dist_ts/index.js",
@ -30,7 +30,7 @@
"@pushrocks/smartsystem": "^2.0.9",
"@tsclass/tsclass": "^3.0.29",
"@types/ws": "^7.4.0",
"ws": "^7.4.2"
"ws": "^7.4.3"
},
"files": [
"ts/**/*",

View File

@ -8,6 +8,7 @@ export class ProxyWorker {
public port = 8001;
public router = new SmartproxyRouter();
public socketMap = new plugins.lik.ObjectMap<plugins.net.Socket>();
public defaultHeaders: {[key: string]: string} = {};
/**
* starts the proxyInstance
@ -161,6 +162,7 @@ JNj2Dr5H0XoLFFnvuvzcRbhlJ9J67JzR+7g=
{
method: req.method,
headers: req.headers,
keepAlive: true
},
true, // lets make this streaming
(request) => {
@ -174,6 +176,9 @@ JNj2Dr5H0XoLFFnvuvzcRbhlJ9J67JzR+7g=
);
res.statusCode = response.statusCode;
console.log(response.statusCode);
for (const defaultHeader of Object.keys(this.defaultHeaders)) {
res.setHeader(defaultHeader, this.defaultHeaders[defaultHeader]);
}
for (const header of Object.keys(response.headers)) {
res.setHeader(header, response.headers[header]);
}
@ -220,10 +225,25 @@ JNj2Dr5H0XoLFFnvuvzcRbhlJ9J67JzR+7g=
this.httpsServer.keepAliveTimeout = 61000;
this.httpsServer.headersTimeout = 65000;
this.httpsServer.on('connection', (connection) => {
this.httpsServer.on('connection', (connection: plugins.net.Socket) => {
connection.setTimeout(120000);
this.socketMap.add(connection);
connection.on('close', () => {
const cleanupConnection = (connectionArg: plugins.net.Socket) => {
connectionArg.removeAllListeners();
this.socketMap.remove(connection);
connection.destroy();
}
connection.on('close', () => {
cleanupConnection(connection);
});
connection.on('error', () => {
cleanupConnection(connection);
});
connection.on('end', () => {
cleanupConnection(connection);
});
connection.on('timeout', () => {
cleanupConnection(connection);
});
});
@ -270,6 +290,12 @@ const proxyWorkerCalls = {
updateReverseConfigs: async (configArray: plugins.tsclass.network.IReverseProxyConfig[]) => {
await proxyWorkerInstance.updateProxyConfigs(configArray);
},
addDefaultHeaders: async (headersArg: {[key: string]: string}) => {
proxyWorkerInstance.defaultHeaders = {
...proxyWorkerInstance.defaultHeaders,
...headersArg
};
}
};
export type TProxyWorkerCalls = typeof proxyWorkerCalls;

View File

@ -45,6 +45,10 @@ export class SmartProxy {
console.log('successfully spawned portproxy and proxyworkers!');
}
public async updateDefaultHeaders(defaultHeadersArg: {[key: string]: string}) {
await this.proxyWorkerFunctions.addDefaultHeaders(defaultHeadersArg);
}
public async stop() {
await this.proxyWorkerFunctions.stop();
await plugins.smartspawn.Thread.terminate(this.proxyWorkerFunctions);