node-opcua-server-discovery 2.156.0 → 2.158.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/mdns_responder.d.ts +2 -4
- package/dist/mdns_responder.js +31 -13
- package/dist/mdns_responder.js.map +1 -1
- package/dist/opcua_discovery_server.d.ts +9 -9
- package/dist/opcua_discovery_server.js +231 -197
- package/dist/opcua_discovery_server.js.map +1 -1
- package/package.json +17 -15
- package/source/mdns_responder.ts +27 -17
- package/source/opcua_discovery_server.ts +311 -249
|
@@ -9,8 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.OPCUADiscoveryServer = void 0;
|
|
10
10
|
const os_1 = __importDefault(require("os"));
|
|
11
11
|
const path_1 = __importDefault(require("path"));
|
|
12
|
-
const url_1 =
|
|
13
|
-
const util_1 = require("util");
|
|
12
|
+
const url_1 = require("url");
|
|
14
13
|
const chalk_1 = __importDefault(require("chalk"));
|
|
15
14
|
const env_paths_1 = __importDefault(require("env-paths"));
|
|
16
15
|
const node_opcua_assert_1 = require("node-opcua-assert");
|
|
@@ -24,9 +23,9 @@ const node_opcua_service_endpoints_1 = require("node-opcua-service-endpoints");
|
|
|
24
23
|
const node_opcua_service_endpoints_2 = require("node-opcua-service-endpoints");
|
|
25
24
|
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
26
25
|
const mdns_responder_1 = require("./mdns_responder");
|
|
27
|
-
const debugLog = (0, node_opcua_debug_1.make_debugLog)(
|
|
28
|
-
const doDebug = (0, node_opcua_debug_1.checkDebugFlag)(
|
|
29
|
-
const errorLog = (0, node_opcua_debug_1.make_errorLog)(
|
|
26
|
+
const debugLog = (0, node_opcua_debug_1.make_debugLog)("LDSSERVER");
|
|
27
|
+
const doDebug = (0, node_opcua_debug_1.checkDebugFlag)("LDSSERVER");
|
|
28
|
+
const errorLog = (0, node_opcua_debug_1.make_errorLog)("LDSSERVER");
|
|
30
29
|
function hasCapabilities(serverCapabilities, serverCapabilityFilter) {
|
|
31
30
|
if (serverCapabilities == null) {
|
|
32
31
|
return true; // filter is empty => no filtering should take place
|
|
@@ -46,7 +45,12 @@ function getDefaultCertificateManager() {
|
|
|
46
45
|
automaticallyAcceptUnknownCertificate: true
|
|
47
46
|
});
|
|
48
47
|
}
|
|
48
|
+
// const weakMap = new WeakMap<MdnsDiscoveryConfiguration, BonjourHolder>;
|
|
49
49
|
class OPCUADiscoveryServer extends node_opcua_server_1.OPCUABaseServer {
|
|
50
|
+
mDnsLDSAnnouncer;
|
|
51
|
+
mDnsResponder;
|
|
52
|
+
registeredServers;
|
|
53
|
+
_delayInit;
|
|
50
54
|
constructor(options) {
|
|
51
55
|
options.serverInfo = options.serverInfo || {};
|
|
52
56
|
const serverInfo = options.serverInfo;
|
|
@@ -62,12 +66,11 @@ class OPCUADiscoveryServer extends node_opcua_server_1.OPCUABaseServer {
|
|
|
62
66
|
serverInfo.discoveryUrls = serverInfo.discoveryUrls || [];
|
|
63
67
|
options.serverCertificateManager = options.serverCertificateManager || getDefaultCertificateManager();
|
|
64
68
|
super(options);
|
|
65
|
-
this.bonjourHolder = new node_opcua_service_discovery_1.BonjourHolder();
|
|
66
69
|
// see OPC UA Spec 1.2 part 6 : 7.4 Well Known Addresses
|
|
67
70
|
// opc.tcp://localhost:4840/UADiscovery
|
|
68
71
|
const port = options.port || 4840;
|
|
69
72
|
this.capabilitiesForMDNS = ["LDS"];
|
|
70
|
-
this.registeredServers =
|
|
73
|
+
this.registeredServers = new Map();
|
|
71
74
|
this.mDnsResponder = undefined;
|
|
72
75
|
this._delayInit = async () => {
|
|
73
76
|
const endPoint = new node_opcua_server_1.OPCUAServerEndPoint({
|
|
@@ -93,60 +96,65 @@ class OPCUADiscoveryServer extends node_opcua_server_1.OPCUABaseServer {
|
|
|
93
96
|
});
|
|
94
97
|
};
|
|
95
98
|
}
|
|
96
|
-
start(
|
|
99
|
+
async start() {
|
|
97
100
|
(0, node_opcua_assert_1.assert)(!this.mDnsResponder);
|
|
98
101
|
(0, node_opcua_assert_1.assert)(Array.isArray(this.capabilitiesForMDNS));
|
|
99
102
|
this._preInitTask.push(async () => {
|
|
100
103
|
await this._delayInit();
|
|
101
104
|
});
|
|
102
|
-
super.start((err) =>
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
this.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
host: hostname || "",
|
|
115
|
-
port: this.endpoints[0].port
|
|
116
|
-
}, (err2) => {
|
|
117
|
-
callback(err2);
|
|
118
|
-
});
|
|
105
|
+
await new Promise((resolve, reject) => super.start((err) => err ? reject(err) : resolve()));
|
|
106
|
+
const endpointUri = this.getEndpointUrl();
|
|
107
|
+
const { hostname } = new url_1.URL(endpointUri);
|
|
108
|
+
this.mDnsResponder = new mdns_responder_1.MDNSResponder();
|
|
109
|
+
this.mDnsLDSAnnouncer = new node_opcua_service_discovery_1.BonjourHolder();
|
|
110
|
+
// declare the discovery server itself in bonjour
|
|
111
|
+
await this.mDnsLDSAnnouncer.announcedOnMulticastSubnet({
|
|
112
|
+
capabilities: this.capabilitiesForMDNS,
|
|
113
|
+
name: this.serverInfo.applicationUri,
|
|
114
|
+
path: "/DiscoveryServer",
|
|
115
|
+
host: hostname || "",
|
|
116
|
+
port: this.endpoints[0].port
|
|
119
117
|
});
|
|
120
118
|
}
|
|
121
|
-
|
|
119
|
+
#shutting_down = false;
|
|
120
|
+
async shutdown() {
|
|
121
|
+
if (this.#shutting_down)
|
|
122
|
+
return;
|
|
123
|
+
this.#shutting_down = true;
|
|
122
124
|
debugLog("stopping announcement of LDS on mDNS");
|
|
125
|
+
//
|
|
126
|
+
for (const registeredServer of this.registeredServers.values()) {
|
|
127
|
+
debugLog("LDS is shutting down and is forcefuly unregistering server", registeredServer.serverUri);
|
|
128
|
+
await this.#internalRegisterServerOffline(registeredServer, true);
|
|
129
|
+
}
|
|
123
130
|
if (this.mDnsResponder) {
|
|
124
|
-
|
|
131
|
+
debugLog("disposing mDnsResponder");
|
|
132
|
+
await this.mDnsResponder.dispose();
|
|
125
133
|
this.mDnsResponder = undefined;
|
|
134
|
+
debugLog(" mDnsResponder disposed");
|
|
126
135
|
}
|
|
127
|
-
this.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
});
|
|
136
|
+
if (this.mDnsLDSAnnouncer) {
|
|
137
|
+
debugLog("disposing mDnsLDSAnnouncer of this LDS to the mDNS");
|
|
138
|
+
await this.mDnsLDSAnnouncer.stopAnnouncedOnMulticastSubnet();
|
|
139
|
+
this.mDnsLDSAnnouncer = undefined;
|
|
140
|
+
}
|
|
141
|
+
debugLog("Shutting down Discovery Server");
|
|
142
|
+
await new Promise((resolve, reject) => super.shutdown((err) => err ? reject(err) : resolve()));
|
|
143
|
+
debugLog("stopping announcement of LDS on mDNS - DONE");
|
|
144
|
+
// add a extra delay to ensure that the port is really closed
|
|
145
|
+
// and registered server propagated the fact that LDS is not here anymore
|
|
146
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
139
147
|
}
|
|
140
148
|
/**
|
|
141
149
|
* returns the number of registered servers
|
|
142
150
|
*/
|
|
143
151
|
get registeredServerCount() {
|
|
144
|
-
return
|
|
152
|
+
return this.registeredServers.size;
|
|
145
153
|
}
|
|
146
154
|
getServers(channel) {
|
|
147
155
|
this.serverInfo.discoveryUrls = this.getDiscoveryUrls();
|
|
148
156
|
const servers = [this.serverInfo];
|
|
149
|
-
for (const registered_server of
|
|
157
|
+
for (const registered_server of this.registeredServers.values()) {
|
|
150
158
|
const serverInfo = new node_opcua_service_endpoints_1.ApplicationDescription(registered_server.serverInfo);
|
|
151
159
|
servers.push(serverInfo);
|
|
152
160
|
}
|
|
@@ -157,30 +165,36 @@ class OPCUADiscoveryServer extends node_opcua_server_1.OPCUABaseServer {
|
|
|
157
165
|
const request = message.request;
|
|
158
166
|
(0, node_opcua_assert_1.assert)(request.schema.name === "RegisterServer2Request");
|
|
159
167
|
request.discoveryConfiguration = request.discoveryConfiguration || [];
|
|
160
|
-
this
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
171
|
-
response = OPCUADiscoveryServer.makeServiceFault(node_opcua_status_code_1.StatusCodes.BadInternalError, additional_messages);
|
|
172
|
-
channel.send_response("MSG", response, message);
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
channel.send_response("MSG", response, message);
|
|
168
|
+
this.#internalRegisterServer(node_opcua_service_discovery_1.RegisterServer2Response, request.server, request.discoveryConfiguration).then((response) => {
|
|
169
|
+
channel.send_response("MSG", response, message);
|
|
170
|
+
}).catch((err) => {
|
|
171
|
+
errorLog("What shall I do ?", err.message);
|
|
172
|
+
errorLog(err);
|
|
173
|
+
let additional_messages = [];
|
|
174
|
+
additional_messages.push("EXCEPTION CAUGHT WHILE PROCESSING REQUEST !!! " + request.schema.name);
|
|
175
|
+
additional_messages.push(err.message);
|
|
176
|
+
if (err.stack) {
|
|
177
|
+
additional_messages = additional_messages.concat(err.stack.split("\n"));
|
|
176
178
|
}
|
|
179
|
+
const response = OPCUADiscoveryServer.makeServiceFault(node_opcua_status_code_1.StatusCodes.BadInternalError, additional_messages);
|
|
180
|
+
channel.send_response("MSG", response, message);
|
|
177
181
|
});
|
|
182
|
+
// istanbul ignore next
|
|
178
183
|
}
|
|
179
184
|
_on_RegisterServerRequest(message, channel) {
|
|
180
185
|
(0, node_opcua_assert_1.assert)(message.request instanceof node_opcua_service_discovery_1.RegisterServerRequest);
|
|
181
186
|
const request = message.request;
|
|
182
187
|
(0, node_opcua_assert_1.assert)(request.schema.name === "RegisterServerRequest");
|
|
183
|
-
this
|
|
188
|
+
this.#internalRegisterServer(node_opcua_service_discovery_1.RegisterServerResponse, request.server, undefined).then((response) => {
|
|
189
|
+
channel.send_response("MSG", response, message);
|
|
190
|
+
}).catch((err) => {
|
|
191
|
+
let additional_messages = [];
|
|
192
|
+
additional_messages.push("EXCEPTION CAUGHT WHILE PROCESSING REQUEST !!! " + request.schema.name);
|
|
193
|
+
additional_messages.push(err.message);
|
|
194
|
+
if (err.stack) {
|
|
195
|
+
additional_messages = additional_messages.concat(err.stack.split("\n"));
|
|
196
|
+
}
|
|
197
|
+
const response = OPCUADiscoveryServer.makeServiceFault(node_opcua_status_code_1.StatusCodes.BadInternalError, additional_messages);
|
|
184
198
|
channel.send_response("MSG", response, message);
|
|
185
199
|
});
|
|
186
200
|
}
|
|
@@ -210,6 +224,9 @@ class OPCUADiscoveryServer extends node_opcua_server_1.OPCUABaseServer {
|
|
|
210
224
|
return channel.send_response("MSG", response1, message);
|
|
211
225
|
}
|
|
212
226
|
sendError;
|
|
227
|
+
if (this.#shutting_down) {
|
|
228
|
+
return sendError(node_opcua_status_code_1.StatusCodes.BadShutdown);
|
|
229
|
+
}
|
|
213
230
|
// startingRecordId Counter Only records with an identifier greater than this number will be
|
|
214
231
|
// returned.
|
|
215
232
|
// Specify 0 to start with the first record in the cache.
|
|
@@ -234,20 +251,20 @@ class OPCUADiscoveryServer extends node_opcua_server_1.OPCUABaseServer {
|
|
|
234
251
|
.join(" ");
|
|
235
252
|
debugLog(" startingRecordId = ", request.startingRecordId);
|
|
236
253
|
if (this.mDnsResponder) {
|
|
237
|
-
for (const
|
|
238
|
-
debugLog("Exploring server ",
|
|
239
|
-
if (
|
|
254
|
+
for (const serverOnNetwork of this.mDnsResponder.registeredServers) {
|
|
255
|
+
debugLog("Exploring server ", serverOnNetwork.serverName);
|
|
256
|
+
if (serverOnNetwork.recordId <= request.startingRecordId) {
|
|
240
257
|
continue;
|
|
241
258
|
}
|
|
242
|
-
if (!hasCapabilities(
|
|
259
|
+
if (!hasCapabilities(serverOnNetwork.serverCapabilities, serverCapabilityFilter)) {
|
|
243
260
|
// istanbul ignore next
|
|
244
261
|
if (doDebug) {
|
|
245
|
-
debugLog(" server ",
|
|
262
|
+
debugLog(" server ", serverOnNetwork.serverName, serverOnNetwork.serverCapabilities ? serverOnNetwork.serverCapabilities.join(",") : [], " does not match serverCapabilities ", serverCapabilityFilter);
|
|
246
263
|
}
|
|
247
264
|
continue;
|
|
248
265
|
}
|
|
249
|
-
debugLog(" server ",
|
|
250
|
-
servers.push(
|
|
266
|
+
debugLog(" server ", serverOnNetwork.serverName, " found");
|
|
267
|
+
servers.push(serverOnNetwork);
|
|
251
268
|
if (servers.length === request.maxRecordsToReturn) {
|
|
252
269
|
debugLog("max records to return reached", request.maxRecordsToReturn);
|
|
253
270
|
break;
|
|
@@ -260,21 +277,138 @@ class OPCUADiscoveryServer extends node_opcua_server_1.OPCUABaseServer {
|
|
|
260
277
|
});
|
|
261
278
|
channel.send_response("MSG", response, message);
|
|
262
279
|
}
|
|
263
|
-
async
|
|
264
|
-
|
|
265
|
-
|
|
280
|
+
async #stopAnnouncedOnMulticastSubnet(conf) {
|
|
281
|
+
const b = conf.bonjourHolder;
|
|
282
|
+
await b.stopAnnouncedOnMulticastSubnet();
|
|
283
|
+
conf.bonjourHolder = undefined;
|
|
266
284
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
if (
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
285
|
+
async #announcedOnMulticastSubnet(conf, announcement) {
|
|
286
|
+
const serviceConfig = (0, node_opcua_service_discovery_1.announcementToServiceConfig)(announcement);
|
|
287
|
+
let b = conf.bonjourHolder;
|
|
288
|
+
if (b && b.serviceConfig) {
|
|
289
|
+
if ((0, node_opcua_service_discovery_1.isSameService)(b.serviceConfig, serviceConfig)) {
|
|
290
|
+
debugLog("Configuration ", conf.mdnsServerName, " has not changed !");
|
|
291
|
+
// nothing to do
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
// istanbul ignore next
|
|
296
|
+
if (doDebug) {
|
|
297
|
+
debugLog("Configuration ", conf.mdnsServerName, " HAS changed !");
|
|
298
|
+
debugLog(" Was ", (0, node_opcua_service_discovery_1.serviceToString)(b.serviceConfig));
|
|
299
|
+
debugLog(" is ", announcement);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
await this.#stopAnnouncedOnMulticastSubnet(conf);
|
|
303
|
+
}
|
|
304
|
+
b = new node_opcua_service_discovery_1.BonjourHolder();
|
|
305
|
+
conf.bonjourHolder = b;
|
|
306
|
+
await b.announcedOnMulticastSubnet(announcement);
|
|
307
|
+
}
|
|
308
|
+
async #dealWithDiscoveryConfiguration(previousConfMap, server1, serverInfo, discoveryConfiguration) {
|
|
309
|
+
// mdnsServerName String The name of the Server when it is announced via mDNS.
|
|
310
|
+
// See Part 12 for the details about mDNS. This string shall be
|
|
311
|
+
// less than 64 bytes.
|
|
312
|
+
// If not specified the first element of the serverNames array
|
|
313
|
+
// is used (truncated to 63 bytes if necessary).
|
|
314
|
+
// serverCapabilities [] String The set of Server capabilities supported by the Server.
|
|
315
|
+
// A Server capability is a short identifier for a feature
|
|
316
|
+
// The set of allowed Server capabilities are defined in Part 12.
|
|
317
|
+
discoveryConfiguration.mdnsServerName ??= server1.serverNames[0].text;
|
|
318
|
+
serverInfo.discoveryUrls ??= [];
|
|
319
|
+
const endpointUrl = serverInfo.discoveryUrls[0];
|
|
320
|
+
const parsedUrl = new url_1.URL(endpointUrl);
|
|
321
|
+
discoveryConfiguration.serverCapabilities = discoveryConfiguration.serverCapabilities || [];
|
|
322
|
+
const announcement = {
|
|
323
|
+
capabilities: discoveryConfiguration.serverCapabilities.map((x) => x) || ["DA"],
|
|
324
|
+
name: discoveryConfiguration.mdnsServerName,
|
|
325
|
+
host: parsedUrl.hostname || "",
|
|
326
|
+
path: parsedUrl.pathname || "/",
|
|
327
|
+
port: parseInt(parsedUrl.port, 10)
|
|
328
|
+
};
|
|
329
|
+
if (previousConfMap.has(discoveryConfiguration.mdnsServerName)) {
|
|
330
|
+
// configuration already exists
|
|
331
|
+
debugLog("Configuration ", discoveryConfiguration.mdnsServerName, " already exists !");
|
|
332
|
+
const prevConf = previousConfMap.get(discoveryConfiguration.mdnsServerName);
|
|
333
|
+
previousConfMap.delete(discoveryConfiguration.mdnsServerName);
|
|
334
|
+
discoveryConfiguration.bonjourHolder = prevConf.bonjourHolder;
|
|
335
|
+
}
|
|
336
|
+
// let's announce the server on the multicast DNS
|
|
337
|
+
await this.#announcedOnMulticastSubnet(discoveryConfiguration, announcement);
|
|
338
|
+
return node_opcua_status_code_1.StatusCodes.Good;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
*
|
|
342
|
+
* @param server
|
|
343
|
+
* @param forced true :indicated if the LDS is forcing the Server to be seen as unregistered, false
|
|
344
|
+
* when the offline comes from the server it self.
|
|
345
|
+
* @returns
|
|
346
|
+
*/
|
|
347
|
+
async #internalRegisterServerOffline(server, forced) {
|
|
348
|
+
const key = server.serverUri;
|
|
349
|
+
let configurationResults = null;
|
|
350
|
+
// server is announced offline
|
|
351
|
+
if (this.registeredServers.has(key)) {
|
|
352
|
+
const serverToUnregister = this.registeredServers.get(key);
|
|
353
|
+
debugLog(chalk_1.default.cyan("unregistering server : "), chalk_1.default.yellow(serverToUnregister.serverUri));
|
|
354
|
+
configurationResults = [];
|
|
355
|
+
const discoveryConfigurations = serverToUnregister.discoveryConfiguration || [];
|
|
356
|
+
for (const conf of discoveryConfigurations) {
|
|
357
|
+
await this.#stopAnnouncedOnMulticastSubnet(conf);
|
|
358
|
+
configurationResults.push(node_opcua_status_code_1.StatusCodes.Good);
|
|
359
|
+
}
|
|
360
|
+
this.registeredServers.delete(key);
|
|
361
|
+
serverToUnregister.isOnline = false;
|
|
362
|
+
this.emit("onUnregisterServer", serverToUnregister, forced);
|
|
363
|
+
}
|
|
364
|
+
return configurationResults;
|
|
365
|
+
}
|
|
366
|
+
async #internalRegisterServerOnline(server, discoveryConfigurations) {
|
|
367
|
+
(0, node_opcua_assert_1.assert)(discoveryConfigurations);
|
|
368
|
+
const key = server.serverUri;
|
|
369
|
+
let configurationResults = null;
|
|
370
|
+
debugLog(chalk_1.default.cyan(" registering server : "), chalk_1.default.yellow(server.serverUri));
|
|
371
|
+
// prepare serverInfo which will be used by FindServers
|
|
372
|
+
const serverInfo = {
|
|
373
|
+
applicationName: server.serverNames[0], // which one shall we use ?
|
|
374
|
+
applicationType: server.serverType,
|
|
375
|
+
applicationUri: server.serverUri,
|
|
376
|
+
discoveryUrls: server.discoveryUrls,
|
|
377
|
+
gatewayServerUri: server.gatewayServerUri,
|
|
378
|
+
productUri: server.productUri
|
|
379
|
+
// XXX ?????? serverInfo.discoveryProfileUri = serverInfo.discoveryProfileUri;
|
|
380
|
+
};
|
|
381
|
+
const previousConfMap = new Map();
|
|
382
|
+
// let check in the server has already been registed on this LDS
|
|
383
|
+
let firstTimeRegistration = true;
|
|
384
|
+
if (this.registeredServers.has(key)) {
|
|
385
|
+
// server already exists and must only be updated
|
|
386
|
+
const previousServer = this.registeredServers.get(key);
|
|
387
|
+
for (const conf of previousServer.discoveryConfiguration) {
|
|
388
|
+
previousConfMap.set(conf.mdnsServerName, conf);
|
|
389
|
+
}
|
|
390
|
+
firstTimeRegistration = false;
|
|
391
|
+
}
|
|
392
|
+
this.registeredServers.set(key, server);
|
|
393
|
+
this.emit("onRegisterServer", server, firstTimeRegistration);
|
|
394
|
+
// xx server.semaphoreFilePath = server.semaphoreFilePath;
|
|
395
|
+
// xx server.serverNames = server.serverNames;
|
|
396
|
+
server.serverInfo = serverInfo;
|
|
397
|
+
server.discoveryConfiguration = discoveryConfigurations;
|
|
398
|
+
configurationResults = [];
|
|
399
|
+
for (const conf of discoveryConfigurations) {
|
|
400
|
+
const statusCode = await this.#dealWithDiscoveryConfiguration(previousConfMap, server, serverInfo, conf);
|
|
401
|
+
configurationResults.push(statusCode);
|
|
277
402
|
}
|
|
403
|
+
// now also unregister unprocessed
|
|
404
|
+
if (previousConfMap.size !== 0) {
|
|
405
|
+
debugLog(" Warning some conf need to be removed !");
|
|
406
|
+
}
|
|
407
|
+
return configurationResults;
|
|
408
|
+
}
|
|
409
|
+
// eslint-disable-next-line max-statements
|
|
410
|
+
async #internalRegisterServer(RegisterServerXResponse, rawServer, discoveryConfigurations) {
|
|
411
|
+
// #region check parameter validity
|
|
278
412
|
function sendError(statusCode) {
|
|
279
413
|
debugLog(chalk_1.default.red("_on_RegisterServer(2)Request error"), statusCode.toString());
|
|
280
414
|
const response1 = new node_opcua_secure_channel_1.ServiceFault({
|
|
@@ -282,65 +416,10 @@ class OPCUADiscoveryServer extends node_opcua_server_1.OPCUABaseServer {
|
|
|
282
416
|
});
|
|
283
417
|
return response1;
|
|
284
418
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
await b.stopAnnouncedOnMulticastSubnet();
|
|
288
|
-
conf.bonjourHolder = undefined;
|
|
289
|
-
}
|
|
290
|
-
async function _announcedOnMulticastSubnet(conf, announcement) {
|
|
291
|
-
const serviceConfig = (0, node_opcua_service_discovery_1.announcementToServiceConfig)(announcement);
|
|
292
|
-
let b = conf.bonjourHolder;
|
|
293
|
-
if (b && b.serviceConfig) {
|
|
294
|
-
if ((0, node_opcua_service_discovery_1.sameService)(b.serviceConfig, serviceConfig)) {
|
|
295
|
-
debugLog("Configuration ", conf.mdnsServerName, " has not changed !");
|
|
296
|
-
// nothing to do
|
|
297
|
-
return;
|
|
298
|
-
}
|
|
299
|
-
else {
|
|
300
|
-
// istanbul ignore next
|
|
301
|
-
if (doDebug) {
|
|
302
|
-
debugLog("Configuration ", conf.mdnsServerName, " HAS changed !");
|
|
303
|
-
debugLog(" Was ", (0, node_opcua_service_discovery_1.serviceToString)(b.serviceConfig));
|
|
304
|
-
debugLog(" is ", announcement);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
await _stop_announcedOnMulticastSubnet(conf);
|
|
308
|
-
}
|
|
309
|
-
b = new node_opcua_service_discovery_1.BonjourHolder();
|
|
310
|
-
conf.bonjourHolder = b;
|
|
311
|
-
await b.announcedOnMulticastSubnet(announcement);
|
|
312
|
-
}
|
|
313
|
-
async function dealWithDiscoveryConfiguration(previousConfMap, server1, serverInfo, discoveryConfiguration) {
|
|
314
|
-
// mdnsServerName String The name of the Server when it is announced via mDNS.
|
|
315
|
-
// See Part 12 for the details about mDNS. This string shall be less than 64 bytes.
|
|
316
|
-
// If not specified the first element of the serverNames array is used
|
|
317
|
-
// (truncated to 63 bytes if necessary).
|
|
318
|
-
// serverCapabilities [] String The set of Server capabilities supported by the Server.
|
|
319
|
-
// A Server capability is a short identifier for a feature
|
|
320
|
-
// The set of allowed Server capabilities are defined in Part 12.
|
|
321
|
-
discoveryConfiguration.mdnsServerName = discoveryConfiguration.mdnsServerName || server1.serverNames[0].text;
|
|
322
|
-
serverInfo.discoveryUrls = serverInfo.discoveryUrls || [];
|
|
323
|
-
const endpointUrl = serverInfo.discoveryUrls[0];
|
|
324
|
-
const parsedUrl = url_1.default.parse(endpointUrl);
|
|
325
|
-
discoveryConfiguration.serverCapabilities = discoveryConfiguration.serverCapabilities || [];
|
|
326
|
-
const announcement = {
|
|
327
|
-
capabilities: discoveryConfiguration.serverCapabilities.map((x) => x) || ["DA"],
|
|
328
|
-
name: discoveryConfiguration.mdnsServerName,
|
|
329
|
-
host: parsedUrl.hostname || "",
|
|
330
|
-
path: parsedUrl.pathname || "/",
|
|
331
|
-
port: parseInt(parsedUrl.port, 10)
|
|
332
|
-
};
|
|
333
|
-
if (previousConfMap[discoveryConfiguration.mdnsServerName]) {
|
|
334
|
-
// configuration already exists
|
|
335
|
-
debugLog("Configuration ", discoveryConfiguration.mdnsServerName, " already exists !");
|
|
336
|
-
const prevConf = previousConfMap[discoveryConfiguration.mdnsServerName];
|
|
337
|
-
delete previousConfMap[discoveryConfiguration.mdnsServerName];
|
|
338
|
-
discoveryConfiguration.bonjourHolder = prevConf.bonjourHolder;
|
|
339
|
-
}
|
|
340
|
-
// let's announce the server on the multicast DNS
|
|
341
|
-
await _announcedOnMulticastSubnet(discoveryConfiguration, announcement);
|
|
342
|
-
return node_opcua_status_code_1.StatusCodes.Good;
|
|
419
|
+
if (this.#shutting_down) {
|
|
420
|
+
return sendError(node_opcua_status_code_1.StatusCodes.BadShutdown);
|
|
343
421
|
}
|
|
422
|
+
const server = rawServer;
|
|
344
423
|
// check serverType is valid
|
|
345
424
|
if (!_isValidServerType(server.serverType)) {
|
|
346
425
|
debugLog("Invalid server Type", node_opcua_service_endpoints_2.ApplicationType[server.serverType]);
|
|
@@ -350,8 +429,6 @@ class OPCUADiscoveryServer extends node_opcua_server_1.OPCUABaseServer {
|
|
|
350
429
|
debugLog("Missing serverURI");
|
|
351
430
|
return sendError(node_opcua_status_code_1.StatusCodes.BadInvalidArgument);
|
|
352
431
|
}
|
|
353
|
-
// BadServerUriInvalid
|
|
354
|
-
// TODO
|
|
355
432
|
server.serverNames = server.serverNames || [];
|
|
356
433
|
// BadServerNameMissing
|
|
357
434
|
if (server.serverNames.length === 0 || !server.serverNames[0].text) {
|
|
@@ -362,61 +439,24 @@ class OPCUADiscoveryServer extends node_opcua_server_1.OPCUABaseServer {
|
|
|
362
439
|
if (server.discoveryUrls.length === 0 || !server.discoveryUrls[0]) {
|
|
363
440
|
return sendError(node_opcua_status_code_1.StatusCodes.BadDiscoveryUrlMissing);
|
|
364
441
|
}
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
gatewayServerUri: server.gatewayServerUri,
|
|
376
|
-
productUri: server.productUri
|
|
377
|
-
// XXX ?????? serverInfo.discoveryProfileUri = serverInfo.discoveryProfileUri;
|
|
378
|
-
};
|
|
379
|
-
const previousConfMap = [];
|
|
380
|
-
if (this.registeredServers[key]) {
|
|
381
|
-
// server already exists and must only be updated
|
|
382
|
-
const previousServer = this.registeredServers[key];
|
|
383
|
-
for (const conf of previousServer.discoveryConfiguration) {
|
|
384
|
-
previousConfMap[conf.mdnsServerName] = conf;
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
this.registeredServers[key] = server;
|
|
388
|
-
// xx server.semaphoreFilePath = server.semaphoreFilePath;
|
|
389
|
-
// xx server.serverNames = server.serverNames;
|
|
390
|
-
server.serverInfo = serverInfo;
|
|
391
|
-
server.discoveryConfiguration = discoveryConfigurations;
|
|
392
|
-
(0, node_opcua_assert_1.assert)(discoveryConfigurations);
|
|
393
|
-
configurationResults = [];
|
|
394
|
-
for (const conf of discoveryConfigurations) {
|
|
395
|
-
const statusCode = await dealWithDiscoveryConfiguration(previousConfMap, server, serverInfo, conf);
|
|
396
|
-
configurationResults.push(statusCode);
|
|
397
|
-
}
|
|
398
|
-
// now also unregister unprocessed
|
|
399
|
-
if (Object.keys(previousConfMap).length !== 0) {
|
|
400
|
-
debugLog(" Warning some conf need to be removed !");
|
|
401
|
-
}
|
|
442
|
+
// BadServerUriInvalid
|
|
443
|
+
// TODO
|
|
444
|
+
// #endregion
|
|
445
|
+
if (!discoveryConfigurations) {
|
|
446
|
+
discoveryConfigurations = [
|
|
447
|
+
new node_opcua_service_discovery_1.MdnsDiscoveryConfiguration({
|
|
448
|
+
mdnsServerName: undefined,
|
|
449
|
+
serverCapabilities: ["NA"]
|
|
450
|
+
})
|
|
451
|
+
];
|
|
402
452
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
discoveryConfigurations = server1.discoveryConfiguration || [];
|
|
410
|
-
for (const conf of discoveryConfigurations) {
|
|
411
|
-
await _stop_announcedOnMulticastSubnet(conf);
|
|
412
|
-
configurationResults.push(node_opcua_status_code_1.StatusCodes.Good);
|
|
413
|
-
}
|
|
414
|
-
delete this.registeredServers[key];
|
|
415
|
-
}
|
|
453
|
+
const configurationResults = server?.isOnline ?
|
|
454
|
+
await this.#internalRegisterServerOnline(server, discoveryConfigurations) :
|
|
455
|
+
await this.#internalRegisterServerOffline(server, false);
|
|
456
|
+
const response = new RegisterServerXResponse({});
|
|
457
|
+
if (response instanceof node_opcua_service_discovery_1.RegisterServer2Response) {
|
|
458
|
+
response.configurationResults = configurationResults;
|
|
416
459
|
}
|
|
417
|
-
const response = new RegisterServerXResponse({
|
|
418
|
-
configurationResults
|
|
419
|
-
});
|
|
420
460
|
return response;
|
|
421
461
|
}
|
|
422
462
|
}
|
|
@@ -438,10 +478,4 @@ function _isValidServerType(serverType) {
|
|
|
438
478
|
}
|
|
439
479
|
return false;
|
|
440
480
|
}
|
|
441
|
-
OPCUADiscoveryServer.prototype.__internalRegisterServerWithCallback = (0, util_1.callbackify)(OPCUADiscoveryServer.prototype.__internalRegisterServer);
|
|
442
|
-
// tslint:disable-next-line: no-var-requires
|
|
443
|
-
const thenify_ex_1 = require("thenify-ex");
|
|
444
|
-
const opts = { multiArgs: false };
|
|
445
|
-
OPCUADiscoveryServer.prototype.start = (0, thenify_ex_1.withCallback)(OPCUADiscoveryServer.prototype.start, opts);
|
|
446
|
-
OPCUADiscoveryServer.prototype.shutdown = (0, thenify_ex_1.withCallback)(OPCUADiscoveryServer.prototype.shutdown, opts);
|
|
447
481
|
//# sourceMappingURL=opcua_discovery_server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opcua_discovery_server.js","sourceRoot":"","sources":["../source/opcua_discovery_server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"opcua_discovery_server.js","sourceRoot":"","sources":["../source/opcua_discovery_server.ts"],"names":[],"mappings":"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"}
|