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.
- package/.mocharc.yml +10 -0
- package/LICENSE +20 -0
- package/dist/base_server.d.ts +110 -0
- package/dist/base_server.js +476 -0
- package/dist/base_server.js.map +1 -0
- package/dist/factory.d.ts +10 -0
- package/dist/factory.js +24 -0
- package/dist/factory.js.map +1 -0
- package/dist/history_server_capabilities.d.ts +35 -0
- package/dist/history_server_capabilities.js +44 -0
- package/dist/history_server_capabilities.js.map +1 -0
- package/dist/i_channel_data.d.ts +13 -0
- package/dist/i_channel_data.js +3 -0
- package/dist/i_channel_data.js.map +1 -0
- package/dist/i_register_server_manager.d.ts +16 -0
- package/dist/i_register_server_manager.js +3 -0
- package/dist/i_register_server_manager.js.map +1 -0
- package/dist/i_server_side_publish_engine.d.ts +36 -0
- package/dist/i_server_side_publish_engine.js +50 -0
- package/dist/i_server_side_publish_engine.js.map +1 -0
- package/dist/i_socket_data.d.ts +11 -0
- package/dist/i_socket_data.js +3 -0
- package/dist/i_socket_data.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/monitored_item.d.ts +173 -0
- package/dist/monitored_item.js +1006 -0
- package/dist/monitored_item.js.map +1 -0
- package/dist/node_sampler.d.ts +3 -0
- package/dist/node_sampler.js +76 -0
- package/dist/node_sampler.js.map +1 -0
- package/dist/opcua_server.d.ts +668 -0
- package/dist/opcua_server.js +2407 -0
- package/dist/opcua_server.js.map +1 -0
- package/dist/queue.d.ts +11 -0
- package/dist/queue.js +71 -0
- package/dist/queue.js.map +1 -0
- package/dist/register_server_manager.d.ts +92 -0
- package/dist/register_server_manager.js +574 -0
- package/dist/register_server_manager.js.map +1 -0
- package/dist/register_server_manager_hidden.d.ts +17 -0
- package/dist/register_server_manager_hidden.js +28 -0
- package/dist/register_server_manager_hidden.js.map +1 -0
- package/dist/register_server_manager_mdns_only.d.ts +19 -0
- package/dist/register_server_manager_mdns_only.js +58 -0
- package/dist/register_server_manager_mdns_only.js.map +1 -0
- package/dist/server_capabilities.d.ts +61 -0
- package/dist/server_capabilities.js +109 -0
- package/dist/server_capabilities.js.map +1 -0
- package/dist/server_end_point.d.ts +180 -0
- package/dist/server_end_point.js +825 -0
- package/dist/server_end_point.js.map +1 -0
- package/dist/server_engine.d.ts +311 -0
- package/dist/server_engine.js +1659 -0
- package/dist/server_engine.js.map +1 -0
- package/dist/server_publish_engine.d.ts +109 -0
- package/dist/server_publish_engine.js +531 -0
- package/dist/server_publish_engine.js.map +1 -0
- package/dist/server_publish_engine_for_orphan_subscriptions.d.ts +16 -0
- package/dist/server_publish_engine_for_orphan_subscriptions.js +50 -0
- package/dist/server_publish_engine_for_orphan_subscriptions.js.map +1 -0
- package/dist/server_session.d.ts +176 -0
- package/dist/server_session.js +734 -0
- package/dist/server_session.js.map +1 -0
- package/dist/server_subscription.d.ts +393 -0
- package/dist/server_subscription.js +1313 -0
- package/dist/server_subscription.js.map +1 -0
- package/dist/sessions_compatible_for_transfer.d.ts +2 -0
- package/dist/sessions_compatible_for_transfer.js +36 -0
- package/dist/sessions_compatible_for_transfer.js.map +1 -0
- package/dist/validate_filter.d.ts +5 -0
- package/dist/validate_filter.js +64 -0
- package/dist/validate_filter.js.map +1 -0
- package/package.json +88 -0
- package/source/base_server.ts +617 -0
- package/source/factory.ts +25 -0
- package/source/history_server_capabilities.ts +75 -0
- package/source/i_channel_data.ts +17 -0
- package/source/i_register_server_manager.ts +24 -0
- package/source/i_server_side_publish_engine.ts +77 -0
- package/source/i_socket_data.ts +11 -0
- package/source/index.ts +14 -0
- package/source/monitored_item.ts +1303 -0
- package/source/node_sampler.ts +82 -0
- package/source/opcua_server.ts +3742 -0
- package/source/queue.ts +73 -0
- package/source/register_server_manager.ts +744 -0
- package/source/register_server_manager_hidden.ts +33 -0
- package/source/register_server_manager_mdns_only.ts +69 -0
- package/source/server_capabilities.ts +177 -0
- package/source/server_end_point.ts +1182 -0
- package/source/server_engine.ts +2167 -0
- package/source/server_publish_engine.ts +657 -0
- package/source/server_publish_engine_for_orphan_subscriptions.ts +52 -0
- package/source/server_session.ts +931 -0
- package/source/server_subscription.ts +1792 -0
- package/source/sessions_compatible_for_transfer.ts +33 -0
- package/source/validate_filter.ts +86 -0
- package/test_helpers/create_certificates.js +1 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module node-opcua-server
|
|
3
|
+
*/
|
|
4
|
+
import { assert } from "node-opcua-assert";
|
|
5
|
+
|
|
6
|
+
export interface HistoryServerCapabilitiesOptions {
|
|
7
|
+
accessHistoryDataCapability?: boolean;
|
|
8
|
+
accessHistoryEventsCapability?: boolean;
|
|
9
|
+
maxReturnDataValues?: number;
|
|
10
|
+
maxReturnEventValues?: number;
|
|
11
|
+
insertDataCapability?: boolean;
|
|
12
|
+
replaceDataCapability?: boolean;
|
|
13
|
+
updateDataCapability?: boolean;
|
|
14
|
+
deleteRawCapability ?: boolean;
|
|
15
|
+
deleteAtTimeCapability?: boolean;
|
|
16
|
+
insertEventCapability?: boolean;
|
|
17
|
+
replaceEventCapability?: boolean;
|
|
18
|
+
updateEventCapability?: boolean;
|
|
19
|
+
deleteEventCapability?: boolean;
|
|
20
|
+
insertAnnotationCapability?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
*/
|
|
24
|
+
export class HistoryServerCapabilities {
|
|
25
|
+
|
|
26
|
+
public accessHistoryDataCapability: boolean;
|
|
27
|
+
public accessHistoryEventsCapability: boolean;
|
|
28
|
+
public maxReturnDataValues: number;
|
|
29
|
+
public maxReturnEventValues: number;
|
|
30
|
+
public insertDataCapability: boolean;
|
|
31
|
+
public replaceDataCapability: boolean;
|
|
32
|
+
public updateDataCapability: boolean;
|
|
33
|
+
public deleteRawCapability: boolean;
|
|
34
|
+
public deleteAtTimeCapability: boolean;
|
|
35
|
+
public insertEventCapability: boolean;
|
|
36
|
+
public replaceEventCapability: boolean;
|
|
37
|
+
public updateEventCapability: boolean;
|
|
38
|
+
public deleteEventCapability: boolean;
|
|
39
|
+
public insertAnnotationCapability: boolean;
|
|
40
|
+
|
|
41
|
+
constructor(options?: HistoryServerCapabilitiesOptions) {
|
|
42
|
+
options = options || {};
|
|
43
|
+
|
|
44
|
+
function coerceBool(value: boolean | undefined , defaultValue: boolean): boolean {
|
|
45
|
+
if (undefined === value) {
|
|
46
|
+
return defaultValue;
|
|
47
|
+
}
|
|
48
|
+
assert(typeof value === "boolean");
|
|
49
|
+
return value as boolean;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function coerceUInt32(value: number| undefined, defaultValue: number): number {
|
|
53
|
+
if (undefined === value) {
|
|
54
|
+
return defaultValue;
|
|
55
|
+
}
|
|
56
|
+
assert(typeof value === "number");
|
|
57
|
+
return value;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
this.accessHistoryDataCapability = coerceBool(options.accessHistoryDataCapability, false);
|
|
61
|
+
this.accessHistoryEventsCapability = coerceBool(options.accessHistoryEventsCapability, false);
|
|
62
|
+
this.maxReturnDataValues = coerceUInt32(options.maxReturnDataValues, 0);
|
|
63
|
+
this.maxReturnEventValues = coerceUInt32(options.maxReturnEventValues, 0);
|
|
64
|
+
this.insertDataCapability = coerceBool(options.insertDataCapability, false);
|
|
65
|
+
this.replaceDataCapability = coerceBool(options.replaceDataCapability, false);
|
|
66
|
+
this.updateDataCapability = coerceBool(options.updateDataCapability, false);
|
|
67
|
+
this.deleteRawCapability = coerceBool(options.deleteRawCapability, false);
|
|
68
|
+
this.deleteAtTimeCapability = coerceBool(options.deleteAtTimeCapability, false);
|
|
69
|
+
this.insertEventCapability = coerceBool(options.insertEventCapability, false);
|
|
70
|
+
this.replaceEventCapability = coerceBool(options.replaceEventCapability, false);
|
|
71
|
+
this.updateEventCapability = coerceBool(options.updateEventCapability, false);
|
|
72
|
+
this.deleteEventCapability = coerceBool(options.deleteEventCapability, false);
|
|
73
|
+
this.insertAnnotationCapability = coerceBool(options.insertAnnotationCapability, false);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AsymmetricAlgorithmSecurityHeader,
|
|
3
|
+
MessageSecurityMode,
|
|
4
|
+
SecurityPolicy
|
|
5
|
+
} from "node-opcua-secure-channel";
|
|
6
|
+
|
|
7
|
+
export interface IChannelData {
|
|
8
|
+
channelId: number| null;
|
|
9
|
+
clientCertificate: Buffer | null;
|
|
10
|
+
clientNonce: Buffer |null,
|
|
11
|
+
clientSecurityHeader: any;
|
|
12
|
+
securityHeader: AsymmetricAlgorithmSecurityHeader |null;
|
|
13
|
+
securityMode: MessageSecurityMode;
|
|
14
|
+
securityPolicy: SecurityPolicy;
|
|
15
|
+
timeout: number;
|
|
16
|
+
transactionsCount: number;
|
|
17
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module node-opcua-server
|
|
3
|
+
*/
|
|
4
|
+
import { EventEmitter } from "events";
|
|
5
|
+
import { ErrorCallback } from "node-opcua-status-code";
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
export interface IRegisterServerManager extends EventEmitter {
|
|
9
|
+
|
|
10
|
+
discoveryServerEndpointUrl: string;
|
|
11
|
+
|
|
12
|
+
start(callback: ErrorCallback): void;
|
|
13
|
+
|
|
14
|
+
stop(callback: ErrorCallback): void;
|
|
15
|
+
|
|
16
|
+
dispose(): void;
|
|
17
|
+
|
|
18
|
+
// tslint:disable:unified-signatures
|
|
19
|
+
on(eventName: "serverRegistrationPending", eventHandler: () => void): this;
|
|
20
|
+
on(eventName: "serverRegistered", eventHandler: () => void): this;
|
|
21
|
+
on(eventName: "serverRegistrationRenewed", eventHandler: () => void): this;
|
|
22
|
+
on(eventName: "serverUnregistered", eventHandler: () => void): this;
|
|
23
|
+
|
|
24
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Subscription, InternalNotification } from "./server_subscription";
|
|
2
|
+
import { PublishResponseOptions, PublishResponse, StatusChangeNotification } from "node-opcua-types";
|
|
3
|
+
import assert from "node-opcua-assert";
|
|
4
|
+
import { Queue } from "./queue";
|
|
5
|
+
|
|
6
|
+
export interface INotifMsg {
|
|
7
|
+
subscriptionId: number;
|
|
8
|
+
sequenceNumber: number;
|
|
9
|
+
notificationData: any;
|
|
10
|
+
moreNotifications: boolean;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface IServerSidePublishEngine {
|
|
14
|
+
on_close_subscription(subscription: IClosedOrTransferredSubscription): void;
|
|
15
|
+
readonly pendingPublishRequestCount: number;
|
|
16
|
+
_on_tick(): void;
|
|
17
|
+
send_keep_alive_response(subscriptionId: number, future_sequence_number: number): boolean;
|
|
18
|
+
_send_response(subscription: Subscription, options: PublishResponseOptions): void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface IClosedOrTransferredSubscription {
|
|
22
|
+
readonly hasPendingNotifications: boolean;
|
|
23
|
+
dispose(): void;
|
|
24
|
+
readonly id: number;
|
|
25
|
+
_publish_pending_notifications(): void;
|
|
26
|
+
}
|
|
27
|
+
export class TransferredSubscription implements IClosedOrTransferredSubscription {
|
|
28
|
+
public id: number;
|
|
29
|
+
public publishEngine: any;
|
|
30
|
+
public _pending_notification?: StatusChangeNotification;
|
|
31
|
+
private _sequence_number_generator: any;
|
|
32
|
+
constructor(options: { id: number; generator: any; publishEngine: any }) {
|
|
33
|
+
this.id = options.id;
|
|
34
|
+
this._sequence_number_generator = options.generator;
|
|
35
|
+
this.publishEngine = options.publishEngine;
|
|
36
|
+
}
|
|
37
|
+
public get hasPendingNotifications(): boolean {
|
|
38
|
+
return !!this._pending_notification;
|
|
39
|
+
}
|
|
40
|
+
dispose(): void {
|
|
41
|
+
this._pending_notification= undefined;
|
|
42
|
+
this.publishEngine = null;
|
|
43
|
+
}
|
|
44
|
+
_publish_pending_notifications(): void {
|
|
45
|
+
assert(this._pending_notification);
|
|
46
|
+
const notificationMessage = this._pending_notification!;
|
|
47
|
+
this._pending_notification = undefined;
|
|
48
|
+
const moreNotifications = false;
|
|
49
|
+
const subscriptionId = this.id;
|
|
50
|
+
|
|
51
|
+
const response = new PublishResponse({
|
|
52
|
+
moreNotifications,
|
|
53
|
+
notificationMessage: {
|
|
54
|
+
notificationData: [notificationMessage ],
|
|
55
|
+
publishTime: new Date(),
|
|
56
|
+
sequenceNumber: 0xFFFFFFFF
|
|
57
|
+
},
|
|
58
|
+
subscriptionId
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// apply sequence number and store in sent_notifications queue
|
|
62
|
+
assert(response.notificationMessage.sequenceNumber === 0xffffffff);
|
|
63
|
+
response.notificationMessage.sequenceNumber = this._get_next_sequence_number();
|
|
64
|
+
// xxx this._sent_notifications.push(response.notificationMessage);
|
|
65
|
+
// get available sequence number;
|
|
66
|
+
const availableSequenceNumbers = [response.notificationMessage.sequenceNumber];
|
|
67
|
+
assert(
|
|
68
|
+
!response.notificationMessage ||
|
|
69
|
+
availableSequenceNumbers[availableSequenceNumbers.length - 1] === response.notificationMessage.sequenceNumber
|
|
70
|
+
);
|
|
71
|
+
response.availableSequenceNumbers = availableSequenceNumbers;
|
|
72
|
+
this.publishEngine._send_response(this, response);
|
|
73
|
+
}
|
|
74
|
+
private _get_next_sequence_number(): number {
|
|
75
|
+
return this._sequence_number_generator ? this._sequence_number_generator.next() : 0;
|
|
76
|
+
}
|
|
77
|
+
}
|
package/source/index.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module node-opcua-server
|
|
3
|
+
*/
|
|
4
|
+
export * from "./base_server";
|
|
5
|
+
export * from "./server_end_point";
|
|
6
|
+
export * from "./register_server_manager";
|
|
7
|
+
export * from "./register_server_manager_mdns_only";
|
|
8
|
+
export * from "./server_publish_engine";
|
|
9
|
+
export * from "./server_subscription";
|
|
10
|
+
export * from "./server_session";
|
|
11
|
+
export * from "./server_capabilities";
|
|
12
|
+
export * from "./server_engine";
|
|
13
|
+
export * from "./opcua_server";
|
|
14
|
+
export * from "./monitored_item";
|