Exemple #1
0
 /// <summary>
 /// 添加新的条件,深度复制,如果条件已经存在,则直接返回,不添加
 /// </summary>
 /// <param name="conditionGuid"></param>
 public void AddCondition(SecurityCondition sc)
 {
     if (!ContainsCondition(sc.ConditionGuid))
     {
         this.Conditions.Add((SecurityCondition)sc.Clone());
     }
 }
        private void AddConditon2Action(string eventGuid, string actionGuid, SecurityCondition sc)
        {
            TreeNode pNode = null;

            if (!FindParentNode(eventGuid, actionGuid, out pNode))
            {
                MessageBox.Show("添加条件前,请先选中条件所属安全行为");
                return;
            }

            ucCondition ctl = FindConditon(sc.ConditionGuid);

            if (ctl != null)
            {
                MessageBox.Show("已经存在相同标识符的条件");
                ctl.IsRuleSelected = true;

                return;
            }

            ctl = new ucCondition();
            ctl.SetCondition(sc);
            ctl.UpdateConditionEvent += new ucCondition.UpdateConditionEventHandler(UpdateCondition);

            this.flowLayoutPanel1.Controls.Add(ctl);
        }
Exemple #3
0
        public static SecurityCondition CreateSecurityCondition(string guid)
        {
            SecurityCondition condition = new SecurityCondition();

            condition.ConditionGuid = guid;

            return(condition);
        }
Exemple #4
0
        public static SecurityCondition CreateNewSecurityCondition()
        {
            SecurityCondition condition = new SecurityCondition();

            condition.ConditionGuid = Guid.NewGuid().ToString();

            return(condition);
        }
Exemple #5
0
        /// <summary>
        /// 更新条件属性,如果条件不存在则直接返回
        /// </summary>
        /// <param name="sc"></param>
        public void UpdateConditionProperties(SecurityCondition sc)
        {
            SecurityCondition initData = GetCondition(sc.ConditionGuid);

            if (initData != null)
            {
                initData.CopyFrom(sc);
            }
        }
Exemple #6
0
        public SecurityCondition GetEditedCondition()
        {
            SecurityCondition sc = SecurityCondition.CreateSecurityCondition(Convert.ToString(this.Tag));

            if (!CheckRelation())
            {
                return(sc);
            }

            sc.RelationName = comboRelation.Text;

            if (this.combo1st.SelectedIndex >= 0)
            {
                LogColumn col = m_lstColumns[this.combo1st.SelectedIndex];
                sc.SourceCol = col.Index;

                IRelation relation = RelationService.Instance.GetRelation(col.Type, comboRelation.Text);

                if (relation.ParamsCount == 1)
                {
                    if (rbConstant.Checked)
                    {
                        sc.SetContent(txtContent.Text);
                    }
                    else
                    {
                        sc.IsUsingDestCol = true;
                        sc.DestinationCol = m_matchedColumns[comboContent.SelectedIndex].Index;
                        sc.SetContent(sc.DestinationCol.ToString());
                    }
                }
                else if (relation.ParamsCount == 2)
                {
                    List <string> lstContent = new List <string>();

                    if (rbConstant.Checked)
                    {
                        lstContent.Add(txtLeftBound.Text);
                        lstContent.Add(txtRightBound.Text);
                    }
                    else
                    {
                        sc.IsUsingDestCol = true;
                        lstContent.Add(m_matchedColumns[comboLeftBound.SelectedIndex].Index.ToString());
                        lstContent.Add(m_matchedColumns[comboRightBound.SelectedIndex].Index.ToString());
                    }

                    sc.SetMultiValues(lstContent);
                }
            }

            return(sc);
        }
Exemple #7
0
        public void CopyFrom(SecurityCondition sc)
        {
            this.IsUsingDestCol = sc.IsUsingDestCol;
            this.DestinationCol = sc.DestinationCol;
            this.RelationName   = sc.RelationName;
            this.SourceCol      = sc.SourceCol;

            this.MultiValues.Clear();
            foreach (string s in sc.MultiValues)
            {
                this.MultiValues.Add(s);
            }
        }
Exemple #8
0
        public void SetCondition(SecurityCondition condition)
        {
            this.Tag = condition.ConditionGuid;

            this.combo1st.SelectedIndex = FindLogColumnArrayIndex(m_lstColumns, condition.SourceCol);
            this.comboRelation.Text     = condition.RelationName;
            this.rbAnotherCol.Checked   = condition.IsUsingDestCol;
            this.rbConstant.Checked     = !condition.IsUsingDestCol;

            if (this.combo1st.SelectedIndex >= 0)
            {
                LogColumn col = m_lstColumns[this.combo1st.SelectedIndex];

                IRelation relation = RelationService.Instance.GetRelation(col.Type, comboRelation.Text);

                if (relation.ParamsCount == 1)
                {
                    if (condition.IsUsingDestCol)
                    {
                        this.comboContent.SelectedIndex = FindLogColumnArrayIndex(m_matchedColumns, condition.DestinationCol);
                    }
                    else
                    {
                        txtContent.Text = condition.GetContent();
                    }
                }
                else if (relation.ParamsCount == 2)
                {
                    string firstValue  = condition.MultiValues.Count > 0 ? condition.MultiValues[0] : string.Empty;
                    string secondValue = condition.MultiValues.Count > 1 ? condition.MultiValues[1] : string.Empty;

                    if (condition.IsUsingDestCol)
                    {
                        this.comboLeftBound.SelectedIndex  = FindLogColumnArrayIndex(m_matchedColumns, Convert.ToInt32(firstValue));
                        this.comboRightBound.SelectedIndex = FindLogColumnArrayIndex(m_matchedColumns, Convert.ToInt32(secondValue));
                    }
                    else
                    {
                        this.txtLeftBound.Text  = firstValue;
                        this.txtRightBound.Text = secondValue;
                    }
                }
            }

            SaveInitValue(condition);
            UpdateExpression();
        }
Exemple #9
0
        public object Clone()
        {
            SecurityCondition sc = new SecurityCondition();

            sc.DestinationCol = this.DestinationCol;
            sc.IsUsingDestCol = this.IsUsingDestCol;
            sc.RelationName   = this.RelationName;
            sc.m_colSource    = this.SourceCol;
            sc.ConditionGuid  = this.ConditionGuid;

            foreach (string s in this.MultiValues)
            {
                sc.MultiValues.Add(s);
            }

            return(sc);
        }
Exemple #10
0
        public void SaveInitValue(SecurityCondition condition)
        {
            this.lblStatus.Text  = string.Empty;
            this.btnSave.Visible = false;

            m_initValueOfCombo1st      = this.combo1st.Text;
            m_initValueOfComboRelation = this.comboRelation.Text;
            m_initValueOfRbAnotherCol  = this.rbAnotherCol.Checked;
            m_initValueOfRbConstant    = this.rbConstant.Checked;

            if (this.combo1st.SelectedIndex <= 0)
            {
                return;
            }

            LogColumn col = m_lstColumns[this.combo1st.SelectedIndex];

            IRelation relation = RelationService.Instance.GetRelation(col.Type, comboRelation.Text);

            if (relation.ParamsCount == 1)
            {
                if (condition.IsUsingDestCol)
                {
                    m_initValueOfComboContent = this.comboContent.Text;
                }
                else
                {
                    m_initValueOfTxtContent = txtContent.Text;
                }
            }
            else if (relation.ParamsCount == 2)
            {
                if (condition.IsUsingDestCol)
                {
                    m_initValueOfComboLeftBound  = this.comboLeftBound.Text;
                    m_initValueOfComboRightBound = this.comboRightBound.Text;
                }
                else
                {
                    this.m_initValueOfTxtLeftBound  = this.txtLeftBound.Text;
                    this.m_initValueOfTxtRightBound = this.comboRightBound.Text;
                }
            }
        }
Exemple #11
0
        /// <summary>
        /// 新建安全行为条件
        /// </summary>
        /// <param name="se"></param>
        public void AddSecurityCondition(string eventGuid, string actionGuid, SecurityCondition sc)
        {
            try
            {
                SecurityAction sa = BasicCheck(eventGuid, actionGuid);

                if (sa.ContainsCondition(sc.ConditionGuid))
                {
                    throw new Exception(string.Format("安全事件{0}的安全行为{1}中已经存在条件{2}",
                                                      new object[] { eventGuid, actionGuid, sc.ConditionGuid }));
                }

                m_manager.CreateNewSecurityCondition(actionGuid, sc);
                sa.AddCondition(sc);
            }
            catch (Exception ex)
            {
                throw new Exception("新建安全行为条件失败,错误消息为:" + ex.Message);
            }
        }
Exemple #12
0
        /// <summary>
        /// 获取安全事件中某一行为的条件集合
        /// </summary>
        public SecurityCondition GetSecurityCondition(string eventGuid, string actionGuid, string conditionGuid)
        {
            try
            {
                SecurityAction    sa = BasicCheck(eventGuid, actionGuid);
                SecurityCondition sc = sa.GetCondition(conditionGuid);

                if (sc == null)
                {
                    throw new Exception(string.Format("安全事件{0}的安全行为{1}中不存在条件{2}",
                                                      new object[] { eventGuid, actionGuid, conditionGuid }));
                }

                return(sc);
            }
            catch (Exception ex)
            {
                throw new Exception("获取安全条件失败,错误消息为:" + ex.Message);
            }
        }
Exemple #13
0
        private void RefreshCondition(string eventGuid, string actionGuid, SecurityCondition sc)
        {
            TreeNode pNode = null;

            if (!FindParentNode(eventGuid, actionGuid, out pNode))
            {
                MessageBox.Show("更新条件前,请先选中条件所属安全行为");
                return;
            }

            ucCondition ctl = FindConditon(sc.ConditionGuid);

            if (ctl == null)
            {
                MessageBox.Show("要更新的条件不存在");
                return;
            }

            ctl.SetCondition(sc);
        }
Exemple #14
0
        private void menuNewCondition_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;

            try
            {
                if (tvEvents.SelectedNode == null ||
                    tvEvents.SelectedNode.Level != UserActionLevel)
                {
                    MessageBox.Show("请先选择要添加安全条件的安全行为");
                    return;
                }

                string eventGuid  = Convert.ToString(tvEvents.SelectedNode.Parent.Tag);
                string actionGuid = Convert.ToString(tvEvents.SelectedNode.Tag);

                SecurityCondition condition = SecurityCondition.CreateNewSecurityCondition();

                CreateActionConditionCommand cmd = new CreateActionConditionCommand(eventGuid, actionGuid, condition);

                cmd.RedoDone += new UndoRedoEventHandler(AddConditon2Action);
                cmd.UndoDone += new UndoRedoEventHandler(RemoveConditon);

                cmd.Execute();

                AddCommand(cmd);
                AddConditon2Action(eventGuid, actionGuid, condition);
            }
            catch (Exception ex)
            {
                MessageBox.Show("新建安全行为条件失败,错误消息为:" + ex.Message);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }
Exemple #15
0
        /// <summary>
        /// 更新安全行为条件
        /// </summary>
        /// <param name="se"></param>
        public void UpdateSecurityConditionProperties(string eventGuid, string actionGuid, SecurityCondition sc)
        {
            try
            {
                SecurityAction sa = BasicCheck(eventGuid, actionGuid);

                if (!sa.ContainsCondition(sc.ConditionGuid))
                {
                    throw new Exception(string.Format("安全事件{0}的安全行为{1}中不存在条件{2}",
                                                      new object[] { eventGuid, actionGuid, sc.ConditionGuid }));
                }

                m_manager.UpdateSecurityConditionProperties(actionGuid, sc);
                sa.UpdateConditionProperties(sc);
            }
            catch (Exception ex)
            {
                throw new Exception("更新安全行为条件失败,错误消息为:" + ex.Message);
            }
        }