Advertisement
Guest User

Untitled

a guest
May 28th, 2014
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.11 KB | None | 0 0
  1. package opcuaclient;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.net.URL;
  6. import java.security.cert.CertificateParsingException;
  7. import java.util.EnumSet;
  8. import java.util.GregorianCalendar;
  9. import java.util.Locale;
  10.  
  11. import static java.lang.System.out;
  12.  
  13. import org.opcfoundation.ua.builtintypes.DateTime;
  14. import org.opcfoundation.ua.builtintypes.LocalizedText;
  15. import org.opcfoundation.ua.core.ApplicationDescription;
  16. import org.opcfoundation.ua.core.ApplicationType;
  17. import org.opcfoundation.ua.core.UserTokenPolicy;
  18. import org.opcfoundation.ua.transport.security.Cert;
  19. import org.opcfoundation.ua.transport.security.SecurityMode;
  20.  
  21. import com.prosysopc.ua.ApplicationIdentity;
  22. import com.prosysopc.ua.CertificateValidationListener;
  23. import com.prosysopc.ua.PkiFileBasedCertificateValidator;
  24. import com.prosysopc.ua.PkiFileBasedCertificateValidator.CertificateCheck;
  25. import com.prosysopc.ua.PkiFileBasedCertificateValidator.ValidationResult;
  26. import com.prosysopc.ua.SecureIdentityException;
  27. import com.prosysopc.ua.server.*;
  28. import com.prosysopc.ua.server.nodes.opcua.BuildInfoType;
  29.  
  30. public class OpcUAClient {
  31.     private static UaServer server;
  32.    
  33.     protected final static CertificateValidationListener validationListener = new CertificateValidationListener(){
  34.         public ValidationResult onValidate(Cert certificate,
  35.                 ApplicationDescription applicationDescription, EnumSet passedChecks) {
  36.             // Do not mind about URI...
  37.             if (passedChecks.containsAll(EnumSet.of(CertificateCheck.Trusted, CertificateCheck.Validity, CertificateCheck.Signature))) {
  38.                 if (!passedChecks.contains(CertificateCheck.Uri))
  39.                     try {
  40.                         System.out.println("Client's ApplicationURI ("
  41.                                 + applicationDescription.getApplicationUri()
  42.                                 + ") does not match the one in certificate: "
  43.                                 + PkiFileBasedCertificateValidator.getApplicationUriOfCertificate(certificate));
  44.                     } catch (CertificateParsingException e) {
  45.                         throw new RuntimeException(e);
  46.                     }
  47.                 return ValidationResult.AcceptPermanently;
  48.             }
  49.             return ValidationResult.Reject;
  50.         }
  51.     };
  52.        
  53.     public static void main(String[] args) {
  54.         try {
  55.             server = new UaServer();
  56.             ApplicationDescription appDescription = new ApplicationDescription();
  57.             appDescription.setApplicationName(new LocalizedText("OpcUAServer", Locale.ENGLISH));
  58.             appDescription.setApplicationUri("urn:localhost:UA:OpcUAServer");
  59.             appDescription.setProductUri("urn:prosysopc.com:UA:OpcUAServer");
  60.             appDescription.setApplicationType(ApplicationType.Server);
  61.            
  62.             final PkiFileBasedCertificateValidator validator = new PkiFileBasedCertificateValidator();
  63.             server.setCertificateValidator(validator);
  64.             validator.setValidationListener(validationListener);
  65.  
  66.             final ApplicationIdentity identity = ApplicationIdentity.loadOrCreateCertificate(appDescription, "***", "opcua", new File(validator.getBaseDir(), "private"), true, server.getHostNames());
  67.  
  68.             server.setApplicationIdentity(identity);
  69.            
  70.             server.setPort(52520);
  71.             server.setUseLocalhost(true);
  72.             server.setServerName("OPCUA/OpcUAServer");
  73.            
  74.             server.setUseAllIpAddresses(true);
  75.            
  76.             server.setSecurityModes(SecurityMode.ALL);
  77.            
  78.             // Define the supported user Token policies
  79.             server.addUserTokenPolicy(UserTokenPolicy.ANONYMOUS);
  80.            
  81.             server.setDiscoveryServerUrl("opc.tcp://localhost:4840");
  82.             server.init();
  83.            
  84.             // Initialize BuildInfo - using the version info from the SDK
  85.             // You should replace this with your own build information
  86.  
  87.             final BuildInfoType buildInfo = server.getNodeManagerRoot()
  88.                     .getServerData().getServerStatus().getBuildInfo();
  89.  
  90.             // Fetch version information from the package manifest
  91.             final Package sdkPackage = UaServer.class.getPackage();
  92.             final String implementationVersion = sdkPackage
  93.                     .getImplementationVersion();
  94.             if (implementationVersion != null) {
  95.                 int splitIndex = implementationVersion.lastIndexOf(".");
  96.                 final String softwareVersion = implementationVersion.substring(0,
  97.                         splitIndex);
  98.                 String buildNumber = implementationVersion
  99.                         .substring(splitIndex + 1);
  100.  
  101.                 buildInfo.setManufacturerName(sdkPackage.getImplementationVendor());
  102.                 buildInfo.setSoftwareVersion(softwareVersion);
  103.                 buildInfo.setBuildNumber(buildNumber);
  104.             }
  105.  
  106.             final URL classFile = UaServer.class
  107.                     .getResource("/src/opcuaclient/OpcUAClient.class");
  108.             if (classFile != null) {
  109.                 final File mfFile = new File(classFile.getFile());
  110.                 GregorianCalendar c = new GregorianCalendar();
  111.                 c.setTimeInMillis(mfFile.lastModified());
  112.                 buildInfo.setBuildDate(new DateTime(c));
  113.             }
  114.            
  115.             server.getSessionManager().setMaxSessionCount(50);
  116.             server.getSessionManager().setMaxSessionTimeout(3600000); // one hour
  117.             server.getSubscriptionManager().setMaxSubscriptionCount(50);
  118.            
  119.             server.start();
  120.            
  121.            
  122.             while(true);
  123.         } catch (SecureIdentityException e) {
  124.             // TODO Auto-generated catch block
  125.             e.printStackTrace();
  126.         } catch (IOException e) {
  127.             // TODO Auto-generated catch block
  128.             e.printStackTrace();
  129.         } catch (UaServerException e) {
  130.             // TODO Auto-generated catch block
  131.             e.printStackTrace();
  132.         }  
  133.     }
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement