示例#1
0
        public void UpdateUiControls()
        {
            using (var applicationInstance = new ApplicationInstance(Settings.Default.TestApplicationLocation))
            {
                applicationInstance.Run(async () =>
                    {
                        // This is running on the UI thread
                        // Debugger.Launch();

                        var window = (Application.Current.MainWindow as MainWindow);
                        if (window == null)
                            Assert.Fail("No main window");

                        Assert.AreEqual("Initial heading", window.HeadingLabel.Text);

                        window.HeadingTextBox.Text = "Our text";

                        ClickButton(window.Go);

                        // Give it time to do its thing
                        await Task.Delay(500);

                        Assert.AreEqual("Our text", window.HeadingLabel.Text);
                    });
            }
        }
示例#2
0
        public void UpdateUiControls()
        {
            using (var applicationInstance = new ApplicationInstance())
            {
                applicationInstance.Launch(Settings.Default.TestApplicationLocation);

                applicationInstance.RunMethod(() => UpdateUiControlsImpl());
            }
        }
示例#3
0
        public void AnonymousMethodsWithAsyncAreAbleToBeUsed()
        {
            using (var applicationInstance = new ApplicationInstance())
            {
                applicationInstance.Launch(Settings.Default.TestApplicationLocation);

                applicationInstance.Run(async () =>
                    {
                        await Task.Delay(5000);
                    });
            }
        }
示例#4
0
        public void AnonymousMethodsAreAbleToBeUsed()
        {
            using (var applicationInstance = new ApplicationInstance())
            {
                applicationInstance.Launch(Settings.Default.TestApplicationLocation);

                applicationInstance.Run(() =>
                    {
                        Thread.Sleep(5000);
                    });
            }
        }
示例#5
0
        public void ApplicationCanBeLaunchedAndAttachedTo()
        {
            Process process;
            using (var applicationInstance = new ApplicationInstance())
            {
                applicationInstance.Launch(Settings.Default.TestApplicationLocation);
                process = applicationInstance.Process;
                Assert.IsNotNull(applicationInstance.Process);
            }

            Assert.IsTrue(process.HasExited);
        }
示例#6
0
        public void ApplicationCanBeLaunchedAndAttachedTo()
        {
            Process process;
            using (var applicationInstance = new ApplicationInstance())
            {
                applicationInstance.Launch(@"PATHTOAPPLICATION");

                process = applicationInstance.Process;
                Assert.IsNotNull(applicationInstance.Process);

                applicationInstance.Run(() => { });
            }

            Assert.IsTrue(process.HasExited);
        }
示例#7
0
        //TODO [TestCase(InvalidCertType.KeySize1024, true, false)]
        public async Task TestInvalidAppCertChainDoNotRecreate(InvalidCertType certType, bool server, bool suppress)
        {
            // pki directory root for test runs.
            var pkiRoot = Path.GetTempPath() + Path.GetRandomFileName() + Path.DirectorySeparatorChar;

            var applicationInstance = new ApplicationInstance()
            {
                ApplicationName = ApplicationName
            };

            Assert.NotNull(applicationInstance);
            ApplicationConfiguration config;

            if (server)
            {
                config = await applicationInstance.Build(ApplicationUri, ProductUri)
                         .AsServer(new string[] { "opc.tcp://localhost:12345/Configuration" })
                         .AddSecurityConfiguration(SubjectName, pkiRoot)
                         .Create().ConfigureAwait(false);
            }
            else
            {
                config = await applicationInstance.Build(ApplicationUri, ProductUri)
                         .AsClient()
                         .AddSecurityConfiguration(SubjectName, pkiRoot)
                         .Create().ConfigureAwait(false);
            }
            Assert.NotNull(config);

            CertificateIdentifier applicationCertificate = applicationInstance.ApplicationConfiguration.SecurityConfiguration.ApplicationCertificate;

            Assert.IsNull(applicationCertificate.Certificate);

            var testCerts = CreateInvalidCertChain(certType);

            if (certType != InvalidCertType.NoIssuer)
            {
                using (var issuerCert = testCerts[1])
                {
                    Assert.NotNull(issuerCert);
                    Assert.False(issuerCert.HasPrivateKey);
                    issuerCert.AddToStore(
                        applicationInstance.ApplicationConfiguration.SecurityConfiguration.TrustedIssuerCertificates.StoreType,
                        applicationInstance.ApplicationConfiguration.SecurityConfiguration.TrustedIssuerCertificates.StorePath
                        );
                }
            }

            X509Certificate2 publicKey = null;

            using (var testCert = testCerts[0])
            {
                Assert.NotNull(testCert);
                Assert.True(testCert.HasPrivateKey);
                testCert.AddToStore(
                    applicationCertificate.StoreType,
                    applicationCertificate.StorePath
                    );
                publicKey = new X509Certificate2(testCert.RawData);
            }

            using (publicKey)
            {
                if (suppress)
                {
                    bool certOK = await applicationInstance.CheckApplicationInstanceCertificate(true, 0)
                                  .ConfigureAwait(false);

                    Assert.True(certOK);
                    Assert.AreEqual(publicKey, applicationCertificate.Certificate);
                }
                else
                {
                    var sre = Assert.ThrowsAsync <ServiceResultException>(async() =>
                                                                          await applicationInstance.CheckApplicationInstanceCertificate(true, 0).ConfigureAwait(false));
                    Assert.AreEqual(StatusCodes.BadConfigurationError, sre.StatusCode);
                }
            }
        }
示例#8
0
 public connectorForm(ApplicationInstance application) : base(application.ApplicationConfiguration.CreateMessageContext(), application, null, application.ApplicationConfiguration)
 {
     InitializeComponent();
 }
示例#9
0
        protected override void OnProcessRequest()
        {
            ApplicationInstance applicationInstance = CurrentContext.CurrentApplicationInstance;

            Write(string.Format("{0} {1}", applicationInstance, applicationInstance.Version));
        }
示例#10
0
        static void Main(string[] args)
        {
            Console.WriteLine("Create application configuration and certificate, start connection and extraction...");
            var config = new ApplicationConfiguration()
            {
                ApplicationName       = "UABenchMarks",
                ApplicationUri        = Utils.Format(@"urn:{0}:UABenchMarks", System.Net.Dns.GetHostName()),
                ApplicationType       = ApplicationType.Client,
                SecurityConfiguration = new SecurityConfiguration
                {
                    ApplicationCertificate = new CertificateIdentifier {
                        StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\MachineDefault", SubjectName = Utils.Format(@"CN={0}, DC={1}", "MyHomework", System.Net.Dns.GetHostName())
                    },
                    TrustedIssuerCertificates = new CertificateTrustList {
                        StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\UA Certificate Authorities"
                    },
                    TrustedPeerCertificates = new CertificateTrustList {
                        StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\UA Applications"
                    },
                    RejectedCertificateStore = new CertificateTrustList {
                        StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\RejectedCertificates"
                    },
                    AutoAcceptUntrustedCertificates = true,
                    AddAppCertToTrustedStore        = true
                },
                TransportConfigurations = new TransportConfigurationCollection(),
                TransportQuotas         = new TransportQuotas {
                    OperationTimeout = 15000
                },
                ClientConfiguration = new ClientConfiguration {
                    DefaultSessionTimeout = 60000
                },
                TraceConfiguration = new TraceConfiguration()
            };

            config.Validate(ApplicationType.Client).GetAwaiter().GetResult();
            if (config.SecurityConfiguration.AutoAcceptUntrustedCertificates)
            {
                config.CertificateValidator.CertificateValidation += (s, e) => { e.Accept = (e.Error.StatusCode == StatusCodes.BadCertificateUntrusted); };
            }

            var application = new ApplicationInstance
            {
                ApplicationName          = "UABenchMarks",
                ApplicationType          = ApplicationType.Client,
                ApplicationConfiguration = config
            };

            application.CheckApplicationInstanceCertificate(false, 2048).GetAwaiter().GetResult();

            var selectedEndpoint = CoreClientUtils.SelectEndpoint(DiscoveryUrl, useSecurity: false, operationTimeout: 15000);

            using (var session = Session.Create(config, new ConfiguredEndpoint(null, selectedEndpoint, EndpointConfiguration.Create(config)), false, "", 60000, null, null).GetAwaiter().GetResult())
            {
                Console.WriteLine("Trying QueryFirst Call...");
                //QueryFirstCall(session);

                Console.WriteLine("Start Fetch...");
                startTime = DateTime.Now;
                BrowseRootTree(session);
                DateTime end = DateTime.Now;
                TimeSpan ts  = end - startTime;

                Console.WriteLine("Total Net Calls: {0}", netCalls);
                Console.WriteLine("Total Nodes Found: {0}", totalNodes);
                Console.WriteLine("Total Get Time: Seconds: {1}", ts.TotalMinutes, ts.TotalSeconds);


                //Console.WriteLine("Step 4 - Create a subscription. Set a faster publishing interval if you wish.");
                //var subscription = new Subscription(session.DefaultSubscription) { PublishingInterval = 30000 };

                //Console.WriteLine("Step 5 - Add a list of items you wish to monitor to the subscription.");
                //var list = new List<MonitoredItem> { new MonitoredItem(subscription.DefaultItem) { DisplayName = "ServerStatusCurrentTime", StartNodeId = "i=2258" } };
                //list.ForEach(i => i.Notification += OnNotification);
                //subscription.AddItems(list);

                //Console.WriteLine("Step 6 - Add the subscription to the session.");
                //session.AddSubscription(subscription);
                //subscription.Create();

                //Console.WriteLine("Press any key to remove subscription...");
                //Console.ReadKey(true);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey(true);
        }
示例#11
0
        public static void Main(string[] args)
        {
            try
            {
                ApplicationInstance.MessageDlg = new ApplicationMessageDlg();
                ApplicationInstance application = new ApplicationInstance();
                application.ApplicationName   = "Manufacturing Execution System";
                application.ApplicationType   = ApplicationType.Client;
                application.ConfigSectionName = "Opc.Ua.MES";

                // load the application configuration.
                ApplicationConfiguration appConfiguration = application.LoadApplicationConfiguration(false).Result;

                // check the application certificate.
                application.CheckApplicationInstanceCertificate(false, 0).Wait();

                // get list of cached endpoints.
                ConfiguredEndpointCollection endpoints = appConfiguration.LoadCachedEndpoints(true);
                endpoints.DiscoveryUrls = appConfiguration.ClientConfiguration.WellKnownDiscoveryUrls;

                StationsCollection collection = StationsCollection.Load(appConfiguration);
                if (collection.Count > 0)
                {
                    m_station = collection[0];
                }
                else
                {
                    throw new ArgumentException("Can not load station definition from configuration file!");
                }

                // connect to all servers.
                m_sessionAssembly  = EndpointConnect(endpoints[c_Assembly], appConfiguration);
                m_sessionTest      = EndpointConnect(endpoints[c_Test], appConfiguration);
                m_sessionPackaging = EndpointConnect(endpoints[c_Packaging], appConfiguration);

                if (!CreateMonitoredItem(m_station.StatusNode, m_sessionAssembly, new MonitoredItemNotificationEventHandler(MonitoredItem_AssemblyStation)))
                {
                    Trace("Failed to create monitored Item for the assembly station!");
                }
                if (!CreateMonitoredItem(m_station.StatusNode, m_sessionTest, new MonitoredItemNotificationEventHandler(MonitoredItem_TestStation)))
                {
                    Trace("Failed to create monitored Item for the test station!");
                }
                if (!CreateMonitoredItem(m_station.StatusNode, m_sessionPackaging, new MonitoredItemNotificationEventHandler(MonitoredItem_PackagingStation)))
                {
                    Trace("Failed to create monitored Item for the packaging station!");
                }

                StartAssemblyLine();

                // MESLogic method is executed periodically, with period c_updateRate
                RestartTimer(c_updateRate);

                Trace("MES started. Press any key to exit.");

                try
                {
                    Console.ReadKey(true);
                }
                catch
                {
                    // wait forever if there is no console, e.g. in docker
                    Thread.Sleep(Timeout.Infinite);
                }
            }
            catch (Exception ex)
            {
                Trace("Critical Exception: {0}, MES exiting!", ex.Message);
            }
        }
示例#12
0
        /// <summary>
        /// On page loaded
        /// </summary>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            App.unclosedSession = this;

            sessionInfo = e.Parameter as SessionInfo;

            if (sessionInfo == null)
            {
                sessionMgmtAction         = SESSIONMGMT_ACTION.NEW;
                sessionInfo               = new SessionInfo();
                sessionInfo.sessionName   = "";
                sessionInfo.profilePath   = "";
                sessionInfo.sourceType    = "";
                m_sessionConfig_full_path = "";
                m_sessionConfig           = null;
            }
            else
            {
                m_sessionConfig_full_path = Path.Combine(m_local, SiteProfileManager.GetFullPath(App.SiteProfileId, sessionInfo.profilePath));
                // json configuration
                m_sessionConfig = OpcuaSessionConfig.LoadFromJsonFile(m_sessionConfig_full_path);
            }


            ApplicationInstance      application   = OpcuaSessionConfig.OpcuaApplication;
            ApplicationConfiguration configuration = application.ApplicationConfiguration;
            ServiceMessageContext    context       = configuration.CreateMessageContext();

            if (!configuration.SecurityConfiguration.AutoAcceptUntrustedCertificates)
            {
                configuration.CertificateValidator.CertificateValidation += new CertificateValidationEventHandler(CertificateValidator_CertificateValidation);
            }

            m_context       = context;
            m_application   = application;
            m_configuration = configuration;

            SessionsCTRL.Configuration    = configuration;
            SessionsCTRL.MessageContext   = context;
            SessionsCTRL.AddressSpaceCtrl = BrowseCTRL;
            SessionsCTRL.NodeSelected    += SessionCtrl_NodeSelected;


            // disable cached endpoints from Opc.Ua.SampleClient.Config.xml
            //// get list of cached endpoints.
            //m_endpoints = m_configuration.LoadCachedEndpoints(true);
            m_endpoints = new ConfiguredEndpointCollection();
            m_endpoints.DiscoveryUrls = configuration.ClientConfiguration.WellKnownDiscoveryUrls;

            // work around to fill Configuration and DiscoveryUrls
            if (m_sessionConfig != null)
            {
                m_sessionConfig.endpoint.Configuration = EndpointConfiguration.Create(m_configuration);
                m_sessionConfig.endpoint.Description.Server.DiscoveryUrls.Add(m_sessionConfig.endpoint.EndpointUrl.AbsoluteUri.ToString());
                m_endpoints.Add(m_sessionConfig.endpoint);
            }

            // hook up endpoint selector
            EndpointSelectorCTRL.Initialize(m_endpoints, m_configuration);
            EndpointSelectorCTRL.ConnectEndpoint  += EndpointSelectorCTRL_ConnectEndpoint;
            EndpointSelectorCTRL.EndpointsChanged += EndpointSelectorCTRL_OnChange;

            BrowseCTRL.SessionTreeCtrl = SessionsCTRL;
            BrowseCTRL.NodeSelected   += BrowseCTRL_NodeSelected;

            btnDelSubscription.IsEnabled = false;
            btnAddSubscription.IsEnabled = false;

            btnDelSubscription.Click += ContextMenu_OnDelete;
            btnAddSubscription.Click += ContextMenu_OnReport;

            // exception dialog
            GuiUtils.ExceptionMessageDlg += ExceptionMessageDlg;

            EndpointSelectorCTRL.IsEnabled = false;
            BrowseCTRL.IsEnabled           = false;
            SessionsCTRL.IsEnabled         = false;

            txtSessionName.Text = sessionInfo.sessionName;

            if (sessionMgmtAction == SESSIONMGMT_ACTION.NEW)
            {
                txtSessionName.IsReadOnly      = false;
                btnReload.IsEnabled            = false;
                btnReload.Visibility           = Visibility.Collapsed;
                EndpointSelectorCTRL.IsEnabled = true;
            }
            else
            {
                if (m_sessionConfig == null)
                {
                    txtSessionName.IsReadOnly      = true;
                    EndpointSelectorCTRL.IsEnabled = true;
                    btnReload.IsEnabled            = false;
                }
                else
                {
                    txtSessionName.IsReadOnly = true;
                    btnReload.IsEnabled       = false;
                    var ignored = Task.Run(OpenSessionView_OpcuaClient);
                }
            }
        }
示例#13
0
        public async Task StartServer(bool clean, int basePort = -1)
        {
            ApplicationInstance.MessageDlg = new ApplicationMessageDlg();
            Application = new ApplicationInstance
            {
                ApplicationName   = "Global Discovery Server",
                ApplicationType   = ApplicationType.Server,
                ConfigSectionName = "Opc.Ua.GlobalDiscoveryTestServer"
            };

            BasePort = basePort;
            Config   = await Load(Application, basePort).ConfigureAwait(false);

            if (clean)
            {
                string thumbprint = Config.SecurityConfiguration.ApplicationCertificate.Thumbprint;
                if (thumbprint != null)
                {
                    using (var store = Config.SecurityConfiguration.ApplicationCertificate.OpenStore())
                    {
                        await store.Delete(thumbprint).ConfigureAwait(false);
                    }
                }

                // always start with clean cert store
                TestUtils.CleanupTrustList(Config.SecurityConfiguration.ApplicationCertificate.OpenStore());
                TestUtils.CleanupTrustList(Config.SecurityConfiguration.TrustedIssuerCertificates.OpenStore());
                TestUtils.CleanupTrustList(Config.SecurityConfiguration.TrustedPeerCertificates.OpenStore());
                TestUtils.CleanupTrustList(Config.SecurityConfiguration.RejectedCertificateStore.OpenStore());

                Config = await Load(Application, basePort).ConfigureAwait(false);
            }

            // check the application certificate.
            bool haveAppCertificate = await Application.CheckApplicationInstanceCertificate(true, 0).ConfigureAwait(false);

            if (!haveAppCertificate)
            {
                throw new Exception("Application instance certificate invalid!");
            }

            if (!Config.SecurityConfiguration.AutoAcceptUntrustedCertificates)
            {
                Config.CertificateValidator.CertificateValidation += new CertificateValidationEventHandler(CertificateValidator_CertificateValidation);
            }

            // get the DatabaseStorePath configuration parameter.
            GlobalDiscoveryServerConfiguration gdsConfiguration = Config.ParseExtension <GlobalDiscoveryServerConfiguration>();
            string databaseStorePath = Utils.ReplaceSpecialFolderNames(gdsConfiguration.DatabaseStorePath);

            if (clean)
            {
                // clean up database
                if (File.Exists(databaseStorePath))
                {
                    File.Delete(databaseStorePath);
                }

                // clean up GDS stores
                TestUtils.DeleteDirectory(gdsConfiguration.AuthoritiesStorePath);
                TestUtils.DeleteDirectory(gdsConfiguration.ApplicationCertificatesStorePath);
                foreach (var group in gdsConfiguration.CertificateGroups)
                {
                    TestUtils.DeleteDirectory(group.BaseStorePath);
                }
            }

            var database = JsonApplicationsDatabase.Load(databaseStorePath);

            // start the server.
            m_server = new GlobalDiscoverySampleServer(
                database,
                database,
                new CertificateGroup());
            await Application.Start(m_server).ConfigureAwait(false);

            ServerState serverState = Server.GetStatus().State;

            if (serverState != ServerState.Running)
            {
                throw new ServiceResultException("Server failed to start");
            }
        }
示例#14
0
 public OpcClient(string serverUrl)
 {
     m_serverUrl   = serverUrl;
     m_application = ApplicationInstance.Default;
 }
    public void SubscripeToOpcUaServer(string OpcUaEndpoint, List <string> NoteIdList)
    {
        var config = new ApplicationConfiguration()
        {
            ApplicationName       = "OpcUaClientconifg",
            ApplicationUri        = Utils.Format(@"urn:{0}:OpcUaClient", System.Net.Dns.GetHostName()),
            ApplicationType       = ApplicationType.Client,
            SecurityConfiguration = new SecurityConfiguration
            {
                ApplicationCertificate = new CertificateIdentifier {
                    StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\MachineDefault", SubjectName = Utils.Format(@"CN={0}, DC={1}", "MyHomework", System.Net.Dns.GetHostName())
                },
                TrustedIssuerCertificates = new CertificateTrustList {
                    StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\UA Certificate Authorities"
                },
                TrustedPeerCertificates = new CertificateTrustList {
                    StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\UA Applications"
                },
                RejectedCertificateStore = new CertificateTrustList {
                    StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\RejectedCertificates"
                },
                AutoAcceptUntrustedCertificates = true,
                AddAppCertToTrustedStore        = true,
                RejectSHA1SignedCertificates    = false,
                MinimumCertificateKeySize       = 1024
            },
            TransportConfigurations = new TransportConfigurationCollection(),
            TransportQuotas         = new TransportQuotas {
                OperationTimeout = 15000
            },
            ClientConfiguration = new ClientConfiguration {
                DefaultSessionTimeout = 60000
            },
            TraceConfiguration = new TraceConfiguration()
        };


        config.Validate(ApplicationType.Client).GetAwaiter().GetResult();
        if (config.SecurityConfiguration.AutoAcceptUntrustedCertificates)
        {
            config.CertificateValidator.CertificateValidation += (s, e) => { e.Accept = (e.Error.StatusCode == StatusCodes.BadCertificateUntrusted); };
        }


        var application = new ApplicationInstance
        {
            ApplicationName          = "OpcUaClient",
            ApplicationType          = ApplicationType.Client,
            ApplicationConfiguration = config
        };

        application.CheckApplicationInstanceCertificate(false, 2048).GetAwaiter().GetResult();


        var selectedEndpoint = CoreClientUtils.SelectEndpoint(OpcUaEndpoint, useSecurity: false, operationTimeout: 15000); //"opc.tcp://141.60.104.13:4840"


        session = Session.Create(config, new ConfiguredEndpoint(null, selectedEndpoint, EndpointConfiguration.Create(config)), false, "", 60000, null, null).GetAwaiter().GetResult();
        {
            ReferenceDescriptionCollection refs;
            Byte[] cp;
            session.Browse(null, null, ObjectIds.ObjectsFolder, 0u, BrowseDirection.Forward, ReferenceTypeIds.HierarchicalReferences, true, (uint)NodeClass.Variable | (uint)NodeClass.Object | (uint)NodeClass.Method, out cp, out refs);
            foreach (var rd in refs)
            {
                ReferenceDescriptionCollection nextRefs;
                byte[] nextCp;
                session.Browse(null, null, ExpandedNodeId.ToNodeId(rd.NodeId, session.NamespaceUris), 0u, BrowseDirection.Forward, ReferenceTypeIds.HierarchicalReferences, true, (uint)NodeClass.Variable | (uint)NodeClass.Object | (uint)NodeClass.Method, out nextCp, out nextRefs);
            }

            var subscription = new Subscription(session.DefaultSubscription)
            {
                PublishingInterval = 1000
            };


            list = new List <MonitoredItem>();
            foreach (var item in NoteIdList)
            {
                var monitoredItem = new MonitoredItem(subscription.DefaultItem)
                {
                    StartNodeId = item
                };

                list.Add(monitoredItem);
            }
            subscription.AddItems(list);
            session.AddSubscription(subscription);
            subscription.Create();
        }
    }
示例#16
0
            public void InitializeOPCUAClient()
            {
                //Console.WriteLine("Step 1 - Create application configuration and certificate.");
                var config = new ApplicationConfiguration()
                {
                    ApplicationName       = MyApplicationName,
                    ApplicationUri        = Utils.Format(@"urn:{0}:" + MyApplicationName + "", ServerAddress),
                    ApplicationType       = ApplicationType.Client,
                    SecurityConfiguration = new SecurityConfiguration
                    {
                        ApplicationCertificate = new CertificateIdentifier {
                            StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\MachineDefault", SubjectName = Utils.Format(@"CN={0}, DC={1}", MyApplicationName, ServerAddress)
                        },
                        TrustedIssuerCertificates = new CertificateTrustList {
                            StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\UA Certificate Authorities"
                        },
                        TrustedPeerCertificates = new CertificateTrustList {
                            StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\UA Applications"
                        },
                        RejectedCertificateStore = new CertificateTrustList {
                            StoreType = @"Directory", StorePath = @"%CommonApplicationData%\OPC Foundation\CertificateStores\RejectedCertificates"
                        },
                        AutoAcceptUntrustedCertificates = true,
                        AddAppCertToTrustedStore        = true
                    },
                    TransportConfigurations = new TransportConfigurationCollection(),
                    TransportQuotas         = new TransportQuotas {
                        OperationTimeout = 15000
                    },
                    ClientConfiguration = new ClientConfiguration {
                        DefaultSessionTimeout = 60000
                    },
                    TraceConfiguration = new TraceConfiguration()
                };

                config.Validate(ApplicationType.Client).GetAwaiter().GetResult();
                if (config.SecurityConfiguration.AutoAcceptUntrustedCertificates)
                {
                    config.CertificateValidator.CertificateValidation += (s, e) => { e.Accept = (e.Error.StatusCode == StatusCodes.BadCertificateUntrusted); };
                }
                var application = new ApplicationInstance
                {
                    ApplicationName          = MyApplicationName,
                    ApplicationType          = ApplicationType.Client,
                    ApplicationConfiguration = config
                };

                application.CheckApplicationInstanceCertificate(false, 2048).GetAwaiter().GetResult();
                //string serverAddress = Dns.GetHostName();
                string serverAddress    = ServerAddress;;
                var    selectedEndpoint = CoreClientUtils.SelectEndpoint("opc.tcp://" + serverAddress + ":" + ServerPortNumber + "", useSecurity: SecurityEnabled, operationTimeout: 15000);

                // Console.WriteLine($"Step 2 - Create a session with your server: {selectedEndpoint.EndpointUrl} ");
                OPCSession = Session.Create(config, new ConfiguredEndpoint(null, selectedEndpoint, EndpointConfiguration.Create(config)), false, "", 60000, null, null).GetAwaiter().GetResult();
                {
                    //Console.WriteLine("Step 4 - Create a subscription. Set a faster publishing interval if you wish.");
                    var subscription = new Subscription(OPCSession.DefaultSubscription)
                    {
                        PublishingInterval = 1000
                    };
                    //Console.WriteLine("Step 5 - Add a list of items you wish to monitor to the subscription.");
                    var list = new List <MonitoredItem> {
                    };
                    //list.Add(new MonitoredItem(subscription.DefaultItem) { DisplayName = "M0404.CPU945.iBatchOutput", StartNodeId = "ns=2;s=M0404.CPU945.iBatchOutput" });
                    list.Add(new MonitoredItem(subscription.DefaultItem)
                    {
                        DisplayName = "ServerStatusCurrentTime", StartNodeId = "i=2258"
                    });
                    foreach (KeyValuePair <string, TagClass> td in TagList)
                    {
                        list.Add(new MonitoredItem(subscription.DefaultItem)
                        {
                            DisplayName = td.Value.DisplayName, StartNodeId = "ns=" + OPCNameSpace + ";s=" + td.Value.NodeID + ""
                        });
                    }
                    list.ForEach(i => i.Notification += OnTagValueChange);
                    subscription.AddItems(list);
                    //Console.WriteLine("Step 6 - Add the subscription to the session.");
                    OPCSession.AddSubscription(subscription);
                    subscription.Create();
                }
            }
示例#17
0
 protected void btnAddContent_Click(object sender, EventArgs e)
 {
     Session["ContentID"] = 1;
     Response.Redirect("Content.aspx", false);
     ApplicationInstance.CompleteRequest();
 }
示例#18
0
        /// <summary>
        /// Constructors method
        /// </summary>
        public OpcUaClient()
        {
            var certificateValidator = new CertificateValidator();

            certificateValidator.CertificateValidation += (sender, eventArgs) =>
            {
                if (ServiceResult.IsGood(eventArgs.Error))
                {
                    eventArgs.Accept = true;
                }
                else if ((eventArgs.Error.StatusCode.Code == StatusCodes.BadCertificateUntrusted) && true)
                {
                    eventArgs.Accept = true;
                }
                else
                {
                    throw new Exception(string.Format("Failed to validate certificate with error code {0}: {1}", eventArgs.Error.Code, eventArgs.Error.AdditionalInfo));
                }
            };

            // Build the application configuration
            application = new ApplicationInstance
            {
                ApplicationType          = ApplicationType.Client,
                ConfigSectionName        = OpcUaName,
                ApplicationConfiguration = new ApplicationConfiguration
                {
                    ApplicationUri       = "",
                    ApplicationName      = OpcUaName,
                    ApplicationType      = ApplicationType.Client,
                    CertificateValidator = certificateValidator,
                    ServerConfiguration  = new ServerConfiguration
                    {
                        MaxSubscriptionCount     = 100,
                        MaxMessageQueueSize      = 100,
                        MaxNotificationQueueSize = 100,
                        MaxPublishRequestCount   = 100
                    },
                    SecurityConfiguration = new SecurityConfiguration
                    {
                        AutoAcceptUntrustedCertificates = true,
                    },
                    TransportQuotas = new TransportQuotas
                    {
                        OperationTimeout      = 600000,
                        MaxStringLength       = 1048576,
                        MaxByteStringLength   = 1048576,
                        MaxArrayLength        = 65535,
                        MaxMessageSize        = 4194304,
                        MaxBufferSize         = 65535,
                        ChannelLifetime       = 600000,
                        SecurityTokenLifetime = 3600000
                    },
                    ClientConfiguration = new ClientConfiguration
                    {
                        DefaultSessionTimeout   = 60000,
                        MinSubscriptionLifetime = 10000
                    },
                    DisableHiResClock = true
                }
            };

            // Assign a application certificate (when specified)
            // if (ApplicationCertificate != null)
            //    application.ApplicationConfiguration.SecurityConfiguration.ApplicationCertificate = new CertificateIdentifier(_options.ApplicationCertificate);


            m_configuration = application.ApplicationConfiguration;
        }
示例#19
0
        public NcStartApplicationInstancesResponse StartApplicationInstances(NcStartApplicationInstancesRequest request)
        {
            Log.Info(this, "StartApplicationInstances()");

            try {
                Application app = Database.Applications.Where(x => x.Id == request.ApplicationId).FirstOrDefault();
                if (app != null)
                {
                    Tenant tenant = null;
                    if (string.IsNullOrEmpty(request.TenantName))
                    {
                        throw new MonoscapeException("Tenant name should be specified");
                    }
                    else
                    {
                        tenant = app.Tenants.Where(x => x.Name.Equals(request.TenantName)).FirstOrDefault();
                        if (tenant == null)
                        {
                            throw new MonoscapeException("Tenant " + request.TenantName + " not found");
                        }
                    }

                    List <ApplicationInstance>          instancesStarted = new List <ApplicationInstance> ();
                    NcStartApplicationInstancesResponse response         = new NcStartApplicationInstancesResponse();
                    for (int i = 0; i < request.NumberOfInstances; i++)
                    {
                        // Extract application to a new folder
                        int port = ExtractApplicationPackage(app, tenant.Name);
                        // Start a web server instance
                        ApplicationInstance instance = StartWebServer(app, tenant, port);
                        if (instance != null)
                        {
                            // Add to database
                            if (app.ApplicationInstances == null)
                            {
                                app.ApplicationInstances = new List <ApplicationInstance> ();
                            }
                            app.ApplicationInstances.Add(instance);
                            // Track instances started
                            instancesStarted.Add(instance.Clone());
                            // Add server url to the response
                            if (response.Urls == null)
                            {
                                response.Urls = new List <string> ();
                            }
                            response.Urls.Add(instance.Url);
                        }
                    }

                    response.ApplicationInstances = instancesStarted;
                    return(response);
                }
                else
                {
                    throw new MonoscapeException("Application not found");
                }
            }
            catch (Exception e) {
                Log.Error(this, e);
                throw e;
            }
        }
示例#20
0
        public async Task LoadConfiguration(string pkiRoot = null)
        {
            Application = new ApplicationInstance {
                ApplicationName = typeof(T).Name,
                ApplicationType = ApplicationType.Server
            };

            // create the application configuration. Use temp path for cert stores.
            pkiRoot = pkiRoot ?? Path.GetTempPath() + Path.GetRandomFileName();
            var endpointUrl  = $"{UriScheme}://localhost:0/" + typeof(T).Name;
            var serverConfig = Application.Build(
                "urn:localhost:UA:" + typeof(T).Name,
                "uri:opcfoundation.org:" + typeof(T).Name)
                               .AsServer(
                new string[] {
                endpointUrl
            });

            if (SecurityNone)
            {
                serverConfig.AddUnsecurePolicyNone();
            }
            if (endpointUrl.StartsWith(Utils.UriSchemeHttps, StringComparison.InvariantCultureIgnoreCase))
            {
                serverConfig.AddPolicy(MessageSecurityMode.SignAndEncrypt, SecurityPolicies.Basic256Sha256);
            }
            else if (endpointUrl.StartsWith(Utils.UriSchemeOpcTcp, StringComparison.InvariantCultureIgnoreCase))
            {
                // add deprecated policies for opc.tcp tests
                serverConfig.AddPolicy(MessageSecurityMode.Sign, SecurityPolicies.Basic128Rsa15)
                .AddPolicy(MessageSecurityMode.Sign, SecurityPolicies.Basic256)
                .AddPolicy(MessageSecurityMode.SignAndEncrypt, SecurityPolicies.Basic128Rsa15)
                .AddPolicy(MessageSecurityMode.SignAndEncrypt, SecurityPolicies.Basic256)
                .AddSignPolicies()
                .AddSignAndEncryptPolicies();
            }

            if (OperationLimits)
            {
                serverConfig.SetOperationLimits(new OperationLimits()
                {
                    MaxNodesPerBrowse        = 2500,
                    MaxNodesPerRead          = 250,
                    MaxNodesPerWrite         = 250,
                    MaxNodesPerMethodCall    = 500,
                    MaxMonitoredItemsPerCall = 1000,
                    MaxNodesPerTranslateBrowsePathsToNodeIds = 1000
                });
            }

            if (ReverseConnectTimeout != 0)
            {
                serverConfig.SetReverseConnect(new ReverseConnectServerConfiguration()
                {
                    ConnectInterval = ReverseConnectTimeout / 4,
                    ConnectTimeout  = ReverseConnectTimeout,
                    RejectTimeout   = ReverseConnectTimeout / 4
                });
            }

            Config = await serverConfig.AddSecurityConfiguration(
                "CN=" + typeof(T).Name + ", C=US, S=Arizona, O=OPC Foundation, DC=localhost",
                pkiRoot)
                     .SetAutoAcceptUntrustedCertificates(AutoAccept)
                     .Create().ConfigureAwait(false);
        }
        private static void RunMethodImpl(ApplicationInstance applicationInstance, MethodInfo method, TestInjectorSettings testInjectorSettings)
        {
            if (!method.IsStatic)
                throw new InvalidOperationException("Method must be static");

            new TestInjectorClient().RunMethod(applicationInstance.Process,
                                               method.DeclaringType,
                                               method.Name,
                                               testInjectorSettings ?? TestInjectorSettings.Default);
        }
示例#22
0
文件: UaClient.cs 项目: mrvluiz/h-opc
        /// <summary>
        /// Crappy method to initialize the session. I don't know what many of these things do, sincerely.
        /// </summary>
        private Session InitializeSession(Uri url)
        {
            var certificateValidator = new CertificateValidator();

            certificateValidator.CertificateValidation += (sender, eventArgs) =>
            {
                if (ServiceResult.IsGood(eventArgs.Error))
                {
                    eventArgs.Accept = true;
                }
                else if ((eventArgs.Error.StatusCode.Code == StatusCodes.BadCertificateUntrusted) && _options.AutoAcceptUntrustedCertificates)
                {
                    eventArgs.Accept = true;
                }
                else
                {
                    throw new OpcException(string.Format("Failed to validate certificate with error code {0}: {1}", eventArgs.Error.Code, eventArgs.Error.AdditionalInfo), eventArgs.Error.StatusCode);
                }
            };

            // Build the application configuration
            var appInstance = new ApplicationInstance
            {
                ApplicationType          = ApplicationType.Client,
                ConfigSectionName        = _options.ConfigSectionName,
                ApplicationConfiguration = new ApplicationConfiguration
                {
                    ApplicationUri        = url.ToString(),
                    ApplicationName       = _options.ApplicationName,
                    ApplicationType       = ApplicationType.Client,
                    CertificateValidator  = certificateValidator,
                    SecurityConfiguration = new SecurityConfiguration
                    {
                        AutoAcceptUntrustedCertificates = _options.AutoAcceptUntrustedCertificates
                    },
                    TransportQuotas = new TransportQuotas
                    {
                        OperationTimeout      = 600000,
                        MaxStringLength       = 1048576,
                        MaxByteStringLength   = 1048576,
                        MaxArrayLength        = 65535,
                        MaxMessageSize        = 4194304,
                        MaxBufferSize         = 65535,
                        ChannelLifetime       = 300000,
                        SecurityTokenLifetime = 3600000
                    },
                    ClientConfiguration = new ClientConfiguration
                    {
                        DefaultSessionTimeout   = 60000,
                        MinSubscriptionLifetime = 10000
                    },
                    DisableHiResClock = true
                }
            };

            // Assign a application certificate (when specified)
            if (_options.ApplicationCertificate != null)
            {
                appInstance.ApplicationConfiguration.SecurityConfiguration.ApplicationCertificate = new CertificateIdentifier(_options.ApplicationCertificate);
            }

            // Find the endpoint to be used
            var endpoints = ClientUtils.SelectEndpoint(url, _options.UseMessageSecurity);

            // Create the OPC session:
            var session = Session.Create(
                configuration: appInstance.ApplicationConfiguration,
                endpoint: new ConfiguredEndpoint(
                    collection: null,
                    description: endpoints,
                    configuration: EndpointConfiguration.Create(applicationConfiguration: appInstance.ApplicationConfiguration)),
                updateBeforeConnect: false,
                checkDomain: false,
                sessionName: _options.SessionName,
                sessionTimeout: _options.SessionTimeout,
                identity: null,
                preferredLocales: new string[] { });

            return(session);
        }
示例#23
0
 protected UaSource(ApplicationInstance applicationInstance) => this.applicationInstance = applicationInstance;
示例#24
0
 public OpcClient(string serverUrl, ApplicationInstance application)
 {
     m_serverUrl   = serverUrl;
     m_application = application;
 }
示例#25
0
        public void opcUaServerInit()
        {
            string storePath = AppContext.BaseDirectory;
            var    config    = new ApplicationConfiguration()
            {
                ApplicationName       = "Axiu-Opcua",
                ApplicationUri        = Utils.Format(@"urn:{0}:Axiu-Opcua", System.Net.Dns.GetHostName()),
                ApplicationType       = ApplicationType.Client,
                SecurityConfiguration = new SecurityConfiguration
                {
                    ApplicationCertificate = new CertificateIdentifier {
                        StoreType = @"Directory", StorePath = Path.Combine(storePath, @"OPC Foundation/CertificateStores/MachineDefault"), SubjectName = Utils.Format(@"CN={0}, DC={1}", "Axiu-Opcua", System.Net.Dns.GetHostName())
                    },
                    TrustedIssuerCertificates = new CertificateTrustList {
                        StoreType = @"Directory", StorePath = Path.Combine(storePath, @"OPC Foundation/CertificateStores/UA Certificate Authorities")
                    },
                    TrustedPeerCertificates = new CertificateTrustList {
                        StoreType = @"Directory", StorePath = Path.Combine(storePath, @"OPC Foundation/CertificateStores/UA Applications")
                    },
                    RejectedCertificateStore = new CertificateTrustList {
                        StoreType = @"Directory", StorePath = Path.Combine(storePath, @"OPC Foundation/CertificateStores/RejectedCertificates")
                    },
                    AutoAcceptUntrustedCertificates = true,
                    AddAppCertToTrustedStore        = true
                },
                TransportConfigurations = new TransportConfigurationCollection(),
                TransportQuotas         = new TransportQuotas {
                    OperationTimeout = 15000
                },
                ClientConfiguration = new ClientConfiguration {
                    DefaultSessionTimeout = 60000
                },
                TraceConfiguration = new TraceConfiguration()
            };

            config.Validate(ApplicationType.Client).GetAwaiter().GetResult();
            if (config.SecurityConfiguration.AutoAcceptUntrustedCertificates)
            {
                config.CertificateValidator.CertificateValidation += (s, e) => { e.Accept = (e.Error.StatusCode == StatusCodes.BadCertificateUntrusted); };
            }
            var application = new ApplicationInstance
            {
                ApplicationName          = "Axiu-Opcua",
                ApplicationType          = ApplicationType.Client,
                ApplicationConfiguration = config
            };

            application.CheckApplicationInstanceCertificate(false, 2048).GetAwaiter().GetResult();
            var selectedEndpoint = CoreClientUtils.SelectEndpoint(url, useSecurity: true, int.MaxValue);

            Console.WriteLine("配置已准备完毕,即将打开链接会话...");
            _session = Session.Create(config, new ConfiguredEndpoint(null, selectedEndpoint, EndpointConfiguration.Create(config)),
                                      false, "", int.MaxValue, null, null).GetAwaiter().GetResult();


            //   ReadNodeList("ns=3;s=\"上位通讯\"");
            //   AddSubscrip(null);

            Console.WriteLine("完成链接会话...");
            SubscribeToDataChanges();
        }
示例#26
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ServerPushConfigurationClient"/> class.
 /// </summary>
 /// <param name="application">The application.</param>
 public ServerPushConfigurationClient(ApplicationInstance application)
 {
     m_application = application;
 }
示例#27
0
 /// <summary>
 /// Sets the application instance for this view model.
 /// </summary>
 /// <param name="applicationInstance">The application instance.</param>
 internal virtual void SetApplicationInstance(ApplicationInstance applicationInstance)
 {
 }
示例#28
0
        protected override void Execute()
        {
            var projects = _controllers.TranscreateController.GetSelectedProjects();

            if (projects?.Count != 1)
            {
                Enabled = false;
                return;
            }

            var project = projects[0];

            if (project is BackTranslationProject)
            {
                return;
            }

            var studioProject = _controllers.ProjectsController.GetProjects()
                                .FirstOrDefault(a => a.GetProjectInfo().Id.ToString() == project.Id);

            if (studioProject == null)
            {
                return;
            }

            var studioProjectInfo = studioProject.GetProjectInfo();


            var backTranslationsFolder = Path.Combine(studioProjectInfo.LocalProjectFolder, "BackProjects");

            if (Directory.Exists(backTranslationsFolder))
            {
                var message01 = "The Back-Translations folder is not empty."
                                + Environment.NewLine + Environment.NewLine
                                + "'" + backTranslationsFolder + "'"
                                + Environment.NewLine + Environment.NewLine;
                var message02 = "Do you want to proceed and delete this folder?";

                var response = MessageBox.Show(message01 + message02, PluginResources.Plugin_Name,
                                               MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (response != DialogResult.Yes)
                {
                    return;
                }

                TryDeleteDirectory(backTranslationsFolder);
            }


            var taskContexts = new List <TaskContext>();

            var progressSettings = new ProgressDialogSettings(ApplicationInstance.GetActiveForm(), true, true, true);
            var result           = ProgressDialog.Execute("Create Back-Translation Projects", () =>
            {
                ProgressDialog.Current.Report(0, "Reading language files...");

                var dateTimeStamp         = DateTime.UtcNow;
                var dataTimeStampToString = DateTimeStampToString(dateTimeStamp);
                var workFlowPath          = GetPath(studioProjectInfo.LocalProjectFolder, "WorkFlow");
                var workingActionPath     = GetPath(workFlowPath, "Convert");
                var workingFolder         = GetPath(workingActionPath, dataTimeStampToString);

                var exportOptions = new ExportOptions();
                exportOptions.IncludeBackTranslations = true;
                exportOptions.IncludeTranslations     = true;
                exportOptions.CopySourceToTarget      = false;

                var importOptions = new ImportOptions();
                importOptions.OverwriteTranslations      = true;
                importOptions.OriginSystem               = "Transcreate Automation";
                importOptions.StatusTranslationUpdatedId = string.Empty;

                var analysisBands = _projectAutomationService.GetAnalysisBands(studioProject);

                var sdlxliffReader = new SdlxliffReader(_segmentBuilder, exportOptions, analysisBands);
                var sdlxliffWriter = new SdlxliffWriter(_segmentBuilder, importOptions, analysisBands);
                var xliffWriter    = new XliffWriter(Enumerators.XLIFFSupport.xliff12sdl);

                // Read the SDLXLIFF data
                var fileDataList = GetFileDataList(project, studioProjectInfo, sdlxliffReader);
                var filesWithEmptyTranslations = fileDataList.Count(a => a.HasEmptyTranslations);
                if (filesWithEmptyTranslations > 0)
                {
                    var message01 = string.Format(PluginResources.Found_empty_translations_in_0_files,
                                                  filesWithEmptyTranslations)
                                    + Environment.NewLine + Environment.NewLine;
                    var message02 = PluginResources.Proceed_and_copy_source_to_target_for_empty_translations;

                    var response = MessageBox.Show(message01 + message02, PluginResources.Plugin_Name,
                                                   MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (response != DialogResult.Yes)
                    {
                        return;
                    }
                }

                ProgressDialog.Current.ProgressBarIsIndeterminate = false;
                decimal maximum = project.TargetLanguages.Count;
                decimal current = 0;

                foreach (var targetLanguage in project.TargetLanguages)
                {
                    if (ProgressDialog.Current.CheckCancellationPending())
                    {
                        ProgressDialog.Current.ThrowIfCancellationPending();
                    }

                    current++;
                    var progress = current / maximum * 100;
                    ProgressDialog.Current.Report((int)progress, "Language: " + targetLanguage.CultureInfo.DisplayName);


                    var sourceFiles    = new List <string>();
                    var languageFolder = GetPath(workingFolder, targetLanguage.CultureInfo.Name);

                    var targetFiles = project.ProjectFiles.Where(a =>
                                                                 string.Compare(a.TargetLanguage, targetLanguage.CultureInfo.Name,
                                                                                StringComparison.CurrentCultureIgnoreCase) == 0);

                    var languageFileData = new List <FileData>();
                    foreach (var projectFile in targetFiles)
                    {
                        var fileData =
                            fileDataList.FirstOrDefault(a => a.Data.DocInfo.DocumentId == projectFile.FileId);
                        if (fileData == null)
                        {
                            continue;
                        }

                        SwitchSourceWithTargetSegments(fileData);

                        var xliffFolder   = GetPath(languageFolder, projectFile.Path);
                        var xliffFilePath = Path.Combine(xliffFolder,
                                                         projectFile.Name.Substring(0, projectFile.Name.Length - ".sdlxliff".Length));

                        // Write the XLIFF file
                        var success = xliffWriter.WriteFile(fileData.Data, xliffFilePath, true);
                        if (!success)
                        {
                            throw new Exception(string.Format(
                                                    PluginResources.Unexpected_error_while_converting_the_file, xliffFilePath));
                        }

                        sourceFiles.Add(xliffFilePath);
                        languageFileData.Add(fileData);
                    }

                    var iconPath = GetBackTranslationIconPath();

                    var newStudioProject = _projectAutomationService.CreateBackTranslationProject(
                        studioProject, targetLanguage.CultureInfo.Name, iconPath, sourceFiles, "BT");

                    _projectAutomationService.RunPretranslationWithoutTm(newStudioProject);

                    var taskContext = CreateBackTranslationTaskContext(newStudioProject, languageFileData,
                                                                       studioProjectInfo.LocalProjectFolder, sdlxliffReader, sdlxliffWriter, xliffWriter);

                    taskContext.Completed = true;
                    taskContexts.Add(taskContext);
                }
            }, progressSettings);

            if (result.Cancelled || result.OperationFailed)
            {
                TryDeleteDirectory(backTranslationsFolder);

                var message = result.Cancelled ? "Process cancelled by user." : result.Error?.Message;
                MessageBox.Show(message, PluginResources.Plugin_Name);
                return;
            }

            foreach (var taskContext in taskContexts)
            {
                CleanupProjectSettings(taskContext.FileBasedProject);

                ActivateProject(taskContext.FileBasedProject);
                _projectAutomationService.RemoveLastReportOfType("Translate");

                var reports = _controllers.TranscreateController.CreateHtmlReports(taskContext, taskContext.FileBasedProject, taskContext.Project);
                _controllers.TranscreateController.ReportsController.AddReports(_controllers.TranscreateController.ClientId, reports);

                _controllers.TranscreateController.UpdateBackTranslationProjectData(project, taskContext);
            }

            _controllers.TranscreateController.InvalidateProjectsContainer();

            Enabled = false;
        }
示例#29
0
        public static void Main(string[] args)
        {
            ApplicationInstance.MessageDlg = new ApplicationMessageDlg();
            ApplicationInstance application = new ApplicationInstance();

            application.ApplicationName   = "UA AMQP Publisher";
            application.ApplicationType   = ApplicationType.ClientAndServer;
            application.ConfigSectionName = "Opc.Ua.Publisher";

            try
            {
                // load the application configuration.
                Task <ApplicationConfiguration> task = application.LoadApplicationConfiguration(false);
                task.Wait();
                m_configuration = task.Result;

                // check the application certificate.
                Task <bool> task2 = application.CheckApplicationInstanceCertificate(false, 0);
                task2.Wait();
                bool certOK = task2.Result;
                if (!certOK)
                {
                    throw new Exception("Application instance certificate invalid!");
                }

                // start the server.
                Task task3 = application.Start(new SampleServer());
                task3.Wait();

                // get list of cached endpoints.
                m_endpoints = m_configuration.LoadCachedEndpoints(true);
                m_endpoints.DiscoveryUrls = m_configuration.ClientConfiguration.WellKnownDiscoveryUrls;

                // start publishers.
                m_publishers = AmqpConnectionCollection.Load(m_configuration);
                foreach (AmqpConnection publisher in m_publishers)
                {
                    Task t = publisher.OpenAsync();
                }

                m_MonitoredItem_Notification = new MonitoredItemNotificationEventHandler(MonitoredItem_Notification);

                // connect to a server.
                EndpointConnect();

                // publish preconfigured nodes
                PublishedNodesCollection nodes = PublishedNodesCollection.Load(m_configuration);
                foreach (NodeId node in nodes)
                {
                    CreateMonitoredItem(node);
                }

                Console.WriteLine("Publisher started. Press any key to exit...");
                Console.ReadKey(true);

                if (m_publishers != null)
                {
                    foreach (var publisher in m_publishers)
                    {
                        publisher.Close();
                    }
                }

                if (m_session != null)
                {
                    m_session.Close();
                }
            }
            catch (ServiceResultException ex)
            {
                Utils.Trace("ServiceResultException:" + ex.Message);
                Console.WriteLine("Exception: {0}", ex.Message);
                Console.WriteLine("Press any key to exit...");
                Console.ReadKey(true);
            }
        }
示例#30
0
    protected void GenerateWidget(object sender, EventArgs e)
    {
        div_generated.Visible = false;

        if (tb_digital_reader_href.Text.Trim() != "" &&
            tb_pdf_href.Text.Trim() != "" &&
            tb_thumbnail_href.Text.Trim() != "" &&
            tb_website_href.Text.Trim() != "" &&
            tb_thumbnail_src.Text.Trim() != "")
        {
            String g_widget_code = Util.ReadTextFile("widget", @"MailTemplates\Widgets\");
            g_widget_code = g_widget_code.Replace("%brochure_href%", tb_thumbnail_href.Text.Trim());
            g_widget_code = g_widget_code.Replace("%brochure_src%", tb_thumbnail_src.Text.Trim());
            g_widget_code = g_widget_code.Replace("%digital_reader_href%", tb_digital_reader_href.Text.Trim());
            g_widget_code = g_widget_code.Replace("%website_href%", tb_website_href.Text.Trim());
            g_widget_code = g_widget_code.Replace("%pdf_href%", tb_pdf_href.Text.Trim());
            g_widget_code = g_widget_code.Replace("%widget_title%", dd_feature.Text.Trim());

            lit_generated_widget.Text = g_widget_code;
            tb_source.Text            = g_widget_code;

            div_generated.Visible = true;

            // Save widget .html file
            String short_month_name = dd_issues.SelectedItem.Text.Substring(0, 3) + dd_issues.SelectedItem.Text.Substring(dd_issues.SelectedItem.Text.IndexOf(" ") + 3);
            String feature_name     = Util.SanitiseStringForFilename(dd_feature.SelectedItem.Text.Replace(@"/", "-")).Replace(" ", String.Empty);

            String file_name = "w3-"
                               + dd_feature_region.Text.Substring(0, 2).ToUpper() + "-"
                               + short_month_name + "-"
                               + feature_name;
            //+"-"
            //+ DateTime.Now.ToString().Replace(":", "-").Replace(@"/", "-") + "-"
            //+ User.Identity.Name;

            using (TextWriter tsw = new StreamWriter(Util.path + @"\MailTemplates\Widgets\" + file_name + ".html", false)) //StreamWriter sw = File.AppendText()
            {
                tsw.WriteLine(g_widget_code);
            }
            hf_file_name.Value = file_name;

            // Download .html file
            if (cb_download.Checked)
            {
                FileInfo file = new FileInfo(Util.path + @"\MailTemplates\Widgets\" + file_name + ".html");
                if (file.Exists)
                {
                    try
                    {
                        Response.Clear();
                        Response.AddHeader("Content-Disposition", "attachment; filename=\"" + file.Name + "\"");
                        Response.AddHeader("Content-Length", file.Length.ToString());
                        Response.ContentType = "application/octet-stream";
                        Response.WriteFile(file.FullName);
                        Response.Flush();
                        ApplicationInstance.CompleteRequest();

                        Util.WriteLogWithDetails("Widget File '" + file_name + ".html' generated and downloaded.", "widgetgenerator_log");
                    }
                    catch
                    {
                        Util.PageMessage(this, "There was an error downloading the widget file. Please try again.");
                    }
                }
                else
                {
                    Util.PageMessage(this, "There was an error downloading the widget file. Please try again.");
                }
            }
            else
            {
                Util.WriteLogWithDetails("Widget File '" + file_name + ".html' generated.", "widgetgenerator_log");
            }
        }
        else
        {
            Util.PageMessage(this, "Specify all required fields!");
        }
    }
示例#31
0
    protected void Page_Load(object sender, EventArgs e)
    {
        #region Validating session
        if (Session["UserID"] == null || Session["IsStudent"] == null)
        {
            Response.Redirect("index.html", false);
            ApplicationInstance.CompleteRequest();
        }
        #endregion

        if (!IsPostBack)
        {
            if (Session["ScenarioID"] != null)
            {
                chkContents.Visible = false;
                fileImage.Enabled   = false;
                using (SqlConnection con = new SqlConnection())
                {
                    con.ConnectionString = ConfigurationManager.ConnectionStrings["CPDBCS"].ConnectionString;
                    SqlCommand cmd = new SqlCommand();
                    cmd.CommandText = "ShowScenario";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Clear();
                    cmd.Parameters.Add("@ScenarioID", SqlDbType.Int).Value = Convert.ToInt32(Session["ScenarioID"]);
                    cmd.Connection = con;
                    con.Open();
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataSet        ds = new DataSet();
                    da.Fill(ds, "getScenario");
                    if (ds.Tables["getScenario"].Rows.Count > 0)
                    {
                        txtName.Text     = ds.Tables["getScenario"].Rows[0]["Name"].ToString();
                        txtDetails.Text  = ds.Tables["getScenario"].Rows[0]["Details"].ToString();
                        txtwelcome.Text  = ds.Tables["getScenario"].Rows[0]["Welcome"].ToString();
                        txtlearnabt.Text = ds.Tables["getScenario"].Rows[0]["LearnAbout"].ToString();
                        txtDesc.Text     = ds.Tables["getScenario"].Rows[0]["Desciption"].ToString();
                        lstRAnking.Text  = ds.Tables["getScenario"].Rows[0]["Rank"].ToString();
                    }
                }
            }
            #region Bind contents to checkbox list
            using (SqlConnection con = new SqlConnection())
            {
                con.ConnectionString = ConfigurationManager.ConnectionStrings["CPDBCS"].ConnectionString;
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = "ShowContent";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Clear();
                cmd.Parameters.Add("@UserID", SqlDbType.Int).Value = Session["UserID"].ToString();
                cmd.Connection = con;
                con.Open();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet        ds = new DataSet();
                da.Fill(ds, "CreateScenario");
                if (ds.Tables["CreateScenario"].Rows.Count > 0)
                {
                    chkContents.DataSource     = ds.Tables["CreateScenario"];
                    chkContents.DataTextField  = "HeadingText";
                    chkContents.DataValueField = "ContentID";
                    chkContents.DataBind();
                }
                //SqlDataReader dr = cmd.ExecuteReader();
                //if (dr.Read())
                //{
                //    chkContents.DataSource = dr;
                //    chkContents.DataTextField = "HeadingText";
                //    chkContents.DataValueField = "ContentID";
                //    chkContents.DataBind();
                //}
            };
            #endregion
        }
    }
示例#32
0
        /// <summary>
        /// Main entry point.
        /// </summary>
        public static async Task Main(string[] args)
        {
            TextWriter output = Console.Out;

            output.WriteLine("OPC UA Console Reference Client");

            output.WriteLine("OPC UA library: {0} @ {1} -- {2}",
                             Utils.GetAssemblyBuildNumber(),
                             Utils.GetAssemblyTimestamp().ToString("G", CultureInfo.InvariantCulture),
                             Utils.GetAssemblySoftwareVersion());

            // The application name and config file names
            var applicationName   = "ConsoleReferenceClient";
            var configSectionName = "Quickstarts.ReferenceClient";
            var usage             = $"Usage: dotnet {applicationName}.dll [OPTIONS]";

            // command line options
            bool   showHelp         = false;
            bool   autoAccept       = false;
            bool   logConsole       = false;
            bool   appLog           = false;
            bool   renewCertificate = false;
            string password         = null;
            int    timeout          = Timeout.Infinite;
            string logFile          = null;

            Mono.Options.OptionSet options = new Mono.Options.OptionSet {
                usage,
                { "h|help", "show this message and exit", h => showHelp = h != null },
                { "a|autoaccept", "auto accept certificates (for testing only)", a => autoAccept = a != null },
                { "c|console", "log to console", c => logConsole = c != null },
                { "l|log", "log app output", c => appLog = c != null },
                { "p|password="******"optional password for private key", (string p) => password = p },
                { "r|renew", "renew application certificate", r => renewCertificate = r != null },
                { "t|timeout=", "timeout in seconds to exit application", (int t) => timeout = t * 1000 },
                { "logfile=", "custom file name for log output", l => { if (l != null)
                                                                        {
                                                                            logFile = l;
                                                                        }
                  } },
            };

            try
            {
                // parse command line and set options
                var extraArg = ConsoleUtils.ProcessCommandLine(output, args, options, ref showHelp, false);

                // connect Url?
                Uri serverUrl = new Uri("opc.tcp://localhost:62541/Quickstarts/ReferenceServer");
                if (!string.IsNullOrEmpty(extraArg))
                {
                    serverUrl = new Uri(extraArg);
                }

                // log console output to logger
                if (logConsole && appLog)
                {
                    output = new LogWriter();
                }

                // Define the UA Client application
                ApplicationInstance.MessageDlg = new ApplicationMessageDlg(output);
                CertificatePasswordProvider PasswordProvider = new CertificatePasswordProvider(password);
                ApplicationInstance         application      = new ApplicationInstance {
                    ApplicationName             = applicationName,
                    ApplicationType             = ApplicationType.Client,
                    ConfigSectionName           = configSectionName,
                    CertificatePasswordProvider = PasswordProvider
                };

                // load the application configuration.
                var config = await application.LoadApplicationConfiguration(silent : false);

                // override logfile
                if (logFile != null)
                {
                    var logFilePath = config.TraceConfiguration.OutputFilePath;
                    var filename    = Path.GetFileNameWithoutExtension(logFilePath);
                    config.TraceConfiguration.OutputFilePath = logFilePath.Replace(filename, logFile);
                    config.TraceConfiguration.DeleteOnLoad   = true;
                    config.TraceConfiguration.ApplySettings();
                }

                // setup the logging
                ConsoleUtils.ConfigureLogging(config, applicationName, logConsole, LogLevel.Information);

                // delete old certificate
                if (renewCertificate)
                {
                    await application.DeleteApplicationInstanceCertificate().ConfigureAwait(false);
                }

                // check the application certificate.
                bool haveAppCertificate = await application.CheckApplicationInstanceCertificate(false, minimumKeySize : 0).ConfigureAwait(false);

                if (!haveAppCertificate)
                {
                    throw new ErrorExitException("Application instance certificate invalid!", ExitCode.ErrorCertificate);
                }

                // wait for timeout or Ctrl-C
                var quitEvent = ConsoleUtils.CtrlCHandler();

                // connect to a server until application stopped
                bool     quit     = false;
                DateTime start    = DateTime.UtcNow;
                int      waitTime = int.MaxValue;
                do
                {
                    if (timeout > 0)
                    {
                        waitTime = timeout - (int)DateTime.UtcNow.Subtract(start).TotalMilliseconds;
                        if (waitTime <= 0)
                        {
                            break;
                        }
                    }

                    // create the UA Client object and connect to configured server.
                    using (UAClient uaClient = new UAClient(
                               application.ApplicationConfiguration, output, ClientBase.ValidateResponse)
                    {
                        AutoAccept = autoAccept
                    })
                    {
                        bool connected = await uaClient.ConnectAsync(serverUrl.ToString());

                        if (connected)
                        {
                            output.WriteLine("Connected! Ctrl-C to quit.");

                            // enable subscription transfer
                            uaClient.Session.TransferSubscriptionsOnReconnect = true;

                            // Run tests for available methods on reference server.
                            var samples = new ClientSamples(output, ClientBase.ValidateResponse);
                            samples.ReadNodes(uaClient.Session);
                            samples.WriteNodes(uaClient.Session);
                            samples.Browse(uaClient.Session);
                            samples.CallMethod(uaClient.Session);
                            samples.SubscribeToDataChanges(uaClient.Session, 120_000);

                            // Wait for some DataChange notifications from MonitoredItems
                            quit = quitEvent.WaitOne(timeout > 0 ? waitTime : 30_000);

                            uaClient.Disconnect();
                        }
                        else
                        {
                            output.WriteLine("Could not connect to server! Retry in 10 seconds or Ctrl-C to quit.");
                            quit = quitEvent.WaitOne(Math.Min(10_000, waitTime));
                        }
                    }
                } while (!quit);

                output.WriteLine("Client stopped.");
            }
            catch (Exception ex)
            {
                output.WriteLine(ex.Message);
            }
        }
示例#33
0
    protected void btnSave_Click(object sender, EventArgs e)
    {
        using (SqlConnection con = new SqlConnection())
        {
            try
            {
                #region Declaration
                int    isStudent = Convert.ToInt32(Session["IsStudent"]);
                string userID    = Session["UserID"].ToString();

                string image = null;
                if (fileImage.HasFile)
                {
                    image = DateTime.Now.ToString("yyyyMMddHHmmssfff").ToString() + ".jpg";
                    string filePath = "ScenarioImages/" + image;
                    fileImage.SaveAs(Server.MapPath(filePath));
                }

                int scenarioID = -1;
                if (Session["ScenarioID"] != null)
                {
                    scenarioID = Convert.ToInt32(Session["ScenarioID"]);
                }
                #endregion

                #region Saving parent content
                con.ConnectionString = ConfigurationManager.ConnectionStrings["CPDBCS"].ConnectionString;
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = "SaveScenario";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Clear();
                cmd.Parameters.Add("@ScenarioID", SqlDbType.Int).Value   = scenarioID;
                cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value     = txtName.Text;
                cmd.Parameters.Add("@Welcome", SqlDbType.VarChar).Value  = txtwelcome.Text;
                cmd.Parameters.Add("@LearnAbt", SqlDbType.VarChar).Value = txtlearnabt.Text;
                cmd.Parameters.Add("@Desc", SqlDbType.VarChar).Value     = txtDesc.Text;
                cmd.Parameters.Add("@Details", SqlDbType.VarChar).Value  = txtDetails.Text;
                if (lstRAnking.Text != null)
                {
                    cmd.Parameters.Add("@Rank", SqlDbType.VarChar).Value = lstRAnking.Text;
                }
                else
                {
                    cmd.Parameters.Add("@Rank", SqlDbType.VarChar).Value = "Low";
                }

                if (!string.IsNullOrEmpty(image))
                {
                    cmd.Parameters.Add("@Image", SqlDbType.VarChar).Value = image;
                }
                cmd.Parameters.Add("@IsCreatedByStudent", SqlDbType.Int).Value = isStudent;
                cmd.Parameters.Add("@CreatedBy", SqlDbType.Int).Value          = userID;
                cmd.Parameters.Add("@NewScenarioID", SqlDbType.VarChar, 50);
                cmd.Parameters["@NewScenarioID"].Direction = ParameterDirection.Output;
                cmd.Connection = con;
                con.Open();
                cmd.ExecuteNonQuery();
                string newScenarioID = cmd.Parameters["@NewScenarioID"].Value.ToString();
                #endregion

                #region Saving child content
                foreach (ListItem childContentID in chkContents.Items)
                {
                    int contentID = Convert.ToInt32(childContentID.Value);
                    int isDel     = 0;
                    if (!childContentID.Selected)
                    {
                        isDel = 1;
                    }
                    cmd.CommandText = "SaveScenarioContent";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Clear();
                    cmd.Parameters.Add("@ScenarioID", SqlDbType.Int).Value = newScenarioID;
                    cmd.Parameters.Add("@ContentID", SqlDbType.Int).Value  = contentID;
                    cmd.Parameters.Add("@IsDeleted", SqlDbType.Int).Value  = isDel;
                    cmd.Connection = con;
                    cmd.ExecuteNonQuery();
                }
                #endregion

                ScriptManager.RegisterClientScriptBlock(this, GetType(), "alert", "alert('Scenario saved successfully')", true);
                Response.Redirect("ShowScenarios.aspx", false);
                ApplicationInstance.CompleteRequest();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        };
    }
示例#34
0
    protected void gridStudent_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int rowIndex = Convert.ToInt32(e.CommandArgument);

        if (e.CommandName == "cmdDelete")
        {
            try
            {
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                cmd.Parameters.Clear();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "DELETE_STUDENT";
                cmd.Parameters.Add("@studentId", SqlDbType.Int).Value = Convert.ToInt32(e.CommandArgument);
                cmd.Connection = con;
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                if (con.State == ConnectionState.Open)
                {
                    con.Close();
                }
            }
            Response.Redirect("manageStudent.aspx", false);
            ApplicationInstance.CompleteRequest();
        }
        if (e.CommandName == "cmdSave")
        {
            try
            {
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                GridViewRow row         = gridStudent.Rows[rowIndex];
                string      studentId   = (row.FindControl("StuId") as HiddenField).Value;
                Boolean     IsAllowedit = (row.FindControl("chkSelect") as CheckBox).Checked;
                cmd.Parameters.Clear();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "UPDATE_STUDENT_Permission";
                cmd.Parameters.Add("@StudenttId", SqlDbType.Int).Value  = Convert.ToInt32(studentId);
                cmd.Parameters.Add("@IsAllowEdit", SqlDbType.Bit).Value = IsAllowedit;
                cmd.Connection = con;
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                if (con.State == ConnectionState.Open)
                {
                    con.Close();
                }
            }
            Response.Redirect("manageStudent.aspx", false);
            ApplicationInstance.CompleteRequest();
        }
    }
示例#35
0
        public List <Report> CreateFinalReport(Interfaces.IProject project, FileBasedProject studioProject, out string workingPathOut)
        {
            var reports  = new List <Report>();
            var settings = new XmlWriterSettings
            {
                OmitXmlDeclaration = true,
                Indent             = false
            };
            var reportName = "SDL Transcreate Report";

            var studioProjectInfo     = studioProject.GetProjectInfo();
            var dateTimeStamp         = DateTime.UtcNow;
            var dataTimeStampToString = DateTimeStampToString(dateTimeStamp);
            var workflowPath          = GetPath(studioProjectInfo.LocalProjectFolder, "Workflow");
            var actionPath            = GetPath(workflowPath, "Report");
            var workingPath           = GetPath(actionPath, dataTimeStampToString);

            var exportOptions = new ExportOptions();

            exportOptions.IncludeBackTranslations = true;
            exportOptions.IncludeTranslations     = true;
            exportOptions.CopySourceToTarget      = false;

            var analysisBands = _projectAutomationService.GetAnalysisBands(studioProject);

            var progressSettings = new ProgressDialogSettings(ApplicationInstance.GetActiveForm(), true, true, false);
            var result           = ProgressDialog.ProgressDialog.Execute("Create Transcreate Reports", () =>
            {
                var sdlxliffReader = new SdlxliffReader(_segmentBuilder, exportOptions, analysisBands);
                decimal maximum    = project.ProjectFiles.Count;
                decimal current    = 0;
                foreach (var targetLanguage in project.TargetLanguages)
                {
                    var projectFiles = project.ProjectFiles.Where(a => string.Compare(a.TargetLanguage, targetLanguage.CultureInfo.Name,
                                                                                      StringComparison.CurrentCultureIgnoreCase) == 0).ToList();

                    var workingLanguageFolder = GetPath(workingPath, targetLanguage.CultureInfo.Name);
                    foreach (var projectFile in projectFiles)
                    {
                        if (ProgressDialog.ProgressDialog.Current.CheckCancellationPending())
                        {
                            ProgressDialog.ProgressDialog.Current.ThrowIfCancellationPending();
                        }

                        current++;
                        var progress = current / maximum * 100;
                        ProgressDialog.ProgressDialog.Current.Report((int)progress, "File: " + projectFile.Name);


                        var projectFilePath = Path.Combine(project.Path, projectFile.Location);
                        var xliffData       = sdlxliffReader.ReadFile(project.Id, projectFile.FileId, projectFilePath,
                                                                      targetLanguage.CultureInfo.Name);

                        var backTranslationProject   = GetBackTranslationProject(project, targetLanguage.CultureInfo.Name);
                        var backTranslationFile      = GetBackTranslationProjectFile(backTranslationProject, projectFile);
                        var xliffDataBackTranslation = GetBackTranslationXliffData(backTranslationProject, backTranslationFile, sdlxliffReader);

                        var fileName   = projectFile.Name.Substring(0, projectFile.Name.LastIndexOf(".", StringComparison.Ordinal));
                        var reportFile = Path.Combine(workingLanguageFolder, fileName + ".xml");

                        using (var writer = XmlWriter.Create(reportFile, settings))
                        {
                            writer.WriteStartElement("task");
                            writer.WriteAttributeString("name", reportName);
                            writer.WriteAttributeString("created", dataTimeStampToString);

                            writer.WriteStartElement("taskInfo");
                            writer.WriteAttributeString("action", "SDL Transcreate Report");
                            writer.WriteAttributeString("file", projectFile.Path + projectFile.Name);
                            writer.WriteAttributeString("taskId", Guid.NewGuid().ToString());
                            writer.WriteAttributeString("runAt", GetDisplayDateTime(dateTimeStamp));


                            WriteReportProject(writer, "project", project);
                            WriteReportProject(writer, "backProject", backTranslationProject);

                            WriteReportLanguage(writer, "source", project.SourceLanguage.CultureInfo.Name);
                            WriteReportLanguage(writer, "target", targetLanguage.CultureInfo.Name);

                            WriteReportCustomer(writer, project);

                            WriteReportTranslationProviders(writer, studioProject);

                            writer.WriteEndElement();                             //taskInfo


                            writer.WriteStartElement("translations");
                            foreach (var dataFile in xliffData.Files)
                            {
                                writer.WriteStartElement("version");
                                writer.WriteAttributeString("type", dataFile.Original);

                                var backTranslationDataFile =
                                    xliffDataBackTranslation?.Files.FirstOrDefault(a => a.Original == dataFile.Original);

                                writer.WriteStartElement("segments");
                                foreach (var transUnit in dataFile.Body.TransUnits)
                                {
                                    var textFunction = transUnit.Contexts.FirstOrDefault(
                                        a => string.Compare(a.DisplayName, "Text Function", StringComparison.CurrentCultureIgnoreCase) == 0);

                                    foreach (var segmentPair in transUnit.SegmentPairs)
                                    {
                                        writer.WriteStartElement("segment");

                                        var backTranslationSegmentPair = GetBackTranslationSegmentPair(backTranslationDataFile, segmentPair);

                                        writer.WriteAttributeString("id", segmentPair.Id);
                                        writer.WriteAttributeString("textFunction", textFunction?.Description ?? string.Empty);

                                        writer.WriteStartElement("source");
                                        writer.WriteString(segmentPair.Source.ToString());
                                        writer.WriteEndElement();                                         //source

                                        writer.WriteStartElement("target");
                                        writer.WriteString(segmentPair.Target.ToString());
                                        writer.WriteEndElement();                                         //source

                                        writer.WriteStartElement("back");
                                        writer.WriteString(backTranslationSegmentPair?.Target?.ToString() ?? string.Empty);
                                        writer.WriteEndElement();                                         //backTranslation

                                        writer.WriteStartElement("comments");
                                        var comments = GetSegmentComments(segmentPair.Target, xliffData.DocInfo);
                                        if (comments != null)
                                        {
                                            foreach (var comment in comments)
                                            {
                                                writer.WriteStartElement("comment");
                                                writer.WriteAttributeString("version", comment.Version);
                                                writer.WriteAttributeString("author", comment.Author);
                                                writer.WriteAttributeString("severity", comment.Severity.ToString());
                                                writer.WriteAttributeString("date", GetDisplayDateTime(comment.Date));
                                                writer.WriteString(comment.Text ?? string.Empty);
                                                writer.WriteEndElement();                                                 //comment
                                            }
                                        }

                                        writer.WriteEndElement();                                         //comments

                                        writer.WriteEndElement();                                         //segment
                                    }
                                }
                                writer.WriteEndElement();                         //segments

                                writer.WriteEndElement();                         //version
                            }
                            writer.WriteEndElement();                             //translations
                        }

                        // transform the file against an xslt
                        var templatePath   = GetReportTemplatePath("TranscreateFinalReport.xsl");
                        var reportFilePath = CreateHtmlReportFile(reportFile, templatePath);


                        var report = new Report
                        {
                            Name        = fileName,
                            Date        = dateTimeStamp,
                            Description = "Transcreate Report",
                            Group       = "Transcreate Report",
                            Language    = targetLanguage.CultureInfo.Name,
                            Path        = reportFilePath
                        };
                        reports.Add(report);
                    }
                }
            }, progressSettings);

            workingPathOut = workingPath;

            if (result.Cancelled)
            {
                System.Windows.Forms.MessageBox.Show("Process cancelled by user.", PluginResources.Plugin_Name);
                return(new List <Report>());
            }

            return(reports);
        }
示例#36
0
        public async Task TestBadApplicationInstance()
        {
            // no app name
            var applicationInstance = new ApplicationInstance();

            Assert.NotNull(applicationInstance);
            Assert.ThrowsAsync <ServiceResultException>(async() =>
                                                        await applicationInstance.Build(ApplicationUri, ProductUri)
                                                        .AsServer(new string[] { EndpointUrl })
                                                        .AddSecurityConfiguration(SubjectName, m_pkiRoot)
                                                        .Create()
                                                        .ConfigureAwait(false)
                                                        );
            // discoveryserver can not be combined with client/server
            applicationInstance = new ApplicationInstance()
            {
                ApplicationName = ApplicationName,
                ApplicationType = ApplicationType.DiscoveryServer
            };
            Assert.ThrowsAsync <ArgumentException>(async() =>
                                                   await applicationInstance.Build(ApplicationUri, ProductUri)
                                                   .AsClient()
                                                   .AddSecurityConfiguration(SubjectName, m_pkiRoot)
                                                   .Create()
                                                   .ConfigureAwait(false)
                                                   );
            Assert.ThrowsAsync <ArgumentException>(async() =>
                                                   await applicationInstance.Build(ApplicationUri, ProductUri)
                                                   .AsServer(new string[] { EndpointUrl })
                                                   .AddSecurityConfiguration(SubjectName, m_pkiRoot)
                                                   .Create()
                                                   .ConfigureAwait(false)
                                                   );
            // server overrides client settings
            applicationInstance = new ApplicationInstance()
            {
                ApplicationName = ApplicationName,
                ApplicationType = ApplicationType.Client
            };

            var config = await applicationInstance.Build(ApplicationUri, ProductUri)
                         .AsServer(new string[] { EndpointUrl })
                         .AddSecurityConfiguration(SubjectName, m_pkiRoot)
                         .Create()
                         .ConfigureAwait(false);

            Assert.AreEqual(ApplicationType.Server, applicationInstance.ApplicationType);

            // client overrides server setting
            applicationInstance = new ApplicationInstance()
            {
                ApplicationName = ApplicationName,
                ApplicationType = ApplicationType.Server
            };

            await applicationInstance.Build(ApplicationUri, ProductUri)
            .AsClient()
            .AddSecurityConfiguration(SubjectName, m_pkiRoot)
            .Create()
            .ConfigureAwait(false);

            Assert.AreEqual(ApplicationType.Client, applicationInstance.ApplicationType);

            // invalid sec policy testing
            applicationInstance = new ApplicationInstance()
            {
                ApplicationName = ApplicationName
            };
            // invalid use, use AddUnsecurePolicyNone instead
            Assert.ThrowsAsync <ArgumentException>(async() =>
                                                   await applicationInstance.Build(ApplicationUri, ProductUri)
                                                   .AsServer(new string[] { EndpointUrl })
                                                   .AddPolicy(MessageSecurityMode.None, SecurityPolicies.None)
                                                   .AddSecurityConfiguration(SubjectName, m_pkiRoot)
                                                   .Create()
                                                   .ConfigureAwait(false)
                                                   );
            // invalid mix sign / none
            Assert.ThrowsAsync <ArgumentException>(async() =>
                                                   await applicationInstance.Build(ApplicationUri, ProductUri)
                                                   .AsServer(new string[] { EndpointUrl })
                                                   .AddPolicy(MessageSecurityMode.Sign, SecurityPolicies.None)
                                                   .AddSecurityConfiguration(SubjectName)
                                                   .Create()
                                                   .ConfigureAwait(false)
                                                   );
            // invalid policy
            Assert.ThrowsAsync <ArgumentException>(async() =>
                                                   await applicationInstance.Build(ApplicationUri, ProductUri)
                                                   .AsServer(new string[] { EndpointUrl })
                                                   .AddPolicy(MessageSecurityMode.Sign, "123")
                                                   .AddSecurityConfiguration(SubjectName, m_pkiRoot)
                                                   .Create()
                                                   .ConfigureAwait(false)
                                                   );
            // invalid user token policy
            Assert.ThrowsAsync <ArgumentNullException>(async() =>
                                                       await applicationInstance.Build(ApplicationUri, ProductUri)
                                                       .AsServer(new string[] { EndpointUrl })
                                                       .AddUserTokenPolicy(null)
                                                       .AddSecurityConfiguration(SubjectName, m_pkiRoot)
                                                       .Create()
                                                       .ConfigureAwait(false)
                                                       );
        }
示例#37
0
        /// <summary>
        /// 默认的构造函数,实例化一个新的OPC UA类
        /// </summary>
        public OpcUaClient()
        {
            dic_subscriptions = new Dictionary <string, Subscription>();

            var certificateValidator = new CertificateValidator();

            certificateValidator.CertificateValidation += (sender, eventArgs) => {
                if (ServiceResult.IsGood(eventArgs.Error))
                {
                    eventArgs.Accept = true;
                }
                else if (eventArgs.Error.StatusCode.Code == StatusCodes.BadCertificateUntrusted)
                {
                    eventArgs.Accept = true;
                }
                else
                {
                    throw new Exception(
                              $"Failed to validate certificate with error code {eventArgs.Error.Code}: {eventArgs.Error.AdditionalInfo}");
                }
            };

            var securityConfigurationcv = new SecurityConfiguration {
                AutoAcceptUntrustedCertificates = true,
                RejectSHA1SignedCertificates    = false,
                MinimumCertificateKeySize       = 1024,
            };

            certificateValidator.Update(securityConfigurationcv);

            // Build the application configuration
            application = new ApplicationInstance {
                ApplicationType          = ApplicationType.Client,
                ConfigSectionName        = OpcUaName,
                ApplicationConfiguration = new ApplicationConfiguration {
                    ApplicationName      = OpcUaName,
                    ApplicationType      = ApplicationType.Client,
                    CertificateValidator = certificateValidator,
                    ServerConfiguration  = new ServerConfiguration {
                        MaxSubscriptionCount     = 100000,
                        MaxMessageQueueSize      = 1000000,
                        MaxNotificationQueueSize = 1000000,
                        MaxPublishRequestCount   = 10000000,
                    },
                    SecurityConfiguration = new SecurityConfiguration {
                        AutoAcceptUntrustedCertificates = true,
                        RejectSHA1SignedCertificates    = false,
                        MinimumCertificateKeySize       = 1024,
                    },
                    TransportQuotas = new TransportQuotas {
                        OperationTimeout      = 6000000,
                        MaxStringLength       = int.MaxValue,
                        MaxByteStringLength   = int.MaxValue,
                        MaxArrayLength        = 65535,
                        MaxMessageSize        = 419430400,
                        MaxBufferSize         = 65535,
                        ChannelLifetime       = -1,
                        SecurityTokenLifetime = -1
                    },
                    ClientConfiguration = new ClientConfiguration {
                        DefaultSessionTimeout   = -1,
                        MinSubscriptionLifetime = -1,
                    },
                    DisableHiResClock = true
                }
            };

            // Assign a application certificate (when specified)
            // if (ApplicationCertificate != null)
            //    application.ApplicationConfiguration.SecurityConfiguration.ApplicationCertificate = new CertificateIdentifier(_options.ApplicationCertificate);

            AppConfig = application.ApplicationConfiguration;
        }