/// <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("Server", Server);
            xmlElem.AppendElem("Database", Database);
            xmlElem.AppendElem("Username", Username);
            xmlElem.AppendElem("Password", ScadaUtils.Encrypt(Password));
            xmlElem.AppendElem("ConnectionString", ConnectionString);
        }
Exemple #2
0
        private void btnWebDir_Click(object sender, EventArgs e)
        {
            // выбор директории веб-приложения
            folderBrowserDialog.SelectedPath = txtWebDir.Text.Trim();
            folderBrowserDialog.Description  = AppPhrases.ChooseWebDir;

            if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
            {
                txtWebDir.Text = ScadaUtils.NormalDir(folderBrowserDialog.SelectedPath);
            }

            txtWebDir.Focus();
            txtWebDir.DeselectAll();
        }
Exemple #3
0
 /// <summary>
 /// Saves the project to the specified file.
 /// </summary>
 public bool Save(string fileName, out string errMsg)
 {
     try
     {
         Save(fileName);
         errMsg = "";
         return(true);
     }
     catch (Exception ex)
     {
         errMsg = ScadaUtils.BuildErrorMessage(ex, AdminPhrases.SaveProjectError);
         return(false);
     }
 }
Exemple #4
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            // сохранение телефонного справочника
            string errMsg;

            if (phonebook.Save(appDirs.ConfigDir + Phonebook.DefFileName, out errMsg))
            {
                Modified = false;
            }
            else
            {
                ScadaUtils.ShowError(errMsg);
            }
        }
        /// <summary>
        /// Loads the options from the XML node.
        /// </summary>
        public void LoadFromXml(XmlNode xmlNode)
        {
            if (xmlNode == null)
            {
                throw new ArgumentNullException(nameof(xmlNode));
            }

            Name             = xmlNode.GetChildAsString("Name");
            Server           = xmlNode.GetChildAsString("Server");
            Database         = xmlNode.GetChildAsString("Database");
            Username         = xmlNode.GetChildAsString("Username");
            Password         = ScadaUtils.Decrypt(xmlNode.GetChildAsString("Password"));
            ConnectionString = xmlNode.GetChildAsString("ConnectionString");
        }
Exemple #6
0
        /// <summary>
        /// Writes the field definintion using the specified writer.
        /// </summary>
        protected void WriteFieldDef(BinaryWriter writer, FieldDef fieldDef, byte[] buffer)
        {
            Array.Clear(buffer, 0, FieldDefSize);
            int nameLength = fieldDef.Name.Length;

            buffer[0] = (byte)nameLength;
            Encoding.ASCII.GetBytes(fieldDef.Name).CopyTo(buffer, 1);
            buffer[MaxFieldNameLength + 1] = (byte)fieldDef.DataType;
            buffer[MaxFieldNameLength + 2] = (byte)(fieldDef.AllowNull ? 1 : 0);
            ushort crc = ScadaUtils.CRC16(buffer, 0, FieldDefSize - 2);

            CopyUInt16(crc, buffer, FieldDefSize - 2);
            writer.Write(buffer, 0, FieldDefSize);
        }
        /// <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));
        }
Exemple #8
0
        private List <ActiveCnlList> ActiveCnl = new List <ActiveCnlList>();        // Создание списка Активных сигналов, где ActiveCnl.Cnl - номер сигнала, ActiveCnl.Name - Имя сигнала,
                                                                                    // ActiveCnl.Fotmat - Тип активной переменной, ActiveCnl.IdxTag индекс сигнала в KPTags, ActiveCnl.IdxValue - Индекс группы,
                                                                                    //  в которую входит сигнал, ActiveCnl.MenuName - Имя меню, которому принадлежит сигнал

        /// <summary>
        /// Преобразовать данные тега КП в строку
        /// </summary>
        protected override string ConvertTagDataToStr(int signal, SrezTableLight.CnlData tagData) // Необходимо продумать как передать сюда список типов переменных - текст, время, цифровое и т.д.
        {
            string strval  = "";
            bool   readstr = myTagId.TryGetValue(signal, out strval); // Чтение типа переменной, привязанной к сигналу

            if (tagData.Stat > 0)
            {
                if (strval == "DateTime")                           // Проверка сигнала на тип данных Время для отображения в текстовом виде в таблице Коммуникатора
                {
                    return(ScadaUtils.DecodeDateTime(tagData.Val).ToString());
                }
            }
            return(base.ConvertTagDataToStr(signal, tagData));
        }
        /// <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 #10
0
        private void miDbBackup_Click(object sender, EventArgs e)
        {
            // резервное копирование файла базы конфигурации
            string msg;

            if (ImportExport.BackupSDF(settings.AppSett.BaseSDFFile, settings.AppSett.BackupDir, out msg))
            {
                ScadaUtils.ShowInfo(msg);
            }
            else
            {
                AppUtils.ProcError(msg);
            }
        }
        /// <summary>
        /// Loads the options from the XML node.
        /// </summary>
        public void LoadFromXml(XmlNode xmlNode)
        {
            if (xmlNode == null)
            {
                throw new ArgumentNullException("xmlNode");
            }

            ServerUrl          = xmlNode.GetChildAsString("ServerUrl");
            SecurityMode       = xmlNode.GetChildAsEnum("SecurityMode", MessageSecurityMode.None);
            SecurityPolicy     = xmlNode.GetChildAsEnum <SecurityPolicy>("SecurityPolicy");
            AuthenticationMode = xmlNode.GetChildAsEnum <AuthenticationMode>("AuthenticationMode");
            Username           = xmlNode.GetChildAsString("Username");
            Password           = ScadaUtils.Decrypt(xmlNode.GetChildAsString("Password"));
        }
Exemple #12
0
        /// <summary>
        /// Loads the configuration from the XML node.
        /// </summary>
        public void LoadFromXml(XmlElement xmlElem)
        {
            if (xmlElem == null)
            {
                throw new ArgumentNullException(nameof(xmlElem));
            }

            Active = xmlElem.GetAttrAsBool("active");
            Code   = xmlElem.GetAttrAsString("code");
            Name   = xmlElem.GetAttrAsString("name");
            Kind   = xmlElem.GetAttrAsEnum("kind", ArchiveKind.Unspecified);
            Module = ScadaUtils.RemoveFileNameSuffixes(xmlElem.GetAttrAsString("module"));
            CustomOptions.LoadFromXml(xmlElem);
        }
Exemple #13
0
        private void btnRefresh_Click(object sender, EventArgs e)
        {
            // перезагрузка таблицы
            DataTable newDataTable = new DataTable();

            if (LoadDataTable(baseAdapter, errLog, ref newDataTable))
            {
                dataTable = newDataTable;
                try { dataTable.DefaultView.RowFilter = txtFilter.Text; }
                catch { txtFilter.Text = ""; }
                bindingSource.DataSource = dataTable;
                ScadaUtils.AutoResizeColumns(dataGridView);
            }
        }
Exemple #14
0
        private void miDbBackup_Click(object sender, EventArgs e)
        {
            // резервное копирование файла базы конфигурации
            try
            {
                string workFileName = settings.AppSett.BaseSDFFile;
                string backupDir    = settings.AppSett.BackupDir;

                if (File.Exists(workFileName))
                {
                    if (Directory.Exists(backupDir))
                    {
                        bool   wasConnected   = AppData.Connected;
                        string backupFileName = backupDir + Path.GetFileNameWithoutExtension(workFileName) +
                                                DateTime.Now.ToString(" yyyy-MM-dd HH-mm-ss") + ".sdf";

                        try
                        {
                            if (wasConnected)
                            {
                                AppData.Conn.Close(); // для сохранения изменений
                            }
                            File.Copy(workFileName, backupFileName, true);
                        }
                        finally
                        {
                            if (wasConnected)
                            {
                                AppData.Conn.Open();
                            }
                        }

                        ScadaUtils.ShowInfo(string.Format(AppPhrases.BackupCompleted, backupFileName));
                    }
                    else
                    {
                        ScadaUtils.ShowError(AppPhrases.BackupDirNotExists);
                    }
                }
                else
                {
                    ScadaUtils.ShowError(AppPhrases.BaseSDFFileNotExists);
                }
            }
            catch (Exception ex)
            {
                AppUtils.ProcError(AppPhrases.BackupError + ":\r\n" + ex.Message);
            }
        }
Exemple #15
0
        /// <summary>
        /// Загрузить настройки приложения из файла
        /// </summary>
        public bool Load(string fileName, out string errMsg)
        {
            // установка значений по умолчанию
            SetToDefault();

            // загрузка настроек
            try
            {
                if (!File.Exists(fileName))
                {
                    throw new FileNotFoundException(string.Format(CommonPhrases.NamedFileNotFound, fileName));
                }

                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(fileName);
                XmlNodeList paramNodes = xmlDoc.DocumentElement.SelectNodes("Param");

                foreach (XmlElement paramElem in paramNodes)
                {
                    string name  = paramElem.GetAttribute("name");
                    string nameL = name.ToLowerInvariant();
                    string val   = paramElem.GetAttribute("value");

                    try
                    {
                        if (nameL == "webdir")
                        {
                            WebDir = ScadaUtils.NormalDir(val);
                        }
                        else if (nameL == "browser")
                        {
                            Browser = (Browsers)Enum.Parse(typeof(Browsers), val, true);
                        }
                    }
                    catch
                    {
                        throw new Exception(string.Format(CommonPhrases.IncorrectXmlParamVal, name));
                    }
                }

                errMsg = "";
                return(true);
            }
            catch (Exception ex)
            {
                errMsg = CommonPhrases.LoadAppSettingsError + ":" + Environment.NewLine + ex.Message;
                return(false);
            }
        }
Exemple #16
0
        private void btnUp_Click(object sender, EventArgs e)
        {
            // перемещение набора или представления вверх
            if (selViewSet == null && selViewInfo == null)
            {
                ScadaUtils.ShowError(AppPhrases.ChooseViewToMove);
            }
            else
            {
                if (selViewInfo == null)
                {
                    // перемещение набора представлений
                    int ind = viewSettings.ViewSetList.IndexOf(selViewSet);

                    if (ind > 0)
                    {
                        viewSettings.ViewSetList.Reverse(ind - 1, 2);

                        TreeNode node = tvTableSets.Nodes[ind];
                        tvTableSets.BeginUpdate();
                        tvTableSets.Nodes.RemoveAt(ind);
                        tvTableSets.Nodes.Insert(ind - 1, node);
                        tvTableSets.EndUpdate();
                        tvTableSets.SelectedNode = node;
                    }
                }
                else
                {
                    // перемещение представления
                    int viewInd = selViewSet.Items.IndexOf(selViewInfo);

                    if (viewInd > 0)
                    {
                        selViewSet.Items.Reverse(viewInd - 1, 2);

                        int      tableSetInd  = viewSettings.ViewSetList.IndexOf(selViewSet);
                        TreeNode nodeTableSet = tvTableSets.Nodes[tableSetInd];
                        TreeNode nodeTable    = nodeTableSet.Nodes[viewInd];
                        tvTableSets.BeginUpdate();
                        nodeTableSet.Nodes.RemoveAt(viewInd);
                        nodeTableSet.Nodes.Insert(viewInd - 1, nodeTable);
                        tvTableSets.EndUpdate();
                        tvTableSets.SelectedNode = nodeTable;
                    }
                }

                viewSets_Changed();
            }
        }
Exemple #17
0
        private void FrmAbout_Load(object sender, EventArgs e)
        {
            // инициализация формы
            if (!inited)
            {
                inited = true;

                // настройка элементов управления в зависимости от локализации
                PictureBox activePictureBox;

                if (Localization.UseRussian)
                {
                    activePictureBox     = pbAboutRu;
                    pbAboutEn.Visible    = false;
                    lblVersionEn.Visible = false;
                    lblVersionRu.Text    = "Версия " + Version;
                }
                else
                {
                    activePictureBox     = pbAboutEn;
                    pbAboutRu.Visible    = false;
                    lblVersionRu.Visible = false;
                    lblVersionEn.Text    = "Version " + Version;
                }

                // изменение родительских элементов для работы прозрачности
                lblWebsite.Parent   = activePictureBox;
                lblVersionRu.Parent = pbAboutRu;
                lblVersionEn.Parent = pbAboutEn;

                // загрузка изображения и гиперссылки из файлов, если они существуют
                bool   imgLoaded;
                string errMsg;
                if (ScadaUtils.LoadAboutForm(exeDir, this, activePictureBox, lblWebsite,
                                             out imgLoaded, out linkUrl, out errMsg))
                {
                    if (imgLoaded)
                    {
                        lblVersionRu.Visible = false;
                        lblVersionEn.Visible = false;
                    }
                }
                else
                {
                    errLog.WriteAction(errMsg);
                    ScadaUtils.ShowError(errMsg);
                }
            }
        }
Exemple #18
0
        /// <summary>
        /// Загрузить конфигурацию компонента из XML-узла
        /// </summary>
        public override void LoadFromXml(XmlNode xmlNode)
        {
            base.LoadFromXml(xmlNode);

            BackColorOnHover   = xmlNode.GetChildAsString("BackColorOnHover");
            BorderColorOnHover = xmlNode.GetChildAsString("BorderColorOnHover");
            ForeColorOnHover   = xmlNode.GetChildAsString("ForeColorOnHover");
            UnderlineOnHover   = xmlNode.GetChildAsBool("UnderlineOnHover");
            CnlNums.Clear();
            CnlNums.AddRange(ScadaUtils.ParseIntArray(xmlNode.GetChildAsString("CnlNums")));
            PopupSize = PopupSize.GetChildAsSize(xmlNode, "PopupSize");
            Target    = xmlNode.GetChildAsEnum <LinkTarget>("Target");
            Url       = xmlNode.GetChildAsString("Url");
            ViewID    = xmlNode.GetChildAsInt("ViewID");
        }
Exemple #19
0
        private void FrmMain_Shown(object sender, EventArgs e)
        {
            string errMsg;
            bool   success = settings.LoadAppSettings(out errMsg);

            lblBaseSdfFile.Text = settings.AppSett.BaseSDFFile;
            if (success)
            {
                Connect(true);
            }
            else
            {
                ScadaUtils.ShowError(errMsg);
            }
        }
Exemple #20
0
 /// <summary>
 /// Sets the entity properties according to the controls.
 /// </summary>
 private void ControlsToEntity()
 {
     LimEntity = new Lim
     {
         LimID        = Convert.ToInt32(numLimID.Value),
         Name         = txtName.Text,
         IsBoundToCnl = chkIsBoundToCnl.Checked,
         IsShared     = chkIsShared.Checked,
         LoLo         = txtLoLo.Text == "" ? null : ScadaUtils.ParseDouble(txtLoLo.Text),
         Low          = txtLow.Text == "" ? null : ScadaUtils.ParseDouble(txtLow.Text),
         High         = txtHigh.Text == "" ? null : ScadaUtils.ParseDouble(txtHigh.Text),
         HiHi         = txtHiHi.Text == "" ? null : ScadaUtils.ParseDouble(txtHiHi.Text),
         Deadband     = txtDeadband.Text == "" ? null : ScadaUtils.ParseDouble(txtDeadband.Text)
     };
 }
Exemple #21
0
        /// <summary>
        /// Loads the configuration from the specified reader.
        /// </summary>
        protected override void Load(TextReader reader)
        {
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(reader);
            XmlElement rootElem = xmlDoc.DocumentElement;

            Host              = rootElem.GetChildAsString("Host");
            Port              = rootElem.GetChildAsInt("Port");
            Username          = rootElem.GetChildAsString("Username", rootElem.GetChildAsString("User"));
            Password          = ScadaUtils.Decrypt(rootElem.GetChildAsString("Password"));
            EnableSsl         = rootElem.GetChildAsBool("EnableSsl");
            SenderAddress     = rootElem.GetChildAsString("SenderAddress", Username);
            SenderDisplayName = rootElem.GetChildAsString("SenderDisplayName");
        }
Exemple #22
0
            /// <summary>
            /// Загрузить настройки из XML-узла
            /// </summary>
            public void LoadFromXml(XmlNode xmlNode)
            {
                if (xmlNode == null)
                {
                    throw new ArgumentNullException("xmlNode");
                }

                Name          = xmlNode.GetChildAsString("Name");
                Host          = xmlNode.GetChildAsString("Host");
                Port          = xmlNode.GetChildAsInt("Port", 10002);
                Username      = xmlNode.GetChildAsString("Username", "admin");
                Password      = xmlNode.GetChildAsString("Password");
                ScadaInstance = xmlNode.GetChildAsString("ScadaInstance");
                SecretKey     = ScadaUtils.HexToBytes(xmlNode.GetChildAsString("SecretKey"));
            }
Exemple #23
0
        public XElement Decrypt(XElement encryptedElement)
        {
            ArgumentNullException.ThrowIfNull(encryptedElement, nameof(encryptedElement));

            try
            {
                string decryptedValue = ScadaUtils.Decrypt(encryptedElement.Value);
                return(XElement.Parse(decryptedValue));
            }
            catch (Exception ex)
            {
                log.WriteError(ex);
                throw;
            }
        }
 private void txtFilter_KeyDown(object sender, KeyEventArgs e)
 {
     // установка фильтра таблицы
     if (e.KeyCode == Keys.Enter)
     {
         try
         {
             dataTable.DefaultView.RowFilter = txtFilter.Text;
         }
         catch
         {
             ScadaUtils.ShowError(AppPhrases.IncorrectFilter);
         }
     }
 }
Exemple #25
0
        private void btnSelectObj_Click(object sender, EventArgs e)
        {
            // show a dialog to select objects
            if (configDatabase != null)
            {
                ScadaUtils.ParseRange(txtObjFilter.Text, true, false, out IList <int> objNums);
                FrmEntitySelect frmEntitySelect = new(configDatabase.ObjTable) { SelectedIDs = objNums };

                if (frmEntitySelect.ShowDialog() == DialogResult.OK)
                {
                    txtObjFilter.Text = frmEntitySelect.SelectedIDs.ToRangeString();
                }
            }
        }
    }
Exemple #26
0
        /// <summary>
        /// Setup the controls according to the settings.
        /// </summary>
        private void SettingsToControls()
        {
            if (Profile != null)
            {
                txtProfileName.Text = Profile.Name;
                txtWebUrl.Text      = Profile.WebUrl;

                ConnectionSettings connSettings = Profile.ConnectionSettings;
                txtHost.Text = connSettings.Host;
                numPort.SetValue(connSettings.Port);
                txtUsername.Text  = connSettings.Username;
                txtPassword.Text  = connSettings.Password;
                txtSecretKey.Text = ScadaUtils.BytesToHex(connSettings.SecretKey);
            }
        }
Exemple #27
0
        /// <summary>
        /// Sets the settings according to the controls.
        /// </summary>
        private void ControlsToSettings()
        {
            if (Profile != null)
            {
                Profile.Name   = txtProfileName.Text.Trim();
                Profile.WebUrl = txtWebUrl.Text.Trim();

                ConnectionSettings connSettings = Profile.ConnectionSettings;
                connSettings.Host      = txtHost.Text.Trim();
                connSettings.Port      = (int)numPort.Value;
                connSettings.Username  = txtUsername.Text.Trim();
                connSettings.Password  = txtPassword.Text;
                connSettings.SecretKey = ScadaUtils.HexToBytes(txtSecretKey.Text.Trim());
            }
        }
Exemple #28
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 #29
0
        /// <summary>
        /// Validates the form fields.
        /// </summary>
        private bool ValidateFields()
        {
            StringBuilder sbError = new StringBuilder();

            if (string.IsNullOrWhiteSpace(txtProfileName.Text))
            {
                sbError.AppendError(lblProfileName, CommonPhrases.NonemptyRequired);
            }

            if (!string.IsNullOrWhiteSpace(txtWebUrl.Text) && !ScadaUtils.IsValidUrl(txtWebUrl.Text))
            {
                sbError.AppendError(lblWebUrl, AppPhrases.ValidUrlRequired);
            }

            if (string.IsNullOrWhiteSpace(txtHost.Text))
            {
                sbError.AppendError(lblHost, CommonPhrases.NonemptyRequired);
            }

            if (string.IsNullOrWhiteSpace(txtUsername.Text))
            {
                sbError.AppendError(lblUsername, CommonPhrases.NonemptyRequired);
            }

            if (string.IsNullOrWhiteSpace(txtPassword.Text))
            {
                sbError.AppendError(lblPassword, CommonPhrases.NonemptyRequired);
            }

            if (string.IsNullOrWhiteSpace(txtSecretKey.Text))
            {
                sbError.AppendError(lblSecretKey, CommonPhrases.NonemptyRequired);
            }

            if (sbError.Length > 0)
            {
                sbError.Insert(0, AppPhrases.CorrectErrors + Environment.NewLine);
                ScadaUiUtils.ShowError(sbError.ToString());
                return(false);
            }

            if (ExistingProfileNames != null && ExistingProfileNames.Contains(txtProfileName.Text.Trim()))
            {
                ScadaUiUtils.ShowError(AppPhrases.ProfileNameDuplicated);
                return(false);
            }

            if (!ScadaUtils.HexToBytes(txtSecretKey.Text.Trim(), out byte[] bytes))
Exemple #30
0
        /// <summary>
        /// Performs actions before polling the specified device.
        /// </summary>
        public override void BeforeSession(DeviceLogic deviceLogic)
        {
            currentConn = deviceLogic.Connection as TcpConnection;

            if (currentConn != null)
            {
                if (Behavior == ChannelBehavior.Slave)
                {
                    Monitor.Enter(currentConn.SyncRoot);
                }

                // connect if disconnected
                if (!currentConn.Connected)
                {
                    // get host and port
                    string host;
                    int    port;

                    if (currentConn == sharedConn)
                    {
                        host = options.Host;
                        port = options.TcpPort;
                    }
                    else if (currentConn.RemotePort > 0)
                    {
                        host = currentConn.RemoteAddress;
                        port = currentConn.RemotePort;
                    }
                    else
                    {
                        ScadaUtils.RetrieveHostAndPort(deviceLogic.StrAddress, options.TcpPort, out host, out port);
                    }

                    // connect
                    Log.WriteLine();
                    Log.WriteAction(Locale.IsRussian ?
                                    "Соединение с {0}:{1}" :
                                    "Connect to {0}:{1}", host, port);

                    if (currentConn.NetStream != null) // connection was already open but broken
                    {
                        currentConn.Renew();
                    }

                    currentConn.Open(host, port);
                }
            }
        }