Exemple #1
0
        /// <summary>
        /// Соединиться с Агентом
        /// </summary>
        private static void Connect(ServersSettings.ConnectionSettings connectionSettings,
                                    StreamWriter writer, out AgentSvcClient client, out long sessionID)
        {
            // настройка соединения
            client = new AgentSvcClient();
            client.Endpoint.Address = GetEpAddress(connectionSettings.Host, connectionSettings.Port);

            // создание сессии
            if (client.CreateSession(out sessionID))
            {
                writer?.WriteLine(AppPhrases.SessionCreated, sessionID);
            }
            else
            {
                throw new ScadaException(AppPhrases.UnableCreateSession);
            }

            // вход в систему
            string encryptedPassword = ScadaUtils.Encrypt(connectionSettings.Password,
                                                          connectionSettings.SecretKey, CreateIV(sessionID));

            if (client.Login(out string errMsg, sessionID, connectionSettings.Username,
                             encryptedPassword, connectionSettings.ScadaInstance))
            {
                writer?.WriteLine(AppPhrases.LoggedOn);
            }
        /// <summary>
        /// Saves the options into the XML node.
        /// </summary>
        public void SaveToXml(XmlElement xmlElem)
        {
            if (xmlElem == null)
            {
                throw new ArgumentNullException(nameof(xmlElem));
            }

            xmlElem.AppendElem("Name", Name);
            xmlElem.AppendElem("DBMS", DBMS);

            if (string.IsNullOrEmpty(ConnectionString))
            {
                xmlElem.AppendElem("Server", Server);
                xmlElem.AppendElem("Database", Database);
                xmlElem.AppendElem("Username", Username);
                xmlElem.AppendElem("Password", ScadaUtils.Encrypt(Password));
                xmlElem.AppendElem("ConnectionString", "");
            }
            else
            {
                xmlElem.AppendElem("Server", "");
                xmlElem.AppendElem("Database", "");
                xmlElem.AppendElem("Username", "");
                xmlElem.AppendElem("Password", "");
                xmlElem.AppendElem("ConnectionString", ConnectionString);
            }
        }
Exemple #3
0
        /// <summary>
        /// Сохранить конфигурацию в файле
        /// </summary>
        public bool Save(string fileName, out string errMsg)
        {
            try
            {
                XmlDocument xmlDoc = new XmlDocument();

                XmlDeclaration xmlDecl = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
                xmlDoc.AppendChild(xmlDecl);

                XmlElement rootElem = xmlDoc.CreateElement("KpEmailConfig");
                xmlDoc.AppendChild(rootElem);

                rootElem.AppendElem("Host", Host);
                rootElem.AppendElem("Port", Port);
                rootElem.AppendElem("User", User);
                rootElem.AppendElem("Password", ScadaUtils.Encrypt(Password));
                rootElem.AppendElem("EnableSsl", EnableSsl);
                rootElem.AppendElem("SenderAddress", SenderAddress);
                rootElem.AppendElem("SenderDisplayName", SenderDisplayName);

                xmlDoc.Save(fileName);
                errMsg = "";
                return(true);
            }
            catch (Exception ex)
            {
                errMsg = CommPhrases.SaveKpSettingsError + ":" + Environment.NewLine + ex.Message;
                return(false);
            }
        }
Exemple #4
0
        /// <summary>
        /// Saves the options into the XML node.
        /// </summary>
        public void SaveToXml(XmlElement xmlElem)
        {
            if (xmlElem == null)
            {
                throw new ArgumentNullException(nameof(xmlElem));
            }

            if (!string.IsNullOrEmpty(Name))
            {
                xmlElem.AppendElem("Name", Name);
            }

            xmlElem.AppendElem("Host", Host);
            xmlElem.AppendElem("Port", Port);
            xmlElem.AppendElem("Username", Username);
            xmlElem.AppendElem("Password", ScadaUtils.Encrypt(Password));

            if (!string.IsNullOrEmpty(Instance))
            {
                xmlElem.AppendElem("Instance", Instance);
            }

            xmlElem.AppendElem("Timeout", Timeout);
            xmlElem.AppendElem("SecretKey", ScadaUtils.BytesToHex(SecretKey));
        }
Exemple #5
0
        /// <summary>
        /// Сохранить настройки в заданный XML-элемент.
        /// </summary>
        public void SaveToXml(XmlElement xmlElem)
        {
            if (xmlElem == null)
            {
                throw new ArgumentNullException("xmlElem");
            }

            if (Format == XmlFormat.Attr)
            {
                xmlElem.AppendParamElem("ServerHost", ServerHost,
                                        "Имя компьютера или IP-адрес SCADA-Сервера", "SCADA-Server host or IP address");
                xmlElem.AppendParamElem("ServerPort", ServerPort,
                                        "Номер TCP-порта SCADA-Сервера", "SCADA-Server TCP port number");
                xmlElem.AppendParamElem("ServerUser", ServerUser,
                                        "Имя пользователя для подключения", "User name for the connection");
                xmlElem.AppendParamElem("ServerPwd", ServerPwd,
                                        "Пароль пользователя для подключения", "User password for the connection");
                xmlElem.AppendParamElem("ServerTimeout", ServerTimeout,
                                        "Таймаут ожидания ответа, мс", "Response timeout, ms");
            }
            else
            {
                xmlElem.AppendElem("Host", ServerHost);
                xmlElem.AppendElem("Port", ServerPort);
                xmlElem.AppendElem("User", ServerUser);
                xmlElem.AppendElem("Password", ScadaUtils.Encrypt(ServerPwd));
                xmlElem.AppendElem("Timeout", ServerTimeout);
            }
        }
 public Password GetEncryptor(string password)
 {
     return(new Password
     {
         password = password,
         encryptedPassword = ScadaUtils.Encrypt(password)
     });
 }
Exemple #7
0
 /// <summary>
 /// Adds the options to the list.
 /// </summary>
 public void AddToOptionList(OptionList options)
 {
     options.Clear();
     options["AutoAccept"]     = AutoAccept.ToLowerString();
     options["Username"]       = Username;
     options["Password"]       = ScadaUtils.Encrypt(Password);
     options["ConfigFileName"] = ConfigFileName;
     options["DeviceFilter"]   = DeviceFilter.ToRangeString();
 }
Exemple #8
0
        /// <summary>
        /// Сохранить конфигурацию модуля
        /// </summary>
        public bool Save(out string errMsg)
        {
            try
            {
                XmlDocument xmlDoc = new XmlDocument();

                XmlDeclaration xmlDecl = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
                xmlDoc.AppendChild(xmlDecl);

                XmlElement rootElem = xmlDoc.CreateElement("ModDBExport");
                xmlDoc.AppendChild(rootElem);

                // сохранение назначений экспорта
                XmlElement expDestsElem = rootElem.AppendElem("ExportDestinations");

                foreach (ExportDestination expDest in ExportDestinations)
                {
                    XmlElement expDestElem = expDestsElem.AppendElem("ExportDestination");

                    // сохранение источника данных
                    DataSource dataSource     = expDest.DataSource;
                    XmlElement dataSourceElem = expDestElem.AppendElem("DataSource");
                    dataSourceElem.AppendElem("DBType", dataSource.DBType);
                    dataSourceElem.AppendElem("Server", dataSource.Server);
                    dataSourceElem.AppendElem("Database", dataSource.Database);
                    dataSourceElem.AppendElem("User", dataSource.User);
                    dataSourceElem.AppendElem("Password", ScadaUtils.Encrypt(dataSource.Password));
                    string connStr    = dataSource.ConnectionString;
                    string bldConnStr = dataSource.BuildConnectionString();
                    dataSourceElem.AppendElem("ConnectionString",
                                              !string.IsNullOrEmpty(bldConnStr) && bldConnStr == connStr ? "" : connStr);

                    // сохранение параметров экспорта
                    expDest.ExportParams.SaveToXml(expDestElem.AppendElem("ExportParams"));
                }

                // сохранение номеров каналов управления для экспорта в ручном режиме
                XmlElement manExpElem = rootElem.AppendElem("ManualExport");
                manExpElem.AppendElem("CurDataCtrlCnlNum", CurDataCtrlCnlNum);
                manExpElem.AppendElem("ArcDataCtrlCnlNum", ArcDataCtrlCnlNum);
                manExpElem.AppendElem("EventsCtrlCnlNum", EventsCtrlCnlNum);

                xmlDoc.Save(FileName);
                errMsg = "";
                return(true);
            }
            catch (Exception ex)
            {
                errMsg = ModPhrases.SaveModSettingsError + ": " + ex.Message;
                return(false);
            }
        }
Exemple #9
0
        /// <summary>
        /// Saves the options into the XML node.
        /// </summary>
        public void SaveToXml(XmlElement xmlElem)
        {
            if (xmlElem == null)
            {
                throw new ArgumentNullException(nameof(xmlElem));
            }

            xmlElem.AppendElem("RequireCaptcha", RequireCaptcha);
            xmlElem.AppendElem("AllowRememberMe", AllowRememberMe);
            xmlElem.AppendElem("RememberMeExpires", RememberMeExpires);
            xmlElem.AppendElem("AutoLoginUsername", AutoLoginUsername);
            xmlElem.AppendElem("AutoLoginPassword", ScadaUtils.Encrypt(AutoLoginPassword));
        }
Exemple #10
0
        /// <summary>
        /// Saves the settings into the XML node.
        /// </summary>
        public void SaveToXml(XmlElement xmlElem)
        {
            if (xmlElem == null)
            {
                throw new ArgumentNullException("xmlElem");
            }

            xmlElem.AppendElem("Server", Server);
            xmlElem.AppendElem("Database", Database);
            xmlElem.AppendElem("User", User);
            xmlElem.AppendElem("Password", ScadaUtils.Encrypt(Password));
            xmlElem.AppendElem("ConnectionString", ConnectionString);
        }
        /// <summary>
        /// Saves the options into the XML node.
        /// </summary>
        public void SaveToXml(XmlElement xmlElem)
        {
            if (xmlElem == null)
            {
                throw new ArgumentNullException("xmlElem");
            }

            xmlElem.AppendElem("ServerUrl", ServerUrl);
            xmlElem.AppendElem("SecurityMode", SecurityMode);
            xmlElem.AppendElem("SecurityPolicy", SecurityPolicy);
            xmlElem.AppendElem("AuthenticationMode", AuthenticationMode);
            xmlElem.AppendElem("Username", Username);
            xmlElem.AppendElem("Password", ScadaUtils.Encrypt(Password));
        }
        /// <summary>
        /// Saves the settings into the XML node.
        /// </summary>
        public void SaveToXml(XmlElement xmlElem)
        {
            if (xmlElem == null)
            {
                throw new ArgumentNullException("xmlElem");
            }

            xmlElem.AppendElem("Host", Host);
            xmlElem.AppendElem("Port", Port);
            xmlElem.AppendElem("Username", Username);
            xmlElem.AppendElem("Password", ScadaUtils.Encrypt(Password));
            xmlElem.AppendElem("ScadaInstance", ScadaInstance);
            xmlElem.AppendElem("SecretKey", ScadaUtils.BytesToHex(SecretKey));
        }
Exemple #13
0
        /// <summary>
        /// Adds the options to the list.
        /// </summary>
        public void AddToOptionList(OptionList options, bool clearList = true)
        {
            if (clearList)
            {
                options.Clear();
            }

            options["Server"]          = Server;
            options["Port"]            = Port.ToString();
            options["ClientID"]        = ClientID;
            options["Username"]        = Username;
            options["Password"]        = ScadaUtils.Encrypt(Password);
            options["Timeout"]         = Timeout.ToString();
            options["ProtocolVersion"] = ProtocolVersion.ToString();
        }
Exemple #14
0
        public EncryptedXmlInfo Encrypt(XElement plaintextElement)
        {
            ArgumentNullException.ThrowIfNull(plaintextElement, nameof(plaintextElement));

            try
            {
                XNamespace xNamespace     = "http://schemas.asp.net/2015/03/dataProtection";
                string     encryptedValue = ScadaUtils.Encrypt(plaintextElement.ToString());
                return(new EncryptedXmlInfo(new XElement(xNamespace + "value", encryptedValue), typeof(XmlEncryptor)));
            }
            catch (Exception ex)
            {
                log.WriteError(ex);
                throw;
            }
        }
Exemple #15
0
        /// <summary>
        /// Connects and authenticates with Agent
        /// </summary>
        protected void Connect()
        {
            if (!client.CreateSession(out sessionID))
            {
                throw new ScadaException(Localization.UseRussian
                    ? "Не удалось создать сессию."
                    : "Unable to create session.");
            }

            string encryptedPassword = ScadaUtils.Encrypt(connSettings.Password,
                                                          connSettings.SecretKey, CreateIV(sessionID));

            if (!client.Login(out string errMsg, sessionID, connSettings.Username, encryptedPassword,
                              connSettings.ScadaInstance))
            {
                throw new ScadaException(string.Format(
                                             Localization.UseRussian ? "Не удалось войти в систему - {0}." : "Unable to login - {0}", errMsg));
            }
        }
Exemple #16
0
        /// <summary>
        /// Saves the configuration to the specified writer.
        /// </summary>
        protected override void Save(TextWriter writer)
        {
            XmlDocument    xmlDoc  = new XmlDocument();
            XmlDeclaration xmlDecl = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);

            xmlDoc.AppendChild(xmlDecl);

            XmlElement rootElem = xmlDoc.CreateElement("DrvEmail");

            xmlDoc.AppendChild(rootElem);

            rootElem.AppendElem("Host", Host);
            rootElem.AppendElem("Port", Port);
            rootElem.AppendElem("Username", Username);
            rootElem.AppendElem("Password", ScadaUtils.Encrypt(Password));
            rootElem.AppendElem("EnableSsl", EnableSsl);
            rootElem.AppendElem("SenderAddress", SenderAddress);
            rootElem.AppendElem("SenderDisplayName", SenderDisplayName);

            xmlDoc.Save(writer);
        }
Exemple #17
0
 /// <summary>
 /// Encrypts the password.
 /// </summary>
 public static string EncryptPassword(string password, long sessionID, byte[] secretKey)
 {
     return(secretKey == null
         ? password
         : ScadaUtils.Encrypt(password, secretKey, CreateIV(sessionID)));
 }