@nsshunt/stsappframework 3.3.135 → 3.3.138
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/commonTypes.js +7 -1
- package/dist/commonTypes.js.map +1 -1
- package/dist/process/processbase.js +6 -8
- package/dist/process/processbase.js.map +1 -1
- package/dist/process/serverprocessbase.js +78 -326
- package/dist/process/serverprocessbase.js.map +1 -1
- package/dist/process/servertypes/serverUtils.js +11 -0
- package/dist/process/servertypes/serverUtils.js.map +1 -0
- package/dist/process/servertypes/stsexpressserver.js +291 -0
- package/dist/process/servertypes/stsexpressserver.js.map +1 -0
- package/dist/process/servertypes/stsjsonrpcserver.js +59 -0
- package/dist/process/servertypes/stsjsonrpcserver.js.map +1 -0
- package/dist/process/servertypes/stsserverfactory.js +15 -0
- package/dist/process/servertypes/stsserverfactory.js.map +1 -0
- package/dist/process/servertypes/ststcprawserver.js +87 -0
- package/dist/process/servertypes/ststcprawserver.js.map +1 -0
- package/dist/process/workerprocessbase.js +0 -13
- package/dist/process/workerprocessbase.js.map +1 -1
- package/package.json +8 -8
- package/types/commonTypes.d.ts +11 -7
- package/types/commonTypes.d.ts.map +1 -1
- package/types/process/processbase.d.ts +1 -7
- package/types/process/processbase.d.ts.map +1 -1
- package/types/process/serverprocessbase.d.ts +1 -9
- package/types/process/serverprocessbase.d.ts.map +1 -1
- package/types/process/servertypes/serverUtils.d.ts +3 -0
- package/types/process/servertypes/serverUtils.d.ts.map +1 -0
- package/types/process/servertypes/stsexpressserver.d.ts +27 -0
- package/types/process/servertypes/stsexpressserver.d.ts.map +1 -0
- package/types/process/servertypes/stsjsonrpcserver.d.ts +18 -0
- package/types/process/servertypes/stsjsonrpcserver.d.ts.map +1 -0
- package/types/process/servertypes/stsserverfactory.d.ts +18 -0
- package/types/process/servertypes/stsserverfactory.d.ts.map +1 -0
- package/types/process/servertypes/ststcprawserver.d.ts +19 -0
- package/types/process/servertypes/ststcprawserver.d.ts.map +1 -0
- package/types/process/workerprocessbase.d.ts +0 -1
- package/types/process/workerprocessbase.d.ts.map +1 -1
- package/dist/stsexpressserver.js +0 -124
- package/dist/stsexpressserver.js.map +0 -1
- package/types/stsexpressserver.d.ts +0 -8
- package/types/stsexpressserver.d.ts.map +0 -1
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
+
import express from "express";
|
|
3
|
+
import { register, Counter, collectDefaultMetrics, AggregatorRegistry, } from "prom-client";
|
|
4
|
+
import cors from "cors";
|
|
5
|
+
import cookieParser from "cookie-parser";
|
|
6
|
+
import { RequestLoggerMiddleware, RequestLoggerMiddlewareEventName, } from "@nsshunt/stsinstrumentmanagerclient";
|
|
7
|
+
import { goptions } from "@nsshunt/stsconfig";
|
|
8
|
+
import { GetTLSOptions } from "./serverUtils.js";
|
|
9
|
+
import { createAdapter as clusterCreateAdapter } from "@socket.io/cluster-adapter";
|
|
10
|
+
import { createAdapter } from "@socket.io/redis-streams-adapter";
|
|
11
|
+
import { Redis } from "ioredis";
|
|
12
|
+
import { STSLoggerToken, PublishInstrumentControllerToken, } from "./../../commonTypes.js";
|
|
13
|
+
import { Gauge, } from "@nsshunt/stsobservability";
|
|
14
|
+
import { Server } from "socket.io";
|
|
15
|
+
import { ServerNetworkMiddleware, ServerNetworkMiddlewareEventName, } from "./../../middleware/serverNetworkMiddleware.js";
|
|
16
|
+
import chalk from "chalk";
|
|
17
|
+
import { inject, Sleep } from "@nsshunt/stsutils";
|
|
18
|
+
import { createServer as createServerHttps, } from "node:https";
|
|
19
|
+
import { createServer as createServerHttp, } from "node:http";
|
|
20
|
+
export class STSExpressServer {
|
|
21
|
+
#app;
|
|
22
|
+
#options;
|
|
23
|
+
#ERROR_THRESHOLD_TIMEOUT = 1000;
|
|
24
|
+
httpServer;
|
|
25
|
+
#io = null;
|
|
26
|
+
#redisClient = null;
|
|
27
|
+
publishInstrumentController = inject(PublishInstrumentControllerToken);
|
|
28
|
+
logger = inject(STSLoggerToken);
|
|
29
|
+
constructor(options) {
|
|
30
|
+
this.#options = options;
|
|
31
|
+
this.#SetupExpressServer();
|
|
32
|
+
this.#SetupServerFromExpressServer();
|
|
33
|
+
}
|
|
34
|
+
#SetupExpressServer = () => {
|
|
35
|
+
// Standard RequestLoggerMiddleware for all STS services
|
|
36
|
+
const requestLoggerMiddleware = new RequestLoggerMiddleware({
|
|
37
|
+
ignoresocketio: goptions.ignoresocketio,
|
|
38
|
+
});
|
|
39
|
+
const serverNetworkMiddleware = new ServerNetworkMiddleware({
|
|
40
|
+
name: this.#options.serviceName,
|
|
41
|
+
outputDebug: false,
|
|
42
|
+
logger: this.logger,
|
|
43
|
+
});
|
|
44
|
+
serverNetworkMiddleware.on(ServerNetworkMiddlewareEventName.UpdateInstrument_SERVER_NET_VAL, (data) => {
|
|
45
|
+
//this.#LogInfoMessage(chalk.magenta(`serverNetworkMiddleware: [${JSON.stringify(data)}]`));
|
|
46
|
+
this.publishInstrumentController.UpdateInstrument(Gauge.NETWORK_RX_GAUGE, {
|
|
47
|
+
Inc: data.requestBytesRead,
|
|
48
|
+
});
|
|
49
|
+
this.publishInstrumentController.UpdateInstrument(Gauge.NETWORK_TX_GAUGE, {
|
|
50
|
+
Inc: data.requestBytesWritten,
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
requestLoggerMiddleware.on(RequestLoggerMiddlewareEventName.UpdateInstrument_AR_INC, () => {
|
|
54
|
+
this.publishInstrumentController.UpdateInstrument(Gauge.ACTIVE_REQUEST_GAUGE, {
|
|
55
|
+
Inc: 1,
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
requestLoggerMiddleware.on(RequestLoggerMiddlewareEventName.UpdateInstrument_AR_DEC, () => {
|
|
59
|
+
this.publishInstrumentController.UpdateInstrument(Gauge.ACTIVE_REQUEST_GAUGE, {
|
|
60
|
+
Dec: 1,
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
requestLoggerMiddleware.on(RequestLoggerMiddlewareEventName.UpdateInstrument_DH_VAL, (timeInMs) => {
|
|
64
|
+
this.publishInstrumentController.UpdateInstrument(Gauge.DURATION_HISTOGRAM_GAUGE, {
|
|
65
|
+
val: timeInMs,
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
requestLoggerMiddleware.on(RequestLoggerMiddlewareEventName.UpdateInstrument_D_VAL, (reqDetails) => {
|
|
69
|
+
const { timeInMs } = reqDetails;
|
|
70
|
+
this.publishInstrumentController.UpdateInstrument(Gauge.DURATION_GAUGE, {
|
|
71
|
+
val: timeInMs,
|
|
72
|
+
});
|
|
73
|
+
if (timeInMs > this.#ERROR_THRESHOLD_TIMEOUT) {
|
|
74
|
+
const message = `STSExpressServer:RequestLoggerMiddlewareEventName.UpdateInstrument_D_VAL: Request duration larger than: [${this.#ERROR_THRESHOLD_TIMEOUT}], Duration: [${timeInMs}], Request Details: [${JSON.stringify(reqDetails)}]`;
|
|
75
|
+
if (this.logger) {
|
|
76
|
+
this.logger.error(chalk.red(message));
|
|
77
|
+
console.error(chalk.red(message));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
console.error(chalk.red(message));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
requestLoggerMiddleware.on(RequestLoggerMiddlewareEventName.UpdateInstrument_RC_INC, () => {
|
|
85
|
+
this.publishInstrumentController.UpdateInstrument(Gauge.REQUEST_COUNT_GAUGE, {
|
|
86
|
+
Inc: 1,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
requestLoggerMiddleware.on(RequestLoggerMiddlewareEventName.UpdateInstrument_V_INC, () => {
|
|
90
|
+
if (this.publishInstrumentController.InstrumentExists(Gauge.VELOCITY_GAUGE)) {
|
|
91
|
+
this.publishInstrumentController.UpdateInstrument(Gauge.VELOCITY_GAUGE, {
|
|
92
|
+
Inc: 1,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
const app = express();
|
|
97
|
+
this.#app = app;
|
|
98
|
+
// https://stackoverflow.com/questions/19743396/cors-cannot-use-wildcard-in-access-control-allow-origin-when-credentials-flag-i
|
|
99
|
+
// See answer from Christoph Hansen is thread above ...
|
|
100
|
+
// https://expressjs.com/en/resources/middleware/cors.html
|
|
101
|
+
const corsConfig = {
|
|
102
|
+
credentials: true,
|
|
103
|
+
origin: true,
|
|
104
|
+
};
|
|
105
|
+
app.use(cors(corsConfig));
|
|
106
|
+
app.use(cookieParser());
|
|
107
|
+
app.use(express.urlencoded({
|
|
108
|
+
extended: false,
|
|
109
|
+
limit: goptions.maxPayloadSize,
|
|
110
|
+
}));
|
|
111
|
+
app.use(express.json({ limit: goptions.maxPayloadSize }));
|
|
112
|
+
// Allow the static SPA to also be servered by this app
|
|
113
|
+
//app.use('/static', express.static(path.join(__dirname, 'public')))
|
|
114
|
+
if (this.#options.expressServerRouteStaticFactory) {
|
|
115
|
+
this.#options.expressServerRouteStaticFactory(app);
|
|
116
|
+
}
|
|
117
|
+
app.use(requestLoggerMiddleware.Middleware.bind(requestLoggerMiddleware));
|
|
118
|
+
app.use(serverNetworkMiddleware.Middleware.bind(serverNetworkMiddleware));
|
|
119
|
+
if (this.#options.expressServerRouteFactory) {
|
|
120
|
+
this.#options.expressServerRouteFactory(app);
|
|
121
|
+
}
|
|
122
|
+
// Express error handling fall-back
|
|
123
|
+
app.use(function (err, req, res, next) {
|
|
124
|
+
//@@ add to errors metric here - perhaps break down by type
|
|
125
|
+
if (err) {
|
|
126
|
+
//@@this.#LogInfoMessage(err);
|
|
127
|
+
res.status(err.status).send(err);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
next();
|
|
131
|
+
}
|
|
132
|
+
/*
|
|
133
|
+
if(err.name === 'UnauthorizedError') {
|
|
134
|
+
res.status(401).send(err);
|
|
135
|
+
} else {
|
|
136
|
+
next();
|
|
137
|
+
}
|
|
138
|
+
*/
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
#SetupServerFromExpressServer = () => {
|
|
142
|
+
if (this.#options.useTls) {
|
|
143
|
+
this.httpServer = createServerHttps(GetTLSOptions(this.#options.httpsServerKeyPath, this.#options.httpsServerCertificatePath), this.#app);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
this.httpServer = createServerHttp(this.#app);
|
|
147
|
+
}
|
|
148
|
+
if (this.#app && this.#options.prometheusSupport === true) {
|
|
149
|
+
this.#SetupPrometheusEndPoints(this.#app);
|
|
150
|
+
}
|
|
151
|
+
if (this.#options.wssServer === true) {
|
|
152
|
+
this.#SetupWSSServer();
|
|
153
|
+
}
|
|
154
|
+
// https://stackoverflow.com/questions/21342828/node-express-unix-domain-socket-permissions
|
|
155
|
+
//@@httpServer.listen('/tmp/stsrest01.sock').on('listening', () =>
|
|
156
|
+
//@@httpServer.listen('/var/run/sts/stsrest01.sock').on('listening', () =>
|
|
157
|
+
this.httpServer
|
|
158
|
+
.listen(this.#options.listenPort, () => {
|
|
159
|
+
//@@chmodSync(this.options.port, 511);
|
|
160
|
+
})
|
|
161
|
+
.on("listening", () => {
|
|
162
|
+
this.logger.info(`live on ${this.#options.endpoint}:${this.#options.listenPort}${this.#options.apiRoot}`);
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
// Setup server to Prometheus scrapes:
|
|
166
|
+
#SetupPrometheusEndPoints = (expressServer) => {
|
|
167
|
+
// AggregatorRegistry is required here in the worker as well as the master in order for prom-client to work correctly.
|
|
168
|
+
new AggregatorRegistry();
|
|
169
|
+
const prefix = "sts_";
|
|
170
|
+
collectDefaultMetrics({
|
|
171
|
+
labels: { NODE_APP_INSTANCE: process.pid },
|
|
172
|
+
prefix: prefix,
|
|
173
|
+
});
|
|
174
|
+
const c = new Counter({
|
|
175
|
+
name: "sts_test_counter",
|
|
176
|
+
help: "Example of a counter",
|
|
177
|
+
labelNames: ["code"],
|
|
178
|
+
});
|
|
179
|
+
setInterval(() => {
|
|
180
|
+
c.inc({ code: 200 });
|
|
181
|
+
}, 1000).unref();
|
|
182
|
+
setInterval(() => {
|
|
183
|
+
c.inc({ code: 400 });
|
|
184
|
+
c.inc({ code: "worker_" + process.pid });
|
|
185
|
+
}, 500).unref();
|
|
186
|
+
expressServer.get("/metrics", async (req, res) => {
|
|
187
|
+
try {
|
|
188
|
+
res.set("Content-Type", register.contentType);
|
|
189
|
+
res.end(await register.metrics());
|
|
190
|
+
}
|
|
191
|
+
catch (ex) {
|
|
192
|
+
res.status(500).end(ex);
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
expressServer.get("/metrics/counter", async (req, res) => {
|
|
196
|
+
try {
|
|
197
|
+
res.set("Content-Type", register.contentType);
|
|
198
|
+
res.end(await register.getSingleMetricAsString("test_counter"));
|
|
199
|
+
}
|
|
200
|
+
catch (ex) {
|
|
201
|
+
res.status(500).end(ex);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
#SetupWSSServer = () => {
|
|
206
|
+
// socket.io
|
|
207
|
+
// WebSocket
|
|
208
|
+
const options = {
|
|
209
|
+
transports: ["websocket"], // or [ "websocket", "polling" ] (to use long-poolling. Note that the order matters)
|
|
210
|
+
// The default path is /socket.io
|
|
211
|
+
// This can be changed with the path option as shown below
|
|
212
|
+
//,path: '/zzz'
|
|
213
|
+
};
|
|
214
|
+
if (this.#options.wssCustomPath &&
|
|
215
|
+
this.#options.wssCustomPath.localeCompare("") !== 0) {
|
|
216
|
+
options.path = this.#options.wssCustomPath;
|
|
217
|
+
}
|
|
218
|
+
//this.#io = require("socket.io")(this.#httpServer, options);
|
|
219
|
+
this.#io = new Server(this.httpServer, options);
|
|
220
|
+
if (this.#options.useSocketIoRedisAdaptor) {
|
|
221
|
+
/*
|
|
222
|
+
// This uses redis client
|
|
223
|
+
// Below is commented out becuase the current version of the socketio streams adaptor
|
|
224
|
+
// uses version 4 of redis not 5 and has problems (bugged)
|
|
225
|
+
this.LogInfoMessage(`Using Redis for socket.io cluster management (worker)`);
|
|
226
|
+
if (this.options.socketIoRedisAdaptorUrl) {
|
|
227
|
+
this.LogInfoMessage(`Redis url: [${this.options.socketIoRedisAdaptorUrl}]`);
|
|
228
|
+
this.#redisClient = createClient({url: this.options.socketIoRedisAdaptorUrl});
|
|
229
|
+
} else {
|
|
230
|
+
this.LogInfoMessage(`Redis url: [localhost]`);
|
|
231
|
+
this.#redisClient = createClient();
|
|
232
|
+
}
|
|
233
|
+
await this.#redisClient.connect();
|
|
234
|
+
*/
|
|
235
|
+
// This uses ioredis client
|
|
236
|
+
this.#redisClient = new Redis(this.#options.socketIoRedisAdaptorUrl);
|
|
237
|
+
this.#io.adapter(createAdapter(this.#redisClient));
|
|
238
|
+
this.logger.info(`Redis successfully connected.`);
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
if (this.#options.clusterMode) {
|
|
242
|
+
this.#io.adapter(clusterCreateAdapter());
|
|
243
|
+
this.logger.info(`Using nodejs cluster mode for socket.io cluster management`);
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
this.logger.info(`Not using any adaptors for socket.io cluster management.}`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// To use a seperate socket server, the code below can be applied.
|
|
250
|
+
// this.#io = require("socket.io")(options);
|
|
251
|
+
// this.#io.adapter(createAdapter());
|
|
252
|
+
// this.#io.listen(3006);
|
|
253
|
+
this.#io.engine.on("connection_error", (err) => {
|
|
254
|
+
this.logger.info(err.req); // the request object
|
|
255
|
+
this.logger.info(err.code); // the error code, for example 1
|
|
256
|
+
this.logger.info(err.message); // the error message, for example "Session ID unknown"
|
|
257
|
+
this.logger.info(err.context); // some additional error context
|
|
258
|
+
});
|
|
259
|
+
};
|
|
260
|
+
#TerminateSocketIO = async () => {
|
|
261
|
+
if (this.#options.wssServer === true && this.#io !== null) {
|
|
262
|
+
const logPrefix = `ServerProcessBase:TerminateSockets():${process.pid}:`;
|
|
263
|
+
this.logger.info(`${logPrefix} Disconnect SocketIO Sockets (Sleeping...)`);
|
|
264
|
+
await Sleep(250);
|
|
265
|
+
this.logger.info(`${logPrefix} this.#io.of('/').adapter.close()`);
|
|
266
|
+
await this.#io?.of("/").adapter.close();
|
|
267
|
+
if (this.#redisClient) {
|
|
268
|
+
this.logger.info(`${logPrefix} this.#redisClient.disconnect()`);
|
|
269
|
+
this.#redisClient.disconnect();
|
|
270
|
+
this.logger.info(`${logPrefix} after this.#redisClient.disconnect() (Sleeping...)`);
|
|
271
|
+
await Sleep(50);
|
|
272
|
+
}
|
|
273
|
+
// boot all current connections
|
|
274
|
+
this.logger.info(`${logPrefix} this.#io.disconnectSockets()`);
|
|
275
|
+
this.#io.disconnectSockets();
|
|
276
|
+
// Stop any future connections, close this server (does not close the underlying http(s) server if io server via that method
|
|
277
|
+
this.logger.info(`${logPrefix} this.#io.close()`);
|
|
278
|
+
this.#io.close();
|
|
279
|
+
this.#io = null;
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
Stop = async () => {
|
|
283
|
+
await this.#TerminateSocketIO();
|
|
284
|
+
if (this.httpServer) {
|
|
285
|
+
const logPrefix = `STSRPCRawServer:Stop():${process.pid}:`;
|
|
286
|
+
this.logger.info(`${logPrefix} Closing httpServer.`);
|
|
287
|
+
this.httpServer.close();
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=stsexpressserver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stsexpressserver.js","sourceRoot":"","sources":["../../../src/process/servertypes/stsexpressserver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
+
import { STSLoggerToken } from "./../../commonTypes.js";
|
|
3
|
+
import jayson from "jayson";
|
|
4
|
+
import { inject } from "@nsshunt/stsutils";
|
|
5
|
+
import { GetTLSOptions } from "./serverUtils.js";
|
|
6
|
+
export class STSJsonRPCServer {
|
|
7
|
+
options;
|
|
8
|
+
logger = inject(STSLoggerToken);
|
|
9
|
+
httpServer;
|
|
10
|
+
constructor(options) {
|
|
11
|
+
this.options = options;
|
|
12
|
+
this.#SetupJSONRPCServer();
|
|
13
|
+
}
|
|
14
|
+
#SetupJSONRPCServer = () => {
|
|
15
|
+
const jaysonServer = new jayson.server();
|
|
16
|
+
// Supported methods here - move somewhere else ...
|
|
17
|
+
jaysonServer.method("add", function (args, callback) {
|
|
18
|
+
callback(null, args[0] + args[1]);
|
|
19
|
+
});
|
|
20
|
+
this.httpServer = jaysonServer.tls(GetTLSOptions(this.options.httpsServerKeyPath, this.options.httpsServerCertificatePath));
|
|
21
|
+
this.httpServer.on("secureConnection", this.#SetupRPCServer);
|
|
22
|
+
this.httpServer
|
|
23
|
+
.listen(this.options.listenPort, this.options.coreDomain, () => {
|
|
24
|
+
this.logger.info("JSON RPC 2.0 Server is running on port " +
|
|
25
|
+
this.options.listenPort +
|
|
26
|
+
".");
|
|
27
|
+
})
|
|
28
|
+
.on("listening", () => {
|
|
29
|
+
this.logger.info(`JSON RPC 2.0 live on ${this.options.endpoint}:${this.options.listenPort}${this.options.apiRoot}`);
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
#SetupRPCServer = (socket) => {
|
|
33
|
+
this.logger.info("CONNECTED: " +
|
|
34
|
+
socket.remoteAddress +
|
|
35
|
+
":" +
|
|
36
|
+
socket.remotePort +
|
|
37
|
+
" " +
|
|
38
|
+
process.pid);
|
|
39
|
+
socket.on("close", (data) => {
|
|
40
|
+
this.logger.info("CLOSED: " +
|
|
41
|
+
socket.remoteAddress +
|
|
42
|
+
" " +
|
|
43
|
+
socket.remotePort +
|
|
44
|
+
" " +
|
|
45
|
+
process.pid);
|
|
46
|
+
});
|
|
47
|
+
socket.on("data", (data) => {
|
|
48
|
+
this.logger.info("DATA " + socket.remoteAddress + ": " + data);
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
Stop = async () => {
|
|
52
|
+
if (this.httpServer) {
|
|
53
|
+
const logPrefix = `STSJsonRPCServer:Stop():${process.pid}:`;
|
|
54
|
+
this.logger.info(`${logPrefix} Closing httpServer.`);
|
|
55
|
+
this.httpServer.close();
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=stsjsonrpcserver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stsjsonrpcserver.js","sourceRoot":"","sources":["../../../src/process/servertypes/stsjsonrpcserver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { STSExpressServer, } from "./stsexpressserver.js";
|
|
2
|
+
import { STSJsonRPCServer, } from "./stsjsonrpcserver.js";
|
|
3
|
+
import { STSRPCRawServer } from "./ststcprawserver.js";
|
|
4
|
+
export const CreateSTSServer = ({ serverType, options, }) => {
|
|
5
|
+
switch (serverType) {
|
|
6
|
+
case "EXPRESS":
|
|
7
|
+
case "EXPRESS_TLS":
|
|
8
|
+
return new STSExpressServer(options);
|
|
9
|
+
case "TCPRAW_TLS":
|
|
10
|
+
return new STSRPCRawServer(options);
|
|
11
|
+
case "JSONRPC2_TLS":
|
|
12
|
+
return new STSJsonRPCServer(options);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=stsserverfactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stsserverfactory.js","sourceRoot":"","sources":["../../../src/process/servertypes/stsserverfactory.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,gBAAgB,GAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACH,gBAAgB,GAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAA2B,MAAM,sBAAsB,CAAC;AAuBhF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC5B,UAAU,EACV,OAAO,GACc,EAAc,EAAE;IACrC,QAAQ,UAAU,EAAE,CAAC;QACjB,KAAK,SAAS,CAAC;QACf,KAAK,aAAa;YACd,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEzC,KAAK,YAAY;YACb,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;QAExC,KAAK,cAAc;YACf,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { STSLoggerToken } from "./../../commonTypes.js";
|
|
4
|
+
import tls from "node:tls";
|
|
5
|
+
import { inject } from "@nsshunt/stsutils";
|
|
6
|
+
import { GetTLSOptions } from "./serverUtils.js";
|
|
7
|
+
export class STSRPCRawServer {
|
|
8
|
+
options;
|
|
9
|
+
logger = inject(STSLoggerToken);
|
|
10
|
+
httpServer;
|
|
11
|
+
sockets = [];
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this.options = options;
|
|
14
|
+
this.#SetupTCPRawServer();
|
|
15
|
+
}
|
|
16
|
+
#SetupTCPRawServer = () => {
|
|
17
|
+
// The second parameter is the automatic listener for the secureConnection event from the tls.Server class
|
|
18
|
+
this.httpServer = tls.createServer(GetTLSOptions(this.options.httpsServerKeyPath, this.options.httpsServerCertificatePath), this.#SetupTLSServer);
|
|
19
|
+
this.httpServer
|
|
20
|
+
.listen(this.options.listenPort, this.options.coreDomain, () => {
|
|
21
|
+
this.logger.info("TCP Server is running on port " +
|
|
22
|
+
this.options.listenPort +
|
|
23
|
+
".");
|
|
24
|
+
})
|
|
25
|
+
.on("listening", () => {
|
|
26
|
+
this.logger.info(`TCP live on ${this.options.endpoint}:${this.options.listenPort}${this.options.apiRoot}`);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
#SetupTLSServer = async (socket) => {
|
|
30
|
+
// Add a 'close' event handler to this instance of socket
|
|
31
|
+
this.logger.info("CONNECTED: " +
|
|
32
|
+
socket.remoteAddress +
|
|
33
|
+
":" +
|
|
34
|
+
socket.remotePort +
|
|
35
|
+
" " +
|
|
36
|
+
process.pid);
|
|
37
|
+
this.sockets.push(socket);
|
|
38
|
+
//const self = this;
|
|
39
|
+
socket.on("close", (data) => {
|
|
40
|
+
const index = this.sockets.findIndex(function (o) {
|
|
41
|
+
return (o.remoteAddress === socket.remoteAddress &&
|
|
42
|
+
o.remotePort === socket.remotePort);
|
|
43
|
+
});
|
|
44
|
+
if (index !== -1)
|
|
45
|
+
this.sockets.splice(index, 1);
|
|
46
|
+
this.logger.info("CLOSED: " +
|
|
47
|
+
socket.remoteAddress +
|
|
48
|
+
" " +
|
|
49
|
+
socket.remotePort +
|
|
50
|
+
" " +
|
|
51
|
+
process.pid);
|
|
52
|
+
});
|
|
53
|
+
socket.on("data", (data) => {
|
|
54
|
+
this.logger.info("DATA " +
|
|
55
|
+
socket.remoteAddress +
|
|
56
|
+
": " +
|
|
57
|
+
socket.remotePort +
|
|
58
|
+
": " +
|
|
59
|
+
data);
|
|
60
|
+
socket.write(socket.remoteAddress +
|
|
61
|
+
":" +
|
|
62
|
+
socket.remotePort +
|
|
63
|
+
" said " +
|
|
64
|
+
data +
|
|
65
|
+
"\n");
|
|
66
|
+
// Write the data back to all the connected, the client will receive it as data from the server
|
|
67
|
+
/*
|
|
68
|
+
self.#sockets.forEach(function(socket, index, array) {
|
|
69
|
+
socket.write(socket.remoteAddress + ':' + socket.remotePort + " said " + data + '\n');
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
*/
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
Stop = async () => {
|
|
76
|
+
if (this.httpServer) {
|
|
77
|
+
const logPrefix = `STSRPCRawServer:Stop():${process.pid}:`;
|
|
78
|
+
this.sockets.forEach((socket, index, array) => {
|
|
79
|
+
this.logger.info(chalk.yellow(`${logPrefix} TCP Socket destroy, remote address: [${socket.remoteAddress}], remote port: [${socket.remotePort}]`));
|
|
80
|
+
socket.destroy();
|
|
81
|
+
});
|
|
82
|
+
this.logger.info(`${logPrefix} Closing httpServer.`);
|
|
83
|
+
this.httpServer.close();
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=ststcprawserver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ststcprawserver.js","sourceRoot":"","sources":["../../../src/process/servertypes/ststcprawserver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
-
import { Gauge } from "@nsshunt/stsobservability";
|
|
4
3
|
import { IPCMessageCommand, } from "./../commonTypes.js";
|
|
5
4
|
import { ServerProcessBase } from "./serverprocessbase.js";
|
|
6
5
|
import { randomUUID } from "node:crypto";
|
|
@@ -23,18 +22,6 @@ export class WorkerProcessBase extends ServerProcessBase {
|
|
|
23
22
|
ReceivedMessageFromMaster(msg) {
|
|
24
23
|
// Override in subclass if required
|
|
25
24
|
}
|
|
26
|
-
CollectAdditionalTelemetry() {
|
|
27
|
-
try {
|
|
28
|
-
this.httpServer.getConnections((error, count) => {
|
|
29
|
-
//@@this.instruments[Gauge.CONNECTION_COUNT_GAUGE].val = count;
|
|
30
|
-
this.UpdateInstrument(Gauge.CONNECTION_COUNT_GAUGE, {
|
|
31
|
-
val: count,
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
35
|
-
}
|
|
36
|
-
catch (error) { }
|
|
37
|
-
}
|
|
38
25
|
#SendMessageToParentProcess = (message) => {
|
|
39
26
|
return new Promise((resolve, reject) => {
|
|
40
27
|
if (this.#inFlightMessage[message.id]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerprocessbase.js","sourceRoot":"","sources":["../../src/process/workerprocessbase.ts"],"names":[],"mappings":"AAAA,kDAAkD,CAAC,UAAU;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"workerprocessbase.js","sourceRoot":"","sources":["../../src/process/workerprocessbase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nsshunt/stsappframework",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.138",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -43,17 +43,17 @@
|
|
|
43
43
|
"globals": "^17.12.0",
|
|
44
44
|
"typescript": "^6.0.3",
|
|
45
45
|
"vite": "^8.2.2",
|
|
46
|
-
"vitest": "^
|
|
46
|
+
"vitest": "^5.0.0"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"@grpc/grpc-js": "^1.14.4",
|
|
50
50
|
"@grpc/proto-loader": "^0.8.1",
|
|
51
|
-
"@nsshunt/stsconfig": "^1.27.
|
|
52
|
-
"@nsshunt/stsdatamanagement": "^1.18.
|
|
53
|
-
"@nsshunt/stsinstrumentmanagerclient": "^1.0.
|
|
54
|
-
"@nsshunt/stsobservability": "^1.0.
|
|
55
|
-
"@nsshunt/stssocketioutils": "^2.0.
|
|
56
|
-
"@nsshunt/stsutils": "^1.19.
|
|
51
|
+
"@nsshunt/stsconfig": "^1.27.75",
|
|
52
|
+
"@nsshunt/stsdatamanagement": "^1.18.202",
|
|
53
|
+
"@nsshunt/stsinstrumentmanagerclient": "^1.0.46",
|
|
54
|
+
"@nsshunt/stsobservability": "^1.0.166",
|
|
55
|
+
"@nsshunt/stssocketioutils": "^2.0.57",
|
|
56
|
+
"@nsshunt/stsutils": "^1.19.139",
|
|
57
57
|
"@socket.io/cluster-adapter": "^0.3.0",
|
|
58
58
|
"@socket.io/redis-streams-adapter": "^0.3.1",
|
|
59
59
|
"@types/on-headers": "^1.0.4",
|
package/types/commonTypes.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import express from "express";
|
|
2
|
-
import { JSONObject, ISTSLogger, IAgentManager } from "@nsshunt/stsutils";
|
|
2
|
+
import { JSONObject, ISTSLogger, IAgentManager, InjectionToken } from "@nsshunt/stsutils";
|
|
3
3
|
import { InstrumentBaseTelemetry, Gauge } from "@nsshunt/stsobservability";
|
|
4
4
|
import { PublishInstrumentController, InstrumentDefinitions, IContextBase } from "@nsshunt/stsinstrumentmanagerclient";
|
|
5
5
|
import { IDBAccessLayer } from "@nsshunt/stsdatamanagement";
|
|
@@ -91,12 +91,7 @@ export interface IMasterProcessBase extends IProcessBase {
|
|
|
91
91
|
ProcessIPCCommand(iPCMessagePayload: IPCMessagePayload): Promise<IPCMessagePayload>;
|
|
92
92
|
}
|
|
93
93
|
export interface IServerProcessBase extends IProcessBase {
|
|
94
|
-
get httpServer(): any;
|
|
95
|
-
get io(): any;
|
|
96
|
-
get expressServer(): STSExpressServer | null;
|
|
97
|
-
set expressServer(server: STSExpressServer | null);
|
|
98
94
|
Terminate: (clusterPerformExit: boolean, signal?: any) => Promise<void>;
|
|
99
|
-
SetupSTSServer: () => Promise<void>;
|
|
100
95
|
CollectAdditionalTelemetry(): void;
|
|
101
96
|
SetupServer(): Promise<boolean>;
|
|
102
97
|
SetupServerEx: () => Promise<boolean>;
|
|
@@ -117,7 +112,7 @@ export interface STSExpressServer {
|
|
|
117
112
|
/**
|
|
118
113
|
* Factory method that adds express routes to the express app object.
|
|
119
114
|
*/
|
|
120
|
-
export type ExpressRouteFactory = (app: express.Express
|
|
115
|
+
export type ExpressRouteFactory = (app: express.Express) => void;
|
|
121
116
|
export interface ProcessOptions {
|
|
122
117
|
/**
|
|
123
118
|
* Is this service worker the master worker (thread).
|
|
@@ -249,4 +244,13 @@ export interface ProcessOptions {
|
|
|
249
244
|
publisherLogger: ISTSLogger;
|
|
250
245
|
publishInterval: number;
|
|
251
246
|
}
|
|
247
|
+
export interface ISTSServer {
|
|
248
|
+
Stop(): Promise<void>;
|
|
249
|
+
}
|
|
250
|
+
export declare const AgentManagerToken: InjectionToken<IAgentManager>;
|
|
251
|
+
export declare const PublishInstrumentControllerToken: InjectionToken<PublishInstrumentController | undefined>;
|
|
252
|
+
export declare const ProcessOptionsToken: InjectionToken<ProcessOptions>;
|
|
253
|
+
export declare const DBAccessLayerToken: InjectionToken<IDBAccessLayer | null>;
|
|
254
|
+
export declare const STSLoggerToken: InjectionToken<ISTSLogger>;
|
|
255
|
+
export declare const STSServerToken: InjectionToken<ISTSServer>;
|
|
252
256
|
//# sourceMappingURL=commonTypes.d.ts.map
|