node-opcua-client 2.168.0 → 2.170.1

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.
Files changed (38) hide show
  1. package/dist/client_monitored_item.d.ts +4 -4
  2. package/dist/client_monitored_item.js +6 -5
  3. package/dist/client_monitored_item.js.map +1 -1
  4. package/dist/client_monitored_item_base.d.ts +7 -7
  5. package/dist/client_monitored_item_toolbox.d.ts +5 -5
  6. package/dist/client_monitored_item_toolbox.js +26 -19
  7. package/dist/client_monitored_item_toolbox.js.map +1 -1
  8. package/dist/client_session_keepalive_manager.d.ts +2 -0
  9. package/dist/client_session_keepalive_manager.js +33 -5
  10. package/dist/client_session_keepalive_manager.js.map +1 -1
  11. package/dist/private/client_base_impl.js +28 -4
  12. package/dist/private/client_base_impl.js.map +1 -1
  13. package/dist/private/client_monitored_item_group_impl.d.ts +7 -6
  14. package/dist/private/client_monitored_item_group_impl.js +6 -8
  15. package/dist/private/client_monitored_item_group_impl.js.map +1 -1
  16. package/dist/private/client_monitored_item_impl.d.ts +10 -9
  17. package/dist/private/client_monitored_item_impl.js +40 -26
  18. package/dist/private/client_monitored_item_impl.js.map +1 -1
  19. package/dist/private/client_session_impl.d.ts +1 -0
  20. package/dist/private/client_session_impl.js +12 -0
  21. package/dist/private/client_session_impl.js.map +1 -1
  22. package/dist/private/client_subscription_impl.d.ts +7 -4
  23. package/dist/private/client_subscription_impl.js +101 -77
  24. package/dist/private/client_subscription_impl.js.map +1 -1
  25. package/dist/private/opcua_client_impl.d.ts +1 -0
  26. package/dist/private/opcua_client_impl.js +11 -0
  27. package/dist/private/opcua_client_impl.js.map +1 -1
  28. package/package.json +42 -42
  29. package/source/client_monitored_item.ts +5 -4
  30. package/source/client_monitored_item_base.ts +13 -8
  31. package/source/client_monitored_item_toolbox.ts +24 -20
  32. package/source/client_session_keepalive_manager.ts +44 -11
  33. package/source/private/client_base_impl.ts +27 -6
  34. package/source/private/client_monitored_item_group_impl.ts +15 -16
  35. package/source/private/client_monitored_item_impl.ts +56 -38
  36. package/source/private/client_session_impl.ts +29 -14
  37. package/source/private/client_subscription_impl.ts +151 -91
  38. package/source/private/opcua_client_impl.ts +13 -0
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * @module node-opcua-client
3
3
  */
4
- import type { EventEmitter } from "events";
4
+ import type { EventEmitter } from "node:events";
5
5
  import { type DataValue, TimestampsToReturn } from "node-opcua-data-value";
6
6
  import type { ReadValueIdOptions } from "node-opcua-service-read";
7
- import { type MonitoringParametersOptions } from "node-opcua-types";
7
+ import type { MonitoringParametersOptions } from "node-opcua-types";
8
8
  import type { Variant } from "node-opcua-variant";
9
9
  import type { ClientMonitoredItemBase, ClientMonitoredItemOrGroupAction } from "./client_monitored_item_base";
10
10
  import type { ClientSubscription } from "./client_subscription";
@@ -15,6 +15,6 @@ export interface ClientMonitoredItem extends ClientMonitoredItemBase, ClientMoni
15
15
  on(event: "initialized", eventHandler: () => void): this;
16
16
  on(event: "err", eventHandler: (message: string) => void): this;
17
17
  }
18
- export declare class ClientMonitoredItem {
19
- static create(subscription: ClientSubscription, itemToMonitor: ReadValueIdOptions, monitoringParameters: MonitoringParametersOptions, timestampsToReturn?: TimestampsToReturn): ClientMonitoredItem;
18
+ export declare namespace ClientMonitoredItem {
19
+ let create: (subscription: ClientSubscription, itemToMonitor: ReadValueIdOptions, monitoringParameters: MonitoringParametersOptions, timestampsToReturn?: TimestampsToReturn) => ClientMonitoredItem;
20
20
  }
@@ -2,11 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ClientMonitoredItem = void 0;
4
4
  const node_opcua_data_value_1 = require("node-opcua-data-value");
5
- class ClientMonitoredItem {
6
- static create(subscription, itemToMonitor, monitoringParameters, timestampsToReturn = node_opcua_data_value_1.TimestampsToReturn.Neither) {
5
+ // eslint-disable-next-line @typescript-eslint/no-namespace
6
+ var ClientMonitoredItem;
7
+ (function (ClientMonitoredItem) {
8
+ ClientMonitoredItem.create = function (subscription, itemToMonitor, monitoringParameters, timestampsToReturn = node_opcua_data_value_1.TimestampsToReturn.Neither) {
7
9
  /* c8 ignore next*/
8
10
  throw new Error("unimplemented");
9
- }
10
- }
11
- exports.ClientMonitoredItem = ClientMonitoredItem;
11
+ };
12
+ })(ClientMonitoredItem || (exports.ClientMonitoredItem = ClientMonitoredItem = {}));
12
13
  //# sourceMappingURL=client_monitored_item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client_monitored_item.js","sourceRoot":"","sources":["../source/client_monitored_item.ts"],"names":[],"mappings":";;;AAKA,iEAA2E;AAmB3E,MAAa,mBAAmB;IACrB,MAAM,CAAC,MAAM,CAChB,YAAgC,EAChC,aAAiC,EACjC,oBAAiD,EACjD,qBAAyC,0CAAkB,CAAC,OAAO;QAEnE,mBAAmB;QACnB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC;CACJ;AAVD,kDAUC"}
1
+ {"version":3,"file":"client_monitored_item.js","sourceRoot":"","sources":["../source/client_monitored_item.ts"],"names":[],"mappings":";;;AAKA,iEAA2E;AAmB3E,2DAA2D;AAC3D,IAAiB,mBAAmB,CAUnC;AAVD,WAAiB,mBAAmB;IACrB,0BAAM,GAAG,UAChB,YAAgC,EAChC,aAAiC,EACjC,oBAAiD,EACjD,qBAAyC,0CAAkB,CAAC,OAAO;QAEnE,mBAAmB;QACnB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC,CAAA;AACL,CAAC,EAVgB,mBAAmB,mCAAnB,mBAAmB,QAUnC"}
@@ -1,22 +1,22 @@
1
1
  /**
2
2
  * @module node-opcua-client
3
3
  */
4
- import type { EventEmitter } from "events";
5
- import { type AttributeIds } from "node-opcua-basic-types";
4
+ import type { EventEmitter } from "node:events";
5
+ import type { AttributeIds } from "node-opcua-basic-types";
6
6
  import type { QualifiedNameLike } from "node-opcua-data-model";
7
7
  import type { DataValue } from "node-opcua-data-value";
8
8
  import type { ExtensionObject } from "node-opcua-extension-object";
9
9
  import type { NodeId } from "node-opcua-nodeid";
10
10
  import type { NumericRange } from "node-opcua-numeric-range";
11
11
  import type { TimestampsToReturn } from "node-opcua-service-read";
12
- import type { MonitoredItemCreateResult, MonitoringMode, MonitoringParameters, MonitoringParametersOptions } from "node-opcua-service-subscription";
12
+ import type { MonitoredItemCreateResult, MonitoredItemModifyResult, MonitoringMode, MonitoringParameters, MonitoringParametersOptions } from "node-opcua-service-subscription";
13
13
  import type { Callback, ErrorCallback, StatusCode } from "node-opcua-status-code";
14
14
  import type { Variant } from "node-opcua-variant";
15
15
  import type { ClientSubscription } from "./client_subscription";
16
16
  export interface ClientMonitoredItemOrGroupAction {
17
- modify(parameters: MonitoringParametersOptions, timestampsToReturn?: TimestampsToReturn): Promise<StatusCode>;
18
- modify(parameters: MonitoringParametersOptions, callback: Callback<StatusCode>): void;
19
- modify(parameters: MonitoringParametersOptions, timestampsToReturn: TimestampsToReturn | null, callback: Callback<StatusCode>): void;
17
+ modify(parameters: MonitoringParametersOptions, timestampsToReturn?: TimestampsToReturn): Promise<MonitoredItemModifyResult>;
18
+ modify(parameters: MonitoringParametersOptions, callback: Callback<MonitoredItemModifyResult>): void;
19
+ modify(parameters: MonitoringParametersOptions, timestampsToReturn: TimestampsToReturn | null, callback: Callback<MonitoredItemModifyResult>): void;
20
20
  setMonitoringMode(monitoringMode: MonitoringMode): Promise<StatusCode>;
21
21
  setMonitoringMode(monitoringMode: MonitoringMode, callback: Callback<StatusCode>): void;
22
22
  terminate(): Promise<void>;
@@ -40,7 +40,7 @@ export interface ClientMonitoredItemBase {
40
40
  readonly subscription: ClientSubscription;
41
41
  readonly monitoringMode: MonitoringMode;
42
42
  readonly statusCode: StatusCode;
43
- readonly monitoredItemId?: any;
43
+ readonly monitoredItemId?: number;
44
44
  readonly result?: MonitoredItemCreateResult;
45
45
  readonly filterResult?: ExtensionObject;
46
46
  }
@@ -1,6 +1,6 @@
1
1
  import type { TimestampsToReturn } from "node-opcua-data-value";
2
2
  import { type MonitoredItemModifyResult, type MonitoringMode } from "node-opcua-service-subscription";
3
- import { type Callback, type ErrorCallback, type StatusCode } from "node-opcua-status-code";
3
+ import type { Callback, ErrorCallback, StatusCode } from "node-opcua-status-code";
4
4
  import type { MonitoringParametersOptions } from "node-opcua-types";
5
5
  import type { ClientMonitoredItemBase } from "./client_monitored_item_base";
6
6
  import type { ClientSubscription } from "./client_subscription";
@@ -10,8 +10,8 @@ export interface ClientMonitoredItemBaseEx extends ClientMonitoredItemBase {
10
10
  /**
11
11
  * @internal
12
12
  */
13
- export declare class ClientMonitoredItemToolbox {
14
- static _toolbox_monitor(subscription: ClientSubscription, timestampsToReturn: TimestampsToReturn, monitoredItems: ClientMonitoredItemBase[], done: ErrorCallback): void;
15
- static _toolbox_modify(subscription: ClientSubscription, monitoredItems: ClientMonitoredItemBase[], parameters: MonitoringParametersOptions, timestampsToReturn: TimestampsToReturn, callback: Callback<MonitoredItemModifyResult[]>): void;
16
- static _toolbox_setMonitoringMode(subscription: ClientSubscription, monitoredItems: ClientMonitoredItemBaseEx[], monitoringMode: MonitoringMode, callback: Callback<StatusCode[]>): void;
13
+ export declare namespace ClientMonitoredItemToolbox {
14
+ function _toolbox_monitor(subscription: ClientSubscription, timestampsToReturn: TimestampsToReturn, monitoredItems: ClientMonitoredItemBase[], done: ErrorCallback): void;
15
+ function _toolbox_modify(subscription: ClientSubscription, monitoredItems: ClientMonitoredItemBase[], parameters: MonitoringParametersOptions, timestampsToReturn: TimestampsToReturn, callback: Callback<MonitoredItemModifyResult[]>): void;
16
+ function _toolbox_setMonitoringMode(subscription: ClientSubscription, monitoredItems: ClientMonitoredItemBaseEx[], monitoringMode: MonitoringMode, callback: Callback<StatusCode[]>): void;
17
17
  }
@@ -12,27 +12,24 @@ const node_opcua_assert_1 = require("node-opcua-assert");
12
12
  const node_opcua_debug_1 = require("node-opcua-debug");
13
13
  const node_opcua_service_subscription_1 = require("node-opcua-service-subscription");
14
14
  const debugLog = (0, node_opcua_debug_1.make_debugLog)(__filename);
15
- const doDebug = (0, node_opcua_debug_1.checkDebugFlag)(__filename);
15
+ const _doDebug = (0, node_opcua_debug_1.checkDebugFlag)(__filename);
16
16
  /**
17
17
  * @internal
18
18
  */
19
- class ClientMonitoredItemToolbox {
20
- static _toolbox_monitor(subscription, timestampsToReturn, monitoredItems, done) {
19
+ var ClientMonitoredItemToolbox;
20
+ (function (ClientMonitoredItemToolbox) {
21
+ function _toolbox_monitor(subscription, timestampsToReturn, monitoredItems, done) {
21
22
  (0, node_opcua_assert_1.assert)(typeof done === "function");
22
23
  // we expect subscription to be valid and have a valid session
23
24
  if (!subscription.hasSession) {
24
25
  const err0 = new Error("Invalid subscription");
25
- if (done) {
26
- return done(err0);
27
- }
26
+ done(err0);
28
27
  return;
29
28
  }
30
29
  // may be the subscription has been terminated or is not fully initialize, in the meantime
31
30
  if (!subscription.isActive) {
32
31
  const err1 = new Error("Subscription has been terminated or is not fully initialized");
33
- if (done) {
34
- return done(err1);
35
- }
32
+ done(err1);
36
33
  return;
37
34
  }
38
35
  const itemsToCreate = [];
@@ -40,7 +37,8 @@ class ClientMonitoredItemToolbox {
40
37
  const monitoredItemI = monitoredItem;
41
38
  const itemToCreate = monitoredItemI._prepare_for_monitoring();
42
39
  if (typeof itemToCreate.error === "string") {
43
- return done(new Error(itemToCreate.error));
40
+ done(new Error(itemToCreate.error));
41
+ return;
44
42
  }
45
43
  itemsToCreate.push(itemToCreate);
46
44
  }
@@ -75,7 +73,8 @@ class ClientMonitoredItemToolbox {
75
73
  done(err ? err : undefined);
76
74
  });
77
75
  }
78
- static _toolbox_modify(subscription, monitoredItems, parameters, timestampsToReturn, callback) {
76
+ ClientMonitoredItemToolbox._toolbox_monitor = _toolbox_monitor;
77
+ function _toolbox_modify(subscription, monitoredItems, parameters, timestampsToReturn, callback) {
79
78
  (0, node_opcua_assert_1.assert)(callback === undefined || typeof callback === "function");
80
79
  const itemsToModify = monitoredItems.map((monitoredItem) => {
81
80
  const clientHandle = monitoredItem.monitoringParameters.clientHandle;
@@ -98,22 +97,26 @@ class ClientMonitoredItemToolbox {
98
97
  session.modifyMonitoredItems(modifyMonitoredItemsRequest, (err, response) => {
99
98
  /* c8 ignore next */
100
99
  if (err) {
101
- return callback(err);
100
+ callback(err);
101
+ return;
102
102
  }
103
103
  if (!response || !(response instanceof node_opcua_service_subscription_1.ModifyMonitoredItemsResponse)) {
104
- return callback(new Error("internal error"));
104
+ callback(new Error("internal error"));
105
+ return;
105
106
  }
106
107
  response.results = response.results || [];
107
108
  (0, node_opcua_assert_1.assert)(response.results.length === monitoredItems.length);
108
109
  const res = response.results[0];
109
110
  /* c8 ignore next */
110
111
  if (response.results.length === 1 && res.statusCode.isNotGood()) {
111
- return callback(new Error("Error" + res.statusCode.toString()));
112
+ callback(new Error(`Error${res.statusCode.toString()}`));
113
+ return;
112
114
  }
113
115
  callback(null, response.results);
114
116
  });
115
117
  }
116
- static _toolbox_setMonitoringMode(subscription, monitoredItems, monitoringMode, callback) {
118
+ ClientMonitoredItemToolbox._toolbox_modify = _toolbox_modify;
119
+ function _toolbox_setMonitoringMode(subscription, monitoredItems, monitoringMode, callback) {
117
120
  const monitoredItemIds = monitoredItems.map((monitoredItem) => monitoredItem.monitoredItemId);
118
121
  const setMonitoringModeRequest = {
119
122
  monitoredItemIds,
@@ -124,16 +127,20 @@ class ClientMonitoredItemToolbox {
124
127
  (0, node_opcua_assert_1.assert)(session, "expecting a valid session attached to the subscription ");
125
128
  session.setMonitoringMode(setMonitoringModeRequest, (err, response) => {
126
129
  if (err) {
127
- return callback(err);
130
+ callback(err);
131
+ return;
132
+ }
133
+ if (!response) {
134
+ callback(new Error("internal error"));
135
+ return;
128
136
  }
129
137
  monitoredItems.forEach((monitoredItem) => {
130
138
  monitoredItem.internalSetMonitoringMode(monitoringMode);
131
139
  });
132
- response = response;
133
140
  response.results = response.results || [];
134
141
  callback(null, response.results);
135
142
  });
136
143
  }
137
- }
138
- exports.ClientMonitoredItemToolbox = ClientMonitoredItemToolbox;
144
+ ClientMonitoredItemToolbox._toolbox_setMonitoringMode = _toolbox_setMonitoringMode;
145
+ })(ClientMonitoredItemToolbox || (exports.ClientMonitoredItemToolbox = ClientMonitoredItemToolbox = {}));
139
146
  //# sourceMappingURL=client_monitored_item_toolbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client_monitored_item_toolbox.js","sourceRoot":"","sources":["../source/client_monitored_item_toolbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client_monitored_item_toolbox.js","sourceRoot":"","sources":["../source/client_monitored_item_toolbox.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import type { ClientSessionImpl } from "./private/client_session_impl";
7
7
  export interface ClientSessionKeepAliveManagerEvents {
8
8
  on(event: "keepalive", eventHandler: (lastKnownServerState: ServerState, count: number) => void): this;
9
9
  on(event: "failure", eventHandler: () => void): this;
10
+ on(event: "keepalive_failure", eventHandler: () => void): this;
10
11
  }
11
12
  export declare class ClientSessionKeepAliveManager extends EventEmitter implements ClientSessionKeepAliveManagerEvents {
12
13
  private readonly session;
@@ -14,6 +15,7 @@ export declare class ClientSessionKeepAliveManager extends EventEmitter implemen
14
15
  private pingTimeout;
15
16
  private lastKnownState?;
16
17
  private transactionInProgress;
18
+ private consecutiveFailures;
17
19
  count: number;
18
20
  checkInterval: number;
19
21
  constructor(session: ClientSessionImpl);
@@ -16,16 +16,19 @@ const node_opcua_constants_1 = require("node-opcua-constants");
16
16
  const node_opcua_debug_1 = require("node-opcua-debug");
17
17
  const node_opcua_nodeid_1 = require("node-opcua-nodeid");
18
18
  const node_opcua_secure_channel_1 = require("node-opcua-secure-channel");
19
+ const node_opcua_status_code_1 = require("node-opcua-status-code");
19
20
  const serverStatusStateNodeId = (0, node_opcua_nodeid_1.coerceNodeId)(node_opcua_constants_1.VariableIds.Server_ServerStatus_State);
20
21
  const debugLog = (0, node_opcua_debug_1.make_debugLog)(__filename);
21
22
  const doDebug = (0, node_opcua_debug_1.checkDebugFlag)(__filename);
22
23
  const warningLog = (0, node_opcua_debug_1.make_warningLog)(__filename);
24
+ const maxBackoffInterval = 60_000;
23
25
  class ClientSessionKeepAliveManager extends events_1.EventEmitter {
24
26
  session;
25
27
  timerId;
26
28
  pingTimeout;
27
29
  lastKnownState;
28
30
  transactionInProgress = false;
31
+ consecutiveFailures = 0;
29
32
  count = 0;
30
33
  checkInterval;
31
34
  constructor(session) {
@@ -69,7 +72,9 @@ class ClientSessionKeepAliveManager extends events_1.EventEmitter {
69
72
  return; // stop here
70
73
  }
71
74
  if (this.timerId) {
72
- const timeout = Math.max(1, this.checkInterval - delta);
75
+ // When delta exceeds checkInterval it is an explicit backoff requested by _ping_server;
76
+ // otherwise delta is the time already consumed this cycle.
77
+ const timeout = delta > this.checkInterval ? delta : Math.max(1, this.checkInterval - delta);
73
78
  this.timerId = setTimeout(() => this.ping_server(), timeout);
74
79
  }
75
80
  });
@@ -118,17 +123,39 @@ class ClientSessionKeepAliveManager extends events_1.EventEmitter {
118
123
  attributeId: node_opcua_basic_types_1.AttributeIds.Value
119
124
  }, (err, dataValue) => {
120
125
  this.transactionInProgress = false;
121
- if (err || !dataValue || !dataValue.value) {
122
- if (err) {
123
- warningLog(chalk_1.default.cyan(" warning : ClientSessionKeepAliveManager#ping_server "), chalk_1.default.yellow(err.message));
126
+ if (err) {
127
+ warningLog(chalk_1.default.cyan(" warning : ClientSessionKeepAliveManager#ping_server "), chalk_1.default.yellow(err.message));
128
+ const serviceFaultResponse = err.response;
129
+ if (serviceFaultResponse) {
130
+ const sc = serviceFaultResponse.responseHeader?.serviceResult;
131
+ if (sc?.equals(node_opcua_status_code_1.StatusCodes.BadSessionIdInvalid) || sc?.equals(node_opcua_status_code_1.StatusCodes.BadSessionClosed)) {
132
+ this.emit("failure");
133
+ warningLog("Keep alive has failed, considering a network outage is in place, forcing a reconnection");
134
+ terminateConnection(session._client);
135
+ resolve(0);
136
+ }
137
+ else {
138
+ this.consecutiveFailures++;
139
+ warningLog("Keep alive received ServiceFault from server (session intact):", sc?.toString());
140
+ this.emit("keepalive_failure");
141
+ resolve(Math.min(this.checkInterval * 2 ** this.consecutiveFailures, maxBackoffInterval));
142
+ }
124
143
  }
144
+ else {
145
+ this.emit("failure");
146
+ warningLog("Keep alive has failed, considering a network outage is in place, forcing a reconnection");
147
+ terminateConnection(session._client);
148
+ resolve(0);
149
+ }
150
+ return;
151
+ }
152
+ if (!dataValue || !dataValue.value) {
125
153
  /**
126
154
  * @event failure
127
155
  * raised when the server is not responding or is responding with en error to
128
156
  * the keep alive read Variable value transaction
129
157
  */
130
158
  this.emit("failure");
131
- // also simulate a connection by closing the channel abruptly from our end ...
132
159
  warningLog("Keep alive has failed, considering a network outage is in place, forcing a reconnection");
133
160
  terminateConnection(session._client);
134
161
  resolve(0);
@@ -143,6 +170,7 @@ class ClientSessionKeepAliveManager extends events_1.EventEmitter {
143
170
  this.lastKnownState = newState;
144
171
  this.count++; // increase successful counter
145
172
  }
173
+ this.consecutiveFailures = 0;
146
174
  debugLog("emit keepalive");
147
175
  this.emit("keepalive", this.lastKnownState, this.count);
148
176
  resolve(0);
@@ -1 +1 @@
1
- {"version":3,"file":"client_session_keepalive_manager.js","sourceRoot":"","sources":["../source/client_session_keepalive_manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client_session_keepalive_manager.js","sourceRoot":"","sources":["../source/client_session_keepalive_manager.ts"],"names":[],"mappings":"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"}
@@ -161,7 +161,7 @@ function __findEndpoint(endpointUrl, params, _callback) {
161
161
  */
162
162
  async function _verify_serverCertificate(certificateManager, serverCertificate) {
163
163
  const status = await certificateManager.checkCertificate(serverCertificate);
164
- if (status !== node_opcua_status_code_1.StatusCodes.Good) {
164
+ if (!status.isGood()) {
165
165
  // c8 ignore next
166
166
  if (doDebug) {
167
167
  // do it again for debug purposes
@@ -1166,12 +1166,36 @@ class ClientBaseImpl extends node_opcua_common_1.OPCUASecureObject {
1166
1166
  .catch((err1) => {
1167
1167
  warningLog("[NODE-OPCUA-W25] client's server certificate verification has failed ", err1.message);
1168
1168
  warningLog(" clientCertificateManager.rootDir = ", this.clientCertificateManager.rootDir);
1169
- const f = (b) => ` ${b.toString("base64").replace(/(.{80})/g, "$1\n ")}`;
1170
1169
  const chain = (0, web_1.split_der)(endpoint.serverCertificate);
1171
- warningLog(` server certificate contains ${chain.length} elements`);
1170
+ warningLog(` server certificate chain contains ${chain.length} element(s)`);
1172
1171
  for (let i = 0; i < chain.length; i++) {
1173
1172
  const c = chain[i];
1174
- warningLog("certificate", i, `\n${f(c)}`);
1173
+ const thumbprint = (0, web_1.makeSHA1Thumbprint)(c).toString("hex");
1174
+ try {
1175
+ const { exploreCertificate } = require("node-opcua-crypto");
1176
+ const info = exploreCertificate(c);
1177
+ const tbs = info.tbsCertificate;
1178
+ const cn = tbs.subject?.commonName ?? "unknown";
1179
+ const issuerCN = tbs.issuer?.commonName ?? "unknown";
1180
+ const isCA = tbs.extensions?.basicConstraints?.cA === true;
1181
+ const isSelfSigned = JSON.stringify(tbs.subject) === JSON.stringify(tbs.issuer);
1182
+ const certType = isCA
1183
+ ? (isSelfSigned ? "Root CA" : "Intermediate CA")
1184
+ : (isSelfSigned ? "Application (self-signed)" : "Application (CA-signed)");
1185
+ const ski = tbs.extensions?.subjectKeyIdentifier ?? "-";
1186
+ const aki = tbs.extensions?.authorityKeyIdentifier?.keyIdentifier ?? "-";
1187
+ const notBefore = tbs.validity.notBefore.toISOString();
1188
+ const notAfter = tbs.validity.notAfter.toISOString();
1189
+ warningLog(` [${i + 1}/${chain.length}] "${cn}" (${certType})`);
1190
+ warningLog(` thumbprint: ${thumbprint}`);
1191
+ warningLog(` issuer: "${issuerCN}"`);
1192
+ warningLog(` SKI: ${ski}`);
1193
+ warningLog(` AKI: ${aki}`);
1194
+ warningLog(` validity: ${notBefore} → ${notAfter}`);
1195
+ }
1196
+ catch {
1197
+ warningLog(` [${i + 1}/${chain.length}] thumbprint: ${thumbprint} (details unavailable)`);
1198
+ }
1175
1199
  }
1176
1200
  if (chain.length > 1) {
1177
1201
  warningLog(" verify also that the issuer certificate is trusted and the issuer's certificate is present in the issuer.cert folder\n" +