/// <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); }
public static SecurityCondition CreateSecurityCondition(string guid) { SecurityCondition condition = new SecurityCondition(); condition.ConditionGuid = guid; return(condition); }
public static SecurityCondition CreateNewSecurityCondition() { SecurityCondition condition = new SecurityCondition(); condition.ConditionGuid = Guid.NewGuid().ToString(); return(condition); }
/// <summary> /// 更新条件属性,如果条件不存在则直接返回 /// </summary> /// <param name="sc"></param> public void UpdateConditionProperties(SecurityCondition sc) { SecurityCondition initData = GetCondition(sc.ConditionGuid); if (initData != null) { initData.CopyFrom(sc); } }
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); }
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); } }
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(); }
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); }
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; } } }
/// <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); } }
/// <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); } }
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); }
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; } }
/// <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); } }