node-opcua-server-configuration 2.64.1 → 2.66.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/dist/clientTools/index.d.ts +1 -1
- package/dist/clientTools/index.js +17 -13
- package/dist/clientTools/index.js.map +1 -1
- package/dist/clientTools/push_certificate_management_client.d.ts +176 -176
- package/dist/clientTools/push_certificate_management_client.js +465 -465
- package/dist/index.d.ts +10 -10
- package/dist/index.js +27 -23
- package/dist/index.js.map +1 -1
- package/dist/push_certificate_manager.d.ts +141 -141
- package/dist/push_certificate_manager.js +2 -2
- package/dist/server/install_CertificateAlarm.d.ts +5 -5
- package/dist/server/install_CertificateAlarm.js +37 -37
- package/dist/server/install_push_certitifate_management.d.ts +15 -15
- package/dist/server/install_push_certitifate_management.js +214 -214
- package/dist/server/promote_trust_list.d.ts +6 -6
- package/dist/server/promote_trust_list.js +175 -175
- package/dist/server/push_certificate_manager_helpers.d.ts +7 -7
- package/dist/server/push_certificate_manager_helpers.js +306 -306
- package/dist/server/push_certificate_manager_server_impl.d.ts +48 -48
- package/dist/server/push_certificate_manager_server_impl.js +522 -522
- package/dist/server/roles_and_permissions.d.ts +3 -3
- package/dist/server/roles_and_permissions.js +40 -40
- package/dist/server/tools.d.ts +3 -3
- package/dist/server/tools.js +19 -19
- package/dist/server/trust_list_server.d.ts +13 -13
- package/dist/server/trust_list_server.js +89 -89
- package/dist/standard_certificate_types.d.ts +6 -6
- package/dist/standard_certificate_types.js +13 -13
- package/dist/trust_list.d.ts +79 -79
- package/dist/trust_list.js +2 -2
- package/dist/trust_list_impl.js +25 -25
- package/package.json +27 -27
- package/dist/push_certificate_manager_helpers.d.ts +0 -6
- package/dist/push_certificate_manager_helpers.js +0 -331
- package/dist/push_certificate_manager_helpers.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-opcua-server-configuration",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.66.0",
|
|
4
4
|
"description": "pure nodejs OPCUA SDK - module -server",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "tsc -b",
|
|
7
7
|
"lint": "eslint source/**/*.ts",
|
|
8
|
-
"clean": "
|
|
8
|
+
"clean": "npx rimraf dist *.tsbuildinfo",
|
|
9
9
|
"test": "mocha"
|
|
10
10
|
},
|
|
11
11
|
"main": "./dist/index.js",
|
|
12
12
|
"types": "./dist/index.d.ts",
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"memfs": "^3.4.1",
|
|
15
|
-
"node-opcua-address-space": "2.
|
|
16
|
-
"node-opcua-assert": "2.
|
|
17
|
-
"node-opcua-basic-types": "2.
|
|
18
|
-
"node-opcua-certificate-manager": "2.
|
|
19
|
-
"node-opcua-client": "2.
|
|
20
|
-
"node-opcua-constants": "2.
|
|
21
|
-
"node-opcua-crypto": "^1.
|
|
22
|
-
"node-opcua-data-model": "2.
|
|
23
|
-
"node-opcua-debug": "2.
|
|
24
|
-
"node-opcua-file-transfer": "2.
|
|
25
|
-
"node-opcua-hostname": "2.
|
|
26
|
-
"node-opcua-nodeid": "2.
|
|
27
|
-
"node-opcua-nodesets": "2.
|
|
28
|
-
"node-opcua-pki": "^2.
|
|
29
|
-
"node-opcua-pseudo-session": "2.
|
|
30
|
-
"node-opcua-secure-channel": "2.
|
|
31
|
-
"node-opcua-server": "2.
|
|
32
|
-
"node-opcua-service-translate-browse-path": "2.
|
|
33
|
-
"node-opcua-status-code": "2.
|
|
34
|
-
"node-opcua-types": "2.
|
|
35
|
-
"node-opcua-variant": "2.
|
|
15
|
+
"node-opcua-address-space": "2.66.0",
|
|
16
|
+
"node-opcua-assert": "2.66.0",
|
|
17
|
+
"node-opcua-basic-types": "2.66.0",
|
|
18
|
+
"node-opcua-certificate-manager": "2.66.0",
|
|
19
|
+
"node-opcua-client": "2.66.0",
|
|
20
|
+
"node-opcua-constants": "2.66.0",
|
|
21
|
+
"node-opcua-crypto": "^1.10.0",
|
|
22
|
+
"node-opcua-data-model": "2.66.0",
|
|
23
|
+
"node-opcua-debug": "2.66.0",
|
|
24
|
+
"node-opcua-file-transfer": "2.66.0",
|
|
25
|
+
"node-opcua-hostname": "2.66.0",
|
|
26
|
+
"node-opcua-nodeid": "2.66.0",
|
|
27
|
+
"node-opcua-nodesets": "2.66.0",
|
|
28
|
+
"node-opcua-pki": "^2.15.0",
|
|
29
|
+
"node-opcua-pseudo-session": "2.66.0",
|
|
30
|
+
"node-opcua-secure-channel": "2.66.0",
|
|
31
|
+
"node-opcua-server": "2.66.0",
|
|
32
|
+
"node-opcua-service-translate-browse-path": "2.66.0",
|
|
33
|
+
"node-opcua-status-code": "2.66.0",
|
|
34
|
+
"node-opcua-types": "2.66.0",
|
|
35
|
+
"node-opcua-variant": "2.66.0",
|
|
36
36
|
"rimraf": "^3.0.2"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"node-opcua-binary-stream": "2.
|
|
40
|
-
"node-opcua-data-value": "2.
|
|
41
|
-
"node-opcua-leak-detector": "2.
|
|
39
|
+
"node-opcua-binary-stream": "2.66.0",
|
|
40
|
+
"node-opcua-data-value": "2.66.0",
|
|
41
|
+
"node-opcua-leak-detector": "2.66.0",
|
|
42
42
|
"should": "^13.2.3",
|
|
43
43
|
"sinon": "^13.0.1"
|
|
44
44
|
},
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
"internet of things"
|
|
58
58
|
],
|
|
59
59
|
"homepage": "http://node-opcua.github.io/",
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "97f47e2e242a1fd737495fd64cb65e8fb7a9964b"
|
|
61
61
|
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module node-opcua-server-configuration
|
|
3
|
-
*/
|
|
4
|
-
import { AddressSpace } from "node-opcua-address-space";
|
|
5
|
-
import { PushCertificateManagerServerOptions } from "./server/push_certificate_manager_server_impl";
|
|
6
|
-
export declare function installPushCertificateManagement(addressSpace: AddressSpace, options: PushCertificateManagerServerOptions): Promise<void>;
|
|
@@ -1,331 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @module node-opcua-server-configuration
|
|
4
|
-
*/
|
|
5
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
6
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
7
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
8
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
9
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
10
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
11
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
12
|
-
});
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.installPushCertificateManagement = void 0;
|
|
16
|
-
const util_1 = require("util");
|
|
17
|
-
const node_opcua_address_space_1 = require("node-opcua-address-space");
|
|
18
|
-
const node_opcua_debug_1 = require("node-opcua-debug");
|
|
19
|
-
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
20
|
-
const node_opcua_variant_1 = require("node-opcua-variant");
|
|
21
|
-
const node_opcua_data_model_1 = require("node-opcua-data-model");
|
|
22
|
-
const install_CertificateAlarm_1 = require("./server/install_CertificateAlarm");
|
|
23
|
-
const push_certificate_manager_server_impl_1 = require("./server/push_certificate_manager_server_impl");
|
|
24
|
-
const node_opcua_file_transfer_1 = require("node-opcua-file-transfer");
|
|
25
|
-
const trust_list_server_1 = require("./server/trust_list_server");
|
|
26
|
-
const memfs_1 = require("memfs");
|
|
27
|
-
const debugLog = node_opcua_debug_1.make_debugLog("ServerConfiguration");
|
|
28
|
-
const doDebug = node_opcua_debug_1.checkDebugFlag("ServerConfiguration");
|
|
29
|
-
const errorLog = debugLog;
|
|
30
|
-
function hasExpectedUserAccess(context) {
|
|
31
|
-
if (!context ||
|
|
32
|
-
!context.session ||
|
|
33
|
-
!context.session.userIdentityToken) {
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
const currentUserRole = context.getCurrentUserRole();
|
|
37
|
-
return !!currentUserRole.match(node_opcua_address_space_1.WellKnownRoles.SecurityAdmin);
|
|
38
|
-
}
|
|
39
|
-
function hasEncryptedChannel(context) {
|
|
40
|
-
// todo
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
function expected(variant, dataType, variantArrayType) {
|
|
44
|
-
if (!variant) {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
if (variant.dataType !== dataType) {
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
if (variant.arrayType !== variantArrayType) {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
return true;
|
|
54
|
-
}
|
|
55
|
-
function getPushCertificateManager(method) {
|
|
56
|
-
const serverConfiguration = method.addressSpace.rootFolder.objects.server.serverConfiguration;
|
|
57
|
-
const serverConfigurationPriv = serverConfiguration;
|
|
58
|
-
if (serverConfigurationPriv.$pushCertificateManager) {
|
|
59
|
-
return serverConfigurationPriv.$pushCertificateManager;
|
|
60
|
-
}
|
|
61
|
-
// throw new Error("Cannot find pushCertificateManager object");
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
function _createSigningRequest(inputArguments, context) {
|
|
65
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
-
const certificateGroupIdVariant = inputArguments[0];
|
|
67
|
-
const certificateTypeIdVariant = inputArguments[1];
|
|
68
|
-
const subjectNameVariant = inputArguments[2];
|
|
69
|
-
const regeneratePrivateKeyVariant = inputArguments[3];
|
|
70
|
-
const nonceVariant = inputArguments[4];
|
|
71
|
-
if (!expected(certificateGroupIdVariant, node_opcua_variant_1.DataType.NodeId, node_opcua_variant_1.VariantArrayType.Scalar)) {
|
|
72
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadInvalidArgument };
|
|
73
|
-
}
|
|
74
|
-
if (!expected(certificateTypeIdVariant, node_opcua_variant_1.DataType.NodeId, node_opcua_variant_1.VariantArrayType.Scalar)) {
|
|
75
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadInvalidArgument };
|
|
76
|
-
}
|
|
77
|
-
if (!expected(subjectNameVariant, node_opcua_variant_1.DataType.String, node_opcua_variant_1.VariantArrayType.Scalar)) {
|
|
78
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadInvalidArgument };
|
|
79
|
-
}
|
|
80
|
-
if (!expected(regeneratePrivateKeyVariant, node_opcua_variant_1.DataType.Boolean, node_opcua_variant_1.VariantArrayType.Scalar)) {
|
|
81
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadInvalidArgument };
|
|
82
|
-
}
|
|
83
|
-
if (!expected(regeneratePrivateKeyVariant, node_opcua_variant_1.DataType.Boolean, node_opcua_variant_1.VariantArrayType.Scalar)) {
|
|
84
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadInvalidArgument };
|
|
85
|
-
}
|
|
86
|
-
if (!hasEncryptedChannel(context)) {
|
|
87
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadSecurityModeInsufficient };
|
|
88
|
-
}
|
|
89
|
-
if (!hasExpectedUserAccess(context)) {
|
|
90
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadUserAccessDenied };
|
|
91
|
-
}
|
|
92
|
-
const certificateGroupId = certificateGroupIdVariant.value;
|
|
93
|
-
const certificateTypeId = certificateTypeIdVariant.value;
|
|
94
|
-
const subjectName = subjectNameVariant.value;
|
|
95
|
-
const regeneratePrivateKey = regeneratePrivateKeyVariant.value;
|
|
96
|
-
const nonce = nonceVariant.value;
|
|
97
|
-
const pushCertificateManager = getPushCertificateManager(this);
|
|
98
|
-
if (!pushCertificateManager) {
|
|
99
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadNotImplemented };
|
|
100
|
-
}
|
|
101
|
-
const result = yield pushCertificateManager.createSigningRequest(certificateGroupId, certificateTypeId, subjectName, regeneratePrivateKey, nonce);
|
|
102
|
-
if (result.statusCode !== node_opcua_status_code_1.StatusCodes.Good) {
|
|
103
|
-
return { statusCode: result.statusCode };
|
|
104
|
-
}
|
|
105
|
-
const callMethodResult = {
|
|
106
|
-
outputArguments: [
|
|
107
|
-
{
|
|
108
|
-
dataType: node_opcua_variant_1.DataType.ByteString,
|
|
109
|
-
value: result.certificateSigningRequest
|
|
110
|
-
}
|
|
111
|
-
],
|
|
112
|
-
statusCode: result.statusCode
|
|
113
|
-
};
|
|
114
|
-
return callMethodResult;
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
function _updateCertificate(inputArguments, context) {
|
|
118
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
119
|
-
const certificateGroupId = inputArguments[0].value;
|
|
120
|
-
const certificateTypeId = inputArguments[1].value;
|
|
121
|
-
const certificate = inputArguments[2].value;
|
|
122
|
-
const issuerCertificates = inputArguments[3].value;
|
|
123
|
-
const privateKeyFormat = inputArguments[4].value;
|
|
124
|
-
const privateKey = inputArguments[5].value;
|
|
125
|
-
// This Method requires an encrypted channel and that the Client provides credentials with
|
|
126
|
-
// administrative rights on the Server
|
|
127
|
-
if (!hasEncryptedChannel(context)) {
|
|
128
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadSecurityModeInsufficient };
|
|
129
|
-
}
|
|
130
|
-
if (!hasExpectedUserAccess(context)) {
|
|
131
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadUserAccessDenied };
|
|
132
|
-
}
|
|
133
|
-
if (privateKeyFormat && privateKeyFormat !== "" && privateKeyFormat.toLowerCase() !== "pem") {
|
|
134
|
-
errorLog("_updateCertificate: Invalid PEM format requested " + privateKeyFormat);
|
|
135
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadInvalidArgument };
|
|
136
|
-
}
|
|
137
|
-
const pushCertificateManager = getPushCertificateManager(this);
|
|
138
|
-
if (!pushCertificateManager) {
|
|
139
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadNotImplemented };
|
|
140
|
-
}
|
|
141
|
-
const result = yield pushCertificateManager.updateCertificate(certificateGroupId, certificateTypeId, certificate, issuerCertificates, privateKeyFormat, privateKey);
|
|
142
|
-
// todo raise a CertificateUpdatedAuditEventType
|
|
143
|
-
if (result.statusCode !== node_opcua_status_code_1.StatusCodes.Good) {
|
|
144
|
-
return { statusCode: result.statusCode };
|
|
145
|
-
}
|
|
146
|
-
const callMethodResult = {
|
|
147
|
-
outputArguments: [
|
|
148
|
-
{
|
|
149
|
-
dataType: node_opcua_variant_1.DataType.Boolean,
|
|
150
|
-
value: !!result.applyChangesRequired
|
|
151
|
-
}
|
|
152
|
-
],
|
|
153
|
-
statusCode: result.statusCode
|
|
154
|
-
};
|
|
155
|
-
return callMethodResult;
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
function _getRejectedList(inputArguments, context) {
|
|
159
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
160
|
-
if (!hasEncryptedChannel(context)) {
|
|
161
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadSecurityModeInsufficient };
|
|
162
|
-
}
|
|
163
|
-
if (!hasExpectedUserAccess(context)) {
|
|
164
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadUserAccessDenied };
|
|
165
|
-
}
|
|
166
|
-
const pushCertificateManager = getPushCertificateManager(this);
|
|
167
|
-
if (!pushCertificateManager) {
|
|
168
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadNotImplemented };
|
|
169
|
-
}
|
|
170
|
-
const result = yield pushCertificateManager.getRejectedList();
|
|
171
|
-
if (result.statusCode !== node_opcua_status_code_1.StatusCodes.Good) {
|
|
172
|
-
return { statusCode: result.statusCode };
|
|
173
|
-
}
|
|
174
|
-
return {
|
|
175
|
-
outputArguments: [
|
|
176
|
-
{
|
|
177
|
-
arrayType: node_opcua_variant_1.VariantArrayType.Array,
|
|
178
|
-
dataType: node_opcua_variant_1.DataType.ByteString,
|
|
179
|
-
value: result.certificates
|
|
180
|
-
}
|
|
181
|
-
],
|
|
182
|
-
statusCode: node_opcua_status_code_1.StatusCodes.Good
|
|
183
|
-
};
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
function _applyChanges(inputArguments, context) {
|
|
187
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
188
|
-
// This Method requires an encrypted channel and that the Client provide credentials with
|
|
189
|
-
// administrative rights on the Server.
|
|
190
|
-
if (!hasEncryptedChannel(context)) {
|
|
191
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadSecurityModeInsufficient };
|
|
192
|
-
}
|
|
193
|
-
if (!hasExpectedUserAccess(context)) {
|
|
194
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadUserAccessDenied };
|
|
195
|
-
}
|
|
196
|
-
const pushCertificateManager = getPushCertificateManager(this);
|
|
197
|
-
if (!pushCertificateManager) {
|
|
198
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadNotImplemented };
|
|
199
|
-
}
|
|
200
|
-
const statusCode = yield pushCertificateManager.applyChanges();
|
|
201
|
-
return { statusCode };
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
// in TrustList
|
|
205
|
-
function _addCertificate(inputArguments, context) {
|
|
206
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
207
|
-
console.log("_addCertificate");
|
|
208
|
-
if (!hasEncryptedChannel(context)) {
|
|
209
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadSecurityModeInsufficient };
|
|
210
|
-
}
|
|
211
|
-
if (!hasExpectedUserAccess(context)) {
|
|
212
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadUserAccessDenied };
|
|
213
|
-
}
|
|
214
|
-
const trustList = context.object;
|
|
215
|
-
const cm = trustList.$$certificateManager || null;
|
|
216
|
-
if (!cm) {
|
|
217
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadInternalError };
|
|
218
|
-
}
|
|
219
|
-
const certificate = inputArguments[0].value;
|
|
220
|
-
const isTrustedCertificate = inputArguments[1].value;
|
|
221
|
-
if (isTrustedCertificate) {
|
|
222
|
-
yield cm.trustCertificate(certificate);
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
yield cm.addIssuer(certificate);
|
|
226
|
-
}
|
|
227
|
-
console.log("_addCertificate - done");
|
|
228
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.Good };
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
function _removeCertificate(inputArguments, context) {
|
|
232
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
233
|
-
if (!hasEncryptedChannel(context)) {
|
|
234
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadSecurityModeInsufficient };
|
|
235
|
-
}
|
|
236
|
-
if (!hasExpectedUserAccess(context)) {
|
|
237
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.BadUserAccessDenied };
|
|
238
|
-
}
|
|
239
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.Good };
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
let counter = 0;
|
|
243
|
-
function bindCertificateManager(addressSpace, options) {
|
|
244
|
-
const serverConfiguration = addressSpace.rootFolder.objects.server.serverConfiguration;
|
|
245
|
-
const defaultApplicationGroup = serverConfiguration.certificateGroups.getComponentByName("DefaultApplicationGroup");
|
|
246
|
-
if (defaultApplicationGroup) {
|
|
247
|
-
const trustList = defaultApplicationGroup.getComponentByName("TrustList");
|
|
248
|
-
if (trustList) {
|
|
249
|
-
trustList.$$certificateManager = options.applicationGroup;
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
const defaultTokenGroup = serverConfiguration.certificateGroups.getComponentByName("DefaultUserTokenGroup");
|
|
253
|
-
if (defaultTokenGroup) {
|
|
254
|
-
const trustList = defaultTokenGroup.getComponentByName("TrustList");
|
|
255
|
-
if (trustList) {
|
|
256
|
-
trustList.$$certificateManager = options.userTokenGroup;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
function installPushCertificateManagement(addressSpace, options) {
|
|
261
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
262
|
-
const serverConfiguration = addressSpace.rootFolder.objects.server.serverConfiguration;
|
|
263
|
-
const serverConfigurationPriv = serverConfiguration;
|
|
264
|
-
if (serverConfigurationPriv.$pushCertificateManager) {
|
|
265
|
-
return;
|
|
266
|
-
throw new Error("PushCertificateManagement has already been installed");
|
|
267
|
-
}
|
|
268
|
-
serverConfigurationPriv.$pushCertificateManager = new push_certificate_manager_server_impl_1.PushCertificateManagerServerImpl(options);
|
|
269
|
-
serverConfiguration.supportedPrivateKeyFormats.setValueFromSource({
|
|
270
|
-
arrayType: node_opcua_variant_1.VariantArrayType.Array,
|
|
271
|
-
dataType: node_opcua_variant_1.DataType.String,
|
|
272
|
-
value: ["PEM"]
|
|
273
|
-
});
|
|
274
|
-
serverConfiguration.createSigningRequest.bindMethod(util_1.callbackify(_createSigningRequest));
|
|
275
|
-
serverConfiguration.updateCertificate.bindMethod(util_1.callbackify(_updateCertificate));
|
|
276
|
-
serverConfiguration.getRejectedList.bindMethod(util_1.callbackify(_getRejectedList));
|
|
277
|
-
if (serverConfiguration.applyChanges) {
|
|
278
|
-
serverConfiguration.applyChanges.bindMethod(util_1.callbackify(_applyChanges));
|
|
279
|
-
}
|
|
280
|
-
install_CertificateAlarm_1.installCertificateExpirationAlarm(addressSpace);
|
|
281
|
-
function _closeAndUpdate(inputArguments, context) {
|
|
282
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
283
|
-
return { statusCode: node_opcua_status_code_1.StatusCodes.Good };
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
function promoteCertificateGroup(certificateGroup) {
|
|
287
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
288
|
-
const trustList = certificateGroup.getChildByName("TrustList");
|
|
289
|
-
if (trustList) {
|
|
290
|
-
const filename = "/tmpFile" + counter;
|
|
291
|
-
counter += 1;
|
|
292
|
-
node_opcua_file_transfer_1.installFileType(trustList, { filename, fileSystem: memfs_1.fs });
|
|
293
|
-
const closeAndUpdate = trustList.getChildByName("CloseAndUpdate");
|
|
294
|
-
closeAndUpdate === null || closeAndUpdate === void 0 ? void 0 : closeAndUpdate.bindMethod(util_1.callbackify(_closeAndUpdate));
|
|
295
|
-
// change open methos
|
|
296
|
-
const open = trustList.getChildByName("Open");
|
|
297
|
-
const _asyncExecutionFunction = open._asyncExecutionFunction;
|
|
298
|
-
open.bindMethod(function (inputArgs, context, callback) {
|
|
299
|
-
//
|
|
300
|
-
const certificateMangaer = trustList.$$certificateManager || undefined;
|
|
301
|
-
if (certificateMangaer) {
|
|
302
|
-
trust_list_server_1.writeTrustList(memfs_1.fs, filename, certificateMangaer).then(() => {
|
|
303
|
-
_asyncExecutionFunction.call(this, inputArgs, context, callback);
|
|
304
|
-
}).catch((err) => {
|
|
305
|
-
callback(err);
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
309
|
-
console.log("do something to update the document before we open it");
|
|
310
|
-
return _asyncExecutionFunction.call(this, inputArgs, context, callback);
|
|
311
|
-
}
|
|
312
|
-
});
|
|
313
|
-
const addCertificate = trustList.getChildByName("AddCertificate");
|
|
314
|
-
addCertificate.bindMethod(util_1.callbackify(_addCertificate));
|
|
315
|
-
const removeCertificate = trustList.getChildByName("RemoveCertificate");
|
|
316
|
-
removeCertificate.bindMethod(util_1.callbackify(_removeCertificate));
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
const cg = serverConfiguration.certificateGroups.getComponents();
|
|
321
|
-
for (const certificateGroup of cg) {
|
|
322
|
-
if (certificateGroup.nodeClass !== node_opcua_data_model_1.NodeClass.Object) {
|
|
323
|
-
continue;
|
|
324
|
-
}
|
|
325
|
-
yield promoteCertificateGroup(certificateGroup);
|
|
326
|
-
}
|
|
327
|
-
yield bindCertificateManager(addressSpace, options);
|
|
328
|
-
});
|
|
329
|
-
}
|
|
330
|
-
exports.installPushCertificateManagement = installPushCertificateManagement;
|
|
331
|
-
//# sourceMappingURL=push_certificate_manager_helpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"push_certificate_manager_helpers.js","sourceRoot":"","sources":["../source/push_certificate_manager_helpers.ts"],"names":[],"mappings":"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"}
|