node-opcua-local-discovery-server 2.138.0 → 2.139.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.
|
@@ -1,24 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
OPCUADiscoveryServer,
|
|
11
|
-
extractFullyQualifiedDomainName,
|
|
12
|
-
makeApplicationUrn
|
|
13
|
-
} = require("node-opcua");
|
|
14
|
-
|
|
15
|
-
// Create a new instance of vantage.
|
|
16
|
-
const Vorpal = require("vorpal");
|
|
17
|
-
const vorpal_repl = require("vorpal-repl");
|
|
18
|
-
const envPaths = require("env-paths");
|
|
19
|
-
const { make_debugLog } = require("node-opcua-debug");
|
|
2
|
+
import os from "os";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
|
|
6
|
+
import { assert, OPCUACertificateManager, OPCUADiscoveryServer, extractFullyQualifiedDomainName, makeApplicationUrn } from "node-opcua";
|
|
7
|
+
import { input, select } from "@inquirer/prompts";
|
|
8
|
+
import envPaths from "env-paths";
|
|
9
|
+
import { make_debugLog } from "node-opcua-debug";
|
|
20
10
|
|
|
21
11
|
const paths = envPaths("node-opcua-local-discovery-server");
|
|
12
|
+
|
|
13
|
+
import yargs from "yargs/yargs.js";
|
|
14
|
+
|
|
22
15
|
const configFolder = paths.config;
|
|
23
16
|
const pkiFolder = path.join(configFolder, "PKI");
|
|
24
17
|
const serverCertificateManager = new OPCUACertificateManager({
|
|
@@ -29,11 +22,11 @@ const serverCertificateManager = new OPCUACertificateManager({
|
|
|
29
22
|
const debugLog = make_debugLog("LDS");
|
|
30
23
|
|
|
31
24
|
async function getIpAddresses() {
|
|
32
|
-
const ipAddresses
|
|
25
|
+
const ipAddresses /*: string[] */= [];
|
|
33
26
|
const networkInterfaces = os.networkInterfaces();
|
|
34
27
|
for (const [interfaceName, interfaces] of Object.entries(networkInterfaces)) {
|
|
35
28
|
let alias = 0;
|
|
36
|
-
for (const iFace of interfaces) {
|
|
29
|
+
for (const iFace of interfaces || []) {
|
|
37
30
|
if ("IPv4" !== iFace.family || iFace.internal !== false) {
|
|
38
31
|
// skip over internal (i.e. 127.0.0.1) and non-ipv4 addresses
|
|
39
32
|
continue;
|
|
@@ -72,7 +65,7 @@ const argv = yargs(process.argv)
|
|
|
72
65
|
.default("force", false)
|
|
73
66
|
|
|
74
67
|
.string("alternateHostname")
|
|
75
|
-
.describe("alternateHostname ")
|
|
68
|
+
.describe("alternateHostname ", "alternate hostname to use in certificate")
|
|
76
69
|
.string("hostname")
|
|
77
70
|
.describe("hostname", "the hostname")
|
|
78
71
|
|
|
@@ -87,7 +80,15 @@ const argv = yargs(process.argv)
|
|
|
87
80
|
.alias("f", "force")
|
|
88
81
|
.alias("t", "tolerant")
|
|
89
82
|
|
|
90
|
-
.help(true).argv
|
|
83
|
+
.help(true).argv/* as {
|
|
84
|
+
port: number,
|
|
85
|
+
tolerant: boolean,
|
|
86
|
+
force: boolean,
|
|
87
|
+
applicationName: string,
|
|
88
|
+
hostname?: string,
|
|
89
|
+
alternateHostname?: string
|
|
90
|
+
}*/
|
|
91
|
+
;
|
|
91
92
|
|
|
92
93
|
const port = argv.port;
|
|
93
94
|
const automaticallyAcceptUnknownCertificate = argv.tolerant;
|
|
@@ -135,13 +136,12 @@ console.log("applicationName ", applicationName);
|
|
|
135
136
|
certificateFile,
|
|
136
137
|
privateKeyFile,
|
|
137
138
|
serverCertificateManager,
|
|
138
|
-
automaticallyAcceptUnknownCertificate,
|
|
139
139
|
serverInfo: {
|
|
140
140
|
applicationUri
|
|
141
141
|
},
|
|
142
142
|
hostname,
|
|
143
|
-
alternateHostname,
|
|
144
|
-
noUserIdentityTokens: true
|
|
143
|
+
alternateHostname: argv.alternateHostname ? [argv.alternateHostname] : [],
|
|
144
|
+
// noUserIdentityTokens: true
|
|
145
145
|
});
|
|
146
146
|
|
|
147
147
|
try {
|
|
@@ -157,39 +157,57 @@ console.log("applicationName ", applicationName);
|
|
|
157
157
|
console.log("rejected Folder ", discoveryServer.serverCertificateManager.rejectedFolder);
|
|
158
158
|
console.log("trusted Folder ", discoveryServer.serverCertificateManager.trustedFolder);
|
|
159
159
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
for (const serverKey of servers) {
|
|
173
|
-
const server = discoveryServer.registeredServers[serverKey];
|
|
174
|
-
this.log("key =", serverKey);
|
|
175
|
-
this.log(server.toString());
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
{
|
|
179
|
-
const server2 = Object.keys(discoveryServer.mDnsResponder.registeredServers);
|
|
180
|
-
this.log("number of mNDS registered servers : ", server2.length);
|
|
181
|
-
for (const serverKey of server2) {
|
|
182
|
-
const server = discoveryServer.mDnsResponder.registeredServers[serverKey];
|
|
183
|
-
this.log("key =", serverKey);
|
|
184
|
-
this.log(server.toString());
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
callback();
|
|
160
|
+
|
|
161
|
+
const commandPrompt = {
|
|
162
|
+
type: 'list',
|
|
163
|
+
name: 'direction',
|
|
164
|
+
message: 'select a command?',
|
|
165
|
+
choices: ['list servers', 'shutdown'],
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
while (true) {
|
|
169
|
+
const answer = await select({
|
|
170
|
+
choices: ['list servers', 'shutdown'],
|
|
171
|
+
message: 'select a command?',
|
|
189
172
|
});
|
|
190
|
-
|
|
173
|
+
console.log("answer", answer);
|
|
174
|
+
if (answer === "shutdown") {
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
displayRegisteredServersInfo(discoveryServer);
|
|
178
|
+
}
|
|
179
|
+
await discoveryServer.shutdown();
|
|
180
|
+
console.log("discovery server stopped");
|
|
181
|
+
process.exit(0);
|
|
182
|
+
|
|
191
183
|
} catch (err) {
|
|
192
184
|
console.log(err.message);
|
|
193
185
|
console.log(err);
|
|
194
186
|
}
|
|
195
187
|
})();
|
|
188
|
+
|
|
189
|
+
function displayRegisteredServersInfo(discoveryServer/*: OPCUADiscoveryServer*/) {
|
|
190
|
+
console.log(discoveryServer.serverInfo.toString());
|
|
191
|
+
// xx console.log(discoveryServer.endpoints[0]);
|
|
192
|
+
|
|
193
|
+
{
|
|
194
|
+
const servers = Object.keys(discoveryServer.registeredServers);
|
|
195
|
+
console.log("number of registered servers : ", servers.length);
|
|
196
|
+
|
|
197
|
+
for (const serverKey of servers) {
|
|
198
|
+
const server = discoveryServer.registeredServers[serverKey];
|
|
199
|
+
console.log("key =", serverKey);
|
|
200
|
+
console.log(server.toString());
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
if (discoveryServer.mDnsResponder) {
|
|
204
|
+
|
|
205
|
+
const server2 = Object.keys(discoveryServer.mDnsResponder.registeredServers);
|
|
206
|
+
console.log("number of mNDS registered servers : ", server2.length);
|
|
207
|
+
for (const serverKey of server2) {
|
|
208
|
+
const server = discoveryServer.mDnsResponder.registeredServers[serverKey];
|
|
209
|
+
console.log("key =", serverKey);
|
|
210
|
+
console.log(server.toString());
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
package/package.json
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-opcua-local-discovery-server",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.139.0",
|
|
4
4
|
"description": "pure nodejs OPCUA SDK - module local-discovery-server",
|
|
5
5
|
"bin": {
|
|
6
|
-
"lds": "./bin/local-discovery-server.
|
|
7
|
-
"local-discovery-server": "./bin/local-discovery-server.
|
|
8
|
-
"node-opcua-local-discovery-server": "./bin/local-discovery-server.
|
|
6
|
+
"lds": "./bin/local-discovery-server.mjs",
|
|
7
|
+
"local-discovery-server": "./bin/local-discovery-server.mjs",
|
|
8
|
+
"node-opcua-local-discovery-server": "./bin/local-discovery-server.mjs"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"lint": "eslint source/**/*.ts",
|
|
12
12
|
"test": "echo no test",
|
|
13
|
+
"clean": "npx rimraf -g node_modules dist *.tsbuildinfo tmp",
|
|
13
14
|
"build-docker": "docker build . -t lds"
|
|
14
15
|
},
|
|
15
16
|
"author": "Etienne Rossignon",
|
|
@@ -27,14 +28,14 @@
|
|
|
27
28
|
"internet of things"
|
|
28
29
|
],
|
|
29
30
|
"dependencies": {
|
|
31
|
+
"@inquirer/prompts": "7.2.0",
|
|
30
32
|
"env-paths": "2.2.1",
|
|
31
|
-
"node-opcua": "2.
|
|
32
|
-
"node-opcua-debug": "2.
|
|
33
|
-
"
|
|
34
|
-
"vorpal-repl": "^1.1.8",
|
|
33
|
+
"node-opcua": "2.139.0",
|
|
34
|
+
"node-opcua-debug": "2.139.0",
|
|
35
|
+
"tsx": "^4.19.2",
|
|
35
36
|
"yargs": "15.4.1"
|
|
36
37
|
},
|
|
37
38
|
"homepage": "http://node-opcua.github.io/",
|
|
38
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "b7a01d31c7602d323e60a5f4a54428199a266f29",
|
|
39
40
|
"files": []
|
|
40
41
|
}
|