node-opcua-server 2.51.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.
Files changed (100) hide show
  1. package/.mocharc.yml +10 -0
  2. package/LICENSE +20 -0
  3. package/dist/base_server.d.ts +110 -0
  4. package/dist/base_server.js +476 -0
  5. package/dist/base_server.js.map +1 -0
  6. package/dist/factory.d.ts +10 -0
  7. package/dist/factory.js +24 -0
  8. package/dist/factory.js.map +1 -0
  9. package/dist/history_server_capabilities.d.ts +35 -0
  10. package/dist/history_server_capabilities.js +44 -0
  11. package/dist/history_server_capabilities.js.map +1 -0
  12. package/dist/i_channel_data.d.ts +13 -0
  13. package/dist/i_channel_data.js +3 -0
  14. package/dist/i_channel_data.js.map +1 -0
  15. package/dist/i_register_server_manager.d.ts +16 -0
  16. package/dist/i_register_server_manager.js +3 -0
  17. package/dist/i_register_server_manager.js.map +1 -0
  18. package/dist/i_server_side_publish_engine.d.ts +36 -0
  19. package/dist/i_server_side_publish_engine.js +50 -0
  20. package/dist/i_server_side_publish_engine.js.map +1 -0
  21. package/dist/i_socket_data.d.ts +11 -0
  22. package/dist/i_socket_data.js +3 -0
  23. package/dist/i_socket_data.js.map +1 -0
  24. package/dist/index.d.ts +14 -0
  25. package/dist/index.js +27 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/monitored_item.d.ts +173 -0
  28. package/dist/monitored_item.js +1006 -0
  29. package/dist/monitored_item.js.map +1 -0
  30. package/dist/node_sampler.d.ts +3 -0
  31. package/dist/node_sampler.js +76 -0
  32. package/dist/node_sampler.js.map +1 -0
  33. package/dist/opcua_server.d.ts +668 -0
  34. package/dist/opcua_server.js +2407 -0
  35. package/dist/opcua_server.js.map +1 -0
  36. package/dist/queue.d.ts +11 -0
  37. package/dist/queue.js +71 -0
  38. package/dist/queue.js.map +1 -0
  39. package/dist/register_server_manager.d.ts +92 -0
  40. package/dist/register_server_manager.js +574 -0
  41. package/dist/register_server_manager.js.map +1 -0
  42. package/dist/register_server_manager_hidden.d.ts +17 -0
  43. package/dist/register_server_manager_hidden.js +28 -0
  44. package/dist/register_server_manager_hidden.js.map +1 -0
  45. package/dist/register_server_manager_mdns_only.d.ts +19 -0
  46. package/dist/register_server_manager_mdns_only.js +58 -0
  47. package/dist/register_server_manager_mdns_only.js.map +1 -0
  48. package/dist/server_capabilities.d.ts +61 -0
  49. package/dist/server_capabilities.js +109 -0
  50. package/dist/server_capabilities.js.map +1 -0
  51. package/dist/server_end_point.d.ts +180 -0
  52. package/dist/server_end_point.js +825 -0
  53. package/dist/server_end_point.js.map +1 -0
  54. package/dist/server_engine.d.ts +311 -0
  55. package/dist/server_engine.js +1659 -0
  56. package/dist/server_engine.js.map +1 -0
  57. package/dist/server_publish_engine.d.ts +109 -0
  58. package/dist/server_publish_engine.js +531 -0
  59. package/dist/server_publish_engine.js.map +1 -0
  60. package/dist/server_publish_engine_for_orphan_subscriptions.d.ts +16 -0
  61. package/dist/server_publish_engine_for_orphan_subscriptions.js +50 -0
  62. package/dist/server_publish_engine_for_orphan_subscriptions.js.map +1 -0
  63. package/dist/server_session.d.ts +176 -0
  64. package/dist/server_session.js +734 -0
  65. package/dist/server_session.js.map +1 -0
  66. package/dist/server_subscription.d.ts +393 -0
  67. package/dist/server_subscription.js +1313 -0
  68. package/dist/server_subscription.js.map +1 -0
  69. package/dist/sessions_compatible_for_transfer.d.ts +2 -0
  70. package/dist/sessions_compatible_for_transfer.js +36 -0
  71. package/dist/sessions_compatible_for_transfer.js.map +1 -0
  72. package/dist/validate_filter.d.ts +5 -0
  73. package/dist/validate_filter.js +64 -0
  74. package/dist/validate_filter.js.map +1 -0
  75. package/package.json +88 -0
  76. package/source/base_server.ts +617 -0
  77. package/source/factory.ts +25 -0
  78. package/source/history_server_capabilities.ts +75 -0
  79. package/source/i_channel_data.ts +17 -0
  80. package/source/i_register_server_manager.ts +24 -0
  81. package/source/i_server_side_publish_engine.ts +77 -0
  82. package/source/i_socket_data.ts +11 -0
  83. package/source/index.ts +14 -0
  84. package/source/monitored_item.ts +1303 -0
  85. package/source/node_sampler.ts +82 -0
  86. package/source/opcua_server.ts +3742 -0
  87. package/source/queue.ts +73 -0
  88. package/source/register_server_manager.ts +744 -0
  89. package/source/register_server_manager_hidden.ts +33 -0
  90. package/source/register_server_manager_mdns_only.ts +69 -0
  91. package/source/server_capabilities.ts +177 -0
  92. package/source/server_end_point.ts +1182 -0
  93. package/source/server_engine.ts +2167 -0
  94. package/source/server_publish_engine.ts +657 -0
  95. package/source/server_publish_engine_for_orphan_subscriptions.ts +52 -0
  96. package/source/server_session.ts +931 -0
  97. package/source/server_subscription.ts +1792 -0
  98. package/source/sessions_compatible_for_transfer.ts +33 -0
  99. package/source/validate_filter.ts +86 -0
  100. package/test_helpers/create_certificates.js +1 -0
@@ -0,0 +1,668 @@
1
+ /**
2
+ * @module node-opcua-server
3
+ */
4
+ /// <reference types="node" />
5
+ import { EventEmitter } from "events";
6
+ import { IUserManager, PseudoVariantBoolean, PseudoVariantByteString, PseudoVariantDateTime, PseudoVariantDuration, PseudoVariantExtensionObject, PseudoVariantExtensionObjectArray, PseudoVariantLocalizedText, PseudoVariantNodeId, PseudoVariantString, RaiseEventData } from "node-opcua-address-space";
7
+ import { OPCUACertificateManager } from "node-opcua-certificate-manager";
8
+ import { Certificate, Nonce } from "node-opcua-crypto";
9
+ import { NodeId } from "node-opcua-nodeid";
10
+ import { ObjectRegistry } from "node-opcua-object-registry";
11
+ import { Message, MessageSecurityMode, Request, Response, SecurityPolicy, ServerSecureChannelLayer, SignatureData } from "node-opcua-secure-channel";
12
+ import { UserNameIdentityToken, X509IdentityToken } from "node-opcua-service-session";
13
+ import { DeleteSubscriptionsResponse, SetPublishingModeResponse, TransferSubscriptionsResponse } from "node-opcua-service-subscription";
14
+ import { StatusCode } from "node-opcua-status-code";
15
+ import { ApplicationDescriptionOptions, BuildInfo, EndpointDescription, UserIdentityToken } from "node-opcua-types";
16
+ import { OPCUABaseServer, OPCUABaseServerOptions } from "./base_server";
17
+ import { IRegisterServerManager } from "./i_register_server_manager";
18
+ import { ServerCapabilitiesOptions } from "./server_capabilities";
19
+ import { OPCUAServerEndPoint } from "./server_end_point";
20
+ import { ServerEngine } from "./server_engine";
21
+ import { ServerSession } from "./server_session";
22
+ import { CreateMonitoredItemHook, DeleteMonitoredItemHook, Subscription } from "./server_subscription";
23
+ import { ISocketData } from "./i_socket_data";
24
+ import { IChannelData } from "./i_channel_data";
25
+ export declare type ValidUserFunc = (this: ServerSession, username: string, password: string) => boolean;
26
+ export declare type ValidUserAsyncFunc = (this: ServerSession, username: string, password: string, callback: (err: Error | null, isAuthorized?: boolean) => void) => void;
27
+ export interface UserManagerOptions extends IUserManager {
28
+ /** synchronous function to check the credentials - can be overruled by isValidUserAsync */
29
+ isValidUser?: ValidUserFunc;
30
+ /** asynchronous function to check if the credentials - overrules isValidUser */
31
+ isValidUserAsync?: ValidUserAsyncFunc;
32
+ }
33
+ export declare enum RegisterServerMethod {
34
+ HIDDEN = 1,
35
+ MDNS = 2,
36
+ LDS = 3
37
+ }
38
+ export interface OPCUAServerEndpointOptions {
39
+ /**
40
+ * the primary hostname of the endpoint.
41
+ * @default getFullyQualifiedDomainName()
42
+ */
43
+ hostname?: string;
44
+ /**
45
+ * the TCP port to listen to.
46
+ * @default 26543
47
+ */
48
+ port?: number;
49
+ /**
50
+ * the possible security policies that the server will expose
51
+ * @default [SecurityPolicy.None, SecurityPolicy.Basic128Rsa15, SecurityPolicy.Basic256Sha256]
52
+ */
53
+ securityPolicies?: SecurityPolicy[];
54
+ /**
55
+ * the possible security mode that the server will expose
56
+ * @default [MessageSecurityMode.None, MessageSecurityMode.Sign, MessageSecurityMode.SignAndEncrypt]
57
+ */
58
+ securityModes?: MessageSecurityMode[];
59
+ /**
60
+ * tells if the server default endpoints should allow anonymous connection.
61
+ * @default true
62
+ */
63
+ allowAnonymous?: boolean;
64
+ /** alternate hostname or IP to use */
65
+ alternateHostname?: string | string[];
66
+ /**
67
+ * true, if discovery service on secure channel shall be disabled
68
+ */
69
+ disableDiscovery?: boolean;
70
+ }
71
+ export interface OPCUAServerOptions extends OPCUABaseServerOptions, OPCUAServerEndpointOptions {
72
+ alternateEndpoints?: OPCUAServerEndpointOptions[];
73
+ /**
74
+ * the server certificate full path filename
75
+ *
76
+ * the certificate should be in PEM format
77
+ */
78
+ certificateFile?: string;
79
+ /**
80
+ * the server private key full path filename
81
+ *
82
+ * This file should contains the private key that has been used to generate
83
+ * the server certificate file.
84
+ *
85
+ * the private key should be in PEM format
86
+ *
87
+ */
88
+ privateKeyFile?: string;
89
+ /**
90
+ * the default secure token life time in ms.
91
+ */
92
+ defaultSecureTokenLifetime?: number;
93
+ /**
94
+ * the HEL/ACK transaction timeout in ms.
95
+ *
96
+ * Use a large value ( i.e 15000 ms) for slow connections or embedded devices.
97
+ * @default 10000
98
+ */
99
+ timeout?: number;
100
+ /**
101
+ * the maximum number of simultaneous sessions allowed.
102
+ * @default 10
103
+ */
104
+ maxAllowedSessionNumber?: number;
105
+ /**
106
+ * the maximum number authorized simultaneous connections per endpoint
107
+ * @default 10
108
+ */
109
+ maxConnectionsPerEndpoint?: number;
110
+ /**
111
+ * the nodeset.xml file(s) to load
112
+ *
113
+ * node-opcua comes with pre-installed node-set files that can be used
114
+ *
115
+ * example:
116
+ *
117
+ * ``` javascript
118
+ *
119
+ * ```
120
+ */
121
+ nodeset_filename?: string[] | string;
122
+ /**
123
+ * the server Info
124
+ *
125
+ * this object contains the value that will populate the
126
+ * Root/ObjectS/Server/ServerInfo OPCUA object in the address space.
127
+ */
128
+ serverInfo?: ApplicationDescriptionOptions;
129
+ buildInfo?: {
130
+ productName?: string;
131
+ productUri?: string | null;
132
+ manufacturerName?: string;
133
+ softwareVersion?: string;
134
+ buildNumber?: string;
135
+ buildDate?: Date;
136
+ };
137
+ /**
138
+ * an object that implements user authentication methods
139
+ */
140
+ userManager?: UserManagerOptions;
141
+ /** resource Path is a string added at the end of the url such as "/UA/Server" */
142
+ resourcePath?: string;
143
+ /**
144
+ *
145
+ */
146
+ serverCapabilities?: ServerCapabilitiesOptions;
147
+ /**
148
+ * if server shall raise AuditingEvent
149
+ * @default true
150
+ */
151
+ isAuditing?: boolean;
152
+ /**
153
+ * strategy used by the server to declare itself to a discovery server
154
+ *
155
+ * - HIDDEN: the server doesn't expose itself to the external world
156
+ * - MDNS: the server publish itself to the mDNS Multicast network directly
157
+ * - LDS: the server registers itself to the LDS or LDS-ME (Local Discovery Server)
158
+ *
159
+ * @default RegisterServerMethod.HIDDEN - by default the server
160
+ * will not register itself to the local discovery server
161
+ *
162
+ */
163
+ registerServerMethod?: RegisterServerMethod;
164
+ /**
165
+ *
166
+ * @default "opc.tcp://localhost:4840"]
167
+ */
168
+ discoveryServerEndpointUrl?: string;
169
+ /**
170
+ *
171
+ * supported server capabilities for the Multicast (mDNS)
172
+ * @default ["NA"]
173
+ * the possible values are any of node-opcua-discovery.serverCapabilities)
174
+ *
175
+ */
176
+ capabilitiesForMDNS?: string[];
177
+ /**
178
+ * user Certificate Manager
179
+ * this certificate manager holds the X509 certificates used
180
+ * by client that uses X509 certificate token to impersonate a user
181
+ */
182
+ userCertificateManager?: OPCUACertificateManager;
183
+ /**
184
+ * Server Certificate Manager
185
+ *
186
+ * this certificate manager will be used by the server to access
187
+ * and store certificates from the connecting clients
188
+ */
189
+ serverCertificateManager?: OPCUACertificateManager;
190
+ /**
191
+ *
192
+ */
193
+ onCreateMonitoredItem?: CreateMonitoredItemHook;
194
+ onDeleteMonitoredItem?: DeleteMonitoredItemHook;
195
+ }
196
+ export interface OPCUAServer {
197
+ /**
198
+ *
199
+ */
200
+ engine: ServerEngine;
201
+ /**
202
+ *
203
+ */
204
+ registerServerMethod: RegisterServerMethod;
205
+ /**
206
+ *
207
+ */
208
+ discoveryServerEndpointUrl: string;
209
+ /**
210
+ *
211
+ */
212
+ registerServerManager?: IRegisterServerManager;
213
+ /**
214
+ *
215
+ */
216
+ capabilitiesForMDNS: string[];
217
+ /**
218
+ *
219
+ */
220
+ userCertificateManager: OPCUACertificateManager;
221
+ }
222
+ /**
223
+ *
224
+ */
225
+ export declare class OPCUAServer extends OPCUABaseServer {
226
+ static defaultShutdownTimeout: number;
227
+ /**
228
+ * if requestExactEndpointUrl is set to true the server will only accept createSession that have a endpointUrl that strictly matches
229
+ * one of the provided endpoint.
230
+ * This mean that if the server expose a endpoint with url such as opc.tcp://MYHOSTNAME:1234, client will not be able to reach the server
231
+ * with the ip address of the server.
232
+ * requestExactEndpointUrl = true => emulates the Prosys Server behavior
233
+ * requestExactEndpointUrl = false => emulates the Unified Automation behavior.
234
+ */
235
+ static requestExactEndpointUrl: boolean;
236
+ /**
237
+ * total number of bytes written by the server since startup
238
+ */
239
+ get bytesWritten(): number;
240
+ /**
241
+ * total number of bytes read by the server since startup
242
+ */
243
+ get bytesRead(): number;
244
+ /**
245
+ * Number of transactions processed by the server since startup
246
+ */
247
+ get transactionsCount(): number;
248
+ /**
249
+ * The server build info
250
+ */
251
+ get buildInfo(): BuildInfo;
252
+ /**
253
+ * the number of connected channel on all existing end points
254
+ */
255
+ get currentChannelCount(): number;
256
+ /**
257
+ * The number of active subscriptions from all sessions
258
+ */
259
+ get currentSubscriptionCount(): number;
260
+ /**
261
+ * the number of session activation requests that have been rejected
262
+ */
263
+ get rejectedSessionCount(): number;
264
+ /**
265
+ * the number of request that have been rejected
266
+ */
267
+ get rejectedRequestsCount(): number;
268
+ /**
269
+ * the number of sessions that have been aborted
270
+ */
271
+ get sessionAbortCount(): number;
272
+ /**
273
+ * the publishing interval count
274
+ */
275
+ get publishingIntervalCount(): number;
276
+ /**
277
+ * the number of sessions currently active
278
+ */
279
+ get currentSessionCount(): number;
280
+ /**
281
+ * true if the server has been initialized
282
+ *
283
+ */
284
+ get initialized(): boolean;
285
+ /**
286
+ * is the server auditing ?
287
+ */
288
+ get isAuditing(): boolean;
289
+ static registry: ObjectRegistry;
290
+ static fallbackSessionName: string;
291
+ /**
292
+ * the maximum number of subscription that can be created per server
293
+ */
294
+ static MAX_SUBSCRIPTION: number;
295
+ /**
296
+ * the maximum number of concurrent sessions allowed on the server
297
+ */
298
+ maxAllowedSessionNumber: number;
299
+ /**
300
+ * the maximum number for concurrent connection per end point
301
+ */
302
+ maxConnectionsPerEndpoint: number;
303
+ /**
304
+ * false if anonymous connection are not allowed
305
+ */
306
+ allowAnonymous: boolean;
307
+ /**
308
+ * the user manager
309
+ */
310
+ userManager: UserManagerOptions;
311
+ readonly options: OPCUAServerOptions;
312
+ private objectFactory?;
313
+ private _delayInit?;
314
+ constructor(options?: OPCUAServerOptions);
315
+ /**
316
+ * Initialize the server by installing default node set.
317
+ *
318
+ * and instruct the server to listen to its endpoints.
319
+ *
320
+ * ```javascript
321
+ * const server = new OPCUAServer();
322
+ * await server.initialize();
323
+ *
324
+ * // default server namespace is now initialized
325
+ * // it is a good time to create life instance objects
326
+ * const namespace = server.engine.addressSpace.getOwnNamespace();
327
+ * namespace.addObject({
328
+ * browseName: "SomeObject",
329
+ * organizedBy: server.engine.addressSpace.rootFolder.objects
330
+ * });
331
+ *
332
+ * // the addressSpace is now complete
333
+ * // let's now start listening to clients
334
+ * await server.start();
335
+ * ```
336
+ */
337
+ initialize(): Promise<void>;
338
+ initialize(done: () => void): void;
339
+ /**
340
+ * Initiate the server by starting all its endpoints
341
+ * @async
342
+ */
343
+ start(): Promise<void>;
344
+ start(done: () => void): void;
345
+ /**
346
+ * shutdown all server endpoints
347
+ * @method shutdown
348
+ * @async
349
+ * @param timeout the timeout (in ms) before the server is actually shutdown
350
+ *
351
+ * @example
352
+ *
353
+ * ```javascript
354
+ * // shutdown immediately
355
+ * server.shutdown(function(err) {
356
+ * });
357
+ * ```
358
+ * ```ts
359
+ * // in typescript with promises
360
+ * server.shutdown(10000).then(()=>{
361
+ * console.log("Server has shutdown");
362
+ * });
363
+ * ```
364
+ * ```javascript
365
+ * // shutdown within 10 seconds
366
+ * server.engine .shutdownReason = coerceLocalizedText("Shutdown for maintenance");
367
+ * server.shutdown(10000,function(err) {
368
+ * });
369
+ * ```
370
+ */
371
+ shutdown(timeout?: number): Promise<void>;
372
+ shutdown(callback: (err?: Error) => void): void;
373
+ shutdown(timeout: number, callback: (err?: Error) => void): void;
374
+ dispose(): void;
375
+ /**
376
+ * create and register a new session
377
+ * @internal
378
+ */
379
+ protected createSession(options: any): ServerSession;
380
+ /**
381
+ * retrieve a session by authentication token
382
+ * @internal
383
+ */
384
+ protected getSession(authenticationToken: NodeId, activeOnly?: boolean): ServerSession | null;
385
+ /**
386
+ *
387
+ * @param channel
388
+ * @param clientCertificate
389
+ * @param clientNonce
390
+ * @internal
391
+ */
392
+ protected computeServerSignature(channel: ServerSecureChannelLayer, clientCertificate: Certificate, clientNonce: Nonce): SignatureData | undefined;
393
+ /**
394
+ *
395
+ * @param session
396
+ * @param channel
397
+ * @param clientSignature
398
+ * @internal
399
+ */
400
+ protected verifyClientSignature(session: ServerSession, channel: ServerSecureChannelLayer, clientSignature: SignatureData): boolean;
401
+ protected isValidUserNameIdentityToken(channel: ServerSecureChannelLayer, session: ServerSession, userTokenPolicy: any, userIdentityToken: UserNameIdentityToken, userTokenSignature: any, callback: (err: Error | null, statusCode?: StatusCode) => void): void;
402
+ protected isValidX509IdentityToken(channel: ServerSecureChannelLayer, session: ServerSession, userTokenPolicy: any, userIdentityToken: X509IdentityToken, userTokenSignature: any, callback: (err: Error | null, statusCode?: StatusCode) => void): void;
403
+ /**
404
+ * @internal
405
+ */
406
+ protected userNameIdentityTokenAuthenticateUser(channel: ServerSecureChannelLayer, session: ServerSession, userTokenPolicy: any, userIdentityToken: UserNameIdentityToken, callback: (err: Error | null, isAuthorized?: boolean) => void): void;
407
+ /**
408
+ * @internal
409
+ */
410
+ protected isValidUserIdentityToken(channel: ServerSecureChannelLayer, session: ServerSession, userIdentityToken: UserIdentityToken, userTokenSignature: any, endpointDescription: EndpointDescription, callback: (err: Error | null, statusCode?: StatusCode) => void): void;
411
+ /**
412
+ *
413
+ * @internal
414
+ * @param channel
415
+ * @param session
416
+ * @param userIdentityToken
417
+ * @param callback
418
+ * @returns {*}
419
+ */
420
+ protected isUserAuthorized(channel: ServerSecureChannelLayer, session: ServerSession, userIdentityToken: UserIdentityToken, callback: (err: Error | null, isAuthorized?: boolean) => void): void;
421
+ protected makeServerNonce(): Nonce;
422
+ protected _on_CreateSessionRequest(message: Message, channel: ServerSecureChannelLayer): Promise<void>;
423
+ /**
424
+ *
425
+ * @method _on_ActivateSessionRequest
426
+ * @private
427
+ *
428
+ *
429
+ */
430
+ protected _on_ActivateSessionRequest(message: Message, channel: ServerSecureChannelLayer): void;
431
+ protected prepare(message: Message, channel: ServerSecureChannelLayer): void;
432
+ /**
433
+ * ensure that action is performed on a valid session object,
434
+ * @method _apply_on_SessionObject
435
+ * @param ResponseClass the constructor of the response Class
436
+ * @param message
437
+ * @param channel
438
+ * @param action_to_perform
439
+ * @param action_to_perform.session {ServerSession}
440
+ * @param action_to_perform.sendResponse
441
+ * @param action_to_perform.sendResponse.response
442
+ * @param action_to_perform.sendError
443
+ * @param action_to_perform.sendError.statusCode
444
+ * @param action_to_perform.sendError.diagnostics
445
+ *
446
+ * @private
447
+ */
448
+ protected _apply_on_SessionObject(ResponseClass: any, message: Message, channel: ServerSecureChannelLayer, action_to_perform: (session: ServerSession, sendResponse: (response: Response) => void, sendError: (statusCode: StatusCode) => void) => void | Promise<void>): Promise<void>;
449
+ /**
450
+ * @method _apply_on_Subscription
451
+ * @param ResponseClass
452
+ * @param message
453
+ * @param channel
454
+ * @param action_to_perform
455
+ * @private
456
+ */
457
+ protected _apply_on_Subscription(ResponseClass: any, message: Message, channel: ServerSecureChannelLayer, action_to_perform: (session: ServerSession, subscription: Subscription, sendResponse: (response: Response) => void, sendError: (statusCode: StatusCode) => void) => Promise<void>): Promise<void>;
458
+ /**
459
+ * @method _apply_on_SubscriptionIds
460
+ * @param ResponseClass
461
+ * @param message
462
+ * @param channel
463
+ * @param action_to_perform
464
+ * @private
465
+ */
466
+ protected _apply_on_SubscriptionIds<T>(ResponseClass: typeof SetPublishingModeResponse | typeof TransferSubscriptionsResponse | typeof DeleteSubscriptionsResponse, message: Message, channel: ServerSecureChannelLayer, action_to_perform: (session: ServerSession, subscriptionId: number) => Promise<T>): void;
467
+ /**
468
+ * @method _apply_on_Subscriptions
469
+ * @param ResponseClass
470
+ * @param message
471
+ * @param channel
472
+ * @param action_to_perform
473
+ * @private
474
+ */
475
+ protected _apply_on_Subscriptions(ResponseClass: typeof SetPublishingModeResponse, message: Message, channel: ServerSecureChannelLayer, action_to_perform: (session: ServerSession, subscription: Subscription) => Promise<StatusCode>): void;
476
+ private _closeSession;
477
+ /**
478
+ * @method _on_CloseSessionRequest
479
+ * @param message
480
+ * @param channel
481
+ * @private
482
+ */
483
+ protected _on_CloseSessionRequest(message: Message, channel: ServerSecureChannelLayer): void;
484
+ /**
485
+ * @method _on_BrowseRequest
486
+ * @param message
487
+ * @param channel
488
+ * @private
489
+ */
490
+ protected _on_BrowseRequest(message: Message, channel: ServerSecureChannelLayer): void;
491
+ /**
492
+ * @method _on_BrowseNextRequest
493
+ * @param message
494
+ * @param channel
495
+ * @private
496
+ */
497
+ protected _on_BrowseNextRequest(message: Message, channel: ServerSecureChannelLayer): void;
498
+ protected _on_ReadRequest(message: Message, channel: ServerSecureChannelLayer): void;
499
+ protected _on_HistoryReadRequest(message: Message, channel: ServerSecureChannelLayer): void;
500
+ protected _on_WriteRequest(message: Message, channel: ServerSecureChannelLayer): void;
501
+ protected _on_CreateSubscriptionRequest(message: Message, channel: ServerSecureChannelLayer): void;
502
+ protected _on_DeleteSubscriptionsRequest(message: Message, channel: ServerSecureChannelLayer): void;
503
+ protected _on_TransferSubscriptionsRequest(message: Message, channel: ServerSecureChannelLayer): void;
504
+ protected _on_CreateMonitoredItemsRequest(message: Message, channel: ServerSecureChannelLayer): void;
505
+ protected _on_ModifySubscriptionRequest(message: Message, channel: ServerSecureChannelLayer): void;
506
+ protected _on_ModifyMonitoredItemsRequest(message: Message, channel: ServerSecureChannelLayer): void;
507
+ protected _on_PublishRequest(message: Message, channel: ServerSecureChannelLayer): void;
508
+ protected _on_SetPublishingModeRequest(message: Message, channel: ServerSecureChannelLayer): void;
509
+ protected _on_DeleteMonitoredItemsRequest(message: Message, channel: ServerSecureChannelLayer): void;
510
+ protected _on_SetTriggeringRequest(message: Message, channel: ServerSecureChannelLayer): void;
511
+ protected _beforeDeleteSubscription(subscription: Subscription): Promise<void>;
512
+ protected _on_RepublishRequest(message: Message, channel: ServerSecureChannelLayer): void;
513
+ protected _on_SetMonitoringModeRequest(message: Message, channel: ServerSecureChannelLayer): void;
514
+ protected _on_TranslateBrowsePathsToNodeIdsRequest(message: Message, channel: ServerSecureChannelLayer): void;
515
+ protected _on_CallRequest(message: Message, channel: ServerSecureChannelLayer): void;
516
+ protected _on_RegisterNodesRequest(message: Message, channel: ServerSecureChannelLayer): void;
517
+ protected _on_UnregisterNodesRequest(message: Message, channel: ServerSecureChannelLayer): void;
518
+ protected _on_Cancel(message: Message, channel: ServerSecureChannelLayer): void;
519
+ protected _on_AddNodes(message: Message, channel: ServerSecureChannelLayer): void;
520
+ protected _on_AddReferences(message: Message, channel: ServerSecureChannelLayer): void;
521
+ protected _on_DeleteNodes(message: Message, channel: ServerSecureChannelLayer): void;
522
+ protected _on_DeleteReferences(message: Message, channel: ServerSecureChannelLayer): void;
523
+ protected _on_QueryFirst(message: Message, channel: ServerSecureChannelLayer): void;
524
+ protected _on_QueryNext(message: Message, channel: ServerSecureChannelLayer): void;
525
+ protected _on_HistoryUpdate(message: Message, channel: ServerSecureChannelLayer): void;
526
+ private createEndpoint;
527
+ private createEndpointDescriptions;
528
+ protected initializeCM(): Promise<void>;
529
+ }
530
+ export interface RaiseEventAuditEventData extends RaiseEventData {
531
+ actionTimeStamp: PseudoVariantDateTime;
532
+ status: PseudoVariantBoolean;
533
+ serverId: PseudoVariantString;
534
+ /**
535
+ * ClientAuditEntryId contains the human-readable AuditEntryId defined in Part 3.
536
+ */
537
+ clientAuditEntryId: PseudoVariantString;
538
+ /**
539
+ * The ClientUserId identifies the user of the client requesting an action. The ClientUserId can be
540
+ * obtained from the UserIdentityToken passed in the ActivateSession call.
541
+ */
542
+ clientUserId: PseudoVariantString;
543
+ sourceName: PseudoVariantString;
544
+ }
545
+ export interface RaiseEventAuditUpdateMethodEventData extends RaiseEventAuditEventData {
546
+ methodId: PseudoVariantNodeId;
547
+ inputArguments: any;
548
+ }
549
+ export interface RaiseEventAuditConditionCommentEventData extends RaiseEventAuditUpdateMethodEventData {
550
+ eventId: PseudoVariantByteString;
551
+ comment: PseudoVariantLocalizedText;
552
+ }
553
+ export interface RaiseEventAuditSessionEventData extends RaiseEventAuditEventData {
554
+ /**
555
+ * part 5 - 6.4.7 AuditSessionEventType
556
+ */
557
+ sessionId: PseudoVariantNodeId;
558
+ }
559
+ export interface RaiseEventAuditCreateSessionEventData extends RaiseEventAuditSessionEventData {
560
+ /**
561
+ * part 5 - 6.4.8 AuditCreateSessionEventType
562
+ * SecureChannelId shall uniquely identify the SecureChannel.
563
+ * The application shall use the same identifier in
564
+ * all AuditEvents related to the Session Service Set (AuditCreateSessionEventType, AuditActivateSessionEventType
565
+ * and their subtypes) and the SecureChannel Service Set (AuditChannelEventType and its subtype
566
+ */
567
+ secureChannelId: PseudoVariantString;
568
+ revisedSessionTimeout: PseudoVariantDuration;
569
+ clientCertificate: PseudoVariantByteString;
570
+ clientCertificateThumbprint: PseudoVariantByteString;
571
+ }
572
+ export interface RaiseEventAuditActivateSessionEventData extends RaiseEventAuditSessionEventData {
573
+ /**
574
+ * part 5 - 6.4.10 AuditActivateSessionEventType
575
+ */
576
+ clientSoftwareCertificates: PseudoVariantExtensionObjectArray;
577
+ /**
578
+ * UserIdentityToken reflects the userIdentityToken parameter of the ActivateSession Service call.
579
+ * For Username/Password tokens the password should NOT be included.
580
+ */
581
+ userIdentityToken: PseudoVariantExtensionObject;
582
+ /**
583
+ * SecureChannelId shall uniquely identify the SecureChannel. The application shall use the same identifier
584
+ * in all AuditEvents related to the Session Service Set (AuditCreateSessionEventType,
585
+ * AuditActivateSessionEventType and their subtypes) and the SecureChannel Service Set
586
+ * (AuditChannelEventType and its subtypes).
587
+ */
588
+ secureChannelId: PseudoVariantString;
589
+ }
590
+ export interface RaiseEventTransitionEventData extends RaiseEventData {
591
+ }
592
+ export interface RaiseEventAuditUrlMismatchEventTypeData extends RaiseEventData {
593
+ endpointUrl: PseudoVariantString;
594
+ }
595
+ export interface OPCUAServer {
596
+ /**
597
+ * @internal
598
+ * @param eventType
599
+ * @param options
600
+ */
601
+ raiseEvent(eventType: "AuditSessionEventType", options: RaiseEventAuditSessionEventData): void;
602
+ raiseEvent(eventType: "AuditCreateSessionEventType", options: RaiseEventAuditCreateSessionEventData): void;
603
+ raiseEvent(eventType: "AuditActivateSessionEventType", options: RaiseEventAuditActivateSessionEventData): void;
604
+ raiseEvent(eventType: "AuditCreateSessionEventType", options: RaiseEventData): void;
605
+ raiseEvent(eventType: "AuditConditionCommentEventType", options: RaiseEventAuditConditionCommentEventData): void;
606
+ raiseEvent(eventType: "AuditUrlMismatchEventType", options: RaiseEventAuditUrlMismatchEventTypeData): void;
607
+ raiseEvent(eventType: "TransitionEventType", options: RaiseEventTransitionEventData): void;
608
+ }
609
+ export interface OPCUAServer extends EventEmitter {
610
+ on(event: "create_session", eventHandler: (session: ServerSession) => void): this;
611
+ on(event: "session_activated", eventHandler: (session: ServerSession) => void): this;
612
+ on(event: "session_closed", eventHandler: (session: ServerSession, reason: string) => void): this;
613
+ on(event: "post_initialize", eventHandler: () => void): this;
614
+ /**
615
+ * emitted when the server is trying to registered the LDS
616
+ * but when the connection to the lds has failed
617
+ * serverRegistrationPending is sent when the backoff signal of the
618
+ * connection process is raised
619
+ * @event serverRegistrationPending
620
+ */
621
+ on(event: "serverRegistrationPending", eventHandler: () => void): this;
622
+ /**
623
+ * event raised when server has been successfully registered on the local discovery server
624
+ * @event serverRegistered
625
+ */
626
+ on(event: "serverRegistered", eventHandler: () => void): this;
627
+ /**
628
+ * event raised when server registration has been successfully renewed on the local discovery server
629
+ * @event serverRegistered
630
+ */
631
+ on(event: "serverRegistrationRenewed", eventHandler: () => void): this;
632
+ /**
633
+ * event raised when server has been successfully unregistered from the local discovery server
634
+ * @event serverUnregistered
635
+ */
636
+ on(event: "serverUnregistered", eventHandler: () => void): this;
637
+ /**
638
+ * event raised after the server has raised an OPCUA event toward a client
639
+ */
640
+ on(event: "event", eventHandler: (eventData: any) => void): this;
641
+ /**
642
+ * event raised when the server received a request from one of its connected client.
643
+ * useful for trace purpose.
644
+ */
645
+ on(event: "request", eventHandler: (request: Request, channel: ServerSecureChannelLayer) => void): this;
646
+ /**
647
+ * event raised when the server send an response to a request to one of its connected client.
648
+ * useful for trace purpose.
649
+ */
650
+ on(event: "response", eventHandler: (request: Response, channel: ServerSecureChannelLayer) => void): this;
651
+ /**
652
+ * event raised when a new secure channel is opened
653
+ */
654
+ on(event: "newChannel", eventHandler: (channel: ServerSecureChannelLayer, endpoint: OPCUAServerEndPoint) => void): this;
655
+ /**
656
+ * event raised when a new secure channel is closed
657
+ */
658
+ on(event: "closeChannel", eventHandler: (channel: ServerSecureChannelLayer, endpoint: OPCUAServerEndPoint) => void): this;
659
+ /**
660
+ * event raised when the server refused a tcp connection from a client. ( for instance because too any connections)
661
+ */
662
+ on(event: "connectionRefused", eventHandler: (socketData: ISocketData, endpoint: OPCUAServerEndPoint) => void): this;
663
+ /**
664
+ * event raised when a OpenSecureChannel has failed, it could be a invalid certificate or malformed message
665
+ */
666
+ on(event: "openSecureChannelFailure", eventHandler: (socketData: ISocketData, channelData: IChannelData, endpoint: OPCUAServerEndPoint) => void): this;
667
+ on(event: string, eventHandler: (...args: [any?, ...any[]]) => void): this;
668
+ }