Restructure source tree to align with .NET Core apps (#4)
Align Docker config structure and containers with IoTEdge Integrate initial PR feedback
This commit is contained in:
Родитель
231476f383
Коммит
85dfe69e7f
|
@ -1,13 +0,0 @@
|
||||||
FROM microsoft/dotnet:2.1-sdk-nanoserver-1803 as build-env
|
|
||||||
|
|
||||||
COPY /src /build/src
|
|
||||||
|
|
||||||
WORKDIR /build/src
|
|
||||||
RUN dotnet restore
|
|
||||||
RUN dotnet publish --configuration Release --output /build/out
|
|
||||||
|
|
||||||
FROM microsoft/dotnet:2.1-runtime-nanoserver-1803
|
|
||||||
|
|
||||||
COPY --from=build-env /build/out /build/out
|
|
||||||
WORKDIR /docker
|
|
||||||
ENTRYPOINT ["dotnet", "/build/out/OpcPublisher.dll"]
|
|
|
@ -1,13 +0,0 @@
|
||||||
FROM microsoft/dotnet:2.1-sdk-stretch AS build-env
|
|
||||||
|
|
||||||
COPY /src /build/src
|
|
||||||
|
|
||||||
WORKDIR /build/src
|
|
||||||
RUN dotnet restore
|
|
||||||
RUN dotnet publish --configuration Release --output /build/out
|
|
||||||
|
|
||||||
FROM microsoft/dotnet:2.1.0-runtime-stretch-slim
|
|
||||||
|
|
||||||
COPY --from=build-env /build/out /build/out
|
|
||||||
WORKDIR /docker
|
|
||||||
ENTRYPOINT ["dotnet", "/build/out/OpcPublisher.dll"]
|
|
|
@ -1,22 +0,0 @@
|
||||||
FROM microsoft/dotnet:2.0-runtime-stretch AS base
|
|
||||||
|
|
||||||
RUN apt-get update && \
|
|
||||||
apt-get install -y --no-install-recommends unzip procps && \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
RUN useradd -ms /bin/bash moduleuser
|
|
||||||
USER moduleuser
|
|
||||||
RUN curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l ~/vsdbg
|
|
||||||
|
|
||||||
FROM microsoft/dotnet:2.0-sdk AS build-env
|
|
||||||
COPY /src /build/src
|
|
||||||
WORKDIR /build/src
|
|
||||||
RUN dotnet restore
|
|
||||||
RUN dotnet publish --configuration Debug --output /build/out
|
|
||||||
|
|
||||||
FROM microsoft/dotnet:2.0-runtime
|
|
||||||
FROM base
|
|
||||||
WORKDIR /docker
|
|
||||||
COPY --from=build-env /build/out ./
|
|
||||||
|
|
||||||
ENTRYPOINT ["dotnet", "OpcPublisher.dll"]
|
|
|
@ -1,15 +0,0 @@
|
||||||
FROM microsoft/dotnet:2.1-sdk AS build-env
|
|
||||||
|
|
||||||
COPY /src /build/src
|
|
||||||
WORKDIR /build/src
|
|
||||||
RUN dotnet restore
|
|
||||||
RUN dotnet publish --configuration Release --output /build/out
|
|
||||||
|
|
||||||
FROM microsoft/dotnet:2.1-runtime-stretch-slim-arm32v7
|
|
||||||
WORKDIR /docker
|
|
||||||
COPY --from=build-env /build/out ./
|
|
||||||
|
|
||||||
RUN useradd -ms /bin/bash moduleuser
|
|
||||||
USER moduleuser
|
|
||||||
|
|
||||||
ENTRYPOINT ["dotnet", "OpcPublisher.dll"]
|
|
|
@ -1,11 +0,0 @@
|
||||||
FROM microsoft/dotnet:2.0-sdk AS build-env
|
|
||||||
|
|
||||||
COPY /src /build/src
|
|
||||||
WORKDIR /build/src
|
|
||||||
RUN dotnet restore
|
|
||||||
RUN dotnet publish --configuration Release --output /build/out
|
|
||||||
|
|
||||||
FROM microsoft/dotnet:2.0-runtime
|
|
||||||
WORKDIR /docker
|
|
||||||
COPY --from=build-env /build/out ./
|
|
||||||
ENTRYPOINT ["dotnet", "OpcPublisher.dll"]
|
|
|
@ -645,7 +645,7 @@ Configuration file syntax has changed over time and OPC Publisher still can read
|
||||||
An example for the format of the configuration file is:
|
An example for the format of the configuration file is:
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"EndpointUrl": "opc.tcp://192.168.178.26:62541/Quickstarts/ReferenceServer",
|
"EndpointUrl": "opc.tcp://testserver:62541/Quickstarts/ReferenceServer",
|
||||||
"UseSecurity": false,
|
"UseSecurity": false,
|
||||||
"OpcNodes": [
|
"OpcNodes": [
|
||||||
{
|
{
|
||||||
|
@ -658,7 +658,7 @@ An example for the format of the configuration file is:
|
||||||
]
|
]
|
||||||
|
|
||||||
### Configuration via OPC UA method calls
|
### Configuration via OPC UA method calls
|
||||||
OPC Publisher has an OPC UA Server integrated, which could be accessed on port 62222. If the hostname is `publisher`, then the URI of the endpoint is: `opc.tcp://pub-test:62222/UA/Publisher`
|
OPC Publisher has an OPC UA Server integrated, which can be accessed on port 62222. If the hostname is `publisher`, then the URI of the endpoint is: `opc.tcp://publisher:62222/UA/Publisher`
|
||||||
This endpoint exposes three methods:
|
This endpoint exposes three methods:
|
||||||
- PublishNode
|
- PublishNode
|
||||||
- UnpublishNode
|
- UnpublishNode
|
||||||
|
|
|
@ -0,0 +1,654 @@
|
||||||
|
OPC Publisher Components
|
||||||
|
Third Party Notices
|
||||||
|
This file is based on or incorporates material from the projects listed below (Third Party IP). The original copyright notice and the license under which Microsoft received such Third Party IP, are set forth below. Such licenses and notices are provided for informational purposes only. Unless otherwise specified, Microsoft licenses the Third Party IP to you under the licensing terms for the Microsoft product. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise.
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
Serilog.Sinks.File
|
||||||
|
|
||||||
|
Apache License Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
Serilog.Sinks.Console
|
||||||
|
|
||||||
|
Apache License Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
Serilog.Extensions.Logging
|
||||||
|
|
||||||
|
Apache License Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
Newtonsoft.Json
|
||||||
|
The MIT License (MIT)
|
||||||
|
Copyright (c) .NET Foundation and Contributors
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
NETStandard.Library
|
||||||
|
The MIT License (MIT)
|
||||||
|
Copyright (c) .NET Foundation and Contributors
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
Xamarin Component for Mono.Options
|
||||||
|
The MIT License (MIT)
|
||||||
|
Copyright (c) .NET Foundation Contributors
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
20170421
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
OPCFoundation.NetStandard.Opc.Ua
|
||||||
|
|
||||||
|
OPC REDISTRIBUTABLES Agreement of Use
|
||||||
|
Version 1.3, February 06, 2017, OPC Foundation
|
||||||
|
The terms and conditions of the Agreement apply to the Software Deliverables including without limitation any OPC Foundation:
|
||||||
|
updates,
|
||||||
|
supplements
|
||||||
|
Internet-based services, and
|
||||||
|
support services
|
||||||
|
for the Software Deliverables, unless OPC Foundation specifies that any other terms accompany such items, in which case the alternate terms specified by OPC Foundation would apply.
|
||||||
|
|
||||||
|
BY USING THE SOURCE DELIVERABLES, YOU ACCEPT THE TERMS OF THIS AGREEMENT. IF YOU DO NOT ACCEPT THE TERMS OF THIS AGREEMENT, DO NOT USE THE SOFTWARE DELIVERABLES.
|
||||||
|
If you comply with this Agreement, you have the rights below.
|
||||||
|
1. INSTALLATION AND USE RIGHTS.
|
||||||
|
You may install and use any number of copies of the Software Deliverables.
|
||||||
|
2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS.
|
||||||
|
Distributable Code. The Software Deliverables contain compiled code that you are permitted to distribute with programs you develop if you comply with the terms below.
|
||||||
|
Right to Use and Distribute.
|
||||||
|
You may copy and distribute all files that are part of this Software Deliverables.
|
||||||
|
Third Party Distribution. You may permit distributors of your programs to copy and distribute the Software Deliverables as part of those programs.
|
||||||
|
Distribution Requirements. For any Software Deliverables you distribute, you must:
|
||||||
|
add significant primary functionality to it in your programs;
|
||||||
|
require distributors and external end users to agree to terms that protect it at least as much as this Agreement;
|
||||||
|
display your valid copyright notice on your programs; and
|
||||||
|
indemnify, defend, and hold harmless the OPC Foundation from any claims, including attorneys’ fees, related to the distribution or use of your programs.
|
||||||
|
Distribution Restrictions. You may not:
|
||||||
|
alter any copyright, trademark or patent notice in the Software Deliverables;
|
||||||
|
use the OPC Foundation’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by the OPC Foundation;
|
||||||
|
include Software Deliverables in malicious, deceptive or unlawful programs;
|
||||||
|
modify or distribute the source code of any Software Deliverables so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that (1). the code be disclosed or distributed in source code form; or (2) permit or otherwise allow others to have the right to modify such Software Deliverables; or
|
||||||
|
create additional software components that directly link or directly load the Software Deliverables without accepting the corresponding source license for that Software Deliverable.
|
||||||
|
3. SCOPE OF LICENSE.
|
||||||
|
The Software Deliverables are licensed, not sold. This Agreement only gives you some rights to use the Software Deliverables. The OPC Foundation reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this Agreement. In doing so, you must comply with any technical limitations in the Software Deliverables that only allow you to use it in certain ways. You may not:
|
||||||
|
disclose the results of any benchmark tests of the Software Deliverables to any third party without OPC Foundation’s prior written approval;
|
||||||
|
work around any technical limitations in the Software Deliverables;
|
||||||
|
reverse engineer, decompile or disassemble the Software Deliverables, except and only to the extent that applicable law expressly permits, despite this limitation;
|
||||||
|
make more copies of the Software Deliverables than specified in this Agreement or allowed by applicable law, despite this limitation;
|
||||||
|
publish the Software Deliverables for others to copy; or
|
||||||
|
rent, lease or lend the Software Deliverables.
|
||||||
|
4. BACKUP COPY.
|
||||||
|
You may make one backup copy of the Software Deliverables. You may use such copy only to reinstall the Software.
|
||||||
|
5. DOCUMENTATION.
|
||||||
|
Any person that has valid access to your computer or internal network may copy and use the documentation related to the Software Deliverables for your internal reference purposes.
|
||||||
|
6. EXPORT RESTRICTIONS.
|
||||||
|
The Software Deliverables are subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the Software Deliverables. These laws include restrictions on destinations, end users and end use.
|
||||||
|
7. SUPPORT SERVICES.
|
||||||
|
Because you accept the Software3 Deliverables from OPC Foundation “as is,” OPC Foundation may not provide support services for it.
|
||||||
|
8. ENTIRE AGREEMENT.
|
||||||
|
This Agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire Agreement for the Software Deliverables and support services.
|
||||||
|
10. LEGAL EFFECT
|
||||||
|
This Agreement describes certain legal rights. You may have other rights under the laws of your country. This Agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so.
|
||||||
|
11. DISCLAIMER OF WARRANTY.
|
||||||
|
THE SOFTWARE DELIVERABLES ARE LICENSED “AS-IS.” YOU BEAR THE RISK OF USING THE SPECIFICATIONS. THE OPC FOUNDATION MAKES NO WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, WITH REGARD TO THE SOFTWARE DELIVERABLES, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY, OR WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE.YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS UNDER YOUR LOCAL LAWS THAT THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, THE OPC FOUNDATION EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE OPC FOUNDATION BE LIABLE FOR ERRORS CONTAINED IN THE SOURCE DELIVERABLES OR FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, RELIANCE OR COVER DAMAGES, INCLUDING LOSS OF PROFITS, REVENUE, DATA, OR USE, INCURRED BY ANY USER OR ANY THIRD PARTY IN CONNECTION WITH THE FURNISHING, PERFORMANCE, OR USE OF THE SOFTWARE DELIVERABLES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE USING THE SOFTWARE DELIVERABLES IS BORNE BY YOU AND/OR THE USER.
|
||||||
|
|
||||||
|
***
|
|
@ -0,0 +1,26 @@
|
||||||
|
ARG runtime_base_tag=2.1-runtime-alpine
|
||||||
|
ARG build_base_tag=2.1-sdk-alpine
|
||||||
|
|
||||||
|
FROM microsoft/dotnet:${build_base_tag} AS build
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# copy csproj and restore as distinct layers
|
||||||
|
COPY opcpublisher/*.csproj ./opcpublisher/
|
||||||
|
WORKDIR /app/opcpublisher
|
||||||
|
RUN dotnet restore
|
||||||
|
|
||||||
|
# copy and publish app
|
||||||
|
WORKDIR /app
|
||||||
|
COPY opcpublisher/. ./opcpublisher/
|
||||||
|
WORKDIR /app/opcpublisher
|
||||||
|
RUN dotnet publish -c Release -o out
|
||||||
|
RUN ls /app/opcpublisher/out
|
||||||
|
|
||||||
|
# start it up
|
||||||
|
FROM microsoft/dotnet:${runtime_base_tag} AS runtime
|
||||||
|
# Add an unprivileged user account for running the module
|
||||||
|
RUN adduser -Ds /bin/sh moduleuser
|
||||||
|
USER moduleuser
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=build /app/opcpublisher/out ./
|
||||||
|
ENTRYPOINT ["dotnet", "opcpublisher.dll"]
|
|
@ -0,0 +1,34 @@
|
||||||
|
ARG runtime_base_tag=2.1-runtime-stretch-slim
|
||||||
|
ARG build_base_tag=2.1-sdk-stretch
|
||||||
|
|
||||||
|
FROM microsoft/dotnet:${build_base_tag} AS build
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# copy csproj and restore as distinct layers
|
||||||
|
COPY opcpublisher/*.csproj ./opcpublisher/
|
||||||
|
WORKDIR /app/opcpublisher
|
||||||
|
RUN dotnet restore
|
||||||
|
|
||||||
|
# copy and publish app
|
||||||
|
WORKDIR /app
|
||||||
|
COPY opcpublisher/. ./opcpublisher/
|
||||||
|
WORKDIR /app/opcpublisher
|
||||||
|
RUN dotnet publish -c Release -o out
|
||||||
|
RUN ls /app/opcpublisher/out
|
||||||
|
|
||||||
|
# start it up
|
||||||
|
FROM microsoft/dotnet:${runtime_base_tag} AS runtime
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --no-install-recommends unzip procps && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Add an unprivileged user account for running the module
|
||||||
|
RUN useradd -ms /bin/bash moduleuser
|
||||||
|
USER moduleuser
|
||||||
|
|
||||||
|
RUN curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l ~/vsdbg
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=build /app/opcpublisher/out ./
|
||||||
|
ENTRYPOINT ["dotnet", "opcpublisher.dll"]
|
|
@ -1,7 +1,7 @@
|
||||||
FROM microsoft/dotnet:2.1-sdk-stretch
|
FROM microsoft/dotnet:2.1-sdk-stretch
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y unzip \
|
RUN apt-get update && apt-get install -y unzip \
|
||||||
&& curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v vs2017u1 -l ~/vsdbg
|
&& curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l ~/vsdbg
|
||||||
ENV PATH="${PATH}:/root/vsdbg/vsdbg"
|
ENV PATH="${PATH}:/root/vsdbg/vsdbg"
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y openssh-server \
|
RUN apt-get update && apt-get install -y openssh-server \
|
||||||
|
@ -12,5 +12,5 @@ RUN apt-get update && apt-get install -y openssh-server \
|
||||||
&& echo "export VISIBLE=now" >> /etc/profile
|
&& echo "export VISIBLE=now" >> /etc/profile
|
||||||
ENV NOTVISIBLE "in users profile"
|
ENV NOTVISIBLE "in users profile"
|
||||||
|
|
||||||
WORKDIR /docker
|
WORKDIR /app
|
||||||
ENTRYPOINT ["bash"]
|
ENTRYPOINT ["bash"]
|
|
@ -0,0 +1,26 @@
|
||||||
|
ARG runtime_base_tag=2.1-runtime-bionic-arm32v7
|
||||||
|
ARG build_base_tag=2.1-sdk-bionic-arm32v7
|
||||||
|
|
||||||
|
FROM microsoft/dotnet:${build_base_tag} AS build
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# copy csproj and restore as distinct layers
|
||||||
|
COPY opcpublisher/*.csproj ./opcpublisher/
|
||||||
|
WORKDIR /app/opcpublisher
|
||||||
|
RUN dotnet restore
|
||||||
|
|
||||||
|
# copy and publish app
|
||||||
|
WORKDIR /app
|
||||||
|
COPY opcpublisher/. ./opcpublisher/
|
||||||
|
WORKDIR /app/opcpublisher
|
||||||
|
RUN dotnet publish -c Release -o out
|
||||||
|
RUN ls /app/opcpublisher/out
|
||||||
|
|
||||||
|
# start it up
|
||||||
|
FROM microsoft/dotnet:${runtime_base_tag} AS runtime
|
||||||
|
# Add an unprivileged user account for running the module
|
||||||
|
RUN adduser -Ds /bin/sh moduleuser
|
||||||
|
USER moduleuser
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=build /app/opcpublisher/out ./
|
||||||
|
ENTRYPOINT ["dotnet", "opcpublisher.dll"]
|
|
@ -0,0 +1,23 @@
|
||||||
|
ARG runtime_base_tag=2.1-runtime-nanoserver-1803
|
||||||
|
ARG build_base_tag=2.1-sdk-nanoserver-1803
|
||||||
|
|
||||||
|
FROM microsoft/dotnet:${build_base_tag} AS build
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# copy csproj and restore as distinct layers
|
||||||
|
COPY opcpublisher/*.csproj ./opcpublisher/
|
||||||
|
WORKDIR /app/opcpublisher
|
||||||
|
RUN dotnet restore
|
||||||
|
|
||||||
|
# copy and publish app
|
||||||
|
WORKDIR /app
|
||||||
|
COPY opcpublisher/. ./opcpublisher/
|
||||||
|
WORKDIR /app/opcpublisher
|
||||||
|
RUN dotnet publish -c Release -o out
|
||||||
|
RUN ls /app/opcpublisher/out
|
||||||
|
|
||||||
|
# start it up
|
||||||
|
FROM microsoft/dotnet:${runtime_base_tag} AS runtime
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=build /app/opcpublisher/out ./
|
||||||
|
ENTRYPOINT ["dotnet", "opcpublisher.dll"]
|
|
@ -0,0 +1,67 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 15
|
||||||
|
VisualStudioVersion = 15.0.27130.2036
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{560B34E9-68E3-4033-94D4-CE24073F5904}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
.gitattributes = .gitattributes
|
||||||
|
.gitignore = .gitignore
|
||||||
|
.travis.yml = .travis.yml
|
||||||
|
appveyor.yml = appveyor.yml
|
||||||
|
License.txt = License.txt
|
||||||
|
README.md = README.md
|
||||||
|
THIRDPARTYNOTICES = THIRDPARTYNOTICES
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "opcpublisher", "opcpublisher\opcpublisher.csproj", "{215DC07F-AFA5-445C-BE70-09BF009C9A66}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docker", "docker", "{8B205340-83A1-4748-9417-0300C1AA5CA3}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "linux", "linux", "{E702EA85-1054-4252-B029-78B694D08C08}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "windows", "windows", "{BC12870A-38D7-4A8F-9C6B-925101D402FB}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "amd64", "amd64", "{7AE30F71-DFA6-4E09-8CAD-334D009515C1}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
docker\linux\amd64\Dockerfile = docker\linux\amd64\Dockerfile
|
||||||
|
docker\linux\amd64\Dockerfile.debug = docker\linux\amd64\Dockerfile.debug
|
||||||
|
docker\linux\amd64\Dockerfile.ssh = docker\linux\amd64\Dockerfile.ssh
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "arm32v7", "arm32v7", "{94E5355D-AA16-4E28-8B34-FA1CDBC77312}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
docker\linux\arm32v7\Dockerfile = docker\linux\arm32v7\Dockerfile
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "amd64", "amd64", "{8F91D4C5-8CD0-4195-9B3E-1072F0B87E92}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
docker\windows\amd64\Dockerfile = docker\windows\amd64\Dockerfile
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{215DC07F-AFA5-445C-BE70-09BF009C9A66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{215DC07F-AFA5-445C-BE70-09BF009C9A66}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{215DC07F-AFA5-445C-BE70-09BF009C9A66}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{215DC07F-AFA5-445C-BE70-09BF009C9A66}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(NestedProjects) = preSolution
|
||||||
|
{8B205340-83A1-4748-9417-0300C1AA5CA3} = {560B34E9-68E3-4033-94D4-CE24073F5904}
|
||||||
|
{E702EA85-1054-4252-B029-78B694D08C08} = {8B205340-83A1-4748-9417-0300C1AA5CA3}
|
||||||
|
{BC12870A-38D7-4A8F-9C6B-925101D402FB} = {8B205340-83A1-4748-9417-0300C1AA5CA3}
|
||||||
|
{7AE30F71-DFA6-4E09-8CAD-334D009515C1} = {E702EA85-1054-4252-B029-78B694D08C08}
|
||||||
|
{94E5355D-AA16-4E28-8B34-FA1CDBC77312} = {E702EA85-1054-4252-B029-78B694D08C08}
|
||||||
|
{8F91D4C5-8CD0-4195-9B3E-1072F0B87E92} = {BC12870A-38D7-4A8F-9C6B-925101D402FB}
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {C1B8DD9F-B491-4E8A-8DF9-3077636E9A84}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -16,8 +16,6 @@ namespace OpcPublisher
|
||||||
{
|
{
|
||||||
public static uint DiagnosticsInterval { get; set; } = 0;
|
public static uint DiagnosticsInterval { get; set; } = 0;
|
||||||
|
|
||||||
public static int IotHubMessagingMessagesSentCount { get; } = 0;
|
|
||||||
|
|
||||||
public static void Init()
|
public static void Init()
|
||||||
{
|
{
|
||||||
// init data
|
// init data
|
|
@ -28,8 +28,8 @@ namespace OpcPublisher
|
||||||
{
|
{
|
||||||
private class IotCentralMessage
|
private class IotCentralMessage
|
||||||
{
|
{
|
||||||
public string Key;
|
public string Key { get; set; }
|
||||||
public string Value;
|
public string Value { get; set; }
|
||||||
|
|
||||||
public IotCentralMessage()
|
public IotCentralMessage()
|
||||||
{
|
{
|
||||||
|
@ -554,7 +554,7 @@ namespace OpcPublisher
|
||||||
}
|
}
|
||||||
|
|
||||||
// set count
|
// set count
|
||||||
uint requestedEndpointsCount = getConfiguredEndpointsMethodRequest.Count ?? endpointsCount - startIndex;
|
uint requestedEndpointsCount = endpointsCount - startIndex;
|
||||||
uint availableEndpointCount = endpointsCount - startIndex;
|
uint availableEndpointCount = endpointsCount - startIndex;
|
||||||
uint actualEndpointsCount = Math.Min(requestedEndpointsCount, availableEndpointCount);
|
uint actualEndpointsCount = Math.Min(requestedEndpointsCount, availableEndpointCount);
|
||||||
|
|
||||||
|
@ -643,7 +643,7 @@ namespace OpcPublisher
|
||||||
}
|
}
|
||||||
|
|
||||||
// set count
|
// set count
|
||||||
uint requestedNodeCount = getConfiguredNodesOnEndpointMethodRequest.Count ?? configuredNodesOnEndpointCount - startIndex;
|
uint requestedNodeCount = configuredNodesOnEndpointCount - startIndex;
|
||||||
uint availableNodeCount = configuredNodesOnEndpointCount - startIndex;
|
uint availableNodeCount = configuredNodesOnEndpointCount - startIndex;
|
||||||
uint actualNodeCount = Math.Min(requestedNodeCount, availableNodeCount);
|
uint actualNodeCount = Math.Min(requestedNodeCount, availableNodeCount);
|
||||||
|
|
|
@ -8,9 +8,9 @@ namespace OpcPublisher
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class GetConfiguredNodesMethodData
|
public class GetConfiguredNodesMethodData
|
||||||
{
|
{
|
||||||
public string EndpointUrl;
|
public string EndpointUrl { get; set; }
|
||||||
public string PublishInterval;
|
public string PublishInterval { get; set; }
|
||||||
public string SamplingInterval;
|
public string SamplingInterval { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class NodeModel
|
public class NodeModel
|
||||||
|
@ -22,13 +22,13 @@ namespace OpcPublisher
|
||||||
OpcSamplingInterval = opcSamplingInterval;
|
OpcSamplingInterval = opcSamplingInterval;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Id;
|
public string Id { get; set; }
|
||||||
|
|
||||||
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
|
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
|
||||||
public int? OpcPublishingInterval;
|
public int? OpcPublishingInterval { get; set; }
|
||||||
|
|
||||||
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
|
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
|
||||||
public int? OpcSamplingInterval;
|
public int? OpcSamplingInterval { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PublishNodesMethodRequestModel
|
public class PublishNodesMethodRequestModel
|
||||||
|
@ -42,17 +42,17 @@ namespace OpcPublisher
|
||||||
Password = password;
|
Password = password;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string EndpointUrl;
|
public string EndpointUrl { get; set; }
|
||||||
public List<NodeModel> Nodes;
|
public List<NodeModel> Nodes { get; set; }
|
||||||
|
|
||||||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public bool UseSecurity;
|
public bool UseSecurity { get; set; }
|
||||||
|
|
||||||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string UserName;
|
public string UserName { get; set; }
|
||||||
|
|
||||||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string Password;
|
public string Password { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class UnpublishNodesMethodRequestModel
|
public class UnpublishNodesMethodRequestModel
|
||||||
|
@ -63,8 +63,8 @@ namespace OpcPublisher
|
||||||
EndpointUrl = endpointUrl;
|
EndpointUrl = endpointUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string EndpointUrl;
|
public string EndpointUrl { get; set; }
|
||||||
public List<NodeModel> Nodes;
|
public List<NodeModel> Nodes { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class UnpublishAllNodesMethodRequestModel
|
public class UnpublishAllNodesMethodRequestModel
|
||||||
|
@ -74,22 +74,19 @@ namespace OpcPublisher
|
||||||
EndpointUrl = endpointUrl;
|
EndpointUrl = endpointUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string EndpointUrl;
|
public string EndpointUrl { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class GetConfiguredEndpointsMethodRequestModel
|
public class GetConfiguredEndpointsMethodRequestModel
|
||||||
{
|
{
|
||||||
public GetConfiguredEndpointsMethodRequestModel(uint? count = null, ulong? continuationToken = null)
|
public GetConfiguredEndpointsMethodRequestModel(ulong? continuationToken = null)
|
||||||
{
|
{
|
||||||
Count = count;
|
|
||||||
ContinuationToken = continuationToken;
|
ContinuationToken = continuationToken;
|
||||||
}
|
}
|
||||||
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
|
|
||||||
public uint? Count;
|
|
||||||
|
|
||||||
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
|
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
|
||||||
public ulong? ContinuationToken;
|
public ulong? ContinuationToken { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -104,7 +101,7 @@ namespace OpcPublisher
|
||||||
{
|
{
|
||||||
Endpoints = endpoints;
|
Endpoints = endpoints;
|
||||||
}
|
}
|
||||||
public List<string> Endpoints;
|
public List<string> Endpoints { get; set; }
|
||||||
|
|
||||||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public ulong? ContinuationToken;
|
public ulong? ContinuationToken;
|
||||||
|
@ -112,20 +109,16 @@ namespace OpcPublisher
|
||||||
|
|
||||||
public class GetConfiguredNodesOnEndpointMethodRequestModel
|
public class GetConfiguredNodesOnEndpointMethodRequestModel
|
||||||
{
|
{
|
||||||
public GetConfiguredNodesOnEndpointMethodRequestModel(string endpointUrl, uint? count = null, ulong? continuationToken = null)
|
public GetConfiguredNodesOnEndpointMethodRequestModel(string endpointUrl, ulong? continuationToken = null)
|
||||||
{
|
{
|
||||||
EndpointUrl = endpointUrl;
|
EndpointUrl = endpointUrl;
|
||||||
Count = count;
|
|
||||||
ContinuationToken = continuationToken;
|
ContinuationToken = continuationToken;
|
||||||
}
|
}
|
||||||
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
|
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
|
||||||
public string EndpointUrl;
|
public string EndpointUrl { get; set; }
|
||||||
|
|
||||||
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
|
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
|
||||||
public uint? Count;
|
public ulong? ContinuationToken { get; set; }
|
||||||
|
|
||||||
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
|
|
||||||
public ulong? ContinuationToken;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -142,9 +135,9 @@ namespace OpcPublisher
|
||||||
}
|
}
|
||||||
|
|
||||||
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
|
[JsonProperty(NullValueHandling = NullValueHandling.Include)]
|
||||||
public List<NodeModel> Nodes;
|
public List<NodeModel> Nodes { get; set; }
|
||||||
|
|
||||||
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public ulong? ContinuationToken;
|
public ulong? ContinuationToken { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -37,21 +37,21 @@ namespace OpcPublisher
|
||||||
ExpandedNodeId
|
ExpandedNodeId
|
||||||
}
|
}
|
||||||
|
|
||||||
public string DisplayName;
|
public string DisplayName { get; set; }
|
||||||
public OpcMonitoredItemState State;
|
public OpcMonitoredItemState State { get; set; }
|
||||||
public uint AttributeId;
|
public uint AttributeId { get; set; }
|
||||||
public MonitoringMode MonitoringMode;
|
public MonitoringMode MonitoringMode { get; set; }
|
||||||
public int RequestedSamplingInterval;
|
public int RequestedSamplingInterval { get; set; }
|
||||||
public int SamplingInterval;
|
public int SamplingInterval { get; set; }
|
||||||
public uint QueueSize;
|
public uint QueueSize { get; set; }
|
||||||
public bool DiscardOldest;
|
public bool DiscardOldest { get; set; }
|
||||||
public MonitoredItemNotificationEventHandler Notification;
|
public MonitoredItemNotificationEventHandler Notification { get; set; }
|
||||||
public Uri EndpointUrl;
|
public Uri EndpointUrl { get; set; }
|
||||||
public MonitoredItem OpcUaClientMonitoredItem;
|
public MonitoredItem OpcUaClientMonitoredItem { get; set; }
|
||||||
public NodeId ConfigNodeId;
|
public NodeId ConfigNodeId { get; set; }
|
||||||
public ExpandedNodeId ConfigExpandedNodeId;
|
public ExpandedNodeId ConfigExpandedNodeId { get; set; }
|
||||||
public string OriginalId;
|
public string OriginalId { get; set; }
|
||||||
public OpcMonitoredItemConfigurationType ConfigType;
|
public OpcMonitoredItemConfigurationType ConfigType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ctor using NodeId (ns syntax for namespace).
|
/// Ctor using NodeId (ns syntax for namespace).
|
|
@ -84,12 +84,12 @@ namespace OpcPublisher
|
||||||
|
|
||||||
public static int LdsRegistrationInterval { get; set; } = 0;
|
public static int LdsRegistrationInterval { get; set; } = 0;
|
||||||
|
|
||||||
public static int OpcTraceToLoggerVerbose = 0;
|
public static int OpcTraceToLoggerVerbose { get; set; } = 0;
|
||||||
public static int OpcTraceToLoggerDebug = 0;
|
public static int OpcTraceToLoggerDebug { get; set; } = 0;
|
||||||
public static int OpcTraceToLoggerInformation = 0;
|
public static int OpcTraceToLoggerInformation { get; set; } = 0;
|
||||||
public static int OpcTraceToLoggerWarning = 0;
|
public static int OpcTraceToLoggerWarning { get; set; } = 0;
|
||||||
public static int OpcTraceToLoggerError = 0;
|
public static int OpcTraceToLoggerError { get; set; } = 0;
|
||||||
public static int OpcTraceToLoggerFatal = 0;
|
public static int OpcTraceToLoggerFatal { get; set; } = 0;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Configures all OPC stack settings
|
/// Configures all OPC stack settings
|
|
@ -34,9 +34,9 @@ namespace OpcPublisher
|
||||||
|
|
||||||
public static uint PublisherShutdownWaitPeriod { get; } = 10;
|
public static uint PublisherShutdownWaitPeriod { get; } = 10;
|
||||||
|
|
||||||
public static DateTime PublisherStartTime = DateTime.UtcNow;
|
public static DateTime PublisherStartTime { get; set; } = DateTime.UtcNow;
|
||||||
|
|
||||||
public static Serilog.Core.Logger Logger = null;
|
public static Serilog.Core.Logger Logger { get; set; } = null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Synchronous main method of the app.
|
/// Synchronous main method of the app.
|
||||||
|
@ -91,6 +91,19 @@ namespace OpcPublisher
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{ "sd|shopfloordomain=", $"same as site option, only there for backward compatibility\n" +
|
||||||
|
"The value must follow the syntactical rules of a DNS hostname.\nDefault: not set", (string s) => {
|
||||||
|
Regex siteNameRegex = new Regex("^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$");
|
||||||
|
if (siteNameRegex.IsMatch(s))
|
||||||
|
{
|
||||||
|
PublisherSite = s;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new OptionException("The shopfloor domain is not a valid DNS hostname.", "shopfloordomain");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{ "ic|iotcentral", $"publisher will send OPC UA data in IoTCentral compatible format (DisplayName of a node is used as key, this key is the Field name in IoTCentral). you need to ensure that all DisplayName's are unique. (Auto enables fetch display name)\nDefault: {IotCentralMode}", b => IotCentralMode = FetchOpcNodeDisplayName = b != null },
|
{ "ic|iotcentral", $"publisher will send OPC UA data in IoTCentral compatible format (DisplayName of a node is used as key, this key is the Field name in IoTCentral). you need to ensure that all DisplayName's are unique. (Auto enables fetch display name)\nDefault: {IotCentralMode}", b => IotCentralMode = FetchOpcNodeDisplayName = b != null },
|
||||||
{ "sw|sessionconnectwait=", $"specify the wait time in seconds publisher is trying to connect to disconnected endpoints and starts monitoring unmonitored items\nMin: 10\nDefault: {_publisherSessionConnectWaitSec}", (int i) => {
|
{ "sw|sessionconnectwait=", $"specify the wait time in seconds publisher is trying to connect to disconnected endpoints and starts monitoring unmonitored items\nMin: 10\nDefault: {_publisherSessionConnectWaitSec}", (int i) => {
|
||||||
if (i > 10)
|
if (i > 10)
|
|
@ -18,10 +18,10 @@ namespace OpcPublisher
|
||||||
|
|
||||||
public static class PublisherNodeConfiguration
|
public static class PublisherNodeConfiguration
|
||||||
{
|
{
|
||||||
public static SemaphoreSlim PublisherNodeConfigurationSemaphore;
|
public static SemaphoreSlim PublisherNodeConfigurationSemaphore { get; set; }
|
||||||
public static SemaphoreSlim PublisherNodeConfigurationFileSemaphore;
|
public static SemaphoreSlim PublisherNodeConfigurationFileSemaphore { get; set; }
|
||||||
public static List<OpcSession> OpcSessions;
|
public static List<OpcSession> OpcSessions { get; set; }
|
||||||
public static SemaphoreSlim OpcSessionsListSemaphore;
|
public static SemaphoreSlim OpcSessionsListSemaphore { get; set; }
|
||||||
|
|
||||||
public static string PublisherNodeConfigurationFilename { get; set; } = $"{System.IO.Directory.GetCurrentDirectory()}{Path.DirectorySeparatorChar}publishednodes.json";
|
public static string PublisherNodeConfigurationFilename { get; set; } = $"{System.IO.Directory.GetCurrentDirectory()}{Path.DirectorySeparatorChar}publishednodes.json";
|
||||||
|
|
|
@ -114,8 +114,8 @@ namespace OpcPublisher
|
||||||
MethodState getPublishedNodesLegacyMethod = CreateMethod(methodsFolder, "GetPublishedNodes", "GetPublishedNodes");
|
MethodState getPublishedNodesLegacyMethod = CreateMethod(methodsFolder, "GetPublishedNodes", "GetPublishedNodes");
|
||||||
SetGetPublishedNodesLegacyMethodProperties(ref getPublishedNodesLegacyMethod);
|
SetGetPublishedNodesLegacyMethodProperties(ref getPublishedNodesLegacyMethod);
|
||||||
|
|
||||||
MethodState getConfiguredNodesMethod = CreateMethod(methodsFolder, "GetConfiguredNodes", "GetConfiguredNodes");
|
MethodState getConfiguredNodesOnEndpointMethod = CreateMethod(methodsFolder, "GetConfiguredNodesOnEndpoint", "GetConfiguredNodesOnEndpoint");
|
||||||
SetGetConfiguredNodesMethodProperties(ref getConfiguredNodesMethod);
|
SetGetConfiguredNodesOnEndpointMethodProperties(ref getConfiguredNodesOnEndpointMethod);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@ -221,9 +221,9 @@ namespace OpcPublisher
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sets properies of the GetConfigruredNodes method.
|
/// Sets properies of the GetConfigruredNodesOnEndpoint method.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void SetGetConfiguredNodesMethodProperties(ref MethodState method)
|
private void SetGetConfiguredNodesOnEndpointMethodProperties(ref MethodState method)
|
||||||
{
|
{
|
||||||
// define input arguments
|
// define input arguments
|
||||||
method.InputArguments = new PropertyState<Argument[]>(method)
|
method.InputArguments = new PropertyState<Argument[]>(method)
|
||||||
|
@ -256,9 +256,9 @@ namespace OpcPublisher
|
||||||
|
|
||||||
method.OutputArguments.Value = new Argument[]
|
method.OutputArguments.Value = new Argument[]
|
||||||
{
|
{
|
||||||
new Argument() { Name = "Configured nodes", Description = "List of the nodes configured to publish in OPC Publisher", DataType = DataTypeIds.String, ValueRank = ValueRanks.Scalar }
|
new Argument() { Name = "Configured nodes on endpoint", Description = "List of the nodes configured on the specifcied endpoint to publish in OPC Publisher", DataType = DataTypeIds.String, ValueRank = ValueRanks.Scalar }
|
||||||
};
|
};
|
||||||
method.OnCallMethod = new GenericMethodCalledEventHandler(OnGetConfiguredNodesCall);
|
method.OnCallMethod = new GenericMethodCalledEventHandler(OnGetConfiguredNodesOnEndpointCall);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -689,15 +689,15 @@ namespace OpcPublisher
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Method to get the list of configured nodes, which returns the list in new format. Executes synchronously.
|
/// Method to get the list of configured nodes on the psecified endpoint, which returns the list in new format. Executes synchronously.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private ServiceResult OnGetConfiguredNodesCall(ISystemContext context, MethodState method, IList<object> inputArguments, IList<object> outputArguments)
|
private ServiceResult OnGetConfiguredNodesOnEndpointCall(ISystemContext context, MethodState method, IList<object> inputArguments, IList<object> outputArguments)
|
||||||
{
|
{
|
||||||
Uri endpointUrl = null;
|
Uri endpointUrl = null;
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(inputArguments[0] as string))
|
if (string.IsNullOrEmpty(inputArguments[0] as string))
|
||||||
{
|
{
|
||||||
Logger.Error($"OnGetConfiguredNodesCall: endpointUrl is null or empty'!");
|
Logger.Error($"OnGetConfiguredNodesOnEndpointCall: endpointUrl is null or empty'!");
|
||||||
return ServiceResult.Create(StatusCodes.BadArgumentsMissing, "Please provide a valid OPC UA endpoint URL as first argument!");
|
return ServiceResult.Create(StatusCodes.BadArgumentsMissing, "Please provide a valid OPC UA endpoint URL as first argument!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -708,7 +708,7 @@ namespace OpcPublisher
|
||||||
}
|
}
|
||||||
catch (UriFormatException)
|
catch (UriFormatException)
|
||||||
{
|
{
|
||||||
Logger.Error($"OnGetConfiguredNodesCall: The endpointUrl is invalid '{inputArguments[0] as string}'!");
|
Logger.Error($"OnGetConfiguredNodesOnEndpointCall: The endpointUrl is invalid '{inputArguments[0] as string}'!");
|
||||||
return ServiceResult.Create(StatusCodes.BadArgumentsMissing, "Please provide a valid OPC UA endpoint URL as first argument!");
|
return ServiceResult.Create(StatusCodes.BadArgumentsMissing, "Please provide a valid OPC UA endpoint URL as first argument!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -716,7 +716,7 @@ namespace OpcPublisher
|
||||||
// get the list of published nodes in NodeId format
|
// get the list of published nodes in NodeId format
|
||||||
uint nodeConfigVersion = 0;
|
uint nodeConfigVersion = 0;
|
||||||
outputArguments[0] = JsonConvert.SerializeObject(GetPublisherConfigurationFileEntries(endpointUrl, false, out nodeConfigVersion));
|
outputArguments[0] = JsonConvert.SerializeObject(GetPublisherConfigurationFileEntries(endpointUrl, false, out nodeConfigVersion));
|
||||||
Logger.Information("OnGetConfiguredNodesCall: Success!");
|
Logger.Information("OnGetConfiguredNodesOnEndpointCall: Success!");
|
||||||
|
|
||||||
return ServiceResult.Good;
|
return ServiceResult.Good;
|
||||||
}
|
}
|
|
@ -1,11 +1,11 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netcoreapp2.0</TargetFramework>
|
<TargetFramework>netcoreapp2.1</TargetFramework>
|
||||||
<AssemblyName>OpcPublisher</AssemblyName>
|
<AssemblyName>opcpublisher</AssemblyName>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<PackageId>OpcPublisher</PackageId>
|
<PackageId>OpcPublisher</PackageId>
|
||||||
<RuntimeFrameworkVersion>2.0</RuntimeFrameworkVersion>
|
<RuntimeFrameworkVersion>2.1</RuntimeFrameworkVersion>
|
||||||
<GenerateAssemblyCompanyAttribute>true</GenerateAssemblyCompanyAttribute>
|
<GenerateAssemblyCompanyAttribute>true</GenerateAssemblyCompanyAttribute>
|
||||||
<GenerateAssemblyVersionAttribute>true</GenerateAssemblyVersionAttribute>
|
<GenerateAssemblyVersionAttribute>true</GenerateAssemblyVersionAttribute>
|
||||||
<Description>This application subscribes to a configurable set of nodes in OPC UA server systems and publish them to Azure IoTHub.</Description>
|
<Description>This application subscribes to a configurable set of nodes in OPC UA server systems and publish them to Azure IoTHub.</Description>
|
||||||
|
@ -33,6 +33,10 @@
|
||||||
</Content>
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Properties\" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Azure.Devices" Version="1.16.0" />
|
<PackageReference Include="Microsoft.Azure.Devices" Version="1.16.0" />
|
||||||
<PackageReference Include="Microsoft.Azure.Devices.Client" Version="1.17.0" />
|
<PackageReference Include="Microsoft.Azure.Devices.Client" Version="1.17.0" />
|
||||||
|
@ -44,8 +48,4 @@
|
||||||
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
|
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="Properties\" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
|
@ -1,40 +0,0 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
|
||||||
# Visual Studio 15
|
|
||||||
VisualStudioVersion = 15.0.27130.2036
|
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpcPublisher", "OpcPublisher.csproj", "{EAC47E1C-39F4-4E51-A241-88432552D461}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{560B34E9-68E3-4033-94D4-CE24073F5904}"
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
..\.gitattributes = ..\.gitattributes
|
|
||||||
..\.gitignore = ..\.gitignore
|
|
||||||
..\.travis.yml = ..\.travis.yml
|
|
||||||
..\appveyor.yml = ..\appveyor.yml
|
|
||||||
..\Dockerfile.amd64 = ..\Dockerfile.amd64
|
|
||||||
..\Dockerfile.amd64.debug = ..\Dockerfile.amd64.debug
|
|
||||||
..\Dockerfile.arm32v7 = ..\Dockerfile.arm32v7
|
|
||||||
..\Dockerfile.ssh = ..\Dockerfile.ssh
|
|
||||||
..\Dockerfile.windows-amd64 = ..\Dockerfile.windows-amd64
|
|
||||||
..\License.txt = ..\License.txt
|
|
||||||
..\README.md = ..\README.md
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Global
|
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
||||||
Debug|Any CPU = Debug|Any CPU
|
|
||||||
Release|Any CPU = Release|Any CPU
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
||||||
{EAC47E1C-39F4-4E51-A241-88432552D461}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{EAC47E1C-39F4-4E51-A241-88432552D461}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{EAC47E1C-39F4-4E51-A241-88432552D461}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{EAC47E1C-39F4-4E51-A241-88432552D461}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
|
||||||
SolutionGuid = {C1B8DD9F-B491-4E8A-8DF9-3077636E9A84}
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
|
Загрузка…
Ссылка в новой задаче