node-opcua-address-space 2.184.8 → 2.186.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/api/helpers/argument_list.ts +1 -1
- package/api/helpers/call_helpers.ts +152 -7
- package/api/loader/nodeset_record.ts +1 -1
- package/api/loader/nodeset_record_applier.ts +3 -0
- package/api/loader/nodeset_xml_producer.ts +1 -0
- package/api/session_context.ts +38 -0
- package/dist/api/helpers/argument_list.js +1 -1
- package/dist/api/helpers/argument_list.js.map +1 -1
- package/dist/api/helpers/call_helpers.d.ts +1 -1
- package/dist/api/helpers/call_helpers.d.ts.map +1 -1
- package/dist/api/helpers/call_helpers.js +137 -4
- package/dist/api/helpers/call_helpers.js.map +1 -1
- package/dist/api/loader/nodeset_record.d.ts +1 -1
- package/dist/api/loader/nodeset_record.js +1 -1
- package/dist/api/loader/nodeset_record_applier.d.ts.map +1 -1
- package/dist/api/loader/nodeset_record_applier.js +3 -0
- package/dist/api/loader/nodeset_record_applier.js.map +1 -1
- package/dist/api/loader/nodeset_xml_producer.d.ts.map +1 -1
- package/dist/api/loader/nodeset_xml_producer.js +1 -0
- package/dist/api/loader/nodeset_xml_producer.js.map +1 -1
- package/dist/api/session_context.d.ts +28 -1
- package/dist/api/session_context.d.ts.map +1 -1
- package/dist/api/session_context.js +32 -0
- package/dist/api/session_context.js.map +1 -1
- package/dist/impl/base_node_impl.d.ts +8 -0
- package/dist/impl/base_node_impl.d.ts.map +1 -1
- package/dist/impl/base_node_impl.js +10 -0
- package/dist/impl/base_node_impl.js.map +1 -1
- package/dist/impl/data_access/semantics_changed.d.ts +1 -1
- package/dist/impl/data_access/semantics_changed.js +1 -1
- package/dist/impl/nodeset_tools/nodeset_to_records.d.ts.map +1 -1
- package/dist/impl/nodeset_tools/nodeset_to_records.js +11 -7
- package/dist/impl/nodeset_tools/nodeset_to_records.js.map +1 -1
- package/dist/impl/nodeset_tools/nodeset_to_xml.d.ts +7 -1
- package/dist/impl/nodeset_tools/nodeset_to_xml.d.ts.map +1 -1
- package/dist/impl/nodeset_tools/nodeset_to_xml.js +26 -4
- package/dist/impl/nodeset_tools/nodeset_to_xml.js.map +1 -1
- package/dist/impl/ua_reference_type_impl.d.ts.map +1 -1
- package/dist/impl/ua_reference_type_impl.js +2 -1
- package/dist/impl/ua_reference_type_impl.js.map +1 -1
- package/dist/impl/ua_variable_impl.js +1 -1
- package/dist/impl/ua_variable_impl.js.map +1 -1
- package/dist/tsconfig_base.tsbuildinfo +1 -1
- package/impl/base_node_impl.ts +14 -0
- package/impl/data_access/semantics_changed.ts +1 -1
- package/impl/nodeset_tools/nodeset_to_records.ts +13 -8
- package/impl/nodeset_tools/nodeset_to_xml.ts +26 -4
- package/impl/ua_reference_type_impl.ts +2 -1
- package/impl/ua_variable_impl.ts +1 -1
- package/package.json +27 -27
|
@@ -293,7 +293,7 @@ export function verifyArguments_ArgumentList(
|
|
|
293
293
|
return { inputArgumentResults, statusCode: StatusCodes.BadTooManyArguments };
|
|
294
294
|
}
|
|
295
295
|
|
|
296
|
-
//
|
|
296
|
+
// OPC 10000-4 v1.05.07 §5.12.2 (Call): when one of the input arguments is not valid the
|
|
297
297
|
// operation statusCode is BadInvalidArgument and inputArgumentResults[i]
|
|
298
298
|
// carries the per-argument reason (BadTypeMismatch for a wrong DataType or
|
|
299
299
|
// ValueRank, BadOutOfRange for a value outside the range). A per-argument
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* @module node-opcua-address-space
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import type { IAddressSpace, ISessionContext, UAMethod, UAObject } from "node-opcua-address-space-base";
|
|
5
|
+
import type { BaseNode, IAddressSpace, ISessionContext, UAMethod, UAObject, UAObjectType } from "node-opcua-address-space-base";
|
|
6
6
|
import { assert } from "node-opcua-assert";
|
|
7
|
-
import { NodeClass } from "node-opcua-data-model";
|
|
8
|
-
import { NodeId } from "node-opcua-nodeid";
|
|
7
|
+
import { BrowseDirection, NodeClass } from "node-opcua-data-model";
|
|
8
|
+
import { NodeId, sameNodeId } from "node-opcua-nodeid";
|
|
9
9
|
import type { CallMethodRequest } from "node-opcua-service-call";
|
|
10
|
-
import { StatusCodes } from "node-opcua-status-code";
|
|
11
|
-
import type
|
|
10
|
+
import { type StatusCode, StatusCodes } from "node-opcua-status-code";
|
|
11
|
+
import { type CallMethodResultOptions, PermissionType } from "node-opcua-types";
|
|
12
12
|
import type { Variant } from "node-opcua-variant";
|
|
13
13
|
|
|
14
14
|
import { getMethodDeclaration_ArgumentList, verifyArguments_ArgumentList } from "./argument_list.js";
|
|
@@ -32,6 +32,133 @@ import { resolveOpaqueOnAddressSpace } from "./resolve_opaque_on_address_space.j
|
|
|
32
32
|
// A server shall accept a ByteString if an array of Byte is expected.
|
|
33
33
|
// BadNoCommunication
|
|
34
34
|
|
|
35
|
+
// guards against a cyclic MethodDeclarationId chain or a runaway type hierarchy
|
|
36
|
+
const maxDepth = 64;
|
|
37
|
+
|
|
38
|
+
/** true when `method` was instantiated from `declaration`, directly or through a chain of MethodDeclarationId */
|
|
39
|
+
function isDeclaredBy(method: UAMethod, declaration: UAMethod): boolean {
|
|
40
|
+
let current: UAMethod = method;
|
|
41
|
+
for (let i = 0; i < maxDepth; i++) {
|
|
42
|
+
const declarationId = current.methodDeclarationId;
|
|
43
|
+
if (!declarationId || sameNodeId(declarationId, current.nodeId)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
if (sameNodeId(declarationId, declaration.nodeId)) {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
const next = current.addressSpace.findNode(declarationId);
|
|
50
|
+
if (!next || next.nodeClass !== NodeClass.Method) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
current = next as UAMethod;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* the Method whose implementation runs: the target's own, else the one named by methodId, else the first
|
|
60
|
+
* bound Method along the target's MethodDeclarationId chain (an instance created before its type's method was
|
|
61
|
+
* bound). The target itself when none is bound: execute() then reports it as not bound.
|
|
62
|
+
*/
|
|
63
|
+
function implementationOf(targetMethod: UAMethod, methodObj: UAMethod): UAMethod {
|
|
64
|
+
if (targetMethod.isBound()) {
|
|
65
|
+
return targetMethod;
|
|
66
|
+
}
|
|
67
|
+
if (methodObj.isBound()) {
|
|
68
|
+
return methodObj;
|
|
69
|
+
}
|
|
70
|
+
let current: UAMethod = targetMethod;
|
|
71
|
+
for (let i = 0; i < maxDepth; i++) {
|
|
72
|
+
const declarationId = current.methodDeclarationId;
|
|
73
|
+
if (!declarationId || sameNodeId(declarationId, current.nodeId)) {
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
const next = current.addressSpace.findNode(declarationId);
|
|
77
|
+
if (!next || next.nodeClass !== NodeClass.Method) {
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
current = next as UAMethod;
|
|
81
|
+
if (current.isBound()) {
|
|
82
|
+
return current;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return targetMethod;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** the ObjectType of `object` (or `object` itself when it is an ObjectType) and all its supertypes */
|
|
89
|
+
function typeHierarchyOf(object: UAObject | UAObjectType): UAObjectType[] {
|
|
90
|
+
const types: UAObjectType[] = [];
|
|
91
|
+
let type: UAObjectType | null =
|
|
92
|
+
object.nodeClass === NodeClass.ObjectType ? (object as UAObjectType) : (object as UAObject).typeDefinitionObj;
|
|
93
|
+
while (type && types.length < maxDepth) {
|
|
94
|
+
types.push(type);
|
|
95
|
+
type = type.subtypeOfObj;
|
|
96
|
+
}
|
|
97
|
+
return types;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* true when `declaringNode` is an ObjectType that defines methods for `object`: one of its types or supertypes,
|
|
102
|
+
* or an InterfaceType (or a supertype of one) that the object or one of its types implements (OPC 10000-3 v1.05.06 §4.10)
|
|
103
|
+
*/
|
|
104
|
+
function isTypeOf(declaringNode: BaseNode | null, object: UAObject | UAObjectType): boolean {
|
|
105
|
+
if (!declaringNode || declaringNode.nodeClass !== NodeClass.ObjectType) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
const types = typeHierarchyOf(object);
|
|
109
|
+
if (types.includes(declaringNode as UAObjectType)) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
if (!object.addressSpace.findReferenceType("HasInterface")) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
for (const node of [object, ...types]) {
|
|
116
|
+
for (const iface of node.findReferencesExAsObject("HasInterface", BrowseDirection.Forward)) {
|
|
117
|
+
if (
|
|
118
|
+
iface === declaringNode ||
|
|
119
|
+
(iface.nodeClass === NodeClass.ObjectType && (iface as UAObjectType).isSubtypeOf(declaringNode as UAObjectType))
|
|
120
|
+
) {
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* OPC 10000-4 v1.05.07 §5.12.2 Call, methodId: "If the objectId is the NodeId of an Object, the methodId is either the
|
|
130
|
+
* NodeId of the Method that is a component of the Object instance or the NodeId of the Method in the ObjectType
|
|
131
|
+
* that defines the Method. Independent of the methodId parameter, the RolePermissions are always verified with
|
|
132
|
+
* the Method Node that is the target of a HasComponent from the Node defined by objectId."
|
|
133
|
+
*
|
|
134
|
+
* Returns the Method whose AccessRestrictions and RolePermissions govern the call:
|
|
135
|
+
* - `methodObj` itself when it is a component of `object`;
|
|
136
|
+
* - otherwise the component of `object` instantiated from `methodObj` (MethodDeclarationId), or, when
|
|
137
|
+
* `methodObj` belongs to a type of `object`, the component with the same BrowseName;
|
|
138
|
+
* - `methodObj` when it belongs to a type of `object` that has no such component (a method called on its
|
|
139
|
+
* ObjectType, or an optional method not instantiated);
|
|
140
|
+
* - BadMethodInvalid when `methodObj` is neither a method of `object` nor one of its types.
|
|
141
|
+
*/
|
|
142
|
+
function resolveMethodOfObject(
|
|
143
|
+
object: UAObject | UAObjectType,
|
|
144
|
+
methodObj: UAMethod
|
|
145
|
+
): { statusCode: StatusCode; method?: UAMethod } {
|
|
146
|
+
if (object.getMethodById(methodObj.nodeId)) {
|
|
147
|
+
return { statusCode: StatusCodes.Good, method: methodObj };
|
|
148
|
+
}
|
|
149
|
+
const methods = object.getMethods();
|
|
150
|
+
const instantiated = methods.find((m) => isDeclaredBy(m, methodObj));
|
|
151
|
+
if (instantiated) {
|
|
152
|
+
return { statusCode: StatusCodes.Good, method: instantiated };
|
|
153
|
+
}
|
|
154
|
+
if (!isTypeOf(methodObj.parent, object)) {
|
|
155
|
+
return { statusCode: StatusCodes.BadMethodInvalid };
|
|
156
|
+
}
|
|
157
|
+
const browseName = methodObj.browseName.toString();
|
|
158
|
+
const sameName = methods.find((m) => m.browseName.toString() === browseName);
|
|
159
|
+
return { statusCode: StatusCodes.Good, method: sameName || methodObj };
|
|
160
|
+
}
|
|
161
|
+
|
|
35
162
|
export async function callMethodHelper(
|
|
36
163
|
context: ISessionContext,
|
|
37
164
|
addressSpace: IAddressSpace,
|
|
@@ -60,7 +187,14 @@ export async function callMethodHelper(
|
|
|
60
187
|
return { statusCode: StatusCodes.BadMethodInvalid };
|
|
61
188
|
}
|
|
62
189
|
|
|
63
|
-
const
|
|
190
|
+
const resolved = resolveMethodOfObject(object, methodObj);
|
|
191
|
+
if (!resolved.method) {
|
|
192
|
+
return { statusCode: resolved.statusCode };
|
|
193
|
+
}
|
|
194
|
+
// the Method whose AccessRestrictions and RolePermissions apply, whatever methodId named
|
|
195
|
+
const targetMethod = resolved.method;
|
|
196
|
+
|
|
197
|
+
const response1 = getMethodDeclaration_ArgumentList(addressSpace, objectId, targetMethod.nodeId);
|
|
64
198
|
|
|
65
199
|
if (response1.statusCode.isNotGood()) {
|
|
66
200
|
return { statusCode: response1.statusCode };
|
|
@@ -81,7 +215,18 @@ export async function callMethodHelper(
|
|
|
81
215
|
try {
|
|
82
216
|
await resolveOpaqueOnAddressSpace(addressSpace, inputArguments);
|
|
83
217
|
|
|
84
|
-
|
|
218
|
+
// execute() verifies the method it runs on; when the instance method has no implementation of its own,
|
|
219
|
+
// the declaration's runs, so the instance method is verified here first, in the same order as execute()
|
|
220
|
+
const executingMethod = implementationOf(targetMethod, methodObj);
|
|
221
|
+
if (executingMethod !== targetMethod) {
|
|
222
|
+
if (context.isAccessRestricted(targetMethod)) {
|
|
223
|
+
return { statusCode: StatusCodes.BadSecurityModeInsufficient };
|
|
224
|
+
}
|
|
225
|
+
if (!context.checkPermission(targetMethod, PermissionType.Call)) {
|
|
226
|
+
return { statusCode: StatusCodes.BadUserAccessDenied };
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
const callMethodResponse = await executingMethod.execute(object, inputArguments, context);
|
|
85
230
|
callMethodResponse.inputArgumentResults = callMethodResponse.inputArgumentResults || response.inputArgumentResults || [];
|
|
86
231
|
assert(callMethodResponse.statusCode);
|
|
87
232
|
|
|
@@ -29,7 +29,7 @@ import type { EnumFieldOptions, StructureFieldOptions } from "node-opcua-xml2jso
|
|
|
29
29
|
* was built from, and nothing else would ever invalidate it. The source digest cannot: the source
|
|
30
30
|
* did not change. This number is the only lever.
|
|
31
31
|
*/
|
|
32
|
-
export const NODESET_RECORD_SCHEMA =
|
|
32
|
+
export const NODESET_RECORD_SCHEMA = 6;
|
|
33
33
|
|
|
34
34
|
export interface NodesetModelRecord {
|
|
35
35
|
modelUri: string;
|
|
@@ -526,6 +526,8 @@ export class NodesetRecordApplier implements NodesetRecordConsumer {
|
|
|
526
526
|
references: this.references(record),
|
|
527
527
|
// documentation, not behaviour, but the document said it and it must survive the trip
|
|
528
528
|
releaseStatus: record.releaseStatus,
|
|
529
|
+
nodesetDocumentation: record.documentation,
|
|
530
|
+
nodesetCategory: record.category,
|
|
529
531
|
...this.permissions(record)
|
|
530
532
|
};
|
|
531
533
|
}
|
|
@@ -633,6 +635,7 @@ export class NodesetRecordApplier implements NodesetRecordConsumer {
|
|
|
633
635
|
const params = {
|
|
634
636
|
...this.common(record),
|
|
635
637
|
isAbstract: record.isAbstract,
|
|
638
|
+
symmetric: !!record.symmetric,
|
|
636
639
|
displayName: record.displayName,
|
|
637
640
|
description: record.description,
|
|
638
641
|
inverseName: record.inverseName
|
|
@@ -216,6 +216,7 @@ export function makeXmlNodesetRecordReader(): XmlNodesetRecordReader {
|
|
|
216
216
|
init(this: NodeState, _name: string, attrs: XmlAttributes) {
|
|
217
217
|
this.obj = baseRecord(NodeClass.ReferenceType, attrs);
|
|
218
218
|
this.obj.isAbstract = coerceBoolean(attrs.IsAbstract);
|
|
219
|
+
this.obj.symmetric = coerceBoolean(attrs.Symmetric);
|
|
219
220
|
},
|
|
220
221
|
...emit,
|
|
221
222
|
parser: {
|
package/api/session_context.ts
CHANGED
|
@@ -32,6 +32,7 @@ import {
|
|
|
32
32
|
AnonymousIdentityToken,
|
|
33
33
|
MessageSecurityMode,
|
|
34
34
|
PermissionType,
|
|
35
|
+
type RequestHeader,
|
|
35
36
|
type RolePermissionType,
|
|
36
37
|
UserNameIdentityToken,
|
|
37
38
|
X509IdentityToken
|
|
@@ -192,6 +193,8 @@ export interface SessionContextOptions {
|
|
|
192
193
|
session?: ISessionBase /* ServerSession */;
|
|
193
194
|
object?: UAObject | UAObjectType;
|
|
194
195
|
server?: IServerBase /* OPCUAServer*/;
|
|
196
|
+
/** see {@link SessionContext.requestHeader} */
|
|
197
|
+
requestHeader?: RequestHeader;
|
|
195
198
|
}
|
|
196
199
|
|
|
197
200
|
function getPermissionForRole(
|
|
@@ -442,6 +445,7 @@ export class SessionContext implements ISessionContext {
|
|
|
442
445
|
public continuationPoints: Buffer[] = [];
|
|
443
446
|
public readonly session?: ISessionBase;
|
|
444
447
|
public readonly server?: IServerBase;
|
|
448
|
+
public readonly requestHeader?: RequestHeader;
|
|
445
449
|
|
|
446
450
|
constructor(options?: SessionContextOptions) {
|
|
447
451
|
options = options || {};
|
|
@@ -449,6 +453,31 @@ export class SessionContext implements ISessionContext {
|
|
|
449
453
|
this.object = options.object;
|
|
450
454
|
this.server = options.server;
|
|
451
455
|
this.currentTime = undefined;
|
|
456
|
+
this.requestHeader = options.requestHeader;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
/**
|
|
460
|
+
* A SessionContext identical to this one, plus `requestHeader` (and the `getAuditEntryId()`
|
|
461
|
+
* it feeds). Deliberately a **new** instance rather than a mutation of `this`: build one per
|
|
462
|
+
* Call service invocation (see opcua_server.ts _on_CallRequest), never by writing onto the
|
|
463
|
+
* Session's own long-lived sessionContext. That object is shared and read concurrently by
|
|
464
|
+
* every request in flight on the Session (ServerSession#sessionContext is one instance for
|
|
465
|
+
* the Session's whole lifetime - see also UAMethodImpl#execute, which already mutates
|
|
466
|
+
* `context.object` on whatever context it is handed), so a shared mutable RequestHeader
|
|
467
|
+
* field would let two Calls running at once on the same Session overwrite or read back the
|
|
468
|
+
* wrong id. A fresh instance per Call has none of that: nothing but the caller holds a
|
|
469
|
+
* reference to it.
|
|
470
|
+
*/
|
|
471
|
+
public withRequestHeader(requestHeader: RequestHeader): SessionContext {
|
|
472
|
+
return new SessionContext({ session: this.session, object: this.object, server: this.server, requestHeader });
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* `requestHeader?.auditEntryId`, or `undefined` when either is absent or the id is empty -
|
|
477
|
+
* see {@link ISessionContext.getAuditEntryId}.
|
|
478
|
+
*/
|
|
479
|
+
public getAuditEntryId(): string | undefined {
|
|
480
|
+
return this.requestHeader?.auditEntryId || undefined;
|
|
452
481
|
}
|
|
453
482
|
|
|
454
483
|
/**
|
|
@@ -483,6 +512,15 @@ export class SessionContext implements ISessionContext {
|
|
|
483
512
|
return this.session?.getEndpointUrl?.() ?? null;
|
|
484
513
|
}
|
|
485
514
|
|
|
515
|
+
/**
|
|
516
|
+
* The Session's preferred locales, most preferred first (OPC 10000-4 v1.05.07 §5.7.3
|
|
517
|
+
* ActivateSession localeIds, §5.4 Locale Negotiation). `[]` without a Session, or before
|
|
518
|
+
* the Session's first successful ActivateSession with a non-empty localeIds.
|
|
519
|
+
*/
|
|
520
|
+
public getPreferredLocales(): string[] {
|
|
521
|
+
return this.session?.localeIds ? [...this.session.localeIds] : [];
|
|
522
|
+
}
|
|
523
|
+
|
|
486
524
|
public toJSON(): Record<string, string | null> {
|
|
487
525
|
return {
|
|
488
526
|
userName: this.getUserName(),
|
|
@@ -240,7 +240,7 @@ export function verifyArguments_ArgumentList(addressSpace, methodInputArguments,
|
|
|
240
240
|
inputArguments.length);
|
|
241
241
|
return { inputArgumentResults, statusCode: StatusCodes.BadTooManyArguments };
|
|
242
242
|
}
|
|
243
|
-
//
|
|
243
|
+
// OPC 10000-4 v1.05.07 §5.12.2 (Call): when one of the input arguments is not valid the
|
|
244
244
|
// operation statusCode is BadInvalidArgument and inputArgumentResults[i]
|
|
245
245
|
// carries the per-argument reason (BadTypeMismatch for a wrong DataType or
|
|
246
246
|
// ValueRank, BadOutOfRange for a value outside the range). A per-argument
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"argument_list.js","sourceRoot":"","sources":["../../../api/helpers/argument_list.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"argument_list.js","sourceRoot":"","sources":["../../../api/helpers/argument_list.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { IAddressSpace, ISessionContext } from "node-opcua-address-space-base";
|
|
5
5
|
import type { CallMethodRequest } from "node-opcua-service-call";
|
|
6
|
-
import type
|
|
6
|
+
import { type CallMethodResultOptions } from "node-opcua-types";
|
|
7
7
|
export declare function callMethodHelper(context: ISessionContext, addressSpace: IAddressSpace, callMethodRequest: CallMethodRequest): Promise<CallMethodResultOptions>;
|
|
8
8
|
//# sourceMappingURL=call_helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call_helpers.d.ts","sourceRoot":"","sources":["../../../api/helpers/call_helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"call_helpers.d.ts","sourceRoot":"","sources":["../../../api/helpers/call_helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAY,aAAa,EAAE,eAAe,EAAoC,MAAM,+BAA+B,CAAC;AAIhI,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,KAAK,uBAAuB,EAAkB,MAAM,kBAAkB,CAAC;AAuJhF,wBAAsB,gBAAgB,CAClC,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,aAAa,EAC3B,iBAAiB,EAAE,iBAAiB,GACrC,OAAO,CAAC,uBAAuB,CAAC,CAiFlC"}
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* @module node-opcua-address-space
|
|
3
3
|
*/
|
|
4
4
|
import { assert } from "node-opcua-assert";
|
|
5
|
-
import { NodeClass } from "node-opcua-data-model";
|
|
6
|
-
import { NodeId } from "node-opcua-nodeid";
|
|
5
|
+
import { BrowseDirection, NodeClass } from "node-opcua-data-model";
|
|
6
|
+
import { NodeId, sameNodeId } from "node-opcua-nodeid";
|
|
7
7
|
import { StatusCodes } from "node-opcua-status-code";
|
|
8
|
+
import { PermissionType } from "node-opcua-types";
|
|
8
9
|
import { getMethodDeclaration_ArgumentList, verifyArguments_ArgumentList } from "./argument_list.js";
|
|
9
10
|
import { resolveOpaqueOnAddressSpace } from "./resolve_opaque_on_address_space.js";
|
|
10
11
|
// Symbolic Id Description
|
|
@@ -24,6 +25,121 @@ import { resolveOpaqueOnAddressSpace } from "./resolve_opaque_on_address_space.j
|
|
|
24
25
|
// A ByteString is structurally the same as a one dimensional array of Byte.
|
|
25
26
|
// A server shall accept a ByteString if an array of Byte is expected.
|
|
26
27
|
// BadNoCommunication
|
|
28
|
+
// guards against a cyclic MethodDeclarationId chain or a runaway type hierarchy
|
|
29
|
+
const maxDepth = 64;
|
|
30
|
+
/** true when `method` was instantiated from `declaration`, directly or through a chain of MethodDeclarationId */
|
|
31
|
+
function isDeclaredBy(method, declaration) {
|
|
32
|
+
let current = method;
|
|
33
|
+
for (let i = 0; i < maxDepth; i++) {
|
|
34
|
+
const declarationId = current.methodDeclarationId;
|
|
35
|
+
if (!declarationId || sameNodeId(declarationId, current.nodeId)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
if (sameNodeId(declarationId, declaration.nodeId)) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
const next = current.addressSpace.findNode(declarationId);
|
|
42
|
+
if (!next || next.nodeClass !== NodeClass.Method) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
current = next;
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* the Method whose implementation runs: the target's own, else the one named by methodId, else the first
|
|
51
|
+
* bound Method along the target's MethodDeclarationId chain (an instance created before its type's method was
|
|
52
|
+
* bound). The target itself when none is bound: execute() then reports it as not bound.
|
|
53
|
+
*/
|
|
54
|
+
function implementationOf(targetMethod, methodObj) {
|
|
55
|
+
if (targetMethod.isBound()) {
|
|
56
|
+
return targetMethod;
|
|
57
|
+
}
|
|
58
|
+
if (methodObj.isBound()) {
|
|
59
|
+
return methodObj;
|
|
60
|
+
}
|
|
61
|
+
let current = targetMethod;
|
|
62
|
+
for (let i = 0; i < maxDepth; i++) {
|
|
63
|
+
const declarationId = current.methodDeclarationId;
|
|
64
|
+
if (!declarationId || sameNodeId(declarationId, current.nodeId)) {
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
const next = current.addressSpace.findNode(declarationId);
|
|
68
|
+
if (!next || next.nodeClass !== NodeClass.Method) {
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
current = next;
|
|
72
|
+
if (current.isBound()) {
|
|
73
|
+
return current;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return targetMethod;
|
|
77
|
+
}
|
|
78
|
+
/** the ObjectType of `object` (or `object` itself when it is an ObjectType) and all its supertypes */
|
|
79
|
+
function typeHierarchyOf(object) {
|
|
80
|
+
const types = [];
|
|
81
|
+
let type = object.nodeClass === NodeClass.ObjectType ? object : object.typeDefinitionObj;
|
|
82
|
+
while (type && types.length < maxDepth) {
|
|
83
|
+
types.push(type);
|
|
84
|
+
type = type.subtypeOfObj;
|
|
85
|
+
}
|
|
86
|
+
return types;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* true when `declaringNode` is an ObjectType that defines methods for `object`: one of its types or supertypes,
|
|
90
|
+
* or an InterfaceType (or a supertype of one) that the object or one of its types implements (OPC 10000-3 v1.05.06 §4.10)
|
|
91
|
+
*/
|
|
92
|
+
function isTypeOf(declaringNode, object) {
|
|
93
|
+
if (!declaringNode || declaringNode.nodeClass !== NodeClass.ObjectType) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
const types = typeHierarchyOf(object);
|
|
97
|
+
if (types.includes(declaringNode)) {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
if (!object.addressSpace.findReferenceType("HasInterface")) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
for (const node of [object, ...types]) {
|
|
104
|
+
for (const iface of node.findReferencesExAsObject("HasInterface", BrowseDirection.Forward)) {
|
|
105
|
+
if (iface === declaringNode ||
|
|
106
|
+
(iface.nodeClass === NodeClass.ObjectType && iface.isSubtypeOf(declaringNode))) {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* OPC 10000-4 v1.05.07 §5.12.2 Call, methodId: "If the objectId is the NodeId of an Object, the methodId is either the
|
|
115
|
+
* NodeId of the Method that is a component of the Object instance or the NodeId of the Method in the ObjectType
|
|
116
|
+
* that defines the Method. Independent of the methodId parameter, the RolePermissions are always verified with
|
|
117
|
+
* the Method Node that is the target of a HasComponent from the Node defined by objectId."
|
|
118
|
+
*
|
|
119
|
+
* Returns the Method whose AccessRestrictions and RolePermissions govern the call:
|
|
120
|
+
* - `methodObj` itself when it is a component of `object`;
|
|
121
|
+
* - otherwise the component of `object` instantiated from `methodObj` (MethodDeclarationId), or, when
|
|
122
|
+
* `methodObj` belongs to a type of `object`, the component with the same BrowseName;
|
|
123
|
+
* - `methodObj` when it belongs to a type of `object` that has no such component (a method called on its
|
|
124
|
+
* ObjectType, or an optional method not instantiated);
|
|
125
|
+
* - BadMethodInvalid when `methodObj` is neither a method of `object` nor one of its types.
|
|
126
|
+
*/
|
|
127
|
+
function resolveMethodOfObject(object, methodObj) {
|
|
128
|
+
if (object.getMethodById(methodObj.nodeId)) {
|
|
129
|
+
return { statusCode: StatusCodes.Good, method: methodObj };
|
|
130
|
+
}
|
|
131
|
+
const methods = object.getMethods();
|
|
132
|
+
const instantiated = methods.find((m) => isDeclaredBy(m, methodObj));
|
|
133
|
+
if (instantiated) {
|
|
134
|
+
return { statusCode: StatusCodes.Good, method: instantiated };
|
|
135
|
+
}
|
|
136
|
+
if (!isTypeOf(methodObj.parent, object)) {
|
|
137
|
+
return { statusCode: StatusCodes.BadMethodInvalid };
|
|
138
|
+
}
|
|
139
|
+
const browseName = methodObj.browseName.toString();
|
|
140
|
+
const sameName = methods.find((m) => m.browseName.toString() === browseName);
|
|
141
|
+
return { statusCode: StatusCodes.Good, method: sameName || methodObj };
|
|
142
|
+
}
|
|
27
143
|
export async function callMethodHelper(context, addressSpace, callMethodRequest) {
|
|
28
144
|
const objectId = callMethodRequest.objectId;
|
|
29
145
|
const methodId = callMethodRequest.methodId;
|
|
@@ -44,7 +160,13 @@ export async function callMethodHelper(context, addressSpace, callMethodRequest)
|
|
|
44
160
|
if (methodObj.nodeClass !== NodeClass.Method) {
|
|
45
161
|
return { statusCode: StatusCodes.BadMethodInvalid };
|
|
46
162
|
}
|
|
47
|
-
const
|
|
163
|
+
const resolved = resolveMethodOfObject(object, methodObj);
|
|
164
|
+
if (!resolved.method) {
|
|
165
|
+
return { statusCode: resolved.statusCode };
|
|
166
|
+
}
|
|
167
|
+
// the Method whose AccessRestrictions and RolePermissions apply, whatever methodId named
|
|
168
|
+
const targetMethod = resolved.method;
|
|
169
|
+
const response1 = getMethodDeclaration_ArgumentList(addressSpace, objectId, targetMethod.nodeId);
|
|
48
170
|
if (response1.statusCode.isNotGood()) {
|
|
49
171
|
return { statusCode: response1.statusCode };
|
|
50
172
|
}
|
|
@@ -60,7 +182,18 @@ export async function callMethodHelper(context, addressSpace, callMethodRequest)
|
|
|
60
182
|
}
|
|
61
183
|
try {
|
|
62
184
|
await resolveOpaqueOnAddressSpace(addressSpace, inputArguments);
|
|
63
|
-
|
|
185
|
+
// execute() verifies the method it runs on; when the instance method has no implementation of its own,
|
|
186
|
+
// the declaration's runs, so the instance method is verified here first, in the same order as execute()
|
|
187
|
+
const executingMethod = implementationOf(targetMethod, methodObj);
|
|
188
|
+
if (executingMethod !== targetMethod) {
|
|
189
|
+
if (context.isAccessRestricted(targetMethod)) {
|
|
190
|
+
return { statusCode: StatusCodes.BadSecurityModeInsufficient };
|
|
191
|
+
}
|
|
192
|
+
if (!context.checkPermission(targetMethod, PermissionType.Call)) {
|
|
193
|
+
return { statusCode: StatusCodes.BadUserAccessDenied };
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
const callMethodResponse = await executingMethod.execute(object, inputArguments, context);
|
|
64
197
|
callMethodResponse.inputArgumentResults = callMethodResponse.inputArgumentResults || response.inputArgumentResults || [];
|
|
65
198
|
assert(callMethodResponse.statusCode);
|
|
66
199
|
if (callMethodResponse.statusCode?.isGood()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call_helpers.js","sourceRoot":"","sources":["../../../api/helpers/call_helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"call_helpers.js","sourceRoot":"","sources":["../../../api/helpers/call_helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ import type { EnumFieldOptions, StructureFieldOptions } from "node-opcua-xml2jso
|
|
|
28
28
|
* was built from, and nothing else would ever invalidate it. The source digest cannot: the source
|
|
29
29
|
* did not change. This number is the only lever.
|
|
30
30
|
*/
|
|
31
|
-
export declare const NODESET_RECORD_SCHEMA =
|
|
31
|
+
export declare const NODESET_RECORD_SCHEMA = 6;
|
|
32
32
|
export interface NodesetModelRecord {
|
|
33
33
|
modelUri: string;
|
|
34
34
|
version: string;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* was built from, and nothing else would ever invalidate it. The source digest cannot: the source
|
|
9
9
|
* did not change. This number is the only lever.
|
|
10
10
|
*/
|
|
11
|
-
export const NODESET_RECORD_SCHEMA =
|
|
11
|
+
export const NODESET_RECORD_SCHEMA = 6;
|
|
12
12
|
/**
|
|
13
13
|
* an extension object the reader could not decode on the spot: its XML body waits in the value
|
|
14
14
|
* until the data types are known, then a consumer decodes it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeset_record_applier.d.ts","sourceRoot":"","sources":["../../../api/loader/nodeset_record_applier.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAER,QAAQ,EAER,aAAa,EAEb,WAAW,EAGd,MAAM,+BAA+B,CAAC;AAevC,OAAO,EAAE,MAAM,EAAiB,MAAM,mBAAmB,CAAC;AAQ1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,OAAO,EAIH,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAE7B,MAAM,qBAAqB,CAAC;AAO7B,MAAM,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAElE,6EAA6E;AAC7E,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,IAAI,EAAE,CAAC;IAClB,6BAA6B,EAAE,IAAI,EAAE,CAAC;IACtC,2BAA2B,EAAE,IAAI,EAAE,CAAC;IACpC,6BAA6B,EAAE,IAAI,EAAE,CAAC;IACtC,6CAA6C,EAAE,IAAI,EAAE,CAAC;IACtD,2BAA2B,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3E;AACD,wBAAgB,oBAAoB,IAAI,gBAAgB,CASvD;AA2ID,yDAAyD;AACzD,MAAM,WAAW,qBAAqB;IAClC,mGAAmG;IACnG,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvB,2DAA2D;IAC3D,UAAU,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;CAC9C;AAED,qBAAa,oBAAqB,YAAW,qBAAqB;IAiB1D,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAjB3B,+GAA+G;IAC/G,OAAO,CAAC,OAAO,CAAiE;IAEhF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAU;IAGlD,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,UAAU,CAAS;IAE3B,YACI,YAAY,EAAE,aAAa,EACV,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EAQ5C;IAEM,KAAK,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CASxC;IAGD,OAAO,CAAC,WAAW;IAoDnB,OAAO,CAAC,YAAY;IAoEpB,OAAO,CAAC,uBAAuB;IAU/B,yEAAyE;IACzE,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,eAAe;IAGvB,OAAO,CAAC,sBAAsB;IAI9B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAiB9B;IAEF;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"nodeset_record_applier.d.ts","sourceRoot":"","sources":["../../../api/loader/nodeset_record_applier.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAER,QAAQ,EAER,aAAa,EAEb,WAAW,EAGd,MAAM,+BAA+B,CAAC;AAevC,OAAO,EAAE,MAAM,EAAiB,MAAM,mBAAmB,CAAC;AAQ1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,OAAO,EAIH,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAE7B,MAAM,qBAAqB,CAAC;AAO7B,MAAM,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAElE,6EAA6E;AAC7E,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,IAAI,EAAE,CAAC;IAClB,6BAA6B,EAAE,IAAI,EAAE,CAAC;IACtC,2BAA2B,EAAE,IAAI,EAAE,CAAC;IACpC,6BAA6B,EAAE,IAAI,EAAE,CAAC;IACtC,6CAA6C,EAAE,IAAI,EAAE,CAAC;IACtD,2BAA2B,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3E;AACD,wBAAgB,oBAAoB,IAAI,gBAAgB,CASvD;AA2ID,yDAAyD;AACzD,MAAM,WAAW,qBAAqB;IAClC,mGAAmG;IACnG,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvB,2DAA2D;IAC3D,UAAU,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;CAC9C;AAED,qBAAa,oBAAqB,YAAW,qBAAqB;IAiB1D,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAjB3B,+GAA+G;IAC/G,OAAO,CAAC,OAAO,CAAiE;IAEhF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAU;IAGlD,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,UAAU,CAAS;IAE3B,YACI,YAAY,EAAE,aAAa,EACV,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EAQ5C;IAEM,KAAK,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CASxC;IAGD,OAAO,CAAC,WAAW;IAoDnB,OAAO,CAAC,YAAY;IAoEpB,OAAO,CAAC,uBAAuB;IAU/B,yEAAyE;IACzE,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,eAAe;IAGvB,OAAO,CAAC,sBAAsB;IAI9B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAiB9B;IAEF;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,MAAM;IAcd,sGAAsG;IACtG,OAAO,CAAC,UAAU;IAWlB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM;IAiBd;;;;;OAKG;IACI,yBAAyB,IAAI,qBAAqB,CAIxD;IAED,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,SAAS;IAqFjB,OAAO,CAAC,aAAa;IAwCrB;;;OAGG;IACH,OAAO,CAAC,YAAY;IA4CpB,OAAO,CAAC,0BAA0B;IAsBlC,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,aAAa;IAsErB,oGAAoG;IACpG,OAAO,CAAC,eAAe;IAYvB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,iBAAiB;CAkB5B"}
|
|
@@ -400,6 +400,8 @@ export class NodesetRecordApplier {
|
|
|
400
400
|
references: this.references(record),
|
|
401
401
|
// documentation, not behaviour, but the document said it and it must survive the trip
|
|
402
402
|
releaseStatus: record.releaseStatus,
|
|
403
|
+
nodesetDocumentation: record.documentation,
|
|
404
|
+
nodesetCategory: record.category,
|
|
403
405
|
...this.permissions(record)
|
|
404
406
|
};
|
|
405
407
|
}
|
|
@@ -493,6 +495,7 @@ export class NodesetRecordApplier {
|
|
|
493
495
|
const params = {
|
|
494
496
|
...this.common(record),
|
|
495
497
|
isAbstract: record.isAbstract,
|
|
498
|
+
symmetric: !!record.symmetric,
|
|
496
499
|
displayName: record.displayName,
|
|
497
500
|
description: record.description,
|
|
498
501
|
inverseName: record.inverseName
|