node-opcua-server-configuration 2.181.0 → 2.182.0

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.
@@ -228,6 +228,57 @@ export async function installPushCertificateManagementOnServer(server, options)
228
228
  }
229
229
  });
230
230
  });
231
+ // ── Report an out-of-band TrustList change as trustListUpdated ─────
232
+ //
233
+ // The TrustList server methods (AddCertificate, CloseAndUpdate) are not
234
+ // the only way a server's TrustList can go from empty to populated: an
235
+ // administrator, a provisioning script, or a Pull-model client can
236
+ // write a certificate straight into serverCertificateManager's
237
+ // trusted-certs folder. Only the method path emits "trustListUpdated",
238
+ // so a consumer waiting on it to learn that the server has been
239
+ // provisioned - to leave NoConfiguration, say - would never hear about
240
+ // a TrustList populated the other way.
241
+ //
242
+ // This deliberately does NOT emit "applyChangesCompleted": that event
243
+ // means "a certificate rotation was applied" and carries channel
244
+ // teardown plus endpoint suspend/resume with it. Trusting a new peer
245
+ // changes nothing about the server's own certificate and must not
246
+ // disturb established channels.
247
+ //
248
+ // CertificateManager also fires "certificateAdded" from its own
249
+ // chokidar file watcher, which looked like the natural signal to relay
250
+ // - but that watcher's detection latency depends on the filesystem and
251
+ // OS (native fs events vs. a polling fallback), and was observed to
252
+ // never fire within 10s in a Linux CI container while resolving
253
+ // reliably in well under a second on Windows. isTrustListEmpty() itself
254
+ // has no such dependency: trustCertificate()/rejectCertificate() update
255
+ // the manager's in-memory index synchronously, so polling it directly
256
+ // is the robust choice, portable across every filesystem and OS.
257
+ //
258
+ // The poll exists only while it has something to detect: it is not
259
+ // started at all when the TrustList is already populated, and it stops
260
+ // itself the moment it sees the empty -> populated transition. Shutdown
261
+ // is only the fallback for a server that was never provisioned.
262
+ if (cm.isTrustListEmpty()) {
263
+ const stopPolling = () => {
264
+ clearInterval(trustListPoll);
265
+ server.engine.removeListener("serverStateChanged", onStateChanged);
266
+ };
267
+ const onStateChanged = (_oldState, newState) => {
268
+ if (newState === ServerState.Shutdown) {
269
+ stopPolling();
270
+ }
271
+ };
272
+ const trustListPoll = setInterval(() => {
273
+ if (cm.isTrustListEmpty()) {
274
+ return;
275
+ }
276
+ stopPolling();
277
+ serverConfigurationPriv.$pushCertificateManager?.emit("trustListUpdated", "DefaultApplicationGroup");
278
+ }, 1000);
279
+ trustListPoll.unref();
280
+ server.engine.on("serverStateChanged", onStateChanged);
281
+ }
231
282
  // ── Install NoConfiguration certificate relaxation ─────────
232
283
  //
233
284
  // When the server is in NoConfiguration state (awaiting GDS
@@ -1 +1 @@
1
- {"version":3,"file":"install_push_certificate_management.js","sourceRoot":"","sources":["../../source/server/install_push_certificate_management.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install_push_certificate_management.js","sourceRoot":"","sources":["../../source/server/install_push_certificate_management.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-opcua-server-configuration",
3
- "version": "2.181.0",
3
+ "version": "2.182.0",
4
4
  "description": "pure nodejs OPCUA SDK - module server-configuration",
5
5
  "scripts": {
6
6
  "build": "tsc -b",
@@ -15,36 +15,36 @@
15
15
  "dependencies": {
16
16
  "chalk": "4.1.2",
17
17
  "memfs": "^4.71.0",
18
- "node-opcua-address-space": "2.181.0",
19
- "node-opcua-address-space-base": "2.181.0",
18
+ "node-opcua-address-space": "2.182.0",
19
+ "node-opcua-address-space-base": "2.182.0",
20
20
  "node-opcua-assert": "2.179.0",
21
- "node-opcua-basic-types": "2.181.0",
21
+ "node-opcua-basic-types": "2.182.0",
22
22
  "node-opcua-binary-stream": "2.181.0",
23
- "node-opcua-certificate-manager": "2.181.0",
24
- "node-opcua-common": "2.181.0",
23
+ "node-opcua-certificate-manager": "2.182.0",
24
+ "node-opcua-common": "2.182.0",
25
25
  "node-opcua-constants": "2.181.0",
26
26
  "node-opcua-crypto": "5.10.1",
27
- "node-opcua-data-model": "2.181.0",
27
+ "node-opcua-data-model": "2.182.0",
28
28
  "node-opcua-debug": "2.181.0",
29
- "node-opcua-file-transfer": "2.181.0",
29
+ "node-opcua-file-transfer": "2.182.0",
30
30
  "node-opcua-hostname": "2.181.0",
31
- "node-opcua-nodeid": "2.181.0",
31
+ "node-opcua-nodeid": "2.182.0",
32
32
  "node-opcua-pki": "6.22.0",
33
- "node-opcua-pseudo-session": "2.181.0",
34
- "node-opcua-secure-channel": "2.181.0",
35
- "node-opcua-server": "2.181.0",
36
- "node-opcua-service-translate-browse-path": "2.181.0",
33
+ "node-opcua-pseudo-session": "2.182.0",
34
+ "node-opcua-secure-channel": "2.182.0",
35
+ "node-opcua-server": "2.182.0",
36
+ "node-opcua-service-translate-browse-path": "2.182.0",
37
37
  "node-opcua-status-code": "2.181.0",
38
- "node-opcua-types": "2.181.0",
38
+ "node-opcua-types": "2.182.0",
39
39
  "node-opcua-utils": "2.181.0",
40
- "node-opcua-variant": "2.181.0"
40
+ "node-opcua-variant": "2.182.0"
41
41
  },
42
42
  "devDependencies": {
43
43
  "bcryptjs": "3.0.3",
44
- "node-opcua-client": "2.181.0",
45
- "node-opcua-data-value": "2.181.0",
44
+ "node-opcua-client": "2.182.0",
45
+ "node-opcua-data-value": "2.182.0",
46
46
  "node-opcua-leak-detector": "2.181.0",
47
- "node-opcua-nodesets": "2.181.0"
47
+ "node-opcua-nodesets": "2.182.0"
48
48
  },
49
49
  "author": "Etienne Rossignon",
50
50
  "license": "MIT",
@@ -61,7 +61,7 @@
61
61
  "internet of things"
62
62
  ],
63
63
  "homepage": "http://node-opcua.github.io/",
64
- "gitHead": "f8f472c59e681b2aa18ae1533c3d1e5f17614c5c",
64
+ "gitHead": "7172ac8333d34505a72221e8f56e8708c2c96bd7",
65
65
  "files": [
66
66
  "dist",
67
67
  "source"
@@ -315,6 +315,58 @@ export async function installPushCertificateManagementOnServer(
315
315
  });
316
316
  });
317
317
 
318
+ // ── Report an out-of-band TrustList change as trustListUpdated ─────
319
+ //
320
+ // The TrustList server methods (AddCertificate, CloseAndUpdate) are not
321
+ // the only way a server's TrustList can go from empty to populated: an
322
+ // administrator, a provisioning script, or a Pull-model client can
323
+ // write a certificate straight into serverCertificateManager's
324
+ // trusted-certs folder. Only the method path emits "trustListUpdated",
325
+ // so a consumer waiting on it to learn that the server has been
326
+ // provisioned - to leave NoConfiguration, say - would never hear about
327
+ // a TrustList populated the other way.
328
+ //
329
+ // This deliberately does NOT emit "applyChangesCompleted": that event
330
+ // means "a certificate rotation was applied" and carries channel
331
+ // teardown plus endpoint suspend/resume with it. Trusting a new peer
332
+ // changes nothing about the server's own certificate and must not
333
+ // disturb established channels.
334
+ //
335
+ // CertificateManager also fires "certificateAdded" from its own
336
+ // chokidar file watcher, which looked like the natural signal to relay
337
+ // - but that watcher's detection latency depends on the filesystem and
338
+ // OS (native fs events vs. a polling fallback), and was observed to
339
+ // never fire within 10s in a Linux CI container while resolving
340
+ // reliably in well under a second on Windows. isTrustListEmpty() itself
341
+ // has no such dependency: trustCertificate()/rejectCertificate() update
342
+ // the manager's in-memory index synchronously, so polling it directly
343
+ // is the robust choice, portable across every filesystem and OS.
344
+ //
345
+ // The poll exists only while it has something to detect: it is not
346
+ // started at all when the TrustList is already populated, and it stops
347
+ // itself the moment it sees the empty -> populated transition. Shutdown
348
+ // is only the fallback for a server that was never provisioned.
349
+ if (cm.isTrustListEmpty()) {
350
+ const stopPolling = () => {
351
+ clearInterval(trustListPoll);
352
+ server.engine.removeListener("serverStateChanged", onStateChanged);
353
+ };
354
+ const onStateChanged = (_oldState: ServerState, newState: ServerState) => {
355
+ if (newState === ServerState.Shutdown) {
356
+ stopPolling();
357
+ }
358
+ };
359
+ const trustListPoll = setInterval(() => {
360
+ if (cm.isTrustListEmpty()) {
361
+ return;
362
+ }
363
+ stopPolling();
364
+ serverConfigurationPriv.$pushCertificateManager?.emit("trustListUpdated", "DefaultApplicationGroup");
365
+ }, 1000);
366
+ trustListPoll.unref();
367
+ server.engine.on("serverStateChanged", onStateChanged);
368
+ }
369
+
318
370
  // ── Install NoConfiguration certificate relaxation ─────────
319
371
  //
320
372
  // When the server is in NoConfiguration state (awaiting GDS