Commit 2b59f3dc authored by Ivan Tyagov's avatar Ivan Tyagov

OPCUA

See merge request nexedi/osie!36
parents d400872e a8e27c60
......@@ -17,14 +17,18 @@ import __main__
# command line handling
parser = argparse.ArgumentParser(description='Run OPCUA Server.')
a = parser.add_argument
a('--ip', help='The IP address on which the OPCUA Server runs', default="127.0.0.1")
a('--ipv4', help='The IPv4 address on which the OPCUA Server runs', default="0.0.0.0")
a('--ipv6', help='The IPv6 address on which the OPCUA Server runs', default="::")
a('--ipv6-enabled', help='The IPv6 address check whether it is enabled or disabled', default="1")
a('--port', help='The port on which the OPCUA Server runs', default="4840")
a('--xml', help='Path of XML to configure Server. See asyncua doc for more details.', default=None)
a('--erp5-url', help='URL of ERP5 instance to which data shall be send.', default=None)
a('--erp5-username', help='Username of ERP5 instance to which data shall be send.', default=None)
a('--erp5-password', help='Password of ERP5 instance to which data shall be send.', default=None)
args = parser.parse_args()
ip = args.ip
ipv4 = args.ipv4
ipv6 = args.ipv6
ipv6_enabled = args.ipv6_enabled
port = args.port
xml = args.xml
erp5_url = args.erp5_url
......@@ -73,7 +77,11 @@ async def main():
# setup our server
server = asyncua.Server()
await server.init()
server.set_endpoint(f"opc.tcp://{ip}:{port}/freeopcua/server/")
if bool(int(ipv6_enabled)):
server.set_endpoint(f"opc.tcp://[{ipv6}]:{port}/freeopcua/server/")
else:
server.set_endpoint(f"opc.tcp://{ipv4}:{port}/freeopcua/server/")
if xml is not None:
await server.import_xml(xml)
......
[instance-profile]
filename = instance.cfg.in
md5sum = 6fbae8f850e2c38b9b9990bf9c087505
md5sum = 3d548477bd7a4b37a0b5a9877a321dff
......@@ -22,6 +22,16 @@
"description": "The port for OPCUA server.",
"type": "int",
"default": "4840"
},
"ipv6-enabled": {
"description": "The IPv6 Support variable for OPCUA server.",
"type": "int",
"default": "1"
},
"opcua-xml-url": {
"description": "The XML Schema URL for OPCUA server.",
"type": "string",
"default": ""
}
}
}
......@@ -2,6 +2,7 @@
parts =
promises
directory
opcua-xml-url
opcua-to-http-gw-service
publish-connection-parameter
......@@ -33,9 +34,15 @@ key = ${slap-connection:key-file}
cert = ${slap-connection:cert-file}
configuration.opcua-port = 4840
[opcua-xml-url]
recipe = slapos.recipe.build:download
url = ${instance-parameter:configuration.opcua-xml-url}
offline = false
destination = ${directory:etc}/schema.xml
[opcua-to-http-gw-service]
recipe = slapos.cookbook:wrapper
command-line = {{ interpreter_location }}/py {{ osie_repository_location }}/opcua-to-http-gw/opcua-to-http-gw.py --xml {{ osie_repository_location }}/opcua-to-http-gw/opcua-server-config.xml --erp5-url ${instance-parameter:configuration.erp5-url} --erp5-username ${instance-parameter:configuration.erp5-username} --erp5-password ${instance-parameter:configuration.erp5-password} --port ${instance-parameter:configuration.opcua-port} --ip ${instance-parameter:ipv4-random}
command-line = {{ interpreter_location }}/py {{ osie_repository_location }}/opcua-to-http-gw/opcua-to-http-gw.py --xml ${opcua-xml-url:destination} --erp5-url ${instance-parameter:configuration.erp5-url} --erp5-username ${instance-parameter:configuration.erp5-username} --erp5-password ${instance-parameter:configuration.erp5-password} --port ${instance-parameter:configuration.opcua-port} --ipv4 ${instance-parameter:ipv4-random} --ipv6 ${instance-parameter:ipv6-random} --ipv6-enabled ${instance-parameter:configuration.ipv6-enabled}
wrapper-path = ${directory:service}/opcua-to-http-gw-service
output = $${:wrapper-path}
......@@ -44,11 +51,18 @@ output = $${:wrapper-path}
hostname = ${instance-parameter:ipv4-random}
port = ${instance-parameter:configuration.opcua-port}
[opcua-to-http-gw-listen-promise-ipv6]
<= check-port-listening-promise
hostname = ${instance-parameter:ipv6-random}
port = ${instance-parameter:configuration.opcua-port}
[promises]
recipe =
instance-promises =
${opcua-to-http-gw-listen-promise-ipv4:path}
${opcua-to-http-gw-listen-promise-ipv6:path}
[publish-connection-parameter]
recipe = slapos.cookbook:publish
ipv4 = ${instance-parameter:ipv4-random}
ipv6 = ${instance-parameter:ipv6-random}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment