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.
@@ -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 = __importDefault(require("url"));
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)(__filename);
28
- const doDebug = (0, node_opcua_debug_1.checkDebugFlag)(__filename);
29
- const errorLog = (0, node_opcua_debug_1.make_errorLog)(__filename);
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(callback) {
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
- if (err) {
104
- return callback(err);
105
- }
106
- const endpointUri = this.getEndpointUrl();
107
- const { hostname } = url_1.default.parse(endpointUri);
108
- this.mDnsResponder = new mdns_responder_1.MDNSResponder();
109
- // declare discovery server in bonjour
110
- this.bonjourHolder.announcedOnMulticastSubnetWithCallback({
111
- capabilities: this.capabilitiesForMDNS,
112
- name: this.serverInfo.applicationUri,
113
- path: "/DiscoveryServer",
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
- shutdown(callback) {
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
- this.mDnsResponder.dispose();
131
+ debugLog("disposing mDnsResponder");
132
+ await this.mDnsResponder.dispose();
125
133
  this.mDnsResponder = undefined;
134
+ debugLog(" mDnsResponder disposed");
126
135
  }
127
- this.bonjourHolder.stopAnnouncedOnMulticastSubnetWithCallback((err) => {
128
- if (err) {
129
- errorLog("stopAnnouncedOnMulticastSubnet Error ", err.message);
130
- }
131
- debugLog("stopping announcement of LDS on mDNS - DONE");
132
- debugLog("Shutting down Discovery Server");
133
- super.shutdown(() => {
134
- setTimeout(() => {
135
- callback();
136
- }, 100);
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 Object.keys(this.registeredServers).length;
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 Object.values(this.registeredServers)) {
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.__internalRegisterServerWithCallback(node_opcua_service_discovery_1.RegisterServer2Response, request.server, request.discoveryConfiguration, (err, response) => {
161
- // istanbul ignore next
162
- if (err) {
163
- errorLog("What shall I do ?", err.message);
164
- errorLog(err);
165
- let additional_messages = [];
166
- additional_messages.push("EXCEPTION CAUGHT WHILE PROCESSING REQUEST !!! " + request.schema.name);
167
- additional_messages.push(err.message);
168
- if (err.stack) {
169
- additional_messages = additional_messages.concat(err.stack.split("\n"));
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.__internalRegisterServerWithCallback(node_opcua_service_discovery_1.RegisterServerResponse, request.server, undefined, (err, response) => {
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 server of this.mDnsResponder.registeredServers) {
238
- debugLog("Exploring server ", server.serverName);
239
- if (server.recordId <= request.startingRecordId) {
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(server.serverCapabilities, serverCapabilityFilter)) {
259
+ if (!hasCapabilities(serverOnNetwork.serverCapabilities, serverCapabilityFilter)) {
243
260
  // istanbul ignore next
244
261
  if (doDebug) {
245
- debugLog(" server ", server.serverName, server.serverCapabilities ? server.serverCapabilities.join(",") : [], " does not match serverCapabilities ", serverCapabilityFilter);
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 ", server.serverName, " found");
250
- servers.push(server);
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 __internalRegisterServerWithCallback(RegisterServerXResponse /* RegisterServer2Response | RegisterServerResponse */, rawServer, discoveryConfigurations, callback) {
264
- // istanbul ignore next
265
- callback(new Error("internal Error"));
280
+ async #stopAnnouncedOnMulticastSubnet(conf) {
281
+ const b = conf.bonjourHolder;
282
+ await b.stopAnnouncedOnMulticastSubnet();
283
+ conf.bonjourHolder = undefined;
266
284
  }
267
- // eslint-disable-next-line max-statements
268
- async __internalRegisterServer(RegisterServerXResponse /* RegisterServer2Response | RegisterServerResponse */, rawServer, discoveryConfigurations) {
269
- const server = rawServer;
270
- if (!discoveryConfigurations) {
271
- discoveryConfigurations = [
272
- new node_opcua_service_discovery_1.MdnsDiscoveryConfiguration({
273
- mdnsServerName: undefined,
274
- serverCapabilities: ["NA"]
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
- async function _stop_announcedOnMulticastSubnet(conf) {
286
- const b = conf.bonjourHolder;
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
- const key = server.serverUri;
366
- let configurationResults = null;
367
- if (server.isOnline) {
368
- debugLog(chalk_1.default.cyan(" registering server : "), chalk_1.default.yellow(server.serverUri));
369
- // prepare serverInfo which will be used by FindServers
370
- const serverInfo = {
371
- applicationName: server.serverNames[0], // which one shall we use ?
372
- applicationType: server.serverType,
373
- applicationUri: server.serverUri,
374
- discoveryUrls: server.discoveryUrls,
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
- else {
404
- // server is announced offline
405
- if (key in this.registeredServers) {
406
- const server1 = this.registeredServers[key];
407
- debugLog(chalk_1.default.cyan("unregistering server : "), chalk_1.default.yellow(server1.serverUri));
408
- configurationResults = [];
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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"}