Advertisement
Guest User

Untitled

a guest
Mar 13th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.67 KB | None | 0 0
  1. @Service
  2. public class ExampleServer {
  3.  
  4. private static final Logger logger = LoggerFactory.getLogger(ExampleServer.class);
  5.  
  6. private final OpcUaServer server;
  7.  
  8. public ExampleServer() throws Exception{
  9. CryptoRestrictions.remove();
  10.  
  11. KeyStoreLoader loader = new KeyStoreLoader().load();
  12.  
  13. DefaultCertificateManager certificateManager = new DefaultCertificateManager(
  14. loader.getServerKeyPair(),
  15. loader.getServerCertificate()
  16. );
  17.  
  18. File securityTempDir = new File(System.getProperty("java.io.tmpdir"), "security");
  19.  
  20. LoggerFactory.getLogger(getClass())
  21. .info("security temp dir: {}", securityTempDir.getAbsolutePath());
  22.  
  23. DefaultCertificateValidator certificateValidator = new DefaultCertificateValidator(securityTempDir);
  24.  
  25. UsernameIdentityValidator identityValidator = new UsernameIdentityValidator(
  26. true,
  27. authChallenge -> {
  28. String username = authChallenge.getUsername();
  29. String password = authChallenge.getPassword();
  30.  
  31. boolean userOk = "user".equals(username) && "password1".equals(password);
  32. boolean adminOk = "admin".equals(username) && "password2".equals(password);
  33.  
  34. return userOk || adminOk;
  35. }
  36. );
  37.  
  38. OpcUaServerConfig serverConfig = OpcUaServerConfig.builder()
  39. .setApplicationUri("urn:bbv:milo:examples:server")
  40. .setApplicationName(LocalizedText.english("Eclipse Milo OPC-UA Example Server"))
  41. .setBindAddresses(newArrayList("0.0.0.0"))
  42. .setBindPort(12686)
  43. .setBuildInfo(
  44. new BuildInfo(
  45. "urn:bbv:milo:example-server",
  46. "eclipse",
  47. "eclipse milo example server",
  48. OpcUaServer.SDK_VERSION,
  49. "", DateTime.now()))
  50. .setCertificateManager(certificateManager)
  51. .setCertificateValidator(certificateValidator)
  52. .setIdentityValidator(identityValidator)
  53. .setProductUri("urn:bbv:milo:example-server")
  54. .setServerName("dorst")
  55. .setSecurityPolicies(
  56. EnumSet.of(
  57. SecurityPolicy.None,
  58. SecurityPolicy.Basic128Rsa15,
  59. SecurityPolicy.Basic256,
  60. SecurityPolicy.Basic256Sha256))
  61. .setUserTokenPolicies(
  62. ImmutableList.of(
  63. USER_TOKEN_POLICY_ANONYMOUS,
  64. USER_TOKEN_POLICY_USERNAME))
  65. .build();
  66.  
  67. server = new OpcUaServer(serverConfig);
  68.  
  69. server.getNamespaceManager().registerAndAdd(
  70. ExampleNamespace.NAMESPACE_URI,
  71. idx -> new ExampleNamespace(server, idx));
  72.  
  73.  
  74.  
  75. server.getServer().addRequestHandler(TestStackRequest.class, service -> {
  76. TestStackRequest request = service.getRequest();
  77.  
  78. ResponseHeader header = service.createResponseHeader();
  79.  
  80. service.setResponse(new TestStackResponse(header, request.getInput()));
  81. });
  82.  
  83. server.getServer().addRequestHandler(TestStackExRequest.class, service -> {
  84. TestStackExRequest request = service.getRequest();
  85.  
  86. ResponseHeader header = service.createResponseHeader();
  87.  
  88. service.setResponse(new TestStackExResponse(header, request.getInput()));
  89. });
  90. }
  91.  
  92.  
  93.  
  94. public OpcUaServer getServer() {
  95. return server;
  96. }
  97.  
  98. public CompletableFuture<OpcUaServer> startup() {
  99. return server.startup();
  100. }
  101.  
  102. public CompletableFuture<OpcUaServer> shutdown() {
  103. return server.shutdown();
  104. }
  105.  
  106. @Scheduled(fixedRate = 5000)
  107. public void refreshServer() throws Exception {
  108. ServerNodeMap nodeMap = getServer().getNodeMap();
  109.  
  110. DataRandomizer random = new DataRandomizer();
  111.  
  112. ServerNode node = nodeMap.getNode(new NodeId(Unsigned.ushort(2), "Machine01/PowerCurve_1/Data")).get();
  113. AttributeContext attributeContext = new AttributeContext(getServer());
  114. DataValue dataValue = node.getAttribute(attributeContext, AttributeId.Value);
  115. Variant variant = new Variant(random.get());
  116. node.setAttribute(attributeContext, AttributeId.Value, new DataValue(variant));
  117.  
  118.  
  119. //nodeMap.replace(new NodeId(Unsigned.ushort(2), "Machine01/PowerCurve_1/Data"), data);
  120.  
  121. //ServerNode replace =
  122. logger.info("ServerNode " + dataValue.toString());
  123.  
  124. }
  125.  
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement