node-opcua-server-configuration 2.187.3 → 2.187.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"trust_list_server.d.ts","sourceRoot":"","sources":["../../source/server/trust_list_server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAG9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAmCrD,oBAAY,cAAc;IACtB,IAAI,IAAI;IACR,mBAAmB,IAAI;IACvB,WAAW,IAAI;IACf,kBAAkB,IAAI;IACtB,UAAU,IAAI;IACd,GAAG,KAAK;CACX;AAED,wBAAsB,cAAc,CAChC,kBAAkB,EAAE,uBAAuB,EAC3C,aAAa,EAAE,cAAc,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAoC5B;AAED,wBAAsB,cAAc,CAChC,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,cAAc,EAE7B,kBAAkB,EAAE,uBAAuB,GAC5C,OAAO,CAAC,IAAI,CAAC,CAUf"}
1
+ {"version":3,"file":"trust_list_server.d.ts","sourceRoot":"","sources":["../../source/server/trust_list_server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAG9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA8CrD,oBAAY,cAAc;IACtB,IAAI,IAAI;IACR,mBAAmB,IAAI;IACvB,WAAW,IAAI;IACf,kBAAkB,IAAI;IACtB,UAAU,IAAI;IACd,GAAG,KAAK;CACX;AAED,wBAAsB,cAAc,CAChC,kBAAkB,EAAE,uBAAuB,EAC3C,aAAa,EAAE,cAAc,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAoC5B;AAED,wBAAsB,cAAc,CAChC,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,cAAc,EAE7B,kBAAkB,EAAE,uBAAuB,GAC5C,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -16,23 +16,35 @@ async function readAll(folder) {
16
16
  for (const f of files) {
17
17
  const file = path.join(folder, f);
18
18
  const ext = path.extname(file);
19
- if (ext === ".der" || ext === ".pem") {
20
- const chain = await readCertificateChainAsync(file);
21
- // Return the full chain as a single ByteString.
22
- // When addTrustedCertificateFromChain stores a chain-on-disk
23
- // (leaf + issuer CAs in a single PEM), we preserve that
24
- // chain so clients reading the TrustList can use it for
25
- // chain-building.
26
- const concatenated = Buffer.concat(chain);
27
- results.push(concatenated);
19
+ try {
20
+ if (ext === ".der" || ext === ".pem") {
21
+ const chain = await readCertificateChainAsync(file);
22
+ // Return the full chain as a single ByteString.
23
+ // When addTrustedCertificateFromChain stores a chain-on-disk
24
+ // (leaf + issuer CAs in a single PEM), we preserve that
25
+ // chain so clients reading the TrustList can use it for
26
+ // chain-building.
27
+ const concatenated = Buffer.concat(chain);
28
+ results.push(concatenated);
29
+ }
30
+ else if (ext === ".crl") {
31
+ // Strict validation: only accept valid CRL files
32
+ const buf = await readCertificateRevocationList(file);
33
+ results.push(buf);
34
+ }
35
+ else {
36
+ errorLog(" unknown extension on file ", f);
37
+ }
28
38
  }
29
- else if (ext === ".crl") {
30
- // Strict validation: only accept valid CRL files
31
- const buf = await readCertificateRevocationList(file);
32
- results.push(buf);
33
- }
34
- else {
35
- errorLog(" unknown extension on file ", f);
39
+ catch (err) {
40
+ // The certificate manager moves files between folders at any
41
+ // time (trust, reject, withdraw). A file listed by readdir and
42
+ // gone before it is read is no longer in this list: skip it
43
+ // rather than failing the whole TrustList Open.
44
+ if (err.code === "ENOENT") {
45
+ continue;
46
+ }
47
+ throw err;
36
48
  }
37
49
  }
38
50
  return results;
@@ -1 +1 @@
1
- {"version":3,"file":"trust_list_server.js","sourceRoot":"","sources":["../../source/server/trust_list_server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trust_list_server.js","sourceRoot":"","sources":["../../source/server/trust_list_server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,QAAQ,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAElD;;;;GAIG;AACH,KAAK,UAAU,OAAO,CAAC,MAAc;IACjC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC;YACD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,CAAC;gBACpD,gDAAgD;gBAChD,6DAA6D;gBAC7D,wDAAwD;gBACxD,wDAAwD;gBACxD,kBAAkB;gBAClB,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACxB,iDAAiD;gBACjD,MAAM,GAAG,GAAG,MAAM,6BAA6B,CAAC,IAAI,CAAC,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,6DAA6D;YAC7D,+DAA+D;YAC/D,4DAA4D;YAC5D,gDAAgD;YAChD,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnD,SAAS;YACb,CAAC;YACD,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,MAAM,CAAN,IAAY,cAOX;AAPD,WAAY,cAAc;IACtB,mDAAQ,CAAA;IACR,iFAAuB,CAAA;IACvB,iEAAe,CAAA;IACf,+EAAsB,CAAA;IACtB,+DAAc,CAAA;IACd,kDAAQ,CAAA;AACZ,CAAC,EAPW,cAAc,KAAd,cAAc,QAOzB;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,kBAA2C,EAC3C,aAA6B;IAE7B,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC;QACpC,cAAc,EAAE,aAAa;QAC7B,kBAAkB,EAAE,SAAS;QAC7B,UAAU,EAAE,SAAS;QACrB,mBAAmB,EAAE,SAAS;QAC9B,WAAW,EAAE,SAAS;KACzB,CAAC,CAAC;IACH,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC,mBAAmB,CAAC,KAAK,cAAc,CAAC,mBAAmB,EAAE,CAAC;QAC9F,SAAS,CAAC,mBAAmB,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC,WAAW,CAAC,KAAK,cAAc,CAAC,WAAW,EAAE,CAAC;QAC9E,MAAM,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC;QAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,WAAW,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACJ,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC;QAC/B,CAAC;IACL,CAAC;IACD,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC,kBAAkB,CAAC,KAAK,cAAc,CAAC,kBAAkB,EAAE,CAAC;QAC5F,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;QAC/D,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACnC,SAAS,CAAC,kBAAkB,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACJ,SAAS,CAAC,kBAAkB,GAAG,EAAE,CAAC;QACtC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,cAAc,CAAC,UAAU,EAAE,CAAC;QAC5E,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,gBAAgB,CAAC;QAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,SAAS,CAAC,UAAU,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACJ,SAAS,CAAC,UAAU,GAAG,EAAE,CAAC;QAC9B,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,EAAc,EACd,QAAgB,EAChB,aAA6B,EAE7B,kBAA2C;IAE3C,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC;IAC7D,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;YACpD,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-opcua-server-configuration",
3
- "version": "2.187.3",
3
+ "version": "2.187.5",
4
4
  "description": "pure nodejs OPCUA SDK - module server-configuration",
5
5
  "scripts": {
6
6
  "build": "tsc -b",
@@ -18,8 +18,8 @@
18
18
  "dependencies": {
19
19
  "chalk": "6.0.1",
20
20
  "memfs": "^4.80.0",
21
- "node-opcua-address-space": "2.187.3",
22
- "node-opcua-address-space-base": "2.187.0",
21
+ "node-opcua-address-space": "2.187.5",
22
+ "node-opcua-address-space-base": "2.187.5",
23
23
  "node-opcua-assert": "2.186.7",
24
24
  "node-opcua-basic-types": "2.187.0",
25
25
  "node-opcua-binary-stream": "2.187.0",
@@ -29,13 +29,13 @@
29
29
  "node-opcua-crypto": "6.2.0",
30
30
  "node-opcua-data-model": "2.187.0",
31
31
  "node-opcua-debug": "2.186.7",
32
- "node-opcua-file-transfer": "2.187.3",
32
+ "node-opcua-file-transfer": "2.187.5",
33
33
  "node-opcua-hostname": "2.184.0",
34
34
  "node-opcua-nodeid": "2.187.0",
35
35
  "node-opcua-pki": "7.1.0",
36
- "node-opcua-pseudo-session": "2.187.0",
37
- "node-opcua-secure-channel": "2.187.0",
38
- "node-opcua-server": "2.187.3",
36
+ "node-opcua-pseudo-session": "2.187.5",
37
+ "node-opcua-secure-channel": "2.187.5",
38
+ "node-opcua-server": "2.187.5",
39
39
  "node-opcua-service-translate-browse-path": "2.187.0",
40
40
  "node-opcua-status-code": "2.187.0",
41
41
  "node-opcua-types": "2.187.0",
@@ -44,10 +44,10 @@
44
44
  },
45
45
  "devDependencies": {
46
46
  "bcryptjs": "3.0.3",
47
- "node-opcua-client": "2.187.3",
47
+ "node-opcua-client": "2.187.5",
48
48
  "node-opcua-data-value": "2.187.0",
49
49
  "node-opcua-leak-detector": "2.186.7",
50
- "node-opcua-nodesets": "2.187.0"
50
+ "node-opcua-nodesets": "2.187.4"
51
51
  },
52
52
  "author": "Etienne Rossignon",
53
53
  "license": "MIT",
@@ -64,7 +64,7 @@
64
64
  "internet of things"
65
65
  ],
66
66
  "homepage": "http://node-opcua.github.io/",
67
- "gitHead": "126ee937fe6d49403b6a5a8b84e01d5869be91ab",
67
+ "gitHead": "fa39d3fc7d0b5929378a55653c0f3eafccbef74d",
68
68
  "files": [
69
69
  "dist",
70
70
  "source"
@@ -20,21 +20,32 @@ async function readAll(folder: string): Promise<Buffer[]> {
20
20
  for (const f of files) {
21
21
  const file = path.join(folder, f);
22
22
  const ext = path.extname(file);
23
- if (ext === ".der" || ext === ".pem") {
24
- const chain = await readCertificateChainAsync(file);
25
- // Return the full chain as a single ByteString.
26
- // When addTrustedCertificateFromChain stores a chain-on-disk
27
- // (leaf + issuer CAs in a single PEM), we preserve that
28
- // chain so clients reading the TrustList can use it for
29
- // chain-building.
30
- const concatenated = Buffer.concat(chain);
31
- results.push(concatenated);
32
- } else if (ext === ".crl") {
33
- // Strict validation: only accept valid CRL files
34
- const buf = await readCertificateRevocationList(file);
35
- results.push(buf);
36
- } else {
37
- errorLog(" unknown extension on file ", f);
23
+ try {
24
+ if (ext === ".der" || ext === ".pem") {
25
+ const chain = await readCertificateChainAsync(file);
26
+ // Return the full chain as a single ByteString.
27
+ // When addTrustedCertificateFromChain stores a chain-on-disk
28
+ // (leaf + issuer CAs in a single PEM), we preserve that
29
+ // chain so clients reading the TrustList can use it for
30
+ // chain-building.
31
+ const concatenated = Buffer.concat(chain);
32
+ results.push(concatenated);
33
+ } else if (ext === ".crl") {
34
+ // Strict validation: only accept valid CRL files
35
+ const buf = await readCertificateRevocationList(file);
36
+ results.push(buf);
37
+ } else {
38
+ errorLog(" unknown extension on file ", f);
39
+ }
40
+ } catch (err) {
41
+ // The certificate manager moves files between folders at any
42
+ // time (trust, reject, withdraw). A file listed by readdir and
43
+ // gone before it is read is no longer in this list: skip it
44
+ // rather than failing the whole TrustList Open.
45
+ if ((err as NodeJS.ErrnoException).code === "ENOENT") {
46
+ continue;
47
+ }
48
+ throw err;
38
49
  }
39
50
  }
40
51
  return results;