Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package opcuaclient;
- import java.io.File;
- import java.io.IOException;
- import java.net.URL;
- import java.security.cert.CertificateParsingException;
- import java.util.EnumSet;
- import java.util.GregorianCalendar;
- import java.util.Locale;
- import static java.lang.System.out;
- import org.opcfoundation.ua.builtintypes.DateTime;
- import org.opcfoundation.ua.builtintypes.LocalizedText;
- import org.opcfoundation.ua.core.ApplicationDescription;
- import org.opcfoundation.ua.core.ApplicationType;
- import org.opcfoundation.ua.core.UserTokenPolicy;
- import org.opcfoundation.ua.transport.security.Cert;
- import org.opcfoundation.ua.transport.security.SecurityMode;
- import com.prosysopc.ua.ApplicationIdentity;
- import com.prosysopc.ua.CertificateValidationListener;
- import com.prosysopc.ua.PkiFileBasedCertificateValidator;
- import com.prosysopc.ua.PkiFileBasedCertificateValidator.CertificateCheck;
- import com.prosysopc.ua.PkiFileBasedCertificateValidator.ValidationResult;
- import com.prosysopc.ua.SecureIdentityException;
- import com.prosysopc.ua.server.*;
- import com.prosysopc.ua.server.nodes.opcua.BuildInfoType;
- public class OpcUAClient {
- private static UaServer server;
- protected final static CertificateValidationListener validationListener = new CertificateValidationListener(){
- public ValidationResult onValidate(Cert certificate,
- ApplicationDescription applicationDescription, EnumSet passedChecks) {
- // Do not mind about URI...
- if (passedChecks.containsAll(EnumSet.of(CertificateCheck.Trusted, CertificateCheck.Validity, CertificateCheck.Signature))) {
- if (!passedChecks.contains(CertificateCheck.Uri))
- try {
- System.out.println("Client's ApplicationURI ("
- + applicationDescription.getApplicationUri()
- + ") does not match the one in certificate: "
- + PkiFileBasedCertificateValidator.getApplicationUriOfCertificate(certificate));
- } catch (CertificateParsingException e) {
- throw new RuntimeException(e);
- }
- return ValidationResult.AcceptPermanently;
- }
- return ValidationResult.Reject;
- }
- };
- public static void main(String[] args) {
- try {
- server = new UaServer();
- ApplicationDescription appDescription = new ApplicationDescription();
- appDescription.setApplicationName(new LocalizedText("OpcUAServer", Locale.ENGLISH));
- appDescription.setApplicationUri("urn:localhost:UA:OpcUAServer");
- appDescription.setProductUri("urn:prosysopc.com:UA:OpcUAServer");
- appDescription.setApplicationType(ApplicationType.Server);
- final PkiFileBasedCertificateValidator validator = new PkiFileBasedCertificateValidator();
- server.setCertificateValidator(validator);
- validator.setValidationListener(validationListener);
- final ApplicationIdentity identity = ApplicationIdentity.loadOrCreateCertificate(appDescription, "***", "opcua", new File(validator.getBaseDir(), "private"), true, server.getHostNames());
- server.setApplicationIdentity(identity);
- server.setPort(52520);
- server.setUseLocalhost(true);
- server.setServerName("OPCUA/OpcUAServer");
- server.setUseAllIpAddresses(true);
- server.setSecurityModes(SecurityMode.ALL);
- // Define the supported user Token policies
- server.addUserTokenPolicy(UserTokenPolicy.ANONYMOUS);
- server.setDiscoveryServerUrl("opc.tcp://localhost:4840");
- server.init();
- // Initialize BuildInfo - using the version info from the SDK
- // You should replace this with your own build information
- final BuildInfoType buildInfo = server.getNodeManagerRoot()
- .getServerData().getServerStatus().getBuildInfo();
- // Fetch version information from the package manifest
- final Package sdkPackage = UaServer.class.getPackage();
- final String implementationVersion = sdkPackage
- .getImplementationVersion();
- if (implementationVersion != null) {
- int splitIndex = implementationVersion.lastIndexOf(".");
- final String softwareVersion = implementationVersion.substring(0,
- splitIndex);
- String buildNumber = implementationVersion
- .substring(splitIndex + 1);
- buildInfo.setManufacturerName(sdkPackage.getImplementationVendor());
- buildInfo.setSoftwareVersion(softwareVersion);
- buildInfo.setBuildNumber(buildNumber);
- }
- final URL classFile = UaServer.class
- .getResource("/src/opcuaclient/OpcUAClient.class");
- if (classFile != null) {
- final File mfFile = new File(classFile.getFile());
- GregorianCalendar c = new GregorianCalendar();
- c.setTimeInMillis(mfFile.lastModified());
- buildInfo.setBuildDate(new DateTime(c));
- }
- server.getSessionManager().setMaxSessionCount(50);
- server.getSessionManager().setMaxSessionTimeout(3600000); // one hour
- server.getSubscriptionManager().setMaxSubscriptionCount(50);
- server.start();
- while(true);
- } catch (SecureIdentityException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (UaServerException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement