/* * Copyright 2015 Kevin Herron * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.digitalpetri.opcua.stack.examples.server; import java.io.File; import java.security.KeyPair; import java.security.cert.X509Certificate; import java.util.UUID; import com.digitalpetri.opcua.stack.core.application.CertificateManager; import com.digitalpetri.opcua.stack.core.application.CertificateValidator; import com.digitalpetri.opcua.stack.core.application.DefaultCertificateManager; import com.digitalpetri.opcua.stack.core.application.DefaultCertificateValidator; import com.digitalpetri.opcua.stack.core.security.SecurityPolicy; import com.digitalpetri.opcua.stack.core.types.builtin.LocalizedText; import com.digitalpetri.opcua.stack.core.types.enumerated.MessageSecurityMode; import com.digitalpetri.opcua.stack.core.types.structured.ResponseHeader; import com.digitalpetri.opcua.stack.core.types.structured.TestStackRequest; import com.digitalpetri.opcua.stack.core.types.structured.TestStackResponse; import com.digitalpetri.opcua.stack.server.config.UaTcpStackServerConfig; import com.digitalpetri.opcua.stack.server.tcp.UaTcpStackServer; public class ServerExample { private final UaTcpStackServer server; public ServerExample(X509Certificate certificate, KeyPair keyPair) throws Exception { File securityDir = new File("./security/"); if (!securityDir.exists() && !securityDir.mkdirs()) { throw new Exception("unable to create security directory"); } CertificateManager certificateManager = new DefaultCertificateManager(keyPair, certificate); CertificateValidator certificateValidator = new DefaultCertificateValidator(securityDir); UaTcpStackServerConfig config = UaTcpStackServerConfig.builder() .setServerName("example") .setApplicationName(LocalizedText.english("Stack Example Server")) .setApplicationUri(String.format("urn:example-server:%s", UUID.randomUUID())) .setCertificateManager(certificateManager) .setCertificateValidator(certificateValidator) .build(); server = new UaTcpStackServer(config); server.addEndpoint("opc.tcp://localhost:12685/example", null, certificate, SecurityPolicy.None, MessageSecurityMode.None); server.addEndpoint("opc.tcp://localhost:12685/example", null, certificate, SecurityPolicy.Basic128Rsa15, MessageSecurityMode.SignAndEncrypt); server.addRequestHandler(TestStackRequest.class, service -> { TestStackRequest request = service.getRequest(); ResponseHeader header = service.createResponseHeader(); service.setResponse(new TestStackResponse(header, request.getInput())); }); } public void startup() { server.startup(); } public void shutdown() { server.shutdown(); } }