node-opcua-address-space 2.76.1 → 2.76.2
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/dist/source/address_space_ts.d.ts +118 -118
- package/dist/source/address_space_ts.js +17 -17
- package/dist/source/continuation_points/continuation_point_manager.d.ts +32 -32
- package/dist/source/continuation_points/continuation_point_manager.js +195 -195
- package/dist/source/helpers/adjust_browse_direction.d.ts +5 -5
- package/dist/source/helpers/adjust_browse_direction.js +11 -11
- package/dist/source/helpers/argument_list.d.ts +33 -33
- package/dist/source/helpers/argument_list.js +258 -258
- package/dist/source/helpers/call_helpers.d.ts +6 -6
- package/dist/source/helpers/call_helpers.js +70 -70
- package/dist/source/helpers/check_event_clause.d.ts +17 -0
- package/dist/source/helpers/check_event_clause.js +53 -0
- package/dist/source/helpers/check_event_clause.js.map +1 -0
- package/dist/source/helpers/coerce_enum_value.d.ts +6 -6
- package/dist/source/helpers/coerce_enum_value.js +33 -33
- package/dist/source/helpers/dump_tools.d.ts +14 -14
- package/dist/source/helpers/dump_tools.js +78 -78
- package/dist/source/helpers/ensure_secure_access.d.ts +9 -9
- package/dist/source/helpers/ensure_secure_access.js +76 -76
- package/dist/source/helpers/make_optionals_map.d.ts +21 -21
- package/dist/source/helpers/make_optionals_map.js +29 -29
- package/dist/source/helpers/multiform_func.d.ts +11 -11
- package/dist/source/helpers/multiform_func.js +75 -75
- package/dist/source/helpers/resolve_opaque_on_address_space.d.ts +3 -3
- package/dist/source/helpers/resolve_opaque_on_address_space.js +36 -36
- package/dist/source/index.d.ts +56 -56
- package/dist/source/index.js +83 -83
- package/dist/source/interfaces/alarms_and_conditions/condition_info_i.d.ts +19 -19
- package/dist/source/interfaces/alarms_and_conditions/condition_info_i.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/condition_snapshot.d.ts +193 -193
- package/dist/source/interfaces/alarms_and_conditions/condition_snapshot.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/deviation_stuff.d.ts +12 -12
- package/dist/source/interfaces/alarms_and_conditions/deviation_stuff.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/install_setpoint_options.d.ts +10 -10
- package/dist/source/interfaces/alarms_and_conditions/install_setpoint_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_alarm_condition_options.d.ts +7 -7
- package/dist/source/interfaces/alarms_and_conditions/instantiate_alarm_condition_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_condition_options.d.ts +7 -7
- package/dist/source/interfaces/alarms_and_conditions/instantiate_condition_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_deviation_alarm_options.d.ts +4 -4
- package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_deviation_alarm_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_limit_alarm_options.d.ts +4 -4
- package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_limit_alarm_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_limit_alarm_options.d.ts +9 -9
- package/dist/source/interfaces/alarms_and_conditions/instantiate_limit_alarm_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_deviation_alarm_options.d.ts +4 -4
- package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_deviation_alarm_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_limit_alarm_options.d.ts +4 -4
- package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_limit_alarm_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_off_normal_alarm_options.d.ts +20 -20
- package/dist/source/interfaces/alarms_and_conditions/instantiate_off_normal_alarm_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_acknowledgeable_condition_ex.d.ts +23 -23
- package/dist/source/interfaces/alarms_and_conditions/ua_acknowledgeable_condition_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_alarm_condition_ex.d.ts +32 -32
- package/dist/source/interfaces/alarms_and_conditions/ua_alarm_condition_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_certificate_expiration_alarm_ex.d.ts +19 -19
- package/dist/source/interfaces/alarms_and_conditions/ua_certificate_expiration_alarm_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_condition_ex.d.ts +42 -42
- package/dist/source/interfaces/alarms_and_conditions/ua_condition_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_discrete_alarm_ex.d.ts +7 -7
- package/dist/source/interfaces/alarms_and_conditions/ua_discrete_alarm_ex.js +25 -25
- package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_deviation_alarm_ex.d.ts +5 -5
- package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_deviation_alarm_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_limit_alarm_ex.d.ts +20 -20
- package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_limit_alarm_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_limit_alarm_ex.d.ts +26 -26
- package/dist/source/interfaces/alarms_and_conditions/ua_limit_alarm_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_deviation_alarm_ex.d.ts +8 -8
- package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_deviation_alarm_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_limit_alarm_ex.d.ts +10 -10
- package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_limit_alarm_ex.js +2 -2
- package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.d.ts +21 -21
- package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.js +2 -2
- package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.d.ts +24 -24
- package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.js +2 -2
- package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.d.ts +12 -12
- package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.js +2 -2
- package/dist/source/interfaces/data_access/ua_y_array_item_ex.d.ts +8 -8
- package/dist/source/interfaces/data_access/ua_y_array_item_ex.js +2 -2
- package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.d.ts +12 -12
- package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.js +2 -2
- package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.d.ts +49 -49
- package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.js +2 -2
- package/dist/source/interfaces/state_machine/ua_program_state_machine_type.d.ts +11 -11
- package/dist/source/interfaces/state_machine/ua_program_state_machine_type.js +2 -2
- package/dist/source/interfaces/state_machine/ua_shelved_state_machine_ex.d.ts +30 -30
- package/dist/source/interfaces/state_machine/ua_shelved_state_machine_ex.js +2 -2
- package/dist/source/interfaces/state_machine/ua_state_machine_type.d.ts +222 -222
- package/dist/source/interfaces/state_machine/ua_state_machine_type.js +2 -2
- package/dist/source/interfaces/state_machine/ua_transition_ex.d.ts +6 -6
- package/dist/source/interfaces/state_machine/ua_transition_ex.js +2 -2
- package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.d.ts +8 -8
- package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.js +2 -2
- package/dist/source/loader/decode_xml_extension_object.d.ts +6 -6
- package/dist/source/loader/decode_xml_extension_object.js +71 -71
- package/dist/source/loader/ensure_datatype_extracted.d.ts +5 -5
- package/dist/source/loader/ensure_datatype_extracted.js +45 -45
- package/dist/source/loader/generateAddressSpaceRaw.d.ts +10 -10
- package/dist/source/loader/generateAddressSpaceRaw.js +45 -45
- package/dist/source/loader/load_nodeset2.d.ts +16 -16
- package/dist/source/loader/load_nodeset2.js +1461 -1461
- package/dist/source/loader/make_semver_compatible.d.ts +6 -6
- package/dist/source/loader/make_semver_compatible.js +25 -25
- package/dist/source/loader/make_xml_extension_object_parser.d.ts +28 -28
- package/dist/source/loader/make_xml_extension_object_parser.js +325 -325
- package/dist/source/loader/namespace_post_step.d.ts +10 -10
- package/dist/source/loader/namespace_post_step.js +61 -61
- package/dist/source/loader/register_node_promoter.d.ts +2 -2
- package/dist/source/loader/register_node_promoter.js +9 -9
- package/dist/source/namespace.d.ts +6 -6
- package/dist/source/namespace.js +2 -2
- package/dist/source/namespace_alarm_and_condition.d.ts +32 -32
- package/dist/source/namespace_alarm_and_condition.js +2 -2
- package/dist/source/namespace_data_access.d.ts +42 -42
- package/dist/source/namespace_data_access.js +2 -2
- package/dist/source/namespace_machine_state.d.ts +7 -7
- package/dist/source/namespace_machine_state.js +2 -2
- package/dist/source/pseudo_session.d.ts +55 -55
- package/dist/source/pseudo_session.js +203 -203
- package/dist/source/session_context.d.ts +111 -111
- package/dist/source/session_context.js +265 -265
- package/dist/source/set_namespace_meta_data.d.ts +2 -2
- package/dist/source/set_namespace_meta_data.js +59 -59
- package/dist/source/ua_root_folder.d.ts +9 -9
- package/dist/source/ua_root_folder.js +2 -2
- package/dist/source/ua_two_state_variable_ex.d.ts +23 -23
- package/dist/source/ua_two_state_variable_ex.js +2 -2
- package/dist/source/xml_writer.d.ts +9 -9
- package/dist/source/xml_writer.js +2 -2
- package/dist/src/address_space.d.ts +392 -392
- package/dist/src/address_space.js +1392 -1392
- package/dist/src/address_space_change_event_tools.d.ts +6 -6
- package/dist/src/address_space_change_event_tools.js +149 -149
- package/dist/src/address_space_private.d.ts +43 -43
- package/dist/src/address_space_private.js +2 -2
- package/dist/src/alarms_and_conditions/check_where_clause.d.ts +4 -0
- package/dist/src/alarms_and_conditions/check_where_clause.js +110 -0
- package/dist/src/alarms_and_conditions/check_where_clause.js.map +1 -0
- package/dist/src/alarms_and_conditions/condition.d.ts +5 -5
- package/dist/src/alarms_and_conditions/condition.js +78 -78
- package/dist/src/alarms_and_conditions/condition_info.d.ts +27 -0
- package/dist/src/alarms_and_conditions/condition_info.js +55 -0
- package/dist/src/alarms_and_conditions/condition_info.js.map +1 -0
- package/dist/src/alarms_and_conditions/condition_info_impl.d.ts +26 -26
- package/dist/src/alarms_and_conditions/condition_info_impl.js +54 -54
- package/dist/src/alarms_and_conditions/condition_snapshot.d.ts +233 -0
- package/dist/src/alarms_and_conditions/condition_snapshot.js +667 -0
- package/dist/src/alarms_and_conditions/condition_snapshot.js.map +1 -0
- package/dist/src/alarms_and_conditions/condition_snapshot_impl.d.ts +222 -222
- package/dist/src/alarms_and_conditions/condition_snapshot_impl.js +657 -657
- package/dist/src/alarms_and_conditions/deviation_alarm_helper.d.ts +9 -9
- package/dist/src/alarms_and_conditions/deviation_alarm_helper.js +61 -61
- package/dist/src/alarms_and_conditions/extract_event_fields.d.ts +10 -0
- package/dist/src/alarms_and_conditions/extract_event_fields.js +90 -0
- package/dist/src/alarms_and_conditions/extract_event_fields.js.map +1 -0
- package/dist/src/alarms_and_conditions/index.d.ts +16 -16
- package/dist/src/alarms_and_conditions/index.js +32 -32
- package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.d.ts +44 -44
- package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.js +244 -244
- package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.d.ts +93 -93
- package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.js +419 -419
- package/dist/src/alarms_and_conditions/ua_base_event_impl.d.ts +26 -26
- package/dist/src/alarms_and_conditions/ua_base_event_impl.js +38 -38
- package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.d.ts +44 -44
- package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js +183 -183
- package/dist/src/alarms_and_conditions/ua_condition_impl.d.ts +153 -153
- package/dist/src/alarms_and_conditions/ua_condition_impl.js +1028 -1028
- package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.d.ts +14 -14
- package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.js +34 -34
- package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.d.ts +24 -24
- package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.js +56 -56
- package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.d.ts +11 -11
- package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.js +11 -11
- package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.d.ts +23 -23
- package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.js +86 -86
- package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.d.ts +11 -11
- package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.js +7 -7
- package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.d.ts +79 -79
- package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.js +250 -250
- package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.d.ts +24 -24
- package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.js +50 -50
- package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.d.ts +19 -19
- package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.js +162 -162
- package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.d.ts +46 -46
- package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.js +166 -166
- package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.d.ts +18 -18
- package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.js +17 -17
- package/dist/src/apply_condition_refresh.d.ts +6 -6
- package/dist/src/apply_condition_refresh.js +27 -27
- package/dist/src/base_node_impl.d.ts +281 -281
- package/dist/src/base_node_impl.js +1395 -1395
- package/dist/src/base_node_private.d.ts +61 -61
- package/dist/src/base_node_private.js +705 -705
- package/dist/src/data_access/add_dataItem_stuff.d.ts +11 -11
- package/dist/src/data_access/add_dataItem_stuff.js +61 -61
- package/dist/src/data_access/check_variant_compatibility_ua_analog_item.d.ts +1 -1
- package/dist/src/data_access/check_variant_compatibility_ua_analog_item.js +34 -34
- package/dist/src/data_access/ua_multistate_discrete_impl.d.ts +32 -32
- package/dist/src/data_access/ua_multistate_discrete_impl.js +130 -130
- package/dist/src/data_access/ua_multistate_value_discrete.d.ts +51 -0
- package/dist/src/data_access/ua_multistate_value_discrete.js +250 -0
- package/dist/src/data_access/ua_multistate_value_discrete.js.map +1 -0
- package/dist/src/data_access/ua_multistate_value_discrete_impl.d.ts +51 -51
- package/dist/src/data_access/ua_multistate_value_discrete_impl.js +249 -249
- package/dist/src/data_access/ua_two_state_discrete.d.ts +25 -0
- package/dist/src/data_access/ua_two_state_discrete.js +154 -0
- package/dist/src/data_access/ua_two_state_discrete.js.map +1 -0
- package/dist/src/data_access/ua_two_state_discrete_impl.d.ts +25 -25
- package/dist/src/data_access/ua_two_state_discrete_impl.js +153 -153
- package/dist/src/event_data.d.ts +34 -34
- package/dist/src/event_data.js +64 -64
- package/dist/src/extension_object_array_node.d.ts +61 -61
- package/dist/src/extension_object_array_node.js +276 -276
- package/dist/src/historical_access/address_space_historical_data_node.d.ts +26 -26
- package/dist/src/historical_access/address_space_historical_data_node.js +630 -630
- package/dist/src/index_current.d.ts +43 -43
- package/dist/src/index_current.js +74 -74
- package/dist/src/namespace_impl.d.ts +461 -461
- package/dist/src/namespace_impl.js +1732 -1732
- package/dist/src/namespace_private.d.ts +21 -21
- package/dist/src/namespace_private.js +32 -32
- package/dist/src/nodeid_manager.d.ts +36 -36
- package/dist/src/nodeid_manager.js +197 -197
- package/dist/src/nodeset_tools/adjust_namespace_array.d.ts +2 -2
- package/dist/src/nodeset_tools/adjust_namespace_array.js +13 -13
- package/dist/src/nodeset_tools/construct_namespace_dependency.d.ts +2 -2
- package/dist/src/nodeset_tools/construct_namespace_dependency.js +83 -83
- package/dist/src/nodeset_tools/nodeset_to_xml.d.ts +2 -2
- package/dist/src/nodeset_tools/nodeset_to_xml.js +1155 -1155
- package/dist/src/nodeset_tools/typedictionary_to_xml.d.ts +2 -2
- package/dist/src/nodeset_tools/typedictionary_to_xml.js +154 -154
- package/dist/src/reference_impl.d.ts +43 -43
- package/dist/src/reference_impl.js +139 -139
- package/dist/src/role_permissions.d.ts +2 -2
- package/dist/src/role_permissions.js +10 -10
- package/dist/src/state_machine/finite_state_machine.d.ts +67 -67
- package/dist/src/state_machine/finite_state_machine.js +353 -353
- package/dist/src/state_machine/ua_shelving_state_machine_ex.d.ts +38 -38
- package/dist/src/state_machine/ua_shelving_state_machine_ex.js +250 -250
- package/dist/src/state_machine/ua_two_state_variable.d.ts +61 -61
- package/dist/src/state_machine/ua_two_state_variable.js +331 -331
- package/dist/src/tool_isSupertypeOf.d.ts +17 -17
- package/dist/src/tool_isSupertypeOf.js +108 -108
- package/dist/src/ua_condition_type.d.ts +8 -8
- package/dist/src/ua_condition_type.js +2 -2
- package/dist/src/ua_data_type_impl.d.ts +93 -93
- package/dist/src/ua_data_type_impl.js +371 -371
- package/dist/src/ua_method_impl.d.ts +41 -41
- package/dist/src/ua_method_impl.js +208 -208
- package/dist/src/ua_object_impl.d.ts +35 -35
- package/dist/src/ua_object_impl.js +161 -161
- package/dist/src/ua_object_type_impl.d.ts +48 -48
- package/dist/src/ua_object_type_impl.js +124 -124
- package/dist/src/ua_reference_type_impl.d.ts +43 -43
- package/dist/src/ua_reference_type_impl.js +139 -139
- package/dist/src/ua_variable_impl.d.ts +351 -351
- package/dist/src/ua_variable_impl.js +1604 -1604
- package/dist/src/ua_variable_impl_ext_obj.d.ts +17 -17
- package/dist/src/ua_variable_impl_ext_obj.js +437 -437
- package/dist/src/ua_variable_type_impl.d.ts +62 -62
- package/dist/src/ua_variable_type_impl.js +570 -570
- package/dist/src/ua_view_impl.d.ts +19 -19
- package/dist/src/ua_view_impl.js +43 -43
- package/distHelpers/add_event_generator_object.d.ts +3 -3
- package/distHelpers/add_event_generator_object.js +64 -64
- package/distHelpers/alarms_and_conditions_demo.d.ts +9 -9
- package/distHelpers/alarms_and_conditions_demo.js +115 -115
- package/distHelpers/assertHasMatchingReference.d.ts +19 -19
- package/distHelpers/assertHasMatchingReference.js +40 -40
- package/distHelpers/boiler_system.d.ts +113 -113
- package/distHelpers/boiler_system.js +395 -395
- package/distHelpers/create_minimalist_address_space_nodeset.d.ts +5 -5
- package/distHelpers/create_minimalist_address_space_nodeset.js +171 -171
- package/distHelpers/date_utils.d.ts +3 -3
- package/distHelpers/date_utils.js +9 -9
- package/distHelpers/dump_statemachine.js +127 -127
- package/distHelpers/get_address_space_fixture.d.ts +1 -1
- package/distHelpers/get_address_space_fixture.js +30 -30
- package/distHelpers/get_mini_address_space.d.ts +7 -7
- package/distHelpers/get_mini_address_space.js +36 -36
- package/distHelpers/index.d.ts +12 -12
- package/distHelpers/index.js +28 -28
- package/distHelpers/mock_session.d.ts +14 -14
- package/distHelpers/mock_session.js +25 -25
- package/distNodeJS/generate_address_space.d.ts +4 -4
- package/distNodeJS/generate_address_space.js +41 -41
- package/distNodeJS/index.d.ts +1 -1
- package/distNodeJS/index.js +17 -17
- package/package.json +36 -35
|
@@ -1,266 +1,266 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @module node-opcua-address-space
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.SessionContext = exports.makeRoles = exports.WellKnownRolesNodeId = exports.WellKnownRoles = exports.PermissionType = exports.RolePermissionType = void 0;
|
|
7
|
-
const node_opcua_assert_1 = require("node-opcua-assert");
|
|
8
|
-
const node_opcua_crypto_1 = require("node-opcua-crypto");
|
|
9
|
-
const node_opcua_data_model_1 = require("node-opcua-data-model");
|
|
10
|
-
const node_opcua_nodeid_1 = require("node-opcua-nodeid");
|
|
11
|
-
const node_opcua_types_1 = require("node-opcua-types");
|
|
12
|
-
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
13
|
-
var node_opcua_types_2 = require("node-opcua-types");
|
|
14
|
-
Object.defineProperty(exports, "RolePermissionType", { enumerable: true, get: function () { return node_opcua_types_2.RolePermissionType; } });
|
|
15
|
-
Object.defineProperty(exports, "PermissionType", { enumerable: true, get: function () { return node_opcua_types_2.PermissionType; } });
|
|
16
|
-
function getUserName(userIdentityToken) {
|
|
17
|
-
if (userIdentityToken instanceof node_opcua_types_1.AnonymousIdentityToken) {
|
|
18
|
-
return "anonymous";
|
|
19
|
-
}
|
|
20
|
-
if (userIdentityToken instanceof node_opcua_types_1.X509IdentityToken) {
|
|
21
|
-
const certInfo = (0, node_opcua_crypto_1.exploreCertificate)(userIdentityToken.certificateData);
|
|
22
|
-
const userName = certInfo.tbsCertificate.subject.commonName || "";
|
|
23
|
-
if (typeof userName !== "string") {
|
|
24
|
-
throw new Error("Invalid username");
|
|
25
|
-
}
|
|
26
|
-
return userName;
|
|
27
|
-
}
|
|
28
|
-
if (userIdentityToken instanceof node_opcua_types_1.UserNameIdentityToken) {
|
|
29
|
-
if (userIdentityToken.policyId === "anonymous") {
|
|
30
|
-
return "anonymous";
|
|
31
|
-
}
|
|
32
|
-
(0, node_opcua_assert_1.assert)(Object.prototype.hasOwnProperty.call(userIdentityToken, "userName"));
|
|
33
|
-
return userIdentityToken.userName;
|
|
34
|
-
}
|
|
35
|
-
throw new Error("Invalid user identity token");
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
*
|
|
39
|
-
*/
|
|
40
|
-
var WellKnownRoles;
|
|
41
|
-
(function (WellKnownRoles) {
|
|
42
|
-
WellKnownRoles[WellKnownRoles["Anonymous"] = 15644] = "Anonymous";
|
|
43
|
-
WellKnownRoles[WellKnownRoles["AuthenticatedUser"] = 15656] = "AuthenticatedUser";
|
|
44
|
-
WellKnownRoles[WellKnownRoles["ConfigureAdmin"] = 15716] = "ConfigureAdmin";
|
|
45
|
-
WellKnownRoles[WellKnownRoles["Engineer"] = 16036] = "Engineer";
|
|
46
|
-
WellKnownRoles[WellKnownRoles["Observer"] = 15668] = "Observer";
|
|
47
|
-
WellKnownRoles[WellKnownRoles["Operator"] = 15680] = "Operator";
|
|
48
|
-
WellKnownRoles[WellKnownRoles["SecurityAdmin"] = 15704] = "SecurityAdmin";
|
|
49
|
-
WellKnownRoles[WellKnownRoles["Supervisor"] = 15692] = "Supervisor";
|
|
50
|
-
})(WellKnownRoles = exports.WellKnownRoles || (exports.WellKnownRoles = {}));
|
|
51
|
-
var WellKnownRolesNodeId;
|
|
52
|
-
(function (WellKnownRolesNodeId) {
|
|
53
|
-
WellKnownRolesNodeId[WellKnownRolesNodeId["Anonymous"] = 15644] = "Anonymous";
|
|
54
|
-
WellKnownRolesNodeId[WellKnownRolesNodeId["AuthenticatedUser"] = 15656] = "AuthenticatedUser";
|
|
55
|
-
WellKnownRolesNodeId[WellKnownRolesNodeId["ConfigureAdmin"] = 15716] = "ConfigureAdmin";
|
|
56
|
-
WellKnownRolesNodeId[WellKnownRolesNodeId["Engineer"] = 16036] = "Engineer";
|
|
57
|
-
WellKnownRolesNodeId[WellKnownRolesNodeId["Observer"] = 15668] = "Observer";
|
|
58
|
-
WellKnownRolesNodeId[WellKnownRolesNodeId["Operator"] = 15680] = "Operator";
|
|
59
|
-
WellKnownRolesNodeId[WellKnownRolesNodeId["SecurityAdmin"] = 15704] = "SecurityAdmin";
|
|
60
|
-
WellKnownRolesNodeId[WellKnownRolesNodeId["Supervisor"] = 15692] = "Supervisor";
|
|
61
|
-
})(WellKnownRolesNodeId = exports.WellKnownRolesNodeId || (exports.WellKnownRolesNodeId = {}));
|
|
62
|
-
function getPermissionForRole(rolePermissions, role) {
|
|
63
|
-
if (rolePermissions === null) {
|
|
64
|
-
return node_opcua_data_model_1.allPermissions;
|
|
65
|
-
}
|
|
66
|
-
const a = rolePermissions.find((r) => {
|
|
67
|
-
return (0, node_opcua_nodeid_1.sameNodeId)((0, node_opcua_nodeid_1.resolveNodeId)(r.roleId), role);
|
|
68
|
-
});
|
|
69
|
-
return a !== undefined ? a.permissions | node_opcua_data_model_1.PermissionFlag.None : node_opcua_data_model_1.PermissionFlag.None;
|
|
70
|
-
}
|
|
71
|
-
function isDefaultContext(context) {
|
|
72
|
-
return context === SessionContext.defaultContext;
|
|
73
|
-
}
|
|
74
|
-
function getAccessRestrictionsOnNamespace(namespace, context) {
|
|
75
|
-
var _a, _b, _c;
|
|
76
|
-
// ignore permission when default context is provided (to avoid recursion)
|
|
77
|
-
if (isDefaultContext(context)) {
|
|
78
|
-
return node_opcua_data_model_1.AccessRestrictionsFlag.None;
|
|
79
|
-
}
|
|
80
|
-
const namespaces = (_c = (_b = (_a = namespace.addressSpace.rootFolder) === null || _a === void 0 ? void 0 : _a.objects) === null || _b === void 0 ? void 0 : _b.server) === null || _c === void 0 ? void 0 : _c.namespaces;
|
|
81
|
-
if (!namespaces) {
|
|
82
|
-
return node_opcua_data_model_1.AccessRestrictionsFlag.None;
|
|
83
|
-
}
|
|
84
|
-
const namespaceObject = namespaces.getChildByName(namespace.namespaceUri);
|
|
85
|
-
if (!namespaceObject) {
|
|
86
|
-
return node_opcua_data_model_1.AccessRestrictionsFlag.None;
|
|
87
|
-
}
|
|
88
|
-
const defaultAccessRestriction = namespaceObject.getChildByName("defaultAccessRestriction");
|
|
89
|
-
if (defaultAccessRestriction) {
|
|
90
|
-
const dataValue = defaultAccessRestriction.readAttribute(null, node_opcua_data_model_1.AttributeIds.Value);
|
|
91
|
-
if (dataValue && dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good) {
|
|
92
|
-
return dataValue.value.value;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return node_opcua_data_model_1.AccessRestrictionsFlag.None;
|
|
96
|
-
}
|
|
97
|
-
function getDefaultUserRolePermissionsOnNamespace(namespace, context) {
|
|
98
|
-
var _a, _b, _c;
|
|
99
|
-
// ignore permission when default context is provided
|
|
100
|
-
if (isDefaultContext(context)) {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
const namespaces = (_c = (_b = (_a = namespace.addressSpace.rootFolder) === null || _a === void 0 ? void 0 : _a.objects) === null || _b === void 0 ? void 0 : _b.server) === null || _c === void 0 ? void 0 : _c.namespaces;
|
|
104
|
-
if (!namespaces) {
|
|
105
|
-
return null;
|
|
106
|
-
}
|
|
107
|
-
const uaNamespaceObject = namespaces.getChildByName(namespace.namespaceUri);
|
|
108
|
-
if (!uaNamespaceObject) {
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
111
|
-
const defaultUserRolePermissions = uaNamespaceObject.getChildByName("DefaultUserRolePermissions");
|
|
112
|
-
if (defaultUserRolePermissions) {
|
|
113
|
-
const dataValue = defaultUserRolePermissions.readValue();
|
|
114
|
-
if (dataValue && dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good && dataValue.value.value && dataValue.value.value.length > 0) {
|
|
115
|
-
return dataValue.value.value;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
const defaultRolePermissions = uaNamespaceObject.getChildByName("DefaultRolePermissions");
|
|
119
|
-
if (defaultRolePermissions) {
|
|
120
|
-
const dataValue = defaultRolePermissions.readValue();
|
|
121
|
-
if (dataValue && dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good) {
|
|
122
|
-
return dataValue.value.value;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
return null;
|
|
126
|
-
}
|
|
127
|
-
function makeRoles(roleIds) {
|
|
128
|
-
if (typeof roleIds === "number") {
|
|
129
|
-
roleIds = [roleIds];
|
|
130
|
-
}
|
|
131
|
-
if (typeof roleIds === "string") {
|
|
132
|
-
roleIds = roleIds.split(";").map((r) => (0, node_opcua_nodeid_1.resolveNodeId)("WellKnownRole_" + r));
|
|
133
|
-
}
|
|
134
|
-
return roleIds.map((r) => (0, node_opcua_nodeid_1.resolveNodeId)(r));
|
|
135
|
-
}
|
|
136
|
-
exports.makeRoles = makeRoles;
|
|
137
|
-
class SessionContext {
|
|
138
|
-
constructor(options) {
|
|
139
|
-
this.continuationPoints = {};
|
|
140
|
-
options = options || {};
|
|
141
|
-
this.session = options.session;
|
|
142
|
-
this.object = options.object;
|
|
143
|
-
this.server = options.server;
|
|
144
|
-
this.currentTime = undefined;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* getCurrentUserRoles
|
|
148
|
-
*
|
|
149
|
-
* guest => anonymous user (unauthenticated)
|
|
150
|
-
* default => default authenticated user
|
|
151
|
-
*
|
|
152
|
-
*/
|
|
153
|
-
getCurrentUserRoles() {
|
|
154
|
-
if (!this.session) {
|
|
155
|
-
return []; // default context => no Session
|
|
156
|
-
}
|
|
157
|
-
(0, node_opcua_assert_1.assert)(this.session != null, "expecting a session");
|
|
158
|
-
const userIdentityToken = this.session.userIdentityToken;
|
|
159
|
-
if (!userIdentityToken) {
|
|
160
|
-
return [];
|
|
161
|
-
}
|
|
162
|
-
const anonymous = makeRoles([WellKnownRoles.Anonymous]);
|
|
163
|
-
const username = getUserName(userIdentityToken);
|
|
164
|
-
if (username === "anonymous") {
|
|
165
|
-
return anonymous;
|
|
166
|
-
}
|
|
167
|
-
if (!this.server || !this.server.userManager) {
|
|
168
|
-
return anonymous;
|
|
169
|
-
}
|
|
170
|
-
(0, node_opcua_assert_1.assert)(this.server != null, "expecting a server");
|
|
171
|
-
if (typeof this.server.userManager.getUserRoles !== "function") {
|
|
172
|
-
return anonymous;
|
|
173
|
-
}
|
|
174
|
-
const rolesNodeId = this.server.userManager.getUserRoles(username);
|
|
175
|
-
if (rolesNodeId.findIndex((r) => r.namespace === 0 && r.value === WellKnownRoles.AuthenticatedUser) < 0) {
|
|
176
|
-
rolesNodeId.push((0, node_opcua_nodeid_1.resolveNodeId)(WellKnownRoles.AuthenticatedUser));
|
|
177
|
-
}
|
|
178
|
-
return rolesNodeId;
|
|
179
|
-
}
|
|
180
|
-
getApplicableRolePermissions(node) {
|
|
181
|
-
if (!node.rolePermissions) {
|
|
182
|
-
const namespace = node.namespace;
|
|
183
|
-
const defaultUserRolePermissions = getDefaultUserRolePermissionsOnNamespace(namespace, this);
|
|
184
|
-
return defaultUserRolePermissions;
|
|
185
|
-
}
|
|
186
|
-
return node.rolePermissions;
|
|
187
|
-
}
|
|
188
|
-
getPermissions(node) {
|
|
189
|
-
const applicableRolePermissions = this.getApplicableRolePermissions(node);
|
|
190
|
-
const roles = this.getCurrentUserRoles();
|
|
191
|
-
if (roles.length === 0) {
|
|
192
|
-
return node_opcua_data_model_1.allPermissions;
|
|
193
|
-
}
|
|
194
|
-
let orFlags = 0;
|
|
195
|
-
for (const role of roles) {
|
|
196
|
-
orFlags = orFlags | getPermissionForRole(applicableRolePermissions, role);
|
|
197
|
-
}
|
|
198
|
-
return orFlags;
|
|
199
|
-
}
|
|
200
|
-
getAccessRestrictions(node) {
|
|
201
|
-
if (node.accessRestrictions === undefined) {
|
|
202
|
-
const namespace = node.namespace;
|
|
203
|
-
const accessRestrictions = getAccessRestrictionsOnNamespace(namespace, this);
|
|
204
|
-
return accessRestrictions;
|
|
205
|
-
}
|
|
206
|
-
return node.accessRestrictions;
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
*
|
|
210
|
-
* @param node
|
|
211
|
-
* @returns true if the browse is denied (access is restricted)
|
|
212
|
-
*/
|
|
213
|
-
isBrowseAccessRestricted(node) {
|
|
214
|
-
if (this.checkPermission(node, node_opcua_types_1.PermissionType.Browse)) {
|
|
215
|
-
return false; // can browse
|
|
216
|
-
}
|
|
217
|
-
return true; // browse restriction
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
*
|
|
221
|
-
* @param node
|
|
222
|
-
* @returns true if the context is access restricted
|
|
223
|
-
*/
|
|
224
|
-
isAccessRestricted(node) {
|
|
225
|
-
var _a, _b;
|
|
226
|
-
const accessRestrictions = this.getAccessRestrictions(node);
|
|
227
|
-
if (accessRestrictions === node_opcua_data_model_1.AccessRestrictionsFlag.None) {
|
|
228
|
-
return false;
|
|
229
|
-
}
|
|
230
|
-
if (accessRestrictions & node_opcua_data_model_1.AccessRestrictionsFlag.SessionRequired) {
|
|
231
|
-
if (!this.session) {
|
|
232
|
-
return true;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
const securityMode = (_b = (_a = this.session) === null || _a === void 0 ? void 0 : _a.channel) === null || _b === void 0 ? void 0 : _b.securityMode;
|
|
236
|
-
if (accessRestrictions & node_opcua_data_model_1.AccessRestrictionsFlag.SigningRequired) {
|
|
237
|
-
if (securityMode !== node_opcua_types_1.MessageSecurityMode.Sign && securityMode !== node_opcua_types_1.MessageSecurityMode.SignAndEncrypt) {
|
|
238
|
-
return true;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
if (accessRestrictions & node_opcua_data_model_1.AccessRestrictionsFlag.EncryptionRequired) {
|
|
242
|
-
if (securityMode !== node_opcua_types_1.MessageSecurityMode.SignAndEncrypt) {
|
|
243
|
-
return true;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
return false;
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* @method checkPermission
|
|
250
|
-
* @param node
|
|
251
|
-
* @param requestedPermission
|
|
252
|
-
* @return {Boolean} returns true of the current user is granted the requested Permission
|
|
253
|
-
*/
|
|
254
|
-
checkPermission(node, requestedPermission) {
|
|
255
|
-
const permissions = this.getPermissions(node);
|
|
256
|
-
return (permissions & requestedPermission) === requestedPermission;
|
|
257
|
-
}
|
|
258
|
-
currentUserHasRole(role) {
|
|
259
|
-
const currentUserRole = this.getCurrentUserRoles();
|
|
260
|
-
const n = (0, node_opcua_nodeid_1.resolveNodeId)(role);
|
|
261
|
-
return currentUserRole.findIndex((r) => (0, node_opcua_nodeid_1.sameNodeId)(r, n)) >= 0;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
exports.SessionContext = SessionContext;
|
|
265
|
-
SessionContext.defaultContext = new SessionContext({});
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @module node-opcua-address-space
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SessionContext = exports.makeRoles = exports.WellKnownRolesNodeId = exports.WellKnownRoles = exports.PermissionType = exports.RolePermissionType = void 0;
|
|
7
|
+
const node_opcua_assert_1 = require("node-opcua-assert");
|
|
8
|
+
const node_opcua_crypto_1 = require("node-opcua-crypto");
|
|
9
|
+
const node_opcua_data_model_1 = require("node-opcua-data-model");
|
|
10
|
+
const node_opcua_nodeid_1 = require("node-opcua-nodeid");
|
|
11
|
+
const node_opcua_types_1 = require("node-opcua-types");
|
|
12
|
+
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
13
|
+
var node_opcua_types_2 = require("node-opcua-types");
|
|
14
|
+
Object.defineProperty(exports, "RolePermissionType", { enumerable: true, get: function () { return node_opcua_types_2.RolePermissionType; } });
|
|
15
|
+
Object.defineProperty(exports, "PermissionType", { enumerable: true, get: function () { return node_opcua_types_2.PermissionType; } });
|
|
16
|
+
function getUserName(userIdentityToken) {
|
|
17
|
+
if (userIdentityToken instanceof node_opcua_types_1.AnonymousIdentityToken) {
|
|
18
|
+
return "anonymous";
|
|
19
|
+
}
|
|
20
|
+
if (userIdentityToken instanceof node_opcua_types_1.X509IdentityToken) {
|
|
21
|
+
const certInfo = (0, node_opcua_crypto_1.exploreCertificate)(userIdentityToken.certificateData);
|
|
22
|
+
const userName = certInfo.tbsCertificate.subject.commonName || "";
|
|
23
|
+
if (typeof userName !== "string") {
|
|
24
|
+
throw new Error("Invalid username");
|
|
25
|
+
}
|
|
26
|
+
return userName;
|
|
27
|
+
}
|
|
28
|
+
if (userIdentityToken instanceof node_opcua_types_1.UserNameIdentityToken) {
|
|
29
|
+
if (userIdentityToken.policyId === "anonymous") {
|
|
30
|
+
return "anonymous";
|
|
31
|
+
}
|
|
32
|
+
(0, node_opcua_assert_1.assert)(Object.prototype.hasOwnProperty.call(userIdentityToken, "userName"));
|
|
33
|
+
return userIdentityToken.userName;
|
|
34
|
+
}
|
|
35
|
+
throw new Error("Invalid user identity token");
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
*
|
|
39
|
+
*/
|
|
40
|
+
var WellKnownRoles;
|
|
41
|
+
(function (WellKnownRoles) {
|
|
42
|
+
WellKnownRoles[WellKnownRoles["Anonymous"] = 15644] = "Anonymous";
|
|
43
|
+
WellKnownRoles[WellKnownRoles["AuthenticatedUser"] = 15656] = "AuthenticatedUser";
|
|
44
|
+
WellKnownRoles[WellKnownRoles["ConfigureAdmin"] = 15716] = "ConfigureAdmin";
|
|
45
|
+
WellKnownRoles[WellKnownRoles["Engineer"] = 16036] = "Engineer";
|
|
46
|
+
WellKnownRoles[WellKnownRoles["Observer"] = 15668] = "Observer";
|
|
47
|
+
WellKnownRoles[WellKnownRoles["Operator"] = 15680] = "Operator";
|
|
48
|
+
WellKnownRoles[WellKnownRoles["SecurityAdmin"] = 15704] = "SecurityAdmin";
|
|
49
|
+
WellKnownRoles[WellKnownRoles["Supervisor"] = 15692] = "Supervisor";
|
|
50
|
+
})(WellKnownRoles = exports.WellKnownRoles || (exports.WellKnownRoles = {}));
|
|
51
|
+
var WellKnownRolesNodeId;
|
|
52
|
+
(function (WellKnownRolesNodeId) {
|
|
53
|
+
WellKnownRolesNodeId[WellKnownRolesNodeId["Anonymous"] = 15644] = "Anonymous";
|
|
54
|
+
WellKnownRolesNodeId[WellKnownRolesNodeId["AuthenticatedUser"] = 15656] = "AuthenticatedUser";
|
|
55
|
+
WellKnownRolesNodeId[WellKnownRolesNodeId["ConfigureAdmin"] = 15716] = "ConfigureAdmin";
|
|
56
|
+
WellKnownRolesNodeId[WellKnownRolesNodeId["Engineer"] = 16036] = "Engineer";
|
|
57
|
+
WellKnownRolesNodeId[WellKnownRolesNodeId["Observer"] = 15668] = "Observer";
|
|
58
|
+
WellKnownRolesNodeId[WellKnownRolesNodeId["Operator"] = 15680] = "Operator";
|
|
59
|
+
WellKnownRolesNodeId[WellKnownRolesNodeId["SecurityAdmin"] = 15704] = "SecurityAdmin";
|
|
60
|
+
WellKnownRolesNodeId[WellKnownRolesNodeId["Supervisor"] = 15692] = "Supervisor";
|
|
61
|
+
})(WellKnownRolesNodeId = exports.WellKnownRolesNodeId || (exports.WellKnownRolesNodeId = {}));
|
|
62
|
+
function getPermissionForRole(rolePermissions, role) {
|
|
63
|
+
if (rolePermissions === null) {
|
|
64
|
+
return node_opcua_data_model_1.allPermissions;
|
|
65
|
+
}
|
|
66
|
+
const a = rolePermissions.find((r) => {
|
|
67
|
+
return (0, node_opcua_nodeid_1.sameNodeId)((0, node_opcua_nodeid_1.resolveNodeId)(r.roleId), role);
|
|
68
|
+
});
|
|
69
|
+
return a !== undefined ? a.permissions | node_opcua_data_model_1.PermissionFlag.None : node_opcua_data_model_1.PermissionFlag.None;
|
|
70
|
+
}
|
|
71
|
+
function isDefaultContext(context) {
|
|
72
|
+
return context === SessionContext.defaultContext;
|
|
73
|
+
}
|
|
74
|
+
function getAccessRestrictionsOnNamespace(namespace, context) {
|
|
75
|
+
var _a, _b, _c;
|
|
76
|
+
// ignore permission when default context is provided (to avoid recursion)
|
|
77
|
+
if (isDefaultContext(context)) {
|
|
78
|
+
return node_opcua_data_model_1.AccessRestrictionsFlag.None;
|
|
79
|
+
}
|
|
80
|
+
const namespaces = (_c = (_b = (_a = namespace.addressSpace.rootFolder) === null || _a === void 0 ? void 0 : _a.objects) === null || _b === void 0 ? void 0 : _b.server) === null || _c === void 0 ? void 0 : _c.namespaces;
|
|
81
|
+
if (!namespaces) {
|
|
82
|
+
return node_opcua_data_model_1.AccessRestrictionsFlag.None;
|
|
83
|
+
}
|
|
84
|
+
const namespaceObject = namespaces.getChildByName(namespace.namespaceUri);
|
|
85
|
+
if (!namespaceObject) {
|
|
86
|
+
return node_opcua_data_model_1.AccessRestrictionsFlag.None;
|
|
87
|
+
}
|
|
88
|
+
const defaultAccessRestriction = namespaceObject.getChildByName("defaultAccessRestriction");
|
|
89
|
+
if (defaultAccessRestriction) {
|
|
90
|
+
const dataValue = defaultAccessRestriction.readAttribute(null, node_opcua_data_model_1.AttributeIds.Value);
|
|
91
|
+
if (dataValue && dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good) {
|
|
92
|
+
return dataValue.value.value;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return node_opcua_data_model_1.AccessRestrictionsFlag.None;
|
|
96
|
+
}
|
|
97
|
+
function getDefaultUserRolePermissionsOnNamespace(namespace, context) {
|
|
98
|
+
var _a, _b, _c;
|
|
99
|
+
// ignore permission when default context is provided
|
|
100
|
+
if (isDefaultContext(context)) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
const namespaces = (_c = (_b = (_a = namespace.addressSpace.rootFolder) === null || _a === void 0 ? void 0 : _a.objects) === null || _b === void 0 ? void 0 : _b.server) === null || _c === void 0 ? void 0 : _c.namespaces;
|
|
104
|
+
if (!namespaces) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
const uaNamespaceObject = namespaces.getChildByName(namespace.namespaceUri);
|
|
108
|
+
if (!uaNamespaceObject) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const defaultUserRolePermissions = uaNamespaceObject.getChildByName("DefaultUserRolePermissions");
|
|
112
|
+
if (defaultUserRolePermissions) {
|
|
113
|
+
const dataValue = defaultUserRolePermissions.readValue();
|
|
114
|
+
if (dataValue && dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good && dataValue.value.value && dataValue.value.value.length > 0) {
|
|
115
|
+
return dataValue.value.value;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const defaultRolePermissions = uaNamespaceObject.getChildByName("DefaultRolePermissions");
|
|
119
|
+
if (defaultRolePermissions) {
|
|
120
|
+
const dataValue = defaultRolePermissions.readValue();
|
|
121
|
+
if (dataValue && dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good) {
|
|
122
|
+
return dataValue.value.value;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
function makeRoles(roleIds) {
|
|
128
|
+
if (typeof roleIds === "number") {
|
|
129
|
+
roleIds = [roleIds];
|
|
130
|
+
}
|
|
131
|
+
if (typeof roleIds === "string") {
|
|
132
|
+
roleIds = roleIds.split(";").map((r) => (0, node_opcua_nodeid_1.resolveNodeId)("WellKnownRole_" + r));
|
|
133
|
+
}
|
|
134
|
+
return roleIds.map((r) => (0, node_opcua_nodeid_1.resolveNodeId)(r));
|
|
135
|
+
}
|
|
136
|
+
exports.makeRoles = makeRoles;
|
|
137
|
+
class SessionContext {
|
|
138
|
+
constructor(options) {
|
|
139
|
+
this.continuationPoints = {};
|
|
140
|
+
options = options || {};
|
|
141
|
+
this.session = options.session;
|
|
142
|
+
this.object = options.object;
|
|
143
|
+
this.server = options.server;
|
|
144
|
+
this.currentTime = undefined;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* getCurrentUserRoles
|
|
148
|
+
*
|
|
149
|
+
* guest => anonymous user (unauthenticated)
|
|
150
|
+
* default => default authenticated user
|
|
151
|
+
*
|
|
152
|
+
*/
|
|
153
|
+
getCurrentUserRoles() {
|
|
154
|
+
if (!this.session) {
|
|
155
|
+
return []; // default context => no Session
|
|
156
|
+
}
|
|
157
|
+
(0, node_opcua_assert_1.assert)(this.session != null, "expecting a session");
|
|
158
|
+
const userIdentityToken = this.session.userIdentityToken;
|
|
159
|
+
if (!userIdentityToken) {
|
|
160
|
+
return [];
|
|
161
|
+
}
|
|
162
|
+
const anonymous = makeRoles([WellKnownRoles.Anonymous]);
|
|
163
|
+
const username = getUserName(userIdentityToken);
|
|
164
|
+
if (username === "anonymous") {
|
|
165
|
+
return anonymous;
|
|
166
|
+
}
|
|
167
|
+
if (!this.server || !this.server.userManager) {
|
|
168
|
+
return anonymous;
|
|
169
|
+
}
|
|
170
|
+
(0, node_opcua_assert_1.assert)(this.server != null, "expecting a server");
|
|
171
|
+
if (typeof this.server.userManager.getUserRoles !== "function") {
|
|
172
|
+
return anonymous;
|
|
173
|
+
}
|
|
174
|
+
const rolesNodeId = this.server.userManager.getUserRoles(username);
|
|
175
|
+
if (rolesNodeId.findIndex((r) => r.namespace === 0 && r.value === WellKnownRoles.AuthenticatedUser) < 0) {
|
|
176
|
+
rolesNodeId.push((0, node_opcua_nodeid_1.resolveNodeId)(WellKnownRoles.AuthenticatedUser));
|
|
177
|
+
}
|
|
178
|
+
return rolesNodeId;
|
|
179
|
+
}
|
|
180
|
+
getApplicableRolePermissions(node) {
|
|
181
|
+
if (!node.rolePermissions) {
|
|
182
|
+
const namespace = node.namespace;
|
|
183
|
+
const defaultUserRolePermissions = getDefaultUserRolePermissionsOnNamespace(namespace, this);
|
|
184
|
+
return defaultUserRolePermissions;
|
|
185
|
+
}
|
|
186
|
+
return node.rolePermissions;
|
|
187
|
+
}
|
|
188
|
+
getPermissions(node) {
|
|
189
|
+
const applicableRolePermissions = this.getApplicableRolePermissions(node);
|
|
190
|
+
const roles = this.getCurrentUserRoles();
|
|
191
|
+
if (roles.length === 0) {
|
|
192
|
+
return node_opcua_data_model_1.allPermissions;
|
|
193
|
+
}
|
|
194
|
+
let orFlags = 0;
|
|
195
|
+
for (const role of roles) {
|
|
196
|
+
orFlags = orFlags | getPermissionForRole(applicableRolePermissions, role);
|
|
197
|
+
}
|
|
198
|
+
return orFlags;
|
|
199
|
+
}
|
|
200
|
+
getAccessRestrictions(node) {
|
|
201
|
+
if (node.accessRestrictions === undefined) {
|
|
202
|
+
const namespace = node.namespace;
|
|
203
|
+
const accessRestrictions = getAccessRestrictionsOnNamespace(namespace, this);
|
|
204
|
+
return accessRestrictions;
|
|
205
|
+
}
|
|
206
|
+
return node.accessRestrictions;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
*
|
|
210
|
+
* @param node
|
|
211
|
+
* @returns true if the browse is denied (access is restricted)
|
|
212
|
+
*/
|
|
213
|
+
isBrowseAccessRestricted(node) {
|
|
214
|
+
if (this.checkPermission(node, node_opcua_types_1.PermissionType.Browse)) {
|
|
215
|
+
return false; // can browse
|
|
216
|
+
}
|
|
217
|
+
return true; // browse restriction
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
*
|
|
221
|
+
* @param node
|
|
222
|
+
* @returns true if the context is access restricted
|
|
223
|
+
*/
|
|
224
|
+
isAccessRestricted(node) {
|
|
225
|
+
var _a, _b;
|
|
226
|
+
const accessRestrictions = this.getAccessRestrictions(node);
|
|
227
|
+
if (accessRestrictions === node_opcua_data_model_1.AccessRestrictionsFlag.None) {
|
|
228
|
+
return false;
|
|
229
|
+
}
|
|
230
|
+
if (accessRestrictions & node_opcua_data_model_1.AccessRestrictionsFlag.SessionRequired) {
|
|
231
|
+
if (!this.session) {
|
|
232
|
+
return true;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
const securityMode = (_b = (_a = this.session) === null || _a === void 0 ? void 0 : _a.channel) === null || _b === void 0 ? void 0 : _b.securityMode;
|
|
236
|
+
if (accessRestrictions & node_opcua_data_model_1.AccessRestrictionsFlag.SigningRequired) {
|
|
237
|
+
if (securityMode !== node_opcua_types_1.MessageSecurityMode.Sign && securityMode !== node_opcua_types_1.MessageSecurityMode.SignAndEncrypt) {
|
|
238
|
+
return true;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (accessRestrictions & node_opcua_data_model_1.AccessRestrictionsFlag.EncryptionRequired) {
|
|
242
|
+
if (securityMode !== node_opcua_types_1.MessageSecurityMode.SignAndEncrypt) {
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* @method checkPermission
|
|
250
|
+
* @param node
|
|
251
|
+
* @param requestedPermission
|
|
252
|
+
* @return {Boolean} returns true of the current user is granted the requested Permission
|
|
253
|
+
*/
|
|
254
|
+
checkPermission(node, requestedPermission) {
|
|
255
|
+
const permissions = this.getPermissions(node);
|
|
256
|
+
return (permissions & requestedPermission) === requestedPermission;
|
|
257
|
+
}
|
|
258
|
+
currentUserHasRole(role) {
|
|
259
|
+
const currentUserRole = this.getCurrentUserRoles();
|
|
260
|
+
const n = (0, node_opcua_nodeid_1.resolveNodeId)(role);
|
|
261
|
+
return currentUserRole.findIndex((r) => (0, node_opcua_nodeid_1.sameNodeId)(r, n)) >= 0;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
exports.SessionContext = SessionContext;
|
|
265
|
+
SessionContext.defaultContext = new SessionContext({});
|
|
266
266
|
//# sourceMappingURL=session_context.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { INamespace } from "node-opcua-address-space-base";
|
|
2
|
-
export declare function setNamespaceMetaData(namespace: INamespace): void;
|
|
1
|
+
import { INamespace } from "node-opcua-address-space-base";
|
|
2
|
+
export declare function setNamespaceMetaData(namespace: INamespace): void;
|