@push.rocks/smartproxy 3.0.60 → 3.0.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.js +7 -0
- package/dist/smartproxy.classes.proxyworker.d.ts +23 -0
- package/dist/smartproxy.classes.proxyworker.js +262 -0
- package/dist/smartproxy.classes.router.d.ts +16 -0
- package/dist/smartproxy.classes.router.js +41 -0
- package/dist/smartproxy.classes.smartproxy.d.ts +17 -0
- package/dist/smartproxy.classes.smartproxy.js +43 -0
- package/dist/smartproxy.plugins.d.ts +17 -0
- package/dist/smartproxy.plugins.js +43 -0
- package/dist/smartproxy.portproxy.d.ts +6 -0
- package/dist/smartproxy.portproxy.js +38 -0
- package/dist_ts/00_commitinfo_data.d.ts +1 -1
- package/dist_ts/00_commitinfo_data.js +2 -2
- package/dist_ts/smartproxy.classes.networkproxy.js +75 -57
- package/dist_ts/smartproxy.classes.proxyworker.d.ts +33 -0
- package/dist_ts/smartproxy.classes.proxyworker.js +303 -0
- package/dist_ts/smartproxy.classes.smartproxy.d.ts +20 -0
- package/dist_ts/smartproxy.classes.smartproxy.js +38 -0
- package/npmextra.json +18 -2
- package/package.json +27 -9
- package/readme.hints.md +1 -0
- package/readme.md +109 -30
- package/ts/00_commitinfo_data.ts +2 -2
- package/ts/smartproxy.classes.networkproxy.ts +85 -66
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './smartproxy.classes.smartproxy';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
function __export(m) {
|
|
3
|
+
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
|
4
|
+
}
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
__export(require("./smartproxy.classes.smartproxy"));
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUFnRCJ9
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import * as plugins from './smartproxy.plugins';
|
|
3
|
+
import { SmartproxyRouter } from './smartproxy.classes.router';
|
|
4
|
+
export declare class ProxyWorker {
|
|
5
|
+
proxyConfigs: plugins.tsclass.network.IReverseProxyConfig[];
|
|
6
|
+
httpsServer: plugins.https.Server;
|
|
7
|
+
port: number;
|
|
8
|
+
router: SmartproxyRouter;
|
|
9
|
+
socketMap: plugins.lik.Objectmap<plugins.net.Socket>;
|
|
10
|
+
/**
|
|
11
|
+
* starts the proxyInstance
|
|
12
|
+
*/
|
|
13
|
+
start(): Promise<void>;
|
|
14
|
+
updateProxyConfigs(proxyConfigsArg: plugins.tsclass.network.IReverseProxyConfig[]): Promise<void>;
|
|
15
|
+
stop(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
declare const proxyWorkerCalls: {
|
|
18
|
+
stop: () => Promise<void>;
|
|
19
|
+
start: () => Promise<void>;
|
|
20
|
+
updateReverseConfigs: (configArray: plugins.tsclass.network.IReverseProxyConfig[]) => Promise<void>;
|
|
21
|
+
};
|
|
22
|
+
export declare type TProxyWorkerCalls = typeof proxyWorkerCalls;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
3
|
+
if (mod && mod.__esModule) return mod;
|
|
4
|
+
var result = {};
|
|
5
|
+
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
|
6
|
+
result["default"] = mod;
|
|
7
|
+
return result;
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const smartspawn_1 = require("@pushrocks/smartspawn");
|
|
11
|
+
const plugins = __importStar(require("./smartproxy.plugins"));
|
|
12
|
+
const smartproxy_classes_router_1 = require("./smartproxy.classes.router");
|
|
13
|
+
class ProxyWorker {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.proxyConfigs = [];
|
|
16
|
+
this.port = 8001;
|
|
17
|
+
this.router = new smartproxy_classes_router_1.SmartproxyRouter();
|
|
18
|
+
this.socketMap = new plugins.lik.Objectmap();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* starts the proxyInstance
|
|
22
|
+
*/
|
|
23
|
+
async start() {
|
|
24
|
+
this.httpsServer = plugins.https.createServer(
|
|
25
|
+
// ================
|
|
26
|
+
// Spotted this keypair in the code?
|
|
27
|
+
// Don't get exited:
|
|
28
|
+
// It is an invalid default keypair.
|
|
29
|
+
// For proper requests custom domain level keypairs are used that are provided in the reverse config
|
|
30
|
+
// ================
|
|
31
|
+
{
|
|
32
|
+
key: `-----BEGIN PRIVATE KEY-----
|
|
33
|
+
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
|
|
82
|
+
2TkK01XDDJURK5Lhuvc7WrK2rSJ/fK+0GA==
|
|
83
|
+
-----END PRIVATE KEY-----
|
|
84
|
+
`,
|
|
85
|
+
cert: `-----BEGIN CERTIFICATE-----
|
|
86
|
+
MIIEljCCAn4CCQDY+ZbC9FASVjANBgkqhkiG9w0BAQsFADANMQswCQYDVQQGEwJE
|
|
87
|
+
RTAeFw0xOTA5MjAxNjAxNDRaFw0yMDA5MTkxNjAxNDRaMA0xCzAJBgNVBAYTAkRF
|
|
88
|
+
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4thf9JEK/epoXt8hFr8t
|
|
89
|
+
pkRzmaEkgbSKoOga3uGXDLvdNf3BzSIxZ8pzRhZfUnutcmW1thdz3wre/pEJR7oN
|
|
90
|
+
QsfixbLL8/oS5QeXKiUGX0Ssfdg4W0TsoLcRva+1AZsf38MfiUPhzh1/UW/rMywW
|
|
91
|
+
asazQwRZdkkXb4nKJ2IFZx22qnAD4/5Sug+sfeKoFBF/rzI2yK7rognt7kW2LHv6
|
|
92
|
+
rswHnZ1Z2P/gbhlZ/EhG9hFVRZwRLDscWKcuWcxkePDt2J1pDNqD6SYa6ZjGC3AE
|
|
93
|
+
TJw5iEA1bLQ9YvjDNpVYcf6ZvcSilIFjSQu5cs9sUbHGeKTrS5HzfeJXh1PfJyL8
|
|
94
|
+
X0Hu7UBSjfSudso3baE9FGiBFBW2cnXZKDZGtV8eq/qxPetOOgS09pVbNP6508WV
|
|
95
|
+
BR+rz98/VDZLZqcbZ2UpOuz4+kAKmbYE9GplxKQZZO7wWEox7Mid/uUdcqEo4QKn
|
|
96
|
+
no6ujOuzQzn5a2oOS0k5Hk3uHapNJWlW9YI3LHtfADpYH+6cOR+/c3JWBzQJ6AD7
|
|
97
|
+
muvNzA9mWXeHqLxMMP4pkmb7otzZYrEkodUqJgAQxcYhGh6XsCPfJ/D9RN734OJc
|
|
98
|
+
gleVXFI8Kz455HxCW19XNfz16k7T6kqhZ/6SOBbkxEuqg7oEthAP109ZZzgx4oDo
|
|
99
|
+
hQsw24TjLkI4SPIc7nr60UUCAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAu0+zrg0C
|
|
100
|
+
mlSv4Yi24OwB7TBvx+WHesl1IilCUdTiiUMo3NumvsU9Dr3Jkd0jGqYI0eyH4gIt
|
|
101
|
+
KrhAveXfEw7tAOEHiYicmAdIFtyzh++ZWb8mgbBeqij1MP/76Jv+cc0lUqpfRo/A
|
|
102
|
+
qytAsPAILuyL1o1jh28JHcq+v+WYn/FEhjUlH6emhGKGlsAjhUPjzK8MEshNolhj
|
|
103
|
+
t2UXw9WB5B2xWvrqlNMy0F3NAZBkZ/+k21HZo6FmVi+q6OEGcOo7wJt6wrH/lko9
|
|
104
|
+
LxX96GC1JoN1Pfr2FoTKy1WHzrSfyGmDIUCrbaYQ58UuMOR+5eIPPdkf/030u5eX
|
|
105
|
+
xXhF2fBujD57E2zQGh/l2MrOjamcSo0+wYhOqlX3WNdaKNAzPqloBnF6w7eqLYde
|
|
106
|
+
h9He39ySmxjENwv3miOjEP1sBeMBSRfL/ckEonfK5uJgYA5nVMQ3ojUeDMZzLfFE
|
|
107
|
+
Ue2WHt+uPyYk7mMZfOrK2uHzI2/Coqj7lbfRodFwj+fCArYBck2NZannDPKA6X8V
|
|
108
|
+
TzJTbTCteOUUJTrcfZ0gGhGkF4nYLmX5OI+TPqrDJf0fZ+mzAEHzDDVXcBYpYRDr
|
|
109
|
+
r8d9QwrK+WaqVi2ofbMfMByVF72jgeJNa4nxwT9bVbu/Q1T2Lt+YPb4pQ7yCoUgS
|
|
110
|
+
JNj2Dr5H0XoLFFnvuvzcRbhlJ9J67JzR+7g=
|
|
111
|
+
-----END CERTIFICATE-----
|
|
112
|
+
`
|
|
113
|
+
}, async (req, res) => {
|
|
114
|
+
console.log('got request');
|
|
115
|
+
const destinationConfig = this.router.routeReq(req);
|
|
116
|
+
// endRequest function
|
|
117
|
+
const endRequest = (statusArg = 404, messageArg = 'This route is not available on this server.', headers = {}) => {
|
|
118
|
+
res.writeHead(statusArg, messageArg);
|
|
119
|
+
res.end(messageArg);
|
|
120
|
+
};
|
|
121
|
+
// authentication
|
|
122
|
+
if (destinationConfig.authentication) {
|
|
123
|
+
const authInfo = destinationConfig.authentication;
|
|
124
|
+
switch (authInfo.type) {
|
|
125
|
+
case 'Basic':
|
|
126
|
+
const authHeader = req.headers.authorization;
|
|
127
|
+
if (authHeader) {
|
|
128
|
+
if (!authHeader.includes('Basic ')) {
|
|
129
|
+
return endRequest(401, 'Authentication required', {
|
|
130
|
+
'WWW-Authenticate': 'Basic realm="Access to the staging site", charset="UTF-8"'
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
const authStringBase64 = req.headers.authorization.replace('Basic ', '');
|
|
134
|
+
const authString = plugins.smartstring.base64.decode(authStringBase64);
|
|
135
|
+
const userPassArray = authString.split(':');
|
|
136
|
+
const user = userPassArray[0];
|
|
137
|
+
const pass = userPassArray[1];
|
|
138
|
+
if (user === authInfo.user && pass === authInfo.pass) {
|
|
139
|
+
console.log('request successfully authenticated');
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
return endRequest(403, 'Forbidden: Wrong credentials');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
break;
|
|
146
|
+
default:
|
|
147
|
+
return endRequest(403, 'Forbidden: unsupported authentication method configured. Please report to the admin.');
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
let destinationUrl;
|
|
151
|
+
if (destinationConfig) {
|
|
152
|
+
destinationUrl = `http://${destinationConfig.destinationIp}:${destinationConfig.destinationPort}${req.url}`;
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
return endRequest();
|
|
156
|
+
}
|
|
157
|
+
console.log(destinationUrl);
|
|
158
|
+
const response = await plugins.smartrequest.request(destinationUrl, {
|
|
159
|
+
method: req.method,
|
|
160
|
+
headers: req.headers
|
|
161
|
+
}, true, // lets make this streaming
|
|
162
|
+
// lets make this streaming
|
|
163
|
+
request => {
|
|
164
|
+
req.on('data', data => {
|
|
165
|
+
request.write(data);
|
|
166
|
+
});
|
|
167
|
+
req.on('end', data => {
|
|
168
|
+
request.end();
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
res.statusCode = response.statusCode;
|
|
172
|
+
console.log(response.statusCode);
|
|
173
|
+
for (const header of Object.keys(response.headers)) {
|
|
174
|
+
res.setHeader(header, response.headers[header]);
|
|
175
|
+
}
|
|
176
|
+
response.on('data', data => {
|
|
177
|
+
res.write(data);
|
|
178
|
+
});
|
|
179
|
+
response.on('end', () => {
|
|
180
|
+
res.end();
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
// Enable websockets
|
|
184
|
+
const wss = new plugins.ws.Server({ server: this.httpsServer });
|
|
185
|
+
wss.on('connection', (ws) => {
|
|
186
|
+
console.log('got connection for wsc');
|
|
187
|
+
const wscConnected = plugins.smartpromise.defer();
|
|
188
|
+
const wsc = new plugins.wsDefault(this.router.routeWs(ws), {
|
|
189
|
+
headers: {
|
|
190
|
+
Host: ws.url
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
wsc.on('open', () => {
|
|
194
|
+
wscConnected.resolve();
|
|
195
|
+
});
|
|
196
|
+
ws.on('message', async (message) => {
|
|
197
|
+
await wscConnected.promise;
|
|
198
|
+
wsc.emit('message', message);
|
|
199
|
+
});
|
|
200
|
+
wsc.on('message', message => {
|
|
201
|
+
ws.emit('message', message);
|
|
202
|
+
});
|
|
203
|
+
// handle closing
|
|
204
|
+
ws.on('close', message => {
|
|
205
|
+
wsc.close();
|
|
206
|
+
});
|
|
207
|
+
wsc.on('close', message => {
|
|
208
|
+
ws.close();
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
this.httpsServer.keepAliveTimeout = 61000;
|
|
212
|
+
this.httpsServer.headersTimeout = 65000;
|
|
213
|
+
this.httpsServer.on('connection', connection => {
|
|
214
|
+
this.socketMap.add(connection);
|
|
215
|
+
connection.on('close', () => {
|
|
216
|
+
this.socketMap.remove(connection);
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
this.httpsServer.listen(this.port);
|
|
220
|
+
console.log(`ProxyWorker -> OK: now listening for new connections on port ${this.port}`);
|
|
221
|
+
}
|
|
222
|
+
async updateProxyConfigs(proxyConfigsArg) {
|
|
223
|
+
this.proxyConfigs = proxyConfigsArg;
|
|
224
|
+
this.router.setNewProxyConfigs(proxyConfigsArg);
|
|
225
|
+
for (const hostCandidate of this.proxyConfigs) {
|
|
226
|
+
// console.log(hostCandidate);
|
|
227
|
+
this.httpsServer.addContext(hostCandidate.hostName, {
|
|
228
|
+
cert: hostCandidate.publicKey,
|
|
229
|
+
key: hostCandidate.privateKey
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
/* this.httpsServer.close();
|
|
233
|
+
this.httpsServer.listen(this.port); */
|
|
234
|
+
}
|
|
235
|
+
async stop() {
|
|
236
|
+
const done = plugins.smartpromise.defer();
|
|
237
|
+
this.httpsServer.close(() => {
|
|
238
|
+
done.resolve();
|
|
239
|
+
});
|
|
240
|
+
await this.socketMap.forEach(async (socket) => {
|
|
241
|
+
socket.destroy();
|
|
242
|
+
});
|
|
243
|
+
await done.promise;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
exports.ProxyWorker = ProxyWorker;
|
|
247
|
+
const proxyWorkerInstance = new ProxyWorker();
|
|
248
|
+
// the following is interesting for the master process only
|
|
249
|
+
const proxyWorkerCalls = {
|
|
250
|
+
stop: async () => {
|
|
251
|
+
await proxyWorkerInstance.stop();
|
|
252
|
+
},
|
|
253
|
+
start: async () => {
|
|
254
|
+
await proxyWorkerInstance.start();
|
|
255
|
+
},
|
|
256
|
+
updateReverseConfigs: async (configArray) => {
|
|
257
|
+
await proxyWorkerInstance.updateProxyConfigs(configArray);
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
smartspawn_1.expose(proxyWorkerCalls);
|
|
261
|
+
console.log('ProxyWorker initialized');
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwcm94eS5jbGFzc2VzLnByb3h5d29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRwcm94eS5jbGFzc2VzLnByb3h5d29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHNEQUErQztBQUMvQyw4REFBZ0Q7QUFDaEQsMkVBQStEO0FBRS9ELE1BQWEsV0FBVztJQUF4QjtRQUNTLGlCQUFZLEdBQWtELEVBQUUsQ0FBQztRQUVqRSxTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osV0FBTSxHQUFHLElBQUksNENBQWdCLEVBQUUsQ0FBQztRQUNoQyxjQUFTLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBc0IsQ0FBQztJQXdQckUsQ0FBQztJQXRQQzs7T0FFRztJQUNJLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZO1FBQzNDLG1CQUFtQjtRQUNuQixvQ0FBb0M7UUFDcEMsb0JBQW9CO1FBQ3BCLG9DQUFvQztRQUNwQyxvR0FBb0c7UUFDcEcsbUJBQW1CO1FBQ25CO1lBQ0UsR0FBRyxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBb0RSO1lBQ0csSUFBSSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0EyQlQ7U0FDRSxFQUNELEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMzQixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXBELHNCQUFzQjtZQUN0QixNQUFNLFVBQVUsR0FBRyxDQUNqQixZQUFvQixHQUFHLEVBQ3ZCLGFBQXFCLDZDQUE2QyxFQUNsRSxVQUE0QyxF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
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="ws" />
|
|
3
|
+
import * as plugins from './smartproxy.plugins';
|
|
4
|
+
export declare class SmartproxyRouter {
|
|
5
|
+
reverseProxyConfigs: plugins.tsclass.network.IReverseProxyConfig[];
|
|
6
|
+
/**
|
|
7
|
+
* sets a new set of reverse configs to be routed to
|
|
8
|
+
* @param reverseCandidatesArg
|
|
9
|
+
*/
|
|
10
|
+
setNewProxyConfigs(reverseCandidatesArg: plugins.tsclass.network.IReverseProxyConfig[]): void;
|
|
11
|
+
/**
|
|
12
|
+
* routes a request
|
|
13
|
+
*/
|
|
14
|
+
routeReq(req: plugins.http.IncomingMessage): plugins.tsclass.network.IReverseProxyConfig;
|
|
15
|
+
routeWs(ws: plugins.wsDefault): string;
|
|
16
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
3
|
+
if (mod && mod.__esModule) return mod;
|
|
4
|
+
var result = {};
|
|
5
|
+
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
|
6
|
+
result["default"] = mod;
|
|
7
|
+
return result;
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const plugins = __importStar(require("./smartproxy.plugins"));
|
|
11
|
+
class SmartproxyRouter {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.reverseProxyConfigs = [];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* sets a new set of reverse configs to be routed to
|
|
17
|
+
* @param reverseCandidatesArg
|
|
18
|
+
*/
|
|
19
|
+
setNewProxyConfigs(reverseCandidatesArg) {
|
|
20
|
+
this.reverseProxyConfigs = reverseCandidatesArg;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* routes a request
|
|
24
|
+
*/
|
|
25
|
+
routeReq(req) {
|
|
26
|
+
const originalHost = req.headers.host;
|
|
27
|
+
const correspodingReverseProxyConfig = this.reverseProxyConfigs.find(reverseConfig => {
|
|
28
|
+
return reverseConfig.hostName === originalHost;
|
|
29
|
+
});
|
|
30
|
+
return correspodingReverseProxyConfig;
|
|
31
|
+
}
|
|
32
|
+
routeWs(ws) {
|
|
33
|
+
const originalHost = plugins.url.parse(ws.url).host;
|
|
34
|
+
const correspodingReverseProxyConfig = this.reverseProxyConfigs.find(reverseConfig => {
|
|
35
|
+
return reverseConfig.hostName === originalHost;
|
|
36
|
+
});
|
|
37
|
+
return correspodingReverseProxyConfig.destinationIp;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.SmartproxyRouter = SmartproxyRouter;
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwcm94eS5jbGFzc2VzLnJvdXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0cHJveHkuY2xhc3Nlcy5yb3V0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsOERBQWdEO0FBRWhELE1BQWEsZ0JBQWdCO0lBQTdCO1FBQ1Msd0JBQW1CLEdBQWtELEVBQUUsQ0FBQztJQTRCakYsQ0FBQztJQTFCQzs7O09BR0c7SUFDSSxrQkFBa0IsQ0FBQyxvQkFBbUU7UUFDM0YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVEsQ0FBQyxHQUFpQztRQUMvQyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN0QyxNQUFNLDhCQUE4QixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDbkYsT0FBTyxhQUFhLENBQUMsUUFBUSxLQUFLLFlBQVksQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sOEJBQThCLENBQUM7SUFDeEMsQ0FBQztJQUVNLE9BQU8sQ0FBQyxFQUFxQjtRQUNsQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3BELE1BQU0sOEJBQThCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNuRixPQUFPLGFBQWEsQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyw4QkFBOEIsQ0FBQyxhQUFhLENBQUM7SUFDdEQsQ0FBQztDQUNGO0FBN0JELDRDQTZCQyJ9
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as plugins from './smartproxy.plugins';
|
|
2
|
+
import { TProxyWorkerCalls } from './smartproxy.classes.proxyworker';
|
|
3
|
+
import { TPortProxyCalls } from './smartproxy.portproxy';
|
|
4
|
+
export interface ISmartProxyOptions {
|
|
5
|
+
port?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class SmartProxy {
|
|
8
|
+
smartsystem: plugins.smartsystem.Smartsystem;
|
|
9
|
+
reverseConfigs: plugins.tsclass.network.IReverseProxyConfig[];
|
|
10
|
+
proxyWorkerFunctions: plugins.smartspawn.ModuleThread<TProxyWorkerCalls>;
|
|
11
|
+
portProxyFunctions: plugins.smartspawn.ModuleThread<TPortProxyCalls>;
|
|
12
|
+
options: ISmartProxyOptions;
|
|
13
|
+
constructor(optionsArg?: ISmartProxyOptions);
|
|
14
|
+
updateReversConfigs(reverseConfigsArg: plugins.tsclass.network.IReverseProxyConfig[]): Promise<void>;
|
|
15
|
+
start(): Promise<void>;
|
|
16
|
+
stop(): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
3
|
+
if (mod && mod.__esModule) return mod;
|
|
4
|
+
var result = {};
|
|
5
|
+
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
|
6
|
+
result["default"] = mod;
|
|
7
|
+
return result;
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const plugins = __importStar(require("./smartproxy.plugins"));
|
|
11
|
+
class SmartProxy {
|
|
12
|
+
constructor(optionsArg = {}) {
|
|
13
|
+
this.smartsystem = new plugins.smartsystem.Smartsystem();
|
|
14
|
+
this.reverseConfigs = [];
|
|
15
|
+
this.options = optionsArg;
|
|
16
|
+
}
|
|
17
|
+
async updateReversConfigs(reverseConfigsArg) {
|
|
18
|
+
// TODO search for old hostCandidates with that target
|
|
19
|
+
this.reverseConfigs = reverseConfigsArg;
|
|
20
|
+
if (this.proxyWorkerFunctions) {
|
|
21
|
+
await this.proxyWorkerFunctions.updateReverseConfigs(this.reverseConfigs);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async start() {
|
|
25
|
+
this.proxyWorkerFunctions = await plugins.smartspawn.spawn(new plugins.smartspawn.Worker('./smartproxy.classes.proxyworker'));
|
|
26
|
+
this.proxyWorkerFunctions.updateReverseConfigs(this.reverseConfigs);
|
|
27
|
+
this.portProxyFunctions = await plugins.smartspawn.spawn(new plugins.smartspawn.Worker('./smartproxy.portproxy'));
|
|
28
|
+
await this.portProxyFunctions.start(this.options.port);
|
|
29
|
+
await this.proxyWorkerFunctions.start();
|
|
30
|
+
console.log('successfully spawned portproxy and proxyworkers!');
|
|
31
|
+
}
|
|
32
|
+
async stop() {
|
|
33
|
+
await this.proxyWorkerFunctions.stop();
|
|
34
|
+
await plugins.smartspawn.Thread.terminate(this.proxyWorkerFunctions);
|
|
35
|
+
console.log('proxy worker stopped');
|
|
36
|
+
await this.portProxyFunctions.stop();
|
|
37
|
+
await plugins.smartspawn.Thread.terminate(this.portProxyFunctions);
|
|
38
|
+
console.log('portproxy stopped');
|
|
39
|
+
console.log('Terminated all childs!');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.SmartProxy = SmartProxy;
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwcm94eS5jbGFzc2VzLnNtYXJ0cHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHByb3h5LmNsYXNzZXMuc21hcnRwcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSw4REFBZ0Q7QUFTaEQsTUFBYSxVQUFVO0lBUXJCLFlBQVksYUFBaUMsRUFBRTtRQVB4QyxnQkFBVyxHQUFHLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwRCxtQkFBYyxHQUFrRCxFQUFFLENBQUM7UUFPeEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7SUFDNUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxtQkFBbUIsQ0FDOUIsaUJBQWdFO1FBRWhFLHNEQUFzRDtRQUN0RCxJQUFJLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDO1FBQ3hDLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzdCLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUMzRTtJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNoQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FDeEQsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUNsRSxDQUFDO1FBQ0YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVwRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FDdEQsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUN4RCxDQUFDO1FBRUYsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSTtRQUNmLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNwQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNuRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQS9DRCxnQ0ErQ0MifQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as http from 'http';
|
|
2
|
+
import * as https from 'https';
|
|
3
|
+
import * as net from 'net';
|
|
4
|
+
import * as url from 'url';
|
|
5
|
+
export { http, https, net, url };
|
|
6
|
+
import * as tsclass from '@tsclass/tsclass';
|
|
7
|
+
export { tsclass };
|
|
8
|
+
import * as lik from '@pushrocks/lik';
|
|
9
|
+
import * as smartpromise from '@pushrocks/smartpromise';
|
|
10
|
+
import * as smartrequest from '@pushrocks/smartrequest';
|
|
11
|
+
import * as smartspawn from '@pushrocks/smartspawn';
|
|
12
|
+
import * as smartstring from '@pushrocks/smartstring';
|
|
13
|
+
import * as smartsystem from '@pushrocks/smartsystem';
|
|
14
|
+
export { lik, smartrequest, smartpromise, smartspawn, smartstring, smartsystem };
|
|
15
|
+
import * as ws from 'ws';
|
|
16
|
+
import wsDefault from 'ws';
|
|
17
|
+
export { wsDefault, ws };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
3
|
+
if (mod && mod.__esModule) return mod;
|
|
4
|
+
var result = {};
|
|
5
|
+
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
|
6
|
+
result["default"] = mod;
|
|
7
|
+
return result;
|
|
8
|
+
};
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
// node native scope
|
|
14
|
+
const http = __importStar(require("http"));
|
|
15
|
+
exports.http = http;
|
|
16
|
+
const https = __importStar(require("https"));
|
|
17
|
+
exports.https = https;
|
|
18
|
+
const net = __importStar(require("net"));
|
|
19
|
+
exports.net = net;
|
|
20
|
+
const url = __importStar(require("url"));
|
|
21
|
+
exports.url = url;
|
|
22
|
+
// tsclass scope
|
|
23
|
+
const tsclass = __importStar(require("@tsclass/tsclass"));
|
|
24
|
+
exports.tsclass = tsclass;
|
|
25
|
+
// pushrocks scope
|
|
26
|
+
const lik = __importStar(require("@pushrocks/lik"));
|
|
27
|
+
exports.lik = lik;
|
|
28
|
+
const smartpromise = __importStar(require("@pushrocks/smartpromise"));
|
|
29
|
+
exports.smartpromise = smartpromise;
|
|
30
|
+
const smartrequest = __importStar(require("@pushrocks/smartrequest"));
|
|
31
|
+
exports.smartrequest = smartrequest;
|
|
32
|
+
const smartspawn = __importStar(require("@pushrocks/smartspawn"));
|
|
33
|
+
exports.smartspawn = smartspawn;
|
|
34
|
+
const smartstring = __importStar(require("@pushrocks/smartstring"));
|
|
35
|
+
exports.smartstring = smartstring;
|
|
36
|
+
const smartsystem = __importStar(require("@pushrocks/smartsystem"));
|
|
37
|
+
exports.smartsystem = smartsystem;
|
|
38
|
+
// third party scope
|
|
39
|
+
const ws = __importStar(require("ws"));
|
|
40
|
+
exports.ws = ws;
|
|
41
|
+
const ws_1 = __importDefault(require("ws"));
|
|
42
|
+
exports.wsDefault = ws_1.default;
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwcm94eS5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRwcm94eS5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQiwyQ0FBNkI7QUFLcEIsb0JBQUk7QUFKYiw2Q0FBK0I7QUFJaEIsc0JBQUs7QUFIcEIseUNBQTJCO0FBR0wsa0JBQUc7QUFGekIseUNBQTJCO0FBRUEsa0JBQUc7QUFFOUIsZ0JBQWdCO0FBQ2hCLDBEQUE0QztBQUVuQywwQkFBTztBQUVoQixrQkFBa0I7QUFDbEIsb0RBQXNDO0FBTzdCLGtCQUFHO0FBTlosc0VBQXdEO0FBTTVCLG9DQUFZO0FBTHhDLHNFQUF3RDtBQUsxQyxvQ0FBWTtBQUoxQixrRUFBb0Q7QUFJVixnQ0FBVTtBQUhwRCxvRUFBc0Q7QUFHQSxrQ0FBVztBQUZqRSxvRUFBc0Q7QUFFYSxrQ0FBVztBQUU5RSxvQkFBb0I7QUFDcEIsdUNBQXlCO0FBR0wsZ0JBQUU7QUFGdEIsNENBQTJCO0FBRWxCLG9CQUZGLFlBQVMsQ0FFRSJ9
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
3
|
+
if (mod && mod.__esModule) return mod;
|
|
4
|
+
var result = {};
|
|
5
|
+
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
|
6
|
+
result["default"] = mod;
|
|
7
|
+
return result;
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const plugins = __importStar(require("./smartproxy.plugins"));
|
|
11
|
+
const smartspawn_1 = require("@pushrocks/smartspawn");
|
|
12
|
+
const net = __importStar(require("net"));
|
|
13
|
+
let netServer;
|
|
14
|
+
const portProxyCalls = {
|
|
15
|
+
start: async (portArg = 8000) => {
|
|
16
|
+
netServer = net
|
|
17
|
+
.createServer(from => {
|
|
18
|
+
const to = net.createConnection({
|
|
19
|
+
host: 'localhost',
|
|
20
|
+
port: 8001
|
|
21
|
+
});
|
|
22
|
+
from.pipe(to);
|
|
23
|
+
to.pipe(from);
|
|
24
|
+
})
|
|
25
|
+
.listen(portArg);
|
|
26
|
+
console.log(`PortProxy -> OK: Now listening on port ${portArg}`);
|
|
27
|
+
},
|
|
28
|
+
stop: async () => {
|
|
29
|
+
const done = plugins.smartpromise.defer();
|
|
30
|
+
netServer.close(() => {
|
|
31
|
+
done.resolve();
|
|
32
|
+
});
|
|
33
|
+
await done.promise;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
smartspawn_1.expose(portProxyCalls);
|
|
37
|
+
console.log('PortProxy Initialized');
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwcm94eS5wb3J0cHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHByb3h5LnBvcnRwcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSw4REFBZ0Q7QUFDaEQsc0RBQStDO0FBQy9DLHlDQUEyQjtBQUMzQixJQUFJLFNBQTZCLENBQUM7QUFFbEMsTUFBTSxjQUFjLEdBQUc7SUFDckIsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLEVBQUU7UUFDOUIsU0FBUyxHQUFHLEdBQUc7YUFDWixZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbkIsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDO2dCQUM5QixJQUFJLEVBQUUsV0FBVztnQkFDakIsSUFBSSxFQUFFLElBQUk7YUFDWCxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2QsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUM7YUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2YsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDckIsQ0FBQztDQUNGLENBQUM7QUFHRixtQkFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRXZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQyJ9
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* autocreated commitinfo by @
|
|
2
|
+
* autocreated commitinfo by @push.rocks/commitinfo
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartproxy',
|
|
6
|
-
version: '3.0.
|
|
6
|
+
version: '3.0.61',
|
|
7
7
|
description: 'a proxy for handling high workloads of proxying'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLGlEQUFpRDtDQUMvRCxDQUFBIn0=
|