@vitormnm/node-red-simple-opcua 1.6.3 → 1.8.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/README.md +104 -136
- package/client/lib/opcua-client-browser.js +254 -11
- package/client/lib/opcua-client-method-service.js +1 -1
- package/client/lib/opcua-client-subscription-service.js +0 -2
- package/client/lib/opcua-client-write-service.js +14 -4
- package/client/opcua-client-config.html +118 -1
- package/client/opcua-client-config.js +112 -9
- package/client/opcua-client-help.html +6 -0
- package/client/opcua-client-utils.js +158 -10
- package/client/opcua-client.html +8 -0
- package/client/opcua-client.js +97 -1
- package/client/view/opcua-client.js +106 -14
- package/examples/flows_simple_opc.json +1 -1
- package/package.json +2 -2
- package/server/lib/opcua-address-space-alarm.js +95 -32
- package/server/lib/opcua-address-space-builder.js +717 -59
- package/server/lib/opcua-config.js +110 -35
- package/server/lib/opcua-server-events-child.js +31 -5
- package/server/lib/opcua-server-runtime-child.js +424 -27
- package/server/lib/opcua-server-runtime.js +52 -5
- package/server/lib/opcua-server-status-child.js +46 -15
- package/server/nodered/simple_opcua/server/certificates/mutex +0 -0
- package/server/nodered/simple_opcua/server/certificates/own/certs/server_selfsigned_cert_2048.pem +25 -0
- package/server/nodered/simple_opcua/server/certificates/own/certs/server_selfsigned_cert_2048.pem.mutex +0 -0
- package/server/nodered/simple_opcua/server/certificates/own/openssl.cnf +72 -0
- package/server/nodered/simple_opcua/server/certificates/own/private/private_key.pem +28 -0
- package/server/nodered/simple_opcua/server/certificates/trusted/certs/NodeOPCUA-Client@tuf[c5a9e20a8b680cdff76aaf0165bb3c9318da37a5].pem +25 -0
- package/server/nodered/simple_opcua/server/myServer1/mutex +0 -0
- package/server/nodered/simple_opcua/server/myServer1/own/certs/server_selfsigned_cert_2048.pem +25 -0
- package/server/nodered/simple_opcua/server/myServer1/own/certs/server_selfsigned_cert_2048.pem.mutex +0 -0
- package/server/nodered/simple_opcua/server/myServer1/own/openssl.cnf +72 -0
- package/server/nodered/simple_opcua/server/myServer1/own/private/private_key.pem +28 -0
- package/server/nodered/simple_opcua/server/myServer1/trusted/certs/NodeOPCUA-Client@tuf[91e520c64ff891c67168f08a46dd194071e15dae].pem +25 -0
- package/server/nodered/simple_opcua/server/myServer1/trusted/certs/NodeOPCUA-Client@tuf[98ae95da627cea4c500753c319161a3554ee38d7].pem +25 -0
- package/server/nodered/simple_opcua/server/myServer1/trusted/certs/NodeOPCUA-Client@tuf[aef8d7a1cfba13d84189a0bcf1694208fc51a7f9].pem +25 -0
- package/server/nodered/simple_opcua/server/myServer1/trusted/certs/NodeOPCUA-Client@tuf[c5a9e20a8b680cdff76aaf0165bb3c9318da37a5].pem +25 -0
- package/server/nodered/simple_opcua/server/myServer1/trusted/certs/NodeOPCUA-Client@tuf[ebdf9acf1d02e347917a14108d3144799c638ea3].pem +25 -0
- package/server/opcua-server-io.html +93 -1
- package/server/opcua-server-io.js +153 -29
- package/server/opcua-server-registry.js +8 -2
- package/server/opcua-server.css +64 -0
- package/server/opcua-server.html +168 -44
- package/server/opcua-server.js +115 -5
- package/server/view/opcua-server.css +100 -6
- package/server/view/opcua-server.js +746 -48
|
@@ -10,13 +10,6 @@ function OpcUaServerStatusNode(node, msg, nodeId) {
|
|
|
10
10
|
const serverNode = resolveRegisteredServer(node, msg, registry);
|
|
11
11
|
const snapshot = buildServerSnapshot(serverNode);
|
|
12
12
|
|
|
13
|
-
msg.payload = snapshot;
|
|
14
|
-
msg.opcua = msg.opcua || {};
|
|
15
|
-
msg.opcua.server = snapshot.identity.serverRef;
|
|
16
|
-
msg.opcua.endpointUrl = snapshot.endpointUrl;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
13
|
process.send({
|
|
21
14
|
type: "status",
|
|
22
15
|
data: {
|
|
@@ -27,11 +20,18 @@ function OpcUaServerStatusNode(node, msg, nodeId) {
|
|
|
27
20
|
nodeId: nodeId
|
|
28
21
|
});
|
|
29
22
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
23
|
+
if (msg) {
|
|
24
|
+
msg.payload = snapshot;
|
|
25
|
+
msg.opcua = msg.opcua || {};
|
|
26
|
+
msg.opcua.server = snapshot.identity.serverRef;
|
|
27
|
+
msg.opcua.endpointUrl = snapshot.endpointUrl;
|
|
28
|
+
|
|
29
|
+
process.send({
|
|
30
|
+
type: "send",
|
|
31
|
+
data: msg,
|
|
32
|
+
nodeId: nodeId
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
} catch (error) {
|
|
@@ -41,9 +41,9 @@ function OpcUaServerStatusNode(node, msg, nodeId) {
|
|
|
41
41
|
process.send({
|
|
42
42
|
type: "status",
|
|
43
43
|
data: {
|
|
44
|
-
fill: "red",
|
|
44
|
+
fill: msg ? "red" : "yellow",
|
|
45
45
|
shape: "ring",
|
|
46
|
-
text: "Status: " + error
|
|
46
|
+
text: msg ? "Status: " + error.message : "waiting for server"
|
|
47
47
|
},
|
|
48
48
|
nodeId: nodeId
|
|
49
49
|
});
|
|
@@ -99,10 +99,41 @@ function buildServerSnapshot(serverNode) {
|
|
|
99
99
|
},
|
|
100
100
|
endpoints: Array.isArray(server.endpoints)
|
|
101
101
|
? server.endpoints.map((endpoint) => buildEndpointSnapshot(endpoint))
|
|
102
|
-
: []
|
|
102
|
+
: [],
|
|
103
|
+
users: buildUsersSnapshot(serverNode),
|
|
104
|
+
groups: buildGroupsSnapshot(serverNode)
|
|
103
105
|
};
|
|
104
106
|
}
|
|
105
107
|
|
|
108
|
+
function buildUsersSnapshot(serverNode) {
|
|
109
|
+
const rawUsers = Array.isArray(serverNode.users) ? serverNode.users : [];
|
|
110
|
+
const allowAnonymous = Boolean(serverNode.allowAnonymous);
|
|
111
|
+
|
|
112
|
+
const result = rawUsers.map((user) => ({
|
|
113
|
+
name: extractText(user && user.username),
|
|
114
|
+
groups: resolveUserGroups(user, serverNode.groups)
|
|
115
|
+
}));
|
|
116
|
+
|
|
117
|
+
if (allowAnonymous) {
|
|
118
|
+
result.unshift({ name: "anonymous", groups: [] });
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function buildGroupsSnapshot(serverNode) {
|
|
125
|
+
const rawGroups = Array.isArray(serverNode.groups) ? serverNode.groups : [];
|
|
126
|
+
return rawGroups.map((g) => extractText(g && (g.name || g))).filter(Boolean);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function resolveUserGroups(user, rawGroups) {
|
|
130
|
+
if (!user) return [];
|
|
131
|
+
// normalizeUser stores groups as user.group (comma-separated string)
|
|
132
|
+
const groupsStr = extractText(user.group);
|
|
133
|
+
if (!groupsStr) return [];
|
|
134
|
+
return groupsStr.split(",").map((g) => g.trim()).filter(Boolean);
|
|
135
|
+
}
|
|
136
|
+
|
|
106
137
|
function buildEndpointSnapshot(endpoint) {
|
|
107
138
|
const descriptions = typeof endpoint.endpointDescriptions === "function"
|
|
108
139
|
? endpoint.endpointDescriptions()
|
|
File without changes
|
package/server/nodered/simple_opcua/server/certificates/own/certs/server_selfsigned_cert_2048.pem
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIENTCCAx2gAwIBAgIHAXgZZJFWWTANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG
|
|
3
|
+
EwJGUjEQMA4GA1UEBxMHT3JsZWFuczERMA8GA1UEChMIU3RlcmZpdmUxFjAUBgNV
|
|
4
|
+
BAMMDW15U2VydmVyMUB0dWYwHhcNMjYwNjIwMTQxNTE1WhcNMzYwNjE3MTQxNTE1
|
|
5
|
+
WjBKMQswCQYDVQQGEwJGUjEQMA4GA1UEBxMHT3JsZWFuczERMA8GA1UEChMIU3Rl
|
|
6
|
+
cmZpdmUxFjAUBgNVBAMMDW15U2VydmVyMUB0dWYwggEiMA0GCSqGSIb3DQEBAQUA
|
|
7
|
+
A4IBDwAwggEKAoIBAQC7IYbSbk1mosq3NdM494XdHfuLulEf07RmRRcXhv53/iPC
|
|
8
|
+
HTzTpyyaT9P2KItUEMf1+1m26O53gl8BlwbS+oCuDt34ORO0dWDoftgBXjP0uUWz
|
|
9
|
+
seaZ7AVwXL1yorYAK11VLHU4cxfzVLKK5WbiB+qEiQSUG+EKHlEtmyIEbrsOGh8s
|
|
10
|
+
ZZCE4rFjavzSaCGN7bwqNMtGyFPS5FGZ8HvvtLqhzyz0ew0TaZKpnaFQGxtvGI68
|
|
11
|
+
6yICgutmSXqyII8OHCXQ751gLzbhvADVUf/CvhX60ZCDMcGBQcFeLPkZF4CfQ2OP
|
|
12
|
+
2OZkm/2ulS+NZXWqDFX6pvN/Zsy57q4RKR+x+nDFAgMBAAGjggEeMIIBGjBVBglg
|
|
13
|
+
hkgBhvhCAQ0ESAxGU2VsZi1zaWduZWQgY2VydGlmaWNhdGUgZ2VuZXJhdGVkIGJ5
|
|
14
|
+
IE5vZGUtT1BDVUEgQ2VydGlmaWNhdGUgdXRpbGl0eSBWMjAMBgNVHRMBAf8EAjAA
|
|
15
|
+
MCAGA1UdJQEB/wQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAOBgNVHQ8BAf8EBAMC
|
|
16
|
+
AvQwHQYDVR0OBBYEFF3kmynfd5siPu9cso8NLIdURx8+MB8GA1UdIwQYMBaAFF3k
|
|
17
|
+
mynfd5siPu9cso8NLIdURx8+MEEGA1UdEQQ6MDiCA1RVRoIDdHVmhwTAqGQBhwTA
|
|
18
|
+
qA9khwTAqBEBhhp1cm46dHVmOm5vZGUtcmVkOm15c2VydmVyMTANBgkqhkiG9w0B
|
|
19
|
+
AQsFAAOCAQEAkDutnUHoeK6CQmYlTV2pJPW+1qcJ9QDCrDEJjoMReWY97CQqrPxm
|
|
20
|
+
9/nTQtPiHedsiF7LbOqsPpiK/chEACSaQO+OYzGtMydKehlC89KUG26TH+OgtVjM
|
|
21
|
+
zVi3sfSpo33jJ1T1Z8YKw9rnOfjkWzfMa6RW4+4p1DNR4RJcvKsNRTkh/C8RDFr0
|
|
22
|
+
ZPave1jxaYpxPQGHKD1lqQD6uIGaYwAogkQDn41Bl1/PwC79gOgs0WmKDZuQ3BpR
|
|
23
|
+
wGSa6Bcqzj3zzBQapSs5fFjuUyowaFsGI48N3mJJx4LlYB17yuOD5R6a6nzVJyaL
|
|
24
|
+
QsKqGvKkNFP0c3F1H+pkUGFGgR9PkkA5Xg==
|
|
25
|
+
-----END CERTIFICATE-----
|
|
File without changes
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
##################################################################################################
|
|
2
|
+
## SIMPLE OPENSSL CONFIG FILE FOR SELF-SIGNED CERTIFICATE GENERATION
|
|
3
|
+
################################################################################################################
|
|
4
|
+
|
|
5
|
+
distinguished_name = req_distinguished_name
|
|
6
|
+
default_md = sha1
|
|
7
|
+
|
|
8
|
+
default_md = sha256 # The default digest algorithm
|
|
9
|
+
|
|
10
|
+
[ v3_ca ]
|
|
11
|
+
subjectKeyIdentifier = hash
|
|
12
|
+
authorityKeyIdentifier = keyid:always,issuer:always
|
|
13
|
+
|
|
14
|
+
# authorityKeyIdentifier = keyid
|
|
15
|
+
basicConstraints = CA:TRUE
|
|
16
|
+
keyUsage = critical, cRLSign, keyCertSign
|
|
17
|
+
nsComment = "Self-signed Certificate for CA generated by Node-OPCUA Certificate utility"
|
|
18
|
+
#nsCertType = sslCA, emailCA
|
|
19
|
+
#subjectAltName = email:copy
|
|
20
|
+
#issuerAltName = issuer:copy
|
|
21
|
+
#obj = DER:02:03
|
|
22
|
+
# crlDistributionPoints = @crl_info
|
|
23
|
+
# [ crl_info ]
|
|
24
|
+
# URI.0 = http://localhost:8900/crl.pem
|
|
25
|
+
subjectAltName = $ENV::ALTNAME
|
|
26
|
+
|
|
27
|
+
[ req ]
|
|
28
|
+
days = 390
|
|
29
|
+
req_extensions = v3_req
|
|
30
|
+
x509_extensions = v3_ca
|
|
31
|
+
|
|
32
|
+
[v3_req]
|
|
33
|
+
basicConstraints = CA:false
|
|
34
|
+
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
|
|
35
|
+
subjectAltName = $ENV::ALTNAME
|
|
36
|
+
|
|
37
|
+
[ v3_ca_signed]
|
|
38
|
+
subjectKeyIdentifier = hash
|
|
39
|
+
authorityKeyIdentifier = keyid,issuer
|
|
40
|
+
basicConstraints = critical, CA:FALSE
|
|
41
|
+
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
|
|
42
|
+
extendedKeyUsage = clientAuth,serverAuth
|
|
43
|
+
nsComment = "certificate generated by Node-OPCUA Certificate utility and signed by a CA"
|
|
44
|
+
subjectAltName = $ENV::ALTNAME
|
|
45
|
+
[ v3_selfsigned]
|
|
46
|
+
subjectKeyIdentifier = hash
|
|
47
|
+
authorityKeyIdentifier = keyid,issuer
|
|
48
|
+
basicConstraints = critical, CA:FALSE
|
|
49
|
+
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
|
|
50
|
+
extendedKeyUsage = clientAuth,serverAuth
|
|
51
|
+
nsComment = "Self-signed certificate generated by Node-OPCUA Certificate utility"
|
|
52
|
+
subjectAltName = $ENV::ALTNAME
|
|
53
|
+
[ req_distinguished_name ]
|
|
54
|
+
countryName = Country Name (2 letter code)
|
|
55
|
+
countryName_default = FR
|
|
56
|
+
countryName_min = 2
|
|
57
|
+
countryName_max = 2
|
|
58
|
+
# stateOrProvinceName = State or Province Name (full name)
|
|
59
|
+
# stateOrProvinceName_default = Ile de France
|
|
60
|
+
# localityName = Locality Name (city, district)
|
|
61
|
+
# localityName_default = Paris
|
|
62
|
+
organizationName = Organization Name (company)
|
|
63
|
+
organizationName_default = NodeOPCUA
|
|
64
|
+
# organizationalUnitName = Organizational Unit Name (department, division)
|
|
65
|
+
# organizationalUnitName_default = R&D
|
|
66
|
+
commonName = Common Name (hostname, FQDN, IP, or your name)
|
|
67
|
+
commonName_max = 256
|
|
68
|
+
commonName_default = NodeOPCUA
|
|
69
|
+
# emailAddress = Email Address
|
|
70
|
+
# emailAddress_max = 40
|
|
71
|
+
# emailAddress_default = node-opcua (at) node-opcua (dot) com
|
|
72
|
+
subjectAltName = $ENV::ALTNAME
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC7IYbSbk1mosq3
|
|
3
|
+
NdM494XdHfuLulEf07RmRRcXhv53/iPCHTzTpyyaT9P2KItUEMf1+1m26O53gl8B
|
|
4
|
+
lwbS+oCuDt34ORO0dWDoftgBXjP0uUWzseaZ7AVwXL1yorYAK11VLHU4cxfzVLKK
|
|
5
|
+
5WbiB+qEiQSUG+EKHlEtmyIEbrsOGh8sZZCE4rFjavzSaCGN7bwqNMtGyFPS5FGZ
|
|
6
|
+
8HvvtLqhzyz0ew0TaZKpnaFQGxtvGI686yICgutmSXqyII8OHCXQ751gLzbhvADV
|
|
7
|
+
Uf/CvhX60ZCDMcGBQcFeLPkZF4CfQ2OP2OZkm/2ulS+NZXWqDFX6pvN/Zsy57q4R
|
|
8
|
+
KR+x+nDFAgMBAAECggEAGofM0Q3BXIFNAz+W1DdHm8tR7AP812nQ5ET8WqIRdtqp
|
|
9
|
+
oC47/vfvG2ug7f/ejQsaBnZdyFBq6repl5Sda5EHaGYEM1qIQCf6FsxQ/JSqAhK4
|
|
10
|
+
XpskygLL3JvRYizOZ+S+BULZ1ah/p0iFTarrdLVRmvvAEe2H8MLOmIwrfPxj+cId
|
|
11
|
+
Lb02xSX3FEf7TC4fUkTJQP52PDNT/oIZhUE807tBmlCLhAIKg3DaZhnAXILpY9q6
|
|
12
|
+
HWbR1lZffzz912XY2fOeHhZI6yKH2BcciVMbP3MEuFLaEQKyYpQCYIraBlcYcGNT
|
|
13
|
+
8pyIPBukaejOJ08MHZQrh6PFYzZrISRJHVriFYDfuwKBgQDm3T1UOq3DBOOo7TvG
|
|
14
|
+
VgNSfxZaXRCAua12qM9f0iz7DA5waFQ8l+0oHcBikRtuvaxGq9kfmINFqUQEow4w
|
|
15
|
+
YXloR5AdNgub4Q8Wb/kMYr1Qq750q5MvavhxT2PKNzONQ5f0g9E2DciSVoZeVSK4
|
|
16
|
+
6q+ZyuodXw2ahLS5pJUSBCCFIwKBgQDPgVUakeePBL+g0Oy5i8DuuTErj1h2J/dA
|
|
17
|
+
IYDvA3MvccQMJNf1tKkDfTdXZd/CG4JL5JNYlCzPT7V2KInXrL8sFWi6/Y+t1MXA
|
|
18
|
+
E+LHI33Il4jbBBvWx9ItyBS6oouANGaO4pQZL0c720hGffK246P0RiER8T1fdeS3
|
|
19
|
+
JPv+ylPU9wKBgDeQFbuY58sg+R3mAtXoS6JmPd3/ugIRLiN523cnYXYGX89D/Moc
|
|
20
|
+
kpJuHqhaXizX74eOwpHtJeL1Kw6mo7qXKx4i4xd0s3SPxQ7UYi9N8FxjCVKRHLpz
|
|
21
|
+
11mGDvFTOdAM7ZyGwSpuRNCbjHlVqiaxLRQplxD8mIyQ1eI8LziHz7/bAoGBAMBy
|
|
22
|
+
VWh/+v8ES2kteu8Wcwe0D6szlbp3lHMQ35BMZc6Rt13/6Z6CP+Hxhpry65QNiUkz
|
|
23
|
+
o4gaXHikl0oPjM/O8bpD3M7XjSKN3B0pFEDWZLjd+VoOtHb8+avmDXuOdsyfTKKl
|
|
24
|
+
9u5oj6su0xg1hR4jf5J0XAVU9DONlmJY1bFXGmq/AoGAZmCwBdOA830uETdh3AOb
|
|
25
|
+
cI8F1SozJOqGbTrl7GzyzOUvFxsMkD9NOHCI4LD6sDRdJM1CE1As33hNKG2v9B+C
|
|
26
|
+
/MTpbWsTWCAmMhAy7QUXMqDq/g5J2WbfhcXErGps4fQxJzVt1sapedIzFBw9m5XP
|
|
27
|
+
QVMSTmXF6C3wg3QbzTVsQTM=
|
|
28
|
+
-----END PRIVATE KEY-----
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIEKjCCAxKgAwIBAgIHAXdVh2g4JzANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQG
|
|
3
|
+
EwJGUjEQMA4GA1UEBxMHT3JsZWFuczERMA8GA1UEChMIU3RlcmZpdmUxHTAbBgNV
|
|
4
|
+
BAMMFE5vZGVPUENVQS1DbGllbnRAdHVmMB4XDTI2MDQwNzE4NDgwM1oXDTM2MDQw
|
|
5
|
+
NDE4NDgwM1owUTELMAkGA1UEBhMCRlIxEDAOBgNVBAcTB09ybGVhbnMxETAPBgNV
|
|
6
|
+
BAoTCFN0ZXJmaXZlMR0wGwYDVQQDDBROb2RlT1BDVUEtQ2xpZW50QHR1ZjCCASIw
|
|
7
|
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMhBslFMtRXQ2Ww7JAtPLoM7I1s
|
|
8
|
+
QP7mmHOv0U7mcSLib/yksMNT0G2U5J1EHI+Km1JwTYXujJnzi/ouuuQsWUsm3zP6
|
|
9
|
+
KAO1XzQuIYf8iEBblzOCA53eTvo056zNfeDoUb9l1CfQH/H6sL2js786dUpuJCG9
|
|
10
|
+
fuCfgrExRbzZQrELcduwRPuVio770NK086orAzFIXaRM20F4HMkTtorsRoGUIU5s
|
|
11
|
+
u6Fqy9nmdKY4w4JHQMafO3L1lHEbGuVwZmmkXmTQtBIS6W8tPSa9fh7GrlHJP4Zc
|
|
12
|
+
cgcp/xuXcpWfHjJaAmUQtCuNprlywJBChlstWkJ09zj1VvqoAWd0GL7ehQkCAwEA
|
|
13
|
+
AaOCAQUwggEBMFUGCWCGSAGG+EIBDQRIDEZTZWxmLXNpZ25lZCBjZXJ0aWZpY2F0
|
|
14
|
+
ZSBnZW5lcmF0ZWQgYnkgTm9kZS1PUENVQSBDZXJ0aWZpY2F0ZSB1dGlsaXR5IFYy
|
|
15
|
+
MAwGA1UdEwEB/wQCMAAwIAYDVR0lAQH/BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
|
|
16
|
+
MA4GA1UdDwEB/wQEAwIC9DAdBgNVHQ4EFgQUVOT0LzYI7XAMQ11FOV/+tUCUkvYw
|
|
17
|
+
HwYDVR0jBBgwFoAUVOT0LzYI7XAMQ11FOV/+tUCUkvYwKAYDVR0RBCEwH4IDdHVm
|
|
18
|
+
hhh1cm46dHVmOk5vZGVPUENVQS1DbGllbnQwDQYJKoZIhvcNAQELBQADggEBABiN
|
|
19
|
+
x0XNf1nDyRyJQCQ4GMS9e/xrjO3FV106IJRPEosoB10R7zBL92ra4+3AilGnNOeM
|
|
20
|
+
1O5eIel67DNL2kjw+5ggagtOmhJ3g3ZXFMpF08BeKnMwavoLs74yBZVFDq+2fOxs
|
|
21
|
+
kDdMX5TOpC4kZHMG5G9Cha9mcWjYSAYWVko/WCfby4D+MQiwraAraDL12uFcRVnP
|
|
22
|
+
htDTuNxs+dfKefiIsTgSlkJMisfGEV/EzmwSsTpvtuUZ5DwKddolRGsB/cXqTjc0
|
|
23
|
+
vGxHFjsuqp77gUyb9LNqE8ENi7pOZQFFhAmjSXTXcklWVynycgQ1E0TSNNQio4Xi
|
|
24
|
+
QZtA1NgPnLI6b2kubUQ=
|
|
25
|
+
-----END CERTIFICATE-----
|
|
File without changes
|
package/server/nodered/simple_opcua/server/myServer1/own/certs/server_selfsigned_cert_2048.pem
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIENTCCAx2gAwIBAgIHAXgjVGSHQzANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG
|
|
3
|
+
EwJGUjEQMA4GA1UEBxMHT3JsZWFuczERMA8GA1UEChMIU3RlcmZpdmUxFjAUBgNV
|
|
4
|
+
BAMMDW15U2VydmVyMUB0dWYwHhcNMjYwNjI1MDIzMDQ4WhcNMzYwNjIyMDIzMDQ4
|
|
5
|
+
WjBKMQswCQYDVQQGEwJGUjEQMA4GA1UEBxMHT3JsZWFuczERMA8GA1UEChMIU3Rl
|
|
6
|
+
cmZpdmUxFjAUBgNVBAMMDW15U2VydmVyMUB0dWYwggEiMA0GCSqGSIb3DQEBAQUA
|
|
7
|
+
A4IBDwAwggEKAoIBAQDMu7IcLcSMHB8XwnAXhhsbSwixcERQNxvcFD9Gw5IKKm0W
|
|
8
|
+
MCQBxLfBnKtaM0JwgltKdtPAGuRnzvu0/SzXNN5gYknzeRBkHG576Xvsry3qEikS
|
|
9
|
+
vmF8xGSsXhoIm8oSOcPtrhAGk0C09ihLQ7KrACHWzt6jNfqTP+954lMsmMMgXXUj
|
|
10
|
+
F5Z7oxYFqj0zh483Zl+pOPYLvh5ReCVT873RNO84OsxREVAhE+047+BXJvLciYBc
|
|
11
|
+
23OvtVmlguzRWVXQ7vqXHRgZv7csP8qPpoh9LzpB268ygiE7GSIr0R5GIRWGTZRG
|
|
12
|
+
Td6cOJGEP0jsKYcXByDAuzd4kzEBB4c9vHCkO76BAgMBAAGjggEeMIIBGjBVBglg
|
|
13
|
+
hkgBhvhCAQ0ESAxGU2VsZi1zaWduZWQgY2VydGlmaWNhdGUgZ2VuZXJhdGVkIGJ5
|
|
14
|
+
IE5vZGUtT1BDVUEgQ2VydGlmaWNhdGUgdXRpbGl0eSBWMjAMBgNVHRMBAf8EAjAA
|
|
15
|
+
MCAGA1UdJQEB/wQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAOBgNVHQ8BAf8EBAMC
|
|
16
|
+
AvQwHQYDVR0OBBYEFGdDutMKGJuBWyphlYeXv7kBCk+XMB8GA1UdIwQYMBaAFGdD
|
|
17
|
+
utMKGJuBWyphlYeXv7kBCk+XMEEGA1UdEQQ6MDiCA1RVRoIDdHVmhwTAqGQBhwTA
|
|
18
|
+
qA9khwTAqBEBhhp1cm46dHVmOm5vZGUtcmVkOm15c2VydmVyMTANBgkqhkiG9w0B
|
|
19
|
+
AQsFAAOCAQEAdFE1PbfbR7vGR8mOb2t4g/M4Z1TmFqSLsq1CG1KHthcIDTgT3tvV
|
|
20
|
+
SplsUWwmBr6yvrwkRNuE5MsSbakblr5C/lpNKZbzPQ9Yci7ss+Yl2e9jDP0Wp+CG
|
|
21
|
+
onOmTz1X1S3hMMcrSdC/JvmkbUIM78s06XIXGSCoEKJHTNRLPhAbE9iOagFEcXRC
|
|
22
|
+
JPMphoKmWyIhHwAbmhm05aljax4SanI6szMpk5+tOgeIcQ9nYq4vjTVOxQ+Sc897
|
|
23
|
+
0HODJS6GmW/i4IhFYcaEB736X31Ssd62lyDddVh2zE5Ug3A6khrbPF3soDCR52+c
|
|
24
|
+
lZ6myJBVO3kSHeKBzXPFNDe1LWcffk4khA==
|
|
25
|
+
-----END CERTIFICATE-----
|
package/server/nodered/simple_opcua/server/myServer1/own/certs/server_selfsigned_cert_2048.pem.mutex
ADDED
|
File without changes
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
##################################################################################################
|
|
2
|
+
## SIMPLE OPENSSL CONFIG FILE FOR SELF-SIGNED CERTIFICATE GENERATION
|
|
3
|
+
################################################################################################################
|
|
4
|
+
|
|
5
|
+
distinguished_name = req_distinguished_name
|
|
6
|
+
default_md = sha1
|
|
7
|
+
|
|
8
|
+
default_md = sha256 # The default digest algorithm
|
|
9
|
+
|
|
10
|
+
[ v3_ca ]
|
|
11
|
+
subjectKeyIdentifier = hash
|
|
12
|
+
authorityKeyIdentifier = keyid:always,issuer:always
|
|
13
|
+
|
|
14
|
+
# authorityKeyIdentifier = keyid
|
|
15
|
+
basicConstraints = CA:TRUE
|
|
16
|
+
keyUsage = critical, cRLSign, keyCertSign
|
|
17
|
+
nsComment = "Self-signed Certificate for CA generated by Node-OPCUA Certificate utility"
|
|
18
|
+
#nsCertType = sslCA, emailCA
|
|
19
|
+
#subjectAltName = email:copy
|
|
20
|
+
#issuerAltName = issuer:copy
|
|
21
|
+
#obj = DER:02:03
|
|
22
|
+
# crlDistributionPoints = @crl_info
|
|
23
|
+
# [ crl_info ]
|
|
24
|
+
# URI.0 = http://localhost:8900/crl.pem
|
|
25
|
+
subjectAltName = $ENV::ALTNAME
|
|
26
|
+
|
|
27
|
+
[ req ]
|
|
28
|
+
days = 390
|
|
29
|
+
req_extensions = v3_req
|
|
30
|
+
x509_extensions = v3_ca
|
|
31
|
+
|
|
32
|
+
[v3_req]
|
|
33
|
+
basicConstraints = CA:false
|
|
34
|
+
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
|
|
35
|
+
subjectAltName = $ENV::ALTNAME
|
|
36
|
+
|
|
37
|
+
[ v3_ca_signed]
|
|
38
|
+
subjectKeyIdentifier = hash
|
|
39
|
+
authorityKeyIdentifier = keyid,issuer
|
|
40
|
+
basicConstraints = critical, CA:FALSE
|
|
41
|
+
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
|
|
42
|
+
extendedKeyUsage = clientAuth,serverAuth
|
|
43
|
+
nsComment = "certificate generated by Node-OPCUA Certificate utility and signed by a CA"
|
|
44
|
+
subjectAltName = $ENV::ALTNAME
|
|
45
|
+
[ v3_selfsigned]
|
|
46
|
+
subjectKeyIdentifier = hash
|
|
47
|
+
authorityKeyIdentifier = keyid,issuer
|
|
48
|
+
basicConstraints = critical, CA:FALSE
|
|
49
|
+
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
|
|
50
|
+
extendedKeyUsage = clientAuth,serverAuth
|
|
51
|
+
nsComment = "Self-signed certificate generated by Node-OPCUA Certificate utility"
|
|
52
|
+
subjectAltName = $ENV::ALTNAME
|
|
53
|
+
[ req_distinguished_name ]
|
|
54
|
+
countryName = Country Name (2 letter code)
|
|
55
|
+
countryName_default = FR
|
|
56
|
+
countryName_min = 2
|
|
57
|
+
countryName_max = 2
|
|
58
|
+
# stateOrProvinceName = State or Province Name (full name)
|
|
59
|
+
# stateOrProvinceName_default = Ile de France
|
|
60
|
+
# localityName = Locality Name (city, district)
|
|
61
|
+
# localityName_default = Paris
|
|
62
|
+
organizationName = Organization Name (company)
|
|
63
|
+
organizationName_default = NodeOPCUA
|
|
64
|
+
# organizationalUnitName = Organizational Unit Name (department, division)
|
|
65
|
+
# organizationalUnitName_default = R&D
|
|
66
|
+
commonName = Common Name (hostname, FQDN, IP, or your name)
|
|
67
|
+
commonName_max = 256
|
|
68
|
+
commonName_default = NodeOPCUA
|
|
69
|
+
# emailAddress = Email Address
|
|
70
|
+
# emailAddress_max = 40
|
|
71
|
+
# emailAddress_default = node-opcua (at) node-opcua (dot) com
|
|
72
|
+
subjectAltName = $ENV::ALTNAME
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDMu7IcLcSMHB8X
|
|
3
|
+
wnAXhhsbSwixcERQNxvcFD9Gw5IKKm0WMCQBxLfBnKtaM0JwgltKdtPAGuRnzvu0
|
|
4
|
+
/SzXNN5gYknzeRBkHG576Xvsry3qEikSvmF8xGSsXhoIm8oSOcPtrhAGk0C09ihL
|
|
5
|
+
Q7KrACHWzt6jNfqTP+954lMsmMMgXXUjF5Z7oxYFqj0zh483Zl+pOPYLvh5ReCVT
|
|
6
|
+
873RNO84OsxREVAhE+047+BXJvLciYBc23OvtVmlguzRWVXQ7vqXHRgZv7csP8qP
|
|
7
|
+
poh9LzpB268ygiE7GSIr0R5GIRWGTZRGTd6cOJGEP0jsKYcXByDAuzd4kzEBB4c9
|
|
8
|
+
vHCkO76BAgMBAAECggEAOYvEe4EtzsgUwUPo5+PM+LX1gpJw0S88SHb0djqAcRUN
|
|
9
|
+
xn/PjyOxFt2nmFnyIdeyO1L9H/EvJDKcs3m6Qd9dZjAaYzIzNkB7mZ6+M3/l4vYp
|
|
10
|
+
z1ft5Pj65ywoGyVW/hp4hPU5EfAP7w2Fs+oabVBDMrLBB5UjkoIVGOhRwqZJqm25
|
|
11
|
+
e7s8LZVTKYZJeqBW+WlrW2IrXC1eFmLREW1DBta16NVe0FVdJpbfk1fUsrkoiilM
|
|
12
|
+
cEw1LxuPbCwHlmLJe2p3J+9eJiMNUxHEtlTuYwbu9Z2sqXtiw3WG//C4FhnoAHNQ
|
|
13
|
+
dRYZsEx/MTLf7co4GV6sUjVbbYQjEKnKjCsKxrTUFQKBgQD1ly9dGQXrQUaVewnu
|
|
14
|
+
1H0lCaX24ilFIF/ptwK6wvBzfYhllsw0+grKzJL8/kqHep9BDbwDo+UkRaSjH4k8
|
|
15
|
+
CMhloCvg17fGdec4TIXJUPSC9yeCMPbcVwKQg14mk0MbKjlJ1fdh6H/5NugdRbLh
|
|
16
|
+
QHYT5LBpNh3RmJClVxBZo9bjhwKBgQDVaS6WPByblik3qzw+7ctFFzUuL4iBCA6/
|
|
17
|
+
qSN67nJVaD2ymLEfREZnpGQAu2FQh1emx3oxiECS4OIrJI6FkMj59rn8vmhzJklX
|
|
18
|
+
0ruCe/6nDWFxJ9gPwBOWrqpADMgvjZq7wDmZFqN9/7zau0sU6P9XspBHgBk57h2X
|
|
19
|
+
ELeHK1BftwKBgQDpglN1eHppQgqDzJYYMI/A7JiR0l4dLPglN25v9zQ7C0vqE+Sc
|
|
20
|
+
Jnamdrb3uC1S/aN4bj+rUmVoBJPSygRpQYyRHCc8RL+nAqnTnObEEKY79BXrsvS1
|
|
21
|
+
ckGs+EtH8FMo/A+2hawOussbQTqXwpKfm/PpXFLj5qGZjS9TFiIkqSSD9wKBgG1O
|
|
22
|
+
PUVHrqNmCuBvfSECLM3LcDqir/jexqcWG40YWkkyZf92w6mvD5yAD5RsZRCY8aUD
|
|
23
|
+
oKuEDQbt1gmg5Lq2iKm23FX+tILeBkzMK6xOlAS+Dr2lWb3fdGkGNz8tDM+GaM1n
|
|
24
|
+
TFkDxmN/vBwQOAmSuU4SsGFe1Aze0BsSvd2mqrkLAoGBAJX8y1oHcN8cZO/fJAR0
|
|
25
|
+
D/ZjTM06hhEBTHwhJ5yZFxZevhUlTo9eoynX1HjGUANotBN7WJ58UnwAt8l95UmU
|
|
26
|
+
ATnfItCQ7LAlMXQrYnXRHdoCKnjuKyDQhQyomB2aYHB4JS9KImKTaSlUk7/aLE6f
|
|
27
|
+
YNpYWLe/mtE+QIHAjXnDIdmD
|
|
28
|
+
-----END PRIVATE KEY-----
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIEKjCCAxKgAwIBAgIHAXglY3c2ATANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQG
|
|
3
|
+
EwJGUjEQMA4GA1UEBxMHT3JsZWFuczERMA8GA1UEChMIU3RlcmZpdmUxHTAbBgNV
|
|
4
|
+
BAMMFE5vZGVPUENVQS1DbGllbnRAdHVmMB4XDTI2MDYyNzEyMzYxM1oXDTM2MDYy
|
|
5
|
+
NDEyMzYxM1owUTELMAkGA1UEBhMCRlIxEDAOBgNVBAcTB09ybGVhbnMxETAPBgNV
|
|
6
|
+
BAoTCFN0ZXJmaXZlMR0wGwYDVQQDDBROb2RlT1BDVUEtQ2xpZW50QHR1ZjCCASIw
|
|
7
|
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIqfwxgDSAPGF2KIO8E7tlQoa90l
|
|
8
|
+
Xw/NsFKOlKhQZtyIAzG6oGjHs0Um2YJbRRFtsV9AR0f+2G3nqgjOWX5QGhmQqZap
|
|
9
|
+
qgJUuYAmI4HBUrZVNmpVNFE+ascIlZwfLH2CG2Gp9zUf1G6I/t19fs+O+Xxi2dpB
|
|
10
|
+
wpofYnvrPyiAxe+UqnWvLVNmA5RI5lVfxSxHxNIB9HnDNmpRfdPAibw+wWm6agzF
|
|
11
|
+
zSaYTWDmG8bTb1YhRZnLuMyiEd7LL/MaMn/o2VOwT3Mq7jvGjoZFrGLOnUDbyaY0
|
|
12
|
+
K6t3dk4BhSqH335d+NLW2YSiDkWTrU/QswGKrt550Qq6vDxLP+th1aqKVJ0CAwEA
|
|
13
|
+
AaOCAQUwggEBMFUGCWCGSAGG+EIBDQRIDEZTZWxmLXNpZ25lZCBjZXJ0aWZpY2F0
|
|
14
|
+
ZSBnZW5lcmF0ZWQgYnkgTm9kZS1PUENVQSBDZXJ0aWZpY2F0ZSB1dGlsaXR5IFYy
|
|
15
|
+
MAwGA1UdEwEB/wQCMAAwIAYDVR0lAQH/BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
|
|
16
|
+
MA4GA1UdDwEB/wQEAwIC9DAdBgNVHQ4EFgQUKbc82JmIG+zs+GMm3IdCd1pRMbIw
|
|
17
|
+
HwYDVR0jBBgwFoAUKbc82JmIG+zs+GMm3IdCd1pRMbIwKAYDVR0RBCEwH4IDdHVm
|
|
18
|
+
hhh1cm46dHVmOk5vZGVPUENVQS1DbGllbnQwDQYJKoZIhvcNAQELBQADggEBABLZ
|
|
19
|
+
DD0diHmbZn/WwrqwweDDkxb1wxXjyLQVjQi0nPXrlTemSxio6BT5RwzgZNciwywY
|
|
20
|
+
aUoqM47jNDBV7o9KxB16F/OCFNf5qLhCDs9Kh+oOuGpgI9bpHpUi76NWnTGvzJzF
|
|
21
|
+
PTLclXkFSavX6jxZJYu5hc7UrMklczYg8Ca/GCocI93tPpnVuoq0aURfTBbkUJAE
|
|
22
|
+
KwO7GYdkLMxYb/vEweR3CSGzsNdoYnSokTbsR4OUu0N8xp4vETcIxPcrv15genHf
|
|
23
|
+
PDHwBNgr37g/hx+0iWoG4hkwJcdZEMRdmdSJ/D/vL13fGLxRI91cUaD9zhttdv6U
|
|
24
|
+
ht1iX/kdJ7b4zESDI1k=
|
|
25
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIEKjCCAxKgAwIBAgIHAXglY3cxcjANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQG
|
|
3
|
+
EwJGUjEQMA4GA1UEBxMHT3JsZWFuczERMA8GA1UEChMIU3RlcmZpdmUxHTAbBgNV
|
|
4
|
+
BAMMFE5vZGVPUENVQS1DbGllbnRAdHVmMB4XDTI2MDYyNzEyMzYxM1oXDTM2MDYy
|
|
5
|
+
NDEyMzYxM1owUTELMAkGA1UEBhMCRlIxEDAOBgNVBAcTB09ybGVhbnMxETAPBgNV
|
|
6
|
+
BAoTCFN0ZXJmaXZlMR0wGwYDVQQDDBROb2RlT1BDVUEtQ2xpZW50QHR1ZjCCASIw
|
|
7
|
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKtBNLTDXkh2mLQ3Ih2KEQlGelcM
|
|
8
|
+
RVwb4eKNAolkdBwDKj9jX5IAGTQO5symrlt0jUh+ekeqPRz6wZH/PMzWKGppWNqc
|
|
9
|
+
17OEeGXD4KrjYqHP+LSIUOJ2ZdCjVm1aLf+LDTDBwFyDv4kfHcetTiPrKFyANzWs
|
|
10
|
+
cLqpoqPDDPmThVVfvBbWqjLsqOBBD+ZdZxhHqvPes+JD3abVy70OZIrFupFdUsqC
|
|
11
|
+
3PeIKOs4KupJbs/ENaWo+jrtwOA9+5CqlYkCK4Kifd9wWGdfcFKT7pWsCmC59uDH
|
|
12
|
+
VEe6zFe6eAV7780/O+I7i6pEIBdDv+AzK4AdD6U53BxJXs+6O8pyDJchZqcCAwEA
|
|
13
|
+
AaOCAQUwggEBMFUGCWCGSAGG+EIBDQRIDEZTZWxmLXNpZ25lZCBjZXJ0aWZpY2F0
|
|
14
|
+
ZSBnZW5lcmF0ZWQgYnkgTm9kZS1PUENVQSBDZXJ0aWZpY2F0ZSB1dGlsaXR5IFYy
|
|
15
|
+
MAwGA1UdEwEB/wQCMAAwIAYDVR0lAQH/BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
|
|
16
|
+
MA4GA1UdDwEB/wQEAwIC9DAdBgNVHQ4EFgQUyCs6aEBAGEzVjPxYd3To7pL+XGQw
|
|
17
|
+
HwYDVR0jBBgwFoAUyCs6aEBAGEzVjPxYd3To7pL+XGQwKAYDVR0RBCEwH4IDdHVm
|
|
18
|
+
hhh1cm46dHVmOk5vZGVPUENVQS1DbGllbnQwDQYJKoZIhvcNAQELBQADggEBACxk
|
|
19
|
+
i94+5hdSwWNNoC+nRDU6euJjFs2y9MFCKg5uYg5tIp80rRBhrAqGweIs1skizACp
|
|
20
|
+
tenGtmIBvdqvcGGOGL9cRibb2cFA290dhcFhlJtU0c2WaxMaQgQknn9aG6paAN3N
|
|
21
|
+
58GVuHsnN8qzHt3GTR8BQIG31QKKoYsAGMxxSlSF5feNpMUiRkZe/z5KmRO5LNZ6
|
|
22
|
+
+es7TAXFF31aZdyhGk74fZgUBzH2/N0iSujyW+rLX4MmS1VGpSVZjl8XTh6e/ArX
|
|
23
|
+
7THS5gYGhsdR2aDDyxjUTKNyteHTLoxkHxTgsurX26RntGVGfLPQReUMWz4rftaM
|
|
24
|
+
NzhW+W+vbYv0zWK/wVo=
|
|
25
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIEKjCCAxKgAwIBAgIHAXglY3c5kjANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQG
|
|
3
|
+
EwJGUjEQMA4GA1UEBxMHT3JsZWFuczERMA8GA1UEChMIU3RlcmZpdmUxHTAbBgNV
|
|
4
|
+
BAMMFE5vZGVPUENVQS1DbGllbnRAdHVmMB4XDTI2MDYyNzEyMzYxM1oXDTM2MDYy
|
|
5
|
+
NDEyMzYxM1owUTELMAkGA1UEBhMCRlIxEDAOBgNVBAcTB09ybGVhbnMxETAPBgNV
|
|
6
|
+
BAoTCFN0ZXJmaXZlMR0wGwYDVQQDDBROb2RlT1BDVUEtQ2xpZW50QHR1ZjCCASIw
|
|
7
|
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALExMVGfG1yMpIE4nIO4riyPIcA3
|
|
8
|
+
pAHNOIj7Y+Gzq7j9IwMCqHb08jzJ6tqqnInUOmH367aeo9/FJAsf5wXK3RySMtqG
|
|
9
|
+
v6L40/EvUkdrA/yPXTruAhZU0m36G+Iq5b8j7N4V5FbcUElsX7XhpCHiGj8Ar32q
|
|
10
|
+
uxKwiVX9/c73u72y5+OQgVfmhJtA41VpP+NPDhBUbeuRaN6KSIm9p4Pe38hWVP24
|
|
11
|
+
ANF9D5l/E8dtBPvZp6hJ5mJtapHHTMYSwwxGem2kFXeErD4i/2g0xBD+Y0xpHcFe
|
|
12
|
+
y9dNJAjaUXbeW6ihLPLhV1wbAN6TojhlstJ7ezVs1I+/RXr5psWVwIrWRVkCAwEA
|
|
13
|
+
AaOCAQUwggEBMFUGCWCGSAGG+EIBDQRIDEZTZWxmLXNpZ25lZCBjZXJ0aWZpY2F0
|
|
14
|
+
ZSBnZW5lcmF0ZWQgYnkgTm9kZS1PUENVQSBDZXJ0aWZpY2F0ZSB1dGlsaXR5IFYy
|
|
15
|
+
MAwGA1UdEwEB/wQCMAAwIAYDVR0lAQH/BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
|
|
16
|
+
MA4GA1UdDwEB/wQEAwIC9DAdBgNVHQ4EFgQUlCjIQiZ7wrPrKQLn29olSTNF2Kgw
|
|
17
|
+
HwYDVR0jBBgwFoAUlCjIQiZ7wrPrKQLn29olSTNF2KgwKAYDVR0RBCEwH4IDdHVm
|
|
18
|
+
hhh1cm46dHVmOk5vZGVPUENVQS1DbGllbnQwDQYJKoZIhvcNAQELBQADggEBAHSe
|
|
19
|
+
i6LBDFpew317pGF0gDt2lgxG/b6A6yhCPZA/dT8hMLPm1mu2aosRxm2lvhxEIFEM
|
|
20
|
+
zqYJd8KXAeSLgBkEfoEYKjiOU+82SN8aPOnUT3/njZeTLwgajDECZQwH0Tsj+vcm
|
|
21
|
+
wpNVc1f+Ovy8B9Wg4BQgel5cQ4ItqIRxV/48c1mBSANykrGne1zor9f2RiVjw0dS
|
|
22
|
+
vuxDnOU2Hh5NGa1XWx2OCEMaLrVqaxyUAiXVZCjR67JAg2ZbTJ8IDV4FK4zz4/aH
|
|
23
|
+
fbtkz7qVd2pOc5MK2I8G3bnyvObf2bNKeydy7CdvEP0x8HMPIXk3fnMqUbvoZ47M
|
|
24
|
+
xg+xalW93QTyWI41KxI=
|
|
25
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIEKjCCAxKgAwIBAgIHAXdVh2g4JzANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQG
|
|
3
|
+
EwJGUjEQMA4GA1UEBxMHT3JsZWFuczERMA8GA1UEChMIU3RlcmZpdmUxHTAbBgNV
|
|
4
|
+
BAMMFE5vZGVPUENVQS1DbGllbnRAdHVmMB4XDTI2MDQwNzE4NDgwM1oXDTM2MDQw
|
|
5
|
+
NDE4NDgwM1owUTELMAkGA1UEBhMCRlIxEDAOBgNVBAcTB09ybGVhbnMxETAPBgNV
|
|
6
|
+
BAoTCFN0ZXJmaXZlMR0wGwYDVQQDDBROb2RlT1BDVUEtQ2xpZW50QHR1ZjCCASIw
|
|
7
|
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMhBslFMtRXQ2Ww7JAtPLoM7I1s
|
|
8
|
+
QP7mmHOv0U7mcSLib/yksMNT0G2U5J1EHI+Km1JwTYXujJnzi/ouuuQsWUsm3zP6
|
|
9
|
+
KAO1XzQuIYf8iEBblzOCA53eTvo056zNfeDoUb9l1CfQH/H6sL2js786dUpuJCG9
|
|
10
|
+
fuCfgrExRbzZQrELcduwRPuVio770NK086orAzFIXaRM20F4HMkTtorsRoGUIU5s
|
|
11
|
+
u6Fqy9nmdKY4w4JHQMafO3L1lHEbGuVwZmmkXmTQtBIS6W8tPSa9fh7GrlHJP4Zc
|
|
12
|
+
cgcp/xuXcpWfHjJaAmUQtCuNprlywJBChlstWkJ09zj1VvqoAWd0GL7ehQkCAwEA
|
|
13
|
+
AaOCAQUwggEBMFUGCWCGSAGG+EIBDQRIDEZTZWxmLXNpZ25lZCBjZXJ0aWZpY2F0
|
|
14
|
+
ZSBnZW5lcmF0ZWQgYnkgTm9kZS1PUENVQSBDZXJ0aWZpY2F0ZSB1dGlsaXR5IFYy
|
|
15
|
+
MAwGA1UdEwEB/wQCMAAwIAYDVR0lAQH/BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
|
|
16
|
+
MA4GA1UdDwEB/wQEAwIC9DAdBgNVHQ4EFgQUVOT0LzYI7XAMQ11FOV/+tUCUkvYw
|
|
17
|
+
HwYDVR0jBBgwFoAUVOT0LzYI7XAMQ11FOV/+tUCUkvYwKAYDVR0RBCEwH4IDdHVm
|
|
18
|
+
hhh1cm46dHVmOk5vZGVPUENVQS1DbGllbnQwDQYJKoZIhvcNAQELBQADggEBABiN
|
|
19
|
+
x0XNf1nDyRyJQCQ4GMS9e/xrjO3FV106IJRPEosoB10R7zBL92ra4+3AilGnNOeM
|
|
20
|
+
1O5eIel67DNL2kjw+5ggagtOmhJ3g3ZXFMpF08BeKnMwavoLs74yBZVFDq+2fOxs
|
|
21
|
+
kDdMX5TOpC4kZHMG5G9Cha9mcWjYSAYWVko/WCfby4D+MQiwraAraDL12uFcRVnP
|
|
22
|
+
htDTuNxs+dfKefiIsTgSlkJMisfGEV/EzmwSsTpvtuUZ5DwKddolRGsB/cXqTjc0
|
|
23
|
+
vGxHFjsuqp77gUyb9LNqE8ENi7pOZQFFhAmjSXTXcklWVynycgQ1E0TSNNQio4Xi
|
|
24
|
+
QZtA1NgPnLI6b2kubUQ=
|
|
25
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIEKjCCAxKgAwIBAgIHAXglY3c3ZzANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQG
|
|
3
|
+
EwJGUjEQMA4GA1UEBxMHT3JsZWFuczERMA8GA1UEChMIU3RlcmZpdmUxHTAbBgNV
|
|
4
|
+
BAMMFE5vZGVPUENVQS1DbGllbnRAdHVmMB4XDTI2MDYyNzEyMzYxM1oXDTM2MDYy
|
|
5
|
+
NDEyMzYxM1owUTELMAkGA1UEBhMCRlIxEDAOBgNVBAcTB09ybGVhbnMxETAPBgNV
|
|
6
|
+
BAoTCFN0ZXJmaXZlMR0wGwYDVQQDDBROb2RlT1BDVUEtQ2xpZW50QHR1ZjCCASIw
|
|
7
|
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIlhQT3T5fhiwtNe0Ae3yQ3XAZvA
|
|
8
|
+
sEdIzmPuhurL3MBR3JRZi3Morx+UD8jpb4/l4gZRWzX+TvRwUBQctbnDCj6ZLWen
|
|
9
|
+
6gcumEXV8FYtMyOTyJFqb8WoBUmp0OPtNfRu9gAN+XYDRit0CkMTMr0zIWEh5euW
|
|
10
|
+
ZKx6ZpMUMNPfPNaoO+cE5aADJjEekzAqVpXzudo0+duv+bRWU0mOfivQs0N0YpbN
|
|
11
|
+
7YwStxLJUKjdbblUcRXI2rvcjIYdZN7XY8q5qltuifewAmHzfRv5Wfjgn12PyU+g
|
|
12
|
+
hyDjbRF3LgtBHHAzr4mNeHmnJwigMkI68fTiJ45/aFH7km0Mm8m/CFD2W78CAwEA
|
|
13
|
+
AaOCAQUwggEBMFUGCWCGSAGG+EIBDQRIDEZTZWxmLXNpZ25lZCBjZXJ0aWZpY2F0
|
|
14
|
+
ZSBnZW5lcmF0ZWQgYnkgTm9kZS1PUENVQSBDZXJ0aWZpY2F0ZSB1dGlsaXR5IFYy
|
|
15
|
+
MAwGA1UdEwEB/wQCMAAwIAYDVR0lAQH/BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
|
|
16
|
+
MA4GA1UdDwEB/wQEAwIC9DAdBgNVHQ4EFgQU+Q9sO43yN6z+xLSImsP76Gbxx3Yw
|
|
17
|
+
HwYDVR0jBBgwFoAU+Q9sO43yN6z+xLSImsP76Gbxx3YwKAYDVR0RBCEwH4IDdHVm
|
|
18
|
+
hhh1cm46dHVmOk5vZGVPUENVQS1DbGllbnQwDQYJKoZIhvcNAQELBQADggEBADBi
|
|
19
|
+
Y/2NeeJ2LPT0CbtDfN1474vbUy9Q+GURBnUQ2Mc7y6fhp1CxB3yQPJ9aQrDpWjrx
|
|
20
|
+
YdRrZeX2qbDhGH+zqxHC9JTKlqLwFj8L1R2ltyDMtAoX7qeaDVH0BposXSxgUYqp
|
|
21
|
+
Q3IISU5N5N88gGwDVSUUyvmdF6rI5nU1eZ1PqQC+pwLQ9WPzoGSNDku9Q/EmmXA+
|
|
22
|
+
7t0uxFMs+DNEMrjLgrea1tIwCBacdzXF/LX5sfVkufxqb00W6QHBV+vzt3jJ9uRv
|
|
23
|
+
42DSE14JQMdk9Wjq7Cns3x0ZRsx9Vdt6rHzimqlmbwvkevaaB3lEk8uvhxqiU7xr
|
|
24
|
+
5wDZjybtYHwX0KlYTeg=
|
|
25
|
+
-----END CERTIFICATE-----
|
|
@@ -170,6 +170,9 @@
|
|
|
170
170
|
<option value="events">Events Server</option>
|
|
171
171
|
<option value="status">Status Server</option>
|
|
172
172
|
<option value="activeAlarms">Active Alarms</option>
|
|
173
|
+
<option value="getSessions">Get Sessions</option>
|
|
174
|
+
<option value="deleteSessions">Delete Sessions</option>
|
|
175
|
+
<option value="validateLogin">Validate Login</option>
|
|
173
176
|
<option value="method-input">Method Input</option>
|
|
174
177
|
<option value="method-output">Method Output</option>
|
|
175
178
|
</select>
|
|
@@ -341,7 +344,96 @@ msg.payload = [
|
|
|
341
344
|
]
|
|
342
345
|
</code></pre>
|
|
343
346
|
|
|
347
|
+
<h3>Get Sessions</h3>
|
|
348
|
+
<p>Returns a JSON array of all currently active OPC UA sessions on the server.</p>
|
|
349
|
+
<p><b>Input</b>: any message triggers a session snapshot.</p>
|
|
350
|
+
<p><b>Output</b>: <code>msg.payload</code> is an array of session objects:</p>
|
|
351
|
+
<pre><code>[
|
|
352
|
+
{
|
|
353
|
+
"sessionId": "ns=1;g=...",
|
|
354
|
+
"sessionName": "UaExpert@hostname",
|
|
355
|
+
"status": "active",
|
|
356
|
+
"creationDate": "2024-01-01T00:00:00.000Z",
|
|
357
|
+
"sessionTimeout": 30000,
|
|
358
|
+
"clientLastContactTime": 1234567890,
|
|
359
|
+
"channelId": 1,
|
|
360
|
+
"clientDescription": {
|
|
361
|
+
"applicationUri": "urn:hostname:client",
|
|
362
|
+
"productUri": "urn:hostname:client",
|
|
363
|
+
"applicationName": "UaExpert",
|
|
364
|
+
"applicationType": "1"
|
|
365
|
+
},
|
|
366
|
+
"userIdentityToken": {
|
|
367
|
+
"policyId": "anonymous",
|
|
368
|
+
"userName": null,
|
|
369
|
+
"tokenType": "AnonymousIdentityToken"
|
|
370
|
+
},
|
|
371
|
+
"channel": {
|
|
372
|
+
"channelId": 1,
|
|
373
|
+
"remoteAddress": "127.0.0.1",
|
|
374
|
+
"remotePort": 54321,
|
|
375
|
+
"bytesRead": 500,
|
|
376
|
+
"bytesWritten": 300,
|
|
377
|
+
"transactionsCount": 10,
|
|
378
|
+
"securityMode": "None",
|
|
379
|
+
"securityPolicy": "None"
|
|
380
|
+
},
|
|
381
|
+
"currentSubscriptionCount": 1,
|
|
382
|
+
"cumulatedSubscriptionCount": 2,
|
|
383
|
+
"currentMonitoredItemCount": 5,
|
|
384
|
+
"aborted": false
|
|
385
|
+
}
|
|
386
|
+
]</code></pre>
|
|
387
|
+
<p>The node also fetches sessions automatically on deploy, just like <b>Status Server</b> mode.</p>
|
|
344
388
|
|
|
389
|
+
<h3>Delete Sessions</h3>
|
|
390
|
+
<p>Forces the server to close one or more active OPC UA sessions by their <code>sessionId</code>.</p>
|
|
391
|
+
<p><b>Input</b>: <code>msg.payload</code> must be an array of objects, each containing a <code>sessionId</code>
|
|
392
|
+
(the GUID string returned by <b>Get Sessions</b>):</p>
|
|
393
|
+
<pre><code>[
|
|
394
|
+
{ "sessionId": "ns=1;g=F4F511E2-664B-2191-89A7-46EE461DB86C" },
|
|
395
|
+
{ "sessionId": "ns=1;g=A1B2C3D4-1234-5678-ABCD-EF0123456789" }
|
|
396
|
+
]</code></pre>
|
|
397
|
+
<p><b>Output</b>: <code>msg.payload</code> is an array of result objects, one per requested session.
|
|
398
|
+
The node status badge summarises deleted / not found / error counts:</p>
|
|
399
|
+
<pre><code>[
|
|
400
|
+
{
|
|
401
|
+
"sessionId": "ns=1;g=F4F511E2-664B-2191-89A7-46EE461DB86C",
|
|
402
|
+
"status": "deleted"
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"sessionId": "ns=1;g=AAAAAAAA-0000-0000-0000-000000000000",
|
|
406
|
+
"status": "not_found"
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
"sessionId": "ns=1;g=BBBBBBBB-0000-0000-0000-000000000000",
|
|
410
|
+
"status": "error",
|
|
411
|
+
"error": "cannot find session …"
|
|
412
|
+
}
|
|
413
|
+
]</code></pre>
|
|
414
|
+
<ul>
|
|
415
|
+
<li><b>deleted</b> — session was found and successfully closed with reason <code>Forcing</code>.</li>
|
|
416
|
+
<li><b>not_found</b> — no active session with that <code>sessionId</code> exists.</li>
|
|
417
|
+
<li><b>error</b> — the session was found but <code>engine.closeSession()</code> threw; the <code>error</code> field contains the message.</li>
|
|
418
|
+
</ul>
|
|
345
419
|
|
|
346
|
-
|
|
420
|
+
<h3>Validate Login</h3>
|
|
421
|
+
<p>Validates a user's credentials against the OPC UA server's configured user database.</p>
|
|
422
|
+
<p><b>Input</b>: <code>msg.payload</code> must be a JSON object containing <code>userName</code> (or <code>username</code>) and <code>password</code>:</p>
|
|
423
|
+
<pre><code>{
|
|
424
|
+
"userName": "admin",
|
|
425
|
+
"password": "123"
|
|
426
|
+
}</code></pre>
|
|
427
|
+
<p><b>Output</b>: <code>msg.payload</code> contains the status of validation and user groups (excluding password hashes):</p>
|
|
428
|
+
<pre><code>{
|
|
429
|
+
"status": "Good",
|
|
430
|
+
"username": "admin",
|
|
431
|
+
"group": "admin,operator",
|
|
432
|
+
"groups": ["admin", "operator"]
|
|
433
|
+
}</code></pre>
|
|
434
|
+
<p>If authentication fails or the user is not found, the response contains:</p>
|
|
435
|
+
<pre><code>{
|
|
436
|
+
"status": "erro",
|
|
437
|
+
"message": "Invalid username or password"
|
|
438
|
+
}</code></pre>
|
|
347
439
|
</script>
|