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,33 @@
1
+ import { ServerSession } from "./server_session";
2
+ import { assert } from "node-opcua-assert";
3
+ import { UserIdentityToken, AnonymousIdentityToken, UserNameIdentityToken, X509IdentityToken } from "node-opcua-types";
4
+
5
+ export function sessionsCompatibleForTransfer(sessionSrc: ServerSession, sessionDest: ServerSession): boolean {
6
+ assert(sessionDest);
7
+ assert(sessionSrc);
8
+ if (!sessionSrc.userIdentityToken && !sessionDest.userIdentityToken) {
9
+ return true;
10
+ }
11
+ if (sessionSrc.userIdentityToken instanceof AnonymousIdentityToken) {
12
+ if (!(sessionDest.userIdentityToken instanceof AnonymousIdentityToken)) {
13
+ return false;
14
+ }
15
+ return true;
16
+ } else if (sessionSrc.userIdentityToken instanceof UserNameIdentityToken) {
17
+ if (!(sessionDest.userIdentityToken instanceof UserNameIdentityToken)) {
18
+ return false;
19
+ }
20
+ return sessionSrc.userIdentityToken.userName === sessionDest.userIdentityToken.userName;
21
+ }
22
+ // istanbul ignore else
23
+ else if (sessionSrc.userIdentityToken instanceof X509IdentityToken) {
24
+ if (!(sessionDest.userIdentityToken instanceof X509IdentityToken)) {
25
+ return false;
26
+ }
27
+ return (
28
+ sessionSrc.userIdentityToken.certificateData.toString("hex") === sessionDest.userIdentityToken.certificateData.toString("hex")
29
+ );
30
+ } else {
31
+ throw new Error("Unsupported Identity token");
32
+ }
33
+ }
@@ -0,0 +1,86 @@
1
+ /**
2
+ * @module node-opcua-server
3
+ */
4
+ import { assert } from "node-opcua-assert";
5
+
6
+ import {BaseNode, UAVariable} from "node-opcua-address-space";
7
+ import { AttributeIds } from "node-opcua-data-model";
8
+ import { NodeClass } from "node-opcua-data-model";
9
+ import { ExtensionObject } from "node-opcua-extension-object";
10
+ import { NodeId } from "node-opcua-nodeid";
11
+ import { DataChangeFilter, EventFilter } from "node-opcua-service-filter";
12
+ import { DeadbandType } from "node-opcua-service-subscription";
13
+ import { StatusCode, StatusCodes } from "node-opcua-status-code";
14
+ import {ReadValueIdOptions} from "node-opcua-types";
15
+ import {BaseNode2} from "./monitored_item";
16
+
17
+ function __validateDataChangeFilter(
18
+ filter: DataChangeFilter,
19
+ itemToMonitor: ReadValueIdOptions,
20
+ node: UAVariable
21
+ ): StatusCode {
22
+
23
+ assert(itemToMonitor.attributeId === AttributeIds.Value);
24
+
25
+ if ((node.nodeClass !== NodeClass.Variable)) {
26
+ return StatusCodes.BadNodeIdInvalid;
27
+ }
28
+
29
+ assert(node.nodeClass === NodeClass.Variable);
30
+
31
+ // if node is not Numerical=> DataChangeFilter
32
+ assert(node.dataType instanceof NodeId);
33
+ const dataType = node.addressSpace.findDataType(node.dataType)!;
34
+
35
+ const dataTypeNumber = node.addressSpace.findDataType("Number")!;
36
+ if (filter.deadbandType !== DeadbandType.None) {
37
+ if (!dataType.isSupertypeOf(dataTypeNumber)) {
38
+ return StatusCodes.BadFilterNotAllowed;
39
+ }
40
+ }
41
+
42
+ if (filter.deadbandType === DeadbandType.Percent) {
43
+ if (filter.deadbandValue < 0 || filter.deadbandValue > 100) {
44
+ return StatusCodes.BadDeadbandFilterInvalid;
45
+ }
46
+
47
+ // node must also have a valid euRange
48
+ if (!(node as any).euRange) {
49
+ // tslint:disable:no-console
50
+ console.log(" node has no euRange ! Dead band Percent cannot be used on node " + node.nodeId.toString());
51
+ return StatusCodes.BadMonitoredItemFilterUnsupported;
52
+ }
53
+ }
54
+ return StatusCodes.Good;
55
+ }
56
+
57
+ export function validateFilter(
58
+ filter: ExtensionObject | null,
59
+ itemToMonitor: ReadValueIdOptions,
60
+ node: BaseNode
61
+ ) {
62
+
63
+ // handle filter information
64
+ if (filter && filter instanceof EventFilter
65
+ && itemToMonitor.attributeId !== AttributeIds.EventNotifier) {
66
+ // invalid filter on Event
67
+ return StatusCodes.BadFilterNotAllowed;
68
+ }
69
+
70
+ if (filter && filter instanceof DataChangeFilter
71
+ && itemToMonitor.attributeId !== AttributeIds.Value) {
72
+ // invalid DataChange filter on non Value Attribute
73
+ return StatusCodes.BadFilterNotAllowed;
74
+ }
75
+
76
+ if (filter && itemToMonitor.attributeId !== AttributeIds.EventNotifier
77
+ && itemToMonitor.attributeId !== AttributeIds.Value) {
78
+ return StatusCodes.BadFilterNotAllowed;
79
+ }
80
+
81
+ if (filter instanceof DataChangeFilter) {
82
+ return __validateDataChangeFilter(filter, itemToMonitor, node as UAVariable);
83
+ }
84
+
85
+ return StatusCodes.Good;
86
+ }
@@ -0,0 +1 @@
1
+ require("node-opcua-pki/bin/crypto_create_CA");