/// <summary> /// Метод выстаскивает текстовое описание угроз, парсит, приводит к типу Threat и возвращает массив объектов Threat. /// </summary> /// <param name="file"></param> /// <returns></returns> public static List <Threat> GetThreatsFromXlsx(FileInfo file, KPSZIContext db) { List <List <string> > listOfXlslxRows = File_Selected_New(file); List <ThreatSource> tss = db.ThreatSources.ToList(); List <Threat> listOfAllThreatsFromFile = new List <Threat>(); for (int i = 0; i < listOfXlslxRows[0].Count; i++) { Threat thr = new Threat(); thr.ThreatNumber = Convert.ToInt32(listOfXlslxRows[0][i]); thr.Name = listOfXlslxRows[1][i]; thr.Description = listOfXlslxRows[2][i]; thr.ThreatSources = ThreatSource.Parse(listOfXlslxRows[3][i], tss); thr.ObjectOfInfluence = listOfXlslxRows[4][i]; thr.ConfidenceViolation = (listOfXlslxRows[5][i] == "1") ? true : false; thr.IntegrityViolation = (listOfXlslxRows[6][i] == "1") ? true : false; thr.AvailabilityViolation = (listOfXlslxRows[7][i] == "1") ? true : false; thr.DateOfAdd = DateTime.Parse(listOfXlslxRows[8][i]); thr.DateOfChange = DateTime.Parse(listOfXlslxRows[9][i]); listOfAllThreatsFromFile.Add(thr); } return(listOfAllThreatsFromFile); }
private void rewriteThreatsDBToolStripMenuItem_Click(object sender, EventArgs e) { // Перезаписать базу угроз if (MessageBox.Show("Будут удалены все угрозы из таблицы в БД и записаны заново.\nПродолжить?", "Ахтунг!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { using (KPSZIContext db = new KPSZIContext()) { FileInfo fi = new FileInfo("thrlist.xlsx"); //try //{ //// Каскадное удаление данных вместе с внешними ключами //db.Database.ExecuteSqlCommand("SET SCHEMA '" + KPSZIContext.schema_name + "'; TRUNCATE \"Threats\" CASCADE;"); db.Threats.AddRange(Threat.GetThreatsFromXlsx(fi, db)); db.SaveChanges(); db.SeedForThreat(); db.SaveChanges(); //} //catch (Exception ex) //{ // MessageBox.Show("В rewriteThreatsDBToolStripMenuItem_Click Exception!\n" + ex.Message, "Ахтунг!", MessageBoxButtons.OK, MessageBoxIcon.Error); // return; //} } MessageBox.Show("Таблица угроз успешно перезаписана!", "Это успех, парень!", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void BtnGetSZIs_Click(object sender, EventArgs e) { mf.wsm.Visible = true; mf.wsm.Update(); mf.dgvSZIs.Rows.Clear(); mf.tabControlSZIs.TabPages.Clear(); mf.tabControlSZIs.TabPages.Add(mf.tpSZItpSZIs); int i = 0; mf.tpSZItbInfo.Text = "В таблице представлен перечень выбранных Вами средств защиты и краткая информация о них. Для формирования перечня реализуемых технических мер этими средствами нажмите \"Реализация тех. мер\""; using (KPSZIContext db = new KPSZIContext()) { var tempListSZIs = db.SZIs.ToList().Intersect(IS.listOfSZIs).ToList(); foreach (SZI szi in tempListSZIs) { string sorts = ""; foreach (SZISort ss in szi.SZISorts) { sorts += ss.Name + ", "; } sorts = sorts.TrimEnd(' '); sorts = sorts.TrimEnd(','); mf.dgvSZIs.Rows.Add(++i, szi.Name, sorts, "№" + szi.Certificate + ", до " + szi.DateOfEnd.ToShortDateString(), szi.NDVControlLevel, szi.SVTClass, szi.TU); } } mf.wsm.Visible = false; }
private void setConfigOptionsToolStripMenu_Click(object sender, EventArgs e) { using (KPSZIContext db = new KPSZIContext()) { db.SeedForConfigOptions(); } MessageBox.Show("Заполнение прошло успешно!", "Это успех, парень!", MessageBoxButtons.OK, MessageBoxIcon.Information); }
private void BtnGetConreteMeasuresList_Click(object sender, EventArgs e) { mf.wsm.Visible = true; mf.wsm.Update(); mf.tabControlMeasures.TabPages.Clear(); mf.tabControlMeasures.TabPages.Add(mf.tpConcreteMeas); mf.tbtpMeasDescription.Text = "Уточненный набор мер, сформированный с учетом не выбранных ранее мер защиты информации, обеспечивает нейтрализацию актуальных угроз безопасности информации, включенных в Модель угроз безопасности информации. \nВ первой таблице представлены меры защиты информации, нейтрализующие все угрозы из Модели.\n Во второй таблице - итоговый перечень мер"; using (KPSZIContext db = new KPSZIContext()) { var listOfThreatsDB = db.Threats.ToList(); var LisfOfThreats = listOfThreatsDB.Intersect(IS.listOfActualNSDThreats).ToList(); List <GISMeasure> listOfMeasuresTemporary = new List <GISMeasure>(); int i = 0; mf.dgvThrMeas.Rows.Clear(); mf.dgvConcreteMeas.Rows.Clear(); foreach (Threat thr in LisfOfThreats) { listOfMeasuresTemporary.AddRange(thr.GISMeasures); string _setOfMeasures = ""; foreach (GISMeasure gm in thr.GISMeasures) { _setOfMeasures += gm.ToString() + ";\n"; } mf.dgvThrMeas.Rows.Add(++i, thr.ToString(), _setOfMeasures); } listOfMeasuresTemporary = listOfMeasuresTemporary.Distinct().ToList(); listOfMeasuresTemporary = listOfMeasuresTemporary.OrderBy(m => m.GISMeasureId).ToList(); ListOfConcreteMeasures = listOfMeasuresTemporary; ListOfConcreteMeasures.AddRange(ListOfAdaptiveMeasures); ListOfConcreteMeasures = ListOfConcreteMeasures.Distinct().OrderBy(m => m.GISMeasureId).ToList(); i = 0; foreach (GISMeasure gm in ListOfConcreteMeasures) { Console.WriteLine("{0}.{1}. {2}", gm.MeasureGroup.ShortName, gm.Number, gm.Description); mf.dgvConcreteMeas.Rows.Add(++i, gm.ToString()); } Console.WriteLine("Базовый: {0}\nАдаптированный: {1}\nУточненный: {2}", ListOfBasicMeasures.Count, ListOfAdaptiveMeasures.Count, ListOfConcreteMeasures.Count); IS.listOfAllNSDMeasures = ListOfConcreteMeasures; ListOfAddedMeasures = ListOfConcreteMeasures.Except(ListOfAdaptiveMeasures).ToList(); } mf.wsm.Visible = false; }
public override void enterTabPage() { if (IS.GISClass == 0 || IS.listOfAllNSDMeasures.Count == 0) { MessageBox.Show("Определите класс информационной системы, а также уточненный адаптированный базовый перечень мер защиты информации для определения требований к параметрам настройки."); return; } mf.wsm.Visible = true; mf.tabControl.TabPages["tpConfigOptions"].Update(); mf.wsm.Update(); mf.dgvConfigNMeasures.Rows.Clear(); using (KPSZIContext db = new KPSZIContext()) { var tempGM = db.GisMeasures.ToList().Intersect(IS.listOfAllNSDMeasures).ToList(); foreach (GISMeasure gm in tempGM) { DataGridViewRow dgr = new DataGridViewRow(); dgr.CreateCells(mf.dgvConfigNMeasures); dgr.Cells[0].Value = gm.MeasureGroup.ShortName + "." + gm.Number + " " + gm.Description; for (int i = gm.ConfigOptions.Count - 1; i >= 0; i--) { if (gm.ConfigOptions.ElementAt(i).Description != null) { if (gm.ConfigOptions.ElementAt(i).Description.Contains("Усиление")) { if (isDefenceClassConstraint(gm.ConfigOptions.ElementAt(i).DefenceClass, IS.GISClass)) { dgr.Cells[1].Value += gm.ConfigOptions.ElementAt(i).Name + " (" + gm.ConfigOptions.ElementAt(i).Description + ")\n"; } } else { string descr = ""; descr = gm.ConfigOptions.ElementAt(i).Description == null ? "" : " (" + gm.ConfigOptions.ElementAt(i).Description + ")"; dgr.Cells[1].Value += gm.ConfigOptions.ElementAt(i).Name + descr + " \n"; } } else { dgr.Cells[1].Value += gm.ConfigOptions.ElementAt(i).Name + "\n"; } } if (dgr.Cells[1].Value != null) { mf.dgvConfigNMeasures.Rows.Add(dgr); } } } mf.wsm.Visible = false; }
protected override void initTabPage() { mf.dgvIntruder.Rows.Add(2); mf.dgvIntruder.Rows[0].Cells[0].Value = "Внутренний"; mf.dgvIntruder.Rows[1].Cells[0].Value = "Внешний"; mf.dgvIntruder.SelectionChanged += dgvIntruder_SelectionChanged; using (KPSZIContext db = new KPSZIContext()) { ListImplementWays = db.ImplementWays.OrderBy(i => i.WayNumber).ToList(); ListIntruderTypes = db.IntruderTypes.OrderBy(t => t.IntruderTypeId).ToList(); ListSources = db.ThreatSources.ToList(); } int k = 0; int yLoc = 5; foreach (ImplementWay iw in ListImplementWays) { CheckBox cb = new CheckBox(); cb.Text = iw.WayName; cb.AutoSize = false; int y = 13 * ((TextRenderer.MeasureText(iw.WayName, mf.clbImplementWays.Font).Width + 50) / (mf.clbImplementWays.Width - 25) + 1) + 10; cb.Size = new Size(mf.clbImplementWays.Width - 25, y); cb.Location = new Point(8, yLoc); cb.CheckedChanged += new System.EventHandler(cbWay_CheckedChanged); yLoc += y; k++; mf.clbImplementWays.Controls.Add(cb); } yLoc += 14; mf.clbImplementWays.Height = yLoc; k = 0; yLoc = 3; foreach (IntruderType it in ListIntruderTypes) { CheckBox cb = new CheckBox(); cb.Text = it.TypeName; cb.AutoSize = false; int y = 13 * ((TextRenderer.MeasureText(it.TypeName, mf.clbIntruderTypes.Font).Width + 50) / (mf.clbIntruderTypes.Width - 25) + 1) + 8; cb.Size = new Size(mf.clbIntruderTypes.Width - 25, y); cb.Location = new Point(8, yLoc); cb.CheckedChanged += new System.EventHandler(cbIntruder_CheckedChanged); yLoc += y; k++; mf.clbIntruderTypes.Controls.Add(cb); } yLoc += 14; mf.clbIntruderTypes.Height = yLoc; }
private void addSZItoMeasuresToolStripMenuItem_Click(object sender, EventArgs e) { using (KPSZIContext db = new KPSZIContext()) { try { db.SeedForMeasures(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } MessageBox.Show("Заполнение прошло успешно!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void BtnGetBasicMeasuresList_Click(object sender, EventArgs e) { if (IS.GISClass == 0) { if (MessageBox.Show("Не определен класс защищенности для дальнейшней работы. \nПерейти во вкладку \"Классификация\"?", "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { mf.treeView.SelectedNode = mf.returnTreeNode("tnClassification"); return; } else { return; } } mf.wsm.Visible = true; mf.wsm.Update(); mf.tabControlMeasures.TabPages.Clear(); mf.tabControlMeasures.TabPages.Add(mf.tpBasicMeas); mf.btnGetAdaptiveMeasuresList.Enabled = true; mf.btnGetConreteMeasuresList.Enabled = false; mf.tbtpMeasDescription.Text = "Базовый набор мер, сформированный в соответствии с установленным классом защищенности информационной системы."; //Очищаем DGV от старых мер mf.dgvBasicMeas.Rows.Clear(); using (KPSZIContext db = new KPSZIContext()) { int i = 0; ListOfBasicMeasures = db.GisMeasures.Where(gm => gm.MinimalRequirementDefenceClass >= IS.GISClass).OrderBy(gm => gm.GISMeasureId).ToList(); foreach (GISMeasure gm in ListOfBasicMeasures) { Console.WriteLine(gm.ToString()); mf.dgvBasicMeas.Rows.Add(++i, gm.ToString()); } } mf.wsm.Visible = false; }
protected override void initTabPage() { using (KPSZIContext db = new KPSZIContext()) { tgThreats = db.TechnogenicThreats.ToList(); foreach (TechnogenicMeasure tgm in db.TechnogenicMeasures) { mf.dgvTGMeasures.Rows.Add(false, tgm.Description); } foreach (TechnogenicThreat tgt in tgThreats) { mf.dgvTGThreats.Rows.Add(tgt.Identificator + " " + tgt.Description); } } mf.tcTGThreats.TabPages[1].Enter += enterPageActualThreats; mf.dgvTGThreats.EditMode = DataGridViewEditMode.EditOnEnter; mf.dgvActualTGThreats.ReadOnly = true; }
private void BtnExportSFHConsole_Click(object sender, EventArgs e) { int i = 0; using (KPSZIContext db = new KPSZIContext()) { var sfhs = db.SFHs.OrderBy(s => s.SFHNumber).ToList(); foreach (SFH sfh in sfhs) { Console.WriteLine("===={0}====", sfh.Name); foreach (GISMeasure gm in sfh.GISMeasures.OrderBy(m => m.GISMeasureId)) { Console.WriteLine("\t {0}.{1} {2}", gm.MeasureGroup.ShortName, gm.Number, gm.Description); } } } }
private void BtnGetAdaptiveMeasuresList_Click(object sender, EventArgs e) { mf.wsm.Visible = true; mf.wsm.Update(); mf.tabControlMeasures.TabPages.Clear(); mf.tabControlMeasures.TabPages.Add(mf.tpAdaptiveMeas); mf.btnGetConreteMeasuresList.Enabled = true; mf.tbtpMeasDescription.Text = "Адаптированный набор мер, сформированный в соответствии с особенностями функционирования ИС, структурно-функциональным характеристикам и информационным технологиями, характерными для данной ИС."; List <GISMeasure> listOfGMForSFHs = new List <GISMeasure>(); using (KPSZIContext db = new KPSZIContext()) { foreach (SFH sfh in IS.listOfSFHs) { var aaa = db.SFHs.Where(s => s.SFHNumber == sfh.SFHNumber).FirstOrDefault(); listOfGMForSFHs.AddRange(aaa.GISMeasures); } listOfGMForSFHs = listOfGMForSFHs.Distinct().ToList(); listOfGMForSFHs = listOfGMForSFHs.OrderBy(gm => gm.GISMeasureId).ToList(); int i = 0; //очистить DGV от старых мер mf.dgvAdaptiveMeas.Rows.Clear(); ListOfAdaptiveMeasures = ListOfBasicMeasures.Intersect(listOfGMForSFHs).ToList(); foreach (GISMeasure gm in ListOfAdaptiveMeasures) { Console.WriteLine(gm.ToString()); mf.dgvAdaptiveMeas.Rows.Add(++i, gm.ToString()); } ListOfExcludedMeasures = ListOfBasicMeasures.Except(ListOfAdaptiveMeasures).ToList(); Console.WriteLine("Базовый: {0}\nАдаптированный: {1}\nПересечение: {2}", ListOfBasicMeasures.Count, listOfGMForSFHs.Count, ListOfAdaptiveMeasures.Count); } mf.wsm.Visible = false; }
private void BtnGetMeasSZIs_Click(object sender, EventArgs e) { mf.wsm.Visible = true; mf.wsm.Update(); mf.tabControlSZIs.TabPages.Clear(); mf.tabControlSZIs.TabPages.Add(mf.tpSZItpSZIs); mf.tabControlSZIs.TabPages.Add(mf.tpSZItpMeasSZIs); mf.tabControlSZIs.SelectedTab = mf.tpSZItpMeasSZIs; mf.dgvMeasSZIs.Rows.Clear(); mf.tpSZItbInfo.Text = "В таблице представлен перечень реализуемых Вами технических мер выбранными Вами средствамизащиты. Для экспорта технического проекта нажмите на кнопку с иконкой Microsoft Office Word"; using (KPSZIContext db = new KPSZIContext()) { int i = 0; var listSZISorts = db.SZISorts.ToList(); var listMeasues = db.GisMeasures.ToList().Intersect(IS.listOfAllNSDMeasures).ToList(); foreach (GISMeasure gm in listMeasues) { if (gm.SZISorts.Count == 0) { continue; } string szis = ""; List <SZI> _szis = new List <SZI>(); foreach (SZISort ss in gm.SZISorts) { _szis = ss.SZIs.ToList().Intersect(IS.listOfSZIs).ToList(); } _szis = _szis.Distinct().ToList(); foreach (SZI szi in _szis) { szis += szi.Name + "\n"; } mf.dgvMeasSZIs.Rows.Add(++i, gm.ToString(), szis); } } mf.wsm.Visible = false; }
private void clearDBToolStripMenuItem_Click(object sender, EventArgs e) { // Снести всю базу if (MessageBox.Show("Будут очищены все таблицы (не удалены) кроме данных о миграциях", "Ахтунг!", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) { using (KPSZIContext db = new KPSZIContext()) { try { db.Database.ExecuteSqlCommand("SET SCHEMA '" + KPSZIContext.schema_name + "'; TRUNCATE \"ConfigOptions\",\"GISMeasures\", \"ISPDNMeasures\", \"ImplementWayThreats\", \"ImplementWays\", \"InfoTypes\", \"IntruderTypes\", \"MeasureGroups\", \"SFHGISMeasures\", \"SFHTypes\", \"SFHs\", \"SZISortGISMeasures\", \"SZISortSZIs\", \"SZISorts\", \"SZIs\", \"TCUIThreats\", \"TCUITypes\", \"TCUIs\", \"TechnogenicMeasures\", \"TechnogenicThreats\", \"ThreatGISMeasures\", \"ThreatSFHs\", \"ThreatSourceThreats\", \"ThreatSources\", \"Threats\", \"Vulnerabilities\", \"VulnerabilityThreats\" CASCADE"); } catch (Exception ex) { MessageBox.Show("В clearDBToolStripMenuItem_Click Exception!\n" + ex.Message, "Ахтунг!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } MessageBox.Show("Таблицы базы данных успешно очищены", "Это успех, парень!", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void btnExportConsole_Click(object sender, EventArgs e) { mf.wsm.Visible = true; mf.wsm.Update(); using (KPSZIContext db = new KPSZIContext()) { var threats = db.Threats.OrderBy(t => t.ThreatNumber).ToList(); foreach (Threat thr in threats) { Console.WriteLine("{0}. {1}", thr.ThreatNumber, thr.Name); foreach (GISMeasure gm in thr.GISMeasures.OrderBy(m => m.GISMeasureId)) { Console.WriteLine("\t {0}.{1} {2}", gm.MeasureGroup.ShortName, gm.Number, gm.Description); } } } mf.wsm.Visible = false; }
private void initDBToolStripMenuItem_Click(object sender, EventArgs e) { // инициализация БД начальным значениями из метода Model.KPSZIContext.Seed() if (MessageBox.Show("БД будет проинициализирована начальными значениями. Перед выполнением процедуры необходимо очистить (не удалить!) все таблицы.\nПродолжить?", "Ахтунг!", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) { using (KPSZIContext db = new KPSZIContext()) { //try //{ db.Seed(); //} //catch (Exception ex) //{ // MessageBox.Show(ex.Message, "Ахтунг!", MessageBoxButtons.OK, MessageBoxIcon.Error); // return; //} } MessageBox.Show("База данных проинициализирована начальными значениями", "Это успех, парень!", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
protected override void initTabPage() { mf.tabControlTCUI.TabPages[2].AutoScroll = true; mf.dgvActualTCUIThreats.DefaultCellStyle.WrapMode = DataGridViewTriState.True; controlsIAC = new List <IntruderAbilityControl>(); listOfTCUIThreats = new List <TCUIThreat>(); checkedTCUI = new List <KPSZI.checkedTCUI>(); using (KPSZIContext db = new KPSZIContext()) { foreach (TCUI TC in db.TCUIs.ToList()) { checkedTCUI ctc = new KPSZI.checkedTCUI(new TCUI { Name = TC.Name, TCUIType = TC.TCUIType, TCUIThreats = TC.TCUIThreats.ToList() }); checkedTCUI.Add(ctc); } } foreach (Control cb in mf.tabControlTCUI.TabPages["tabPageTCUIExist"].Controls) { if (cb as CheckBox != null) { ((CheckBox)cb).Click += new EventHandler(cbClick); } } mf.tabControlTCUI.TabPages["tabPageIntrAbil"].Enter += new System.EventHandler(enterAtPageAbilsOfIntruder); mf.tabControlTCUI.TabPages["tabPageListOfTCUIThreats"].Enter += new System.EventHandler(enterTabPageThreatsList); mf.tabControlTCUI.TabPages["tabPageIntrAbil"].AutoScroll = true; // Добавление контрола определения степени ущерба //damageDegreeInput = new Dictionary<string, int[,,]>(); //foreach (IntruderAbilityControl iac in controlsIAC) // damageDegreeInput.Add(iac.threatName.Substring(0, 6), new int[IS.listOfInfoTypes.Count, 3, 7]); //DDControl = new DamageDegreeControl(IS.listOfInfoTypes, listFilteredThreats, damageDegreeInput, mf); //DDControl.Location = new Point(mf.tpThreatsNSD2.Width - DDControl.Width, 0); //DDControl.Anchor = (AnchorStyles.Top | AnchorStyles.Right); //mf.tpThreatsNSD2.Controls.Add(DDControl); }
protected override void initTabPage() { using (KPSZIContext db = new KPSZIContext()) { // Инициализация списка уязвимостей listVuls = db.Vulnerabilities.ToList(); mf.dgvVulnerabilities.DataSource = listVuls; mf.dgvVulnerabilities.Columns["Threats"].Visible = false; mf.dgvVulnerabilities.Columns["VulnerabilityId"].Visible = false; mf.dgvVulnerabilities.Columns["VulnerabilityNumber"].Visible = false; mf.dgvVulnerabilities.Columns["CheckVulnerability"].Width = 30; mf.dgvVulnerabilities.Columns["CheckVulnerability"].MinimumWidth = 30; mf.dgvVulnerabilities.Columns["VulnerabilityName"].Width = 300; mf.dgvVulnerabilities.Columns["VulnerabilityName"].HeaderText = "Уязвимость"; mf.dgvVulnerabilities.Columns["VulnerabilityDescription"].HeaderText = "Описание"; // Разрешаем редактировать только первый столбец (чекбоксы) foreach (DataGridViewColumn column in mf.dgvVulnerabilities.Columns) { column.ReadOnly = true; } mf.dgvVulnerabilities.Columns["CheckVulnerability"].ReadOnly = false; // true = true, false = false. Ахуеть, да? ((DataGridViewCheckBoxColumn)mf.dgvVulnerabilities.Columns["CheckVulnerability"]).TrueValue = true; ((DataGridViewCheckBoxColumn)mf.dgvVulnerabilities.Columns["CheckVulnerability"]).FalseValue = false; mf.dgvVulnerabilities.ColumnHeadersDefaultCellStyle.BackColor = Color.FromArgb(234, 240, 255); mf.dgvVulnerabilities.ColumnHeadersDefaultCellStyle.ForeColor = Color.FromArgb(28, 32, 57); mf.dgvVulnerabilities.EnableHeadersVisualStyles = false; mf.dgvVulnerabilities.SelectionChanged += new System.EventHandler(dgvVulnerabilities_SelectionChanged); } }
protected override void initTabPage() { using (Model.KPSZIContext db = new KPSZIContext()) { foreach (InfoType it in db.InfoTypes) { TabPage tp = new TabPage { Name = it.TypeName, Text = it.TypeName }; Label labelConf = new Label { Text = "Конфиденциальность" }; labelConf.Location = new Point { X = 10, Y = 15 }; labelConf.Width = 200; Label labelInteg = new Label { Text = "Целостность" }; labelInteg.Location = new Point { X = 10, Y = 45 }; Label labelAvail = new Label { Text = "Доступность" }; labelAvail.Location = new Point { X = 10, Y = 75 }; ComboBox cbConf = new ComboBox { Name = "cbConf", DropDownStyle = ComboBoxStyle.DropDownList }; cbConf.SelectedIndexChanged += GISClassCalculate; cbConf.Location = new Point { X = 135, Y = 7 }; cbConf.Items.Add("Высокий"); cbConf.Items.Add("Средний"); cbConf.Items.Add("Низкий"); ComboBox cbInteg = new ComboBox { Name = "cbInteg", DropDownStyle = ComboBoxStyle.DropDownList }; cbInteg.SelectedIndexChanged += GISClassCalculate; cbInteg.Location = new Point { X = 135, Y = 37 }; cbInteg.Items.Add("Высокий"); cbInteg.Items.Add("Средний"); cbInteg.Items.Add("Низкий"); ComboBox cbAvail = new ComboBox { Name = "cbAvail", DropDownStyle = ComboBoxStyle.DropDownList }; cbAvail.SelectedIndexChanged += GISClassCalculate; cbAvail.Location = new Point { X = 135, Y = 67 }; cbAvail.Items.Add("Высокий"); cbAvail.Items.Add("Средний"); cbAvail.Items.Add("Низкий"); tp.Controls.AddRange(new Control[] { cbConf, cbAvail, cbInteg, labelAvail, labelConf, labelInteg }); tabPagesInfoTypes.Add(tp); } } mf.comboBoxScale.SelectedIndexChanged += new System.EventHandler(GISClassCalculate); mf.checkedListBoxCategoryPDN.SelectedIndexChanged += new System.EventHandler(checkedListBoxCategoryPDN_SelectedIndexChanged); mf.checkBoxSubjectsStaff.CheckedChanged += new System.EventHandler(checkBoxSubjectsStaff_CheckedChanged); mf.comboBoxHundred.SelectedIndexChanged += new System.EventHandler(ISPDNLevelCalculate); mf.comboBoxActualThreatsType.SelectedIndexChanged += new System.EventHandler(ISPDNLevelCalculate); }
protected override void initTabPage() { using (KPSZIContext db = new KPSZIContext()) { //Инициализация списка угроз listThreats = db.Threats.OrderBy(t => t.ThreatNumber).ToList(); foreach (Threat threat in listThreats) { threat.Vulnerabilities = db.Threats.Where(t1 => t1.ThreatNumber == threat.ThreatNumber).First().Vulnerabilities; threat.SFHs = db.Threats.Where(t2 => t2.ThreatNumber == threat.ThreatNumber).First().SFHs; threat.ImplementWays = db.Threats.Where(t3 => t3.ThreatNumber == threat.ThreatNumber).First().ImplementWays; threat.ThreatSources = db.Threats.Where(t4 => t4.ThreatNumber == threat.ThreatNumber).First().ThreatSources; threat.GISMeasures = db.Threats.Where(t5 => t5.ThreatNumber == threat.ThreatNumber).First().GISMeasures; threat.setStringVulnerabilities(); threat.setStringSFHs(); threat.setStringImplementWays(); threat.setStringSources(); } listVulnerabilities = db.Vulnerabilities.OrderBy(v => v.VulnerabilityNumber).ToList(); listSFHs = db.SFHs.OrderBy(s => s.SFHNumber).ToList(); listSFHTypes = db.SFHTypes.OrderBy(st => st.SFHTypeId).ToList(); listImplementWays = db.ImplementWays.OrderBy(w => w.WayNumber).ToList(); listSources = db.ThreatSources.OrderBy(so => so.ThreatSourceId).ToList(); foreach (Vulnerability vul in listVulnerabilities) { vul.Threats = db.Vulnerabilities.Where(v1 => v1.VulnerabilityNumber == vul.VulnerabilityNumber).First().Threats; } foreach (SFH sfh in listSFHs) { sfh.Threats = db.SFHs.Where(s1 => s1.SFHNumber == sfh.SFHNumber).First().Threats; } foreach (ImplementWay iw in listImplementWays) { iw.Threats = db.ImplementWays.Where(w1 => w1.WayNumber == iw.WayNumber).First().Threats; } foreach (ThreatSource ts in listSources) { ts.Threats = db.ThreatSources.Where(so1 => so1.ThreatSourceId == ts.ThreatSourceId).First().Threats; } listFilteredThreats = new List <Threat>(); } mf.dgvThreats.DefaultCellStyle.SelectionBackColor = Color.AliceBlue; mf.dgvThreats.DefaultCellStyle.SelectionForeColor = System.Drawing.Color.Black; mf.tcThreatsNSD.TabPages.Remove(mf.tpThreatsNSD2); mf.tcThreatsNSD.TabPages.Remove(mf.tpThreatsNSD3); mf.dgvThreats.DataSource = listThreats; mf.dgvThreats.Columns["ThreatID"].Visible = false; mf.dgvThreats.Columns["ThreatSources"].Visible = false; mf.dgvThreats.Columns["DateOfChange"].Visible = false; mf.dgvThreats.Columns["DateOfAdd"].Visible = false; mf.dgvThreats.Columns["ImplementWays"].Visible = false; mf.dgvThreats.Columns["SFHs"].Visible = false; mf.dgvThreats.Columns["Vulnerabilities"].Visible = false; mf.dgvThreats.Columns["Description"].Visible = false; mf.dgvThreats.Columns["ObjectOfInfluence"].Visible = false; mf.dgvThreats.Columns["GISMeasures"].Visible = false; mf.dgvThreats.Columns["ThreatNumber"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None; mf.dgvThreats.Columns["ConfidenceViolation"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None; mf.dgvThreats.Columns["IntegrityViolation"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None; mf.dgvThreats.Columns["AvailabilityViolation"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None; mf.dgvThreats.Columns["ThreatID"].DisplayIndex = 0; mf.dgvThreats.Columns["ThreatNumber"].Width = 60; mf.dgvThreats.Columns["ThreatNumber"].DisplayIndex = 1; mf.dgvThreats.Columns["ThreatNumber"].HeaderText = "№ УБИ"; mf.dgvThreats.Columns["Name"].HeaderText = "Название УБИ"; mf.dgvThreats.Columns["Name"].DisplayIndex = 2; mf.dgvThreats.Columns["ConfidenceViolation"].Width = 30; mf.dgvThreats.Columns["ConfidenceViolation"].HeaderText = "К"; mf.dgvThreats.Columns["ConfidenceViolation"].DisplayIndex = 3; mf.dgvThreats.Columns["IntegrityViolation"].Width = 30; mf.dgvThreats.Columns["IntegrityViolation"].HeaderText = "Ц"; mf.dgvThreats.Columns["IntegrityViolation"].DisplayIndex = 4; mf.dgvThreats.Columns["AvailabilityViolation"].Width = 30; mf.dgvThreats.Columns["AvailabilityViolation"].HeaderText = "Д"; mf.dgvThreats.Columns["AvailabilityViolation"].DisplayIndex = 5; mf.dgvThreats.Columns["stringVuls"].HeaderText = "Уязвимости"; mf.dgvThreats.Columns["stringVuls"].DisplayIndex = 6; mf.dgvThreats.Columns["stringWays"].HeaderText = "Способы реализации УБИ"; mf.dgvThreats.Columns["stringWays"].DisplayIndex = 7; mf.dgvThreats.Columns["stringSFHS"].HeaderText = "СФХ"; mf.dgvThreats.Columns["stringSFHS"].DisplayIndex = 8; mf.dgvThreats.Columns["stringSources"].HeaderText = "Источник угрозы"; mf.dgvThreats.Columns["stringSources"].DisplayIndex = 9; mf.dgvThreats.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; mf.dgvThreats.SelectionChanged += new System.EventHandler(dgvThreats_SelectionChanged); mf.tpActualThreats.Resize += new System.EventHandler(tpActualThreats_Resize); mf.clbThreatFilter.SelectedIndexChanged += new System.EventHandler(clbThreatFilter_SelectedIndexChanged); mf.tcThreatsNSD.SelectedIndexChanged += new System.EventHandler(tcThreatsNSD_SelectedIndexChanged); mf.btnGotoDamage.Click += new System.EventHandler(btnGotoDamage_Click); mf.dgvActualThreatsNSD.SelectionChanged += new System.EventHandler(dgvActualThreats_SelectionChanged); mf.btnReady.Click += new System.EventHandler(btnReady_Click); mf.btnExportModelThreats.Click += new System.EventHandler(btnExportModelThreats_Click); mf.clbThreatFilter.SetItemChecked(0, false); mf.clbThreatFilter.SetItemChecked(1, false); mf.clbThreatFilter.SetItemChecked(2, false); mf.clbThreatFilter.SetItemChecked(3, false); filterThreatList(); }
public void BtnExportWord_CLick(object sender, EventArgs e) { mf.wsm.Visible = true; mf.wsm.Update(); Microsoft.Office.Interop.Word._Application wordApp = null; try { wordApp = new Microsoft.Office.Interop.Word.Application(); } catch { mf.wsm.Visible = false; MessageBox.Show("На ПК не установлен пакет Microsoft Office Word 2007 или позднее. Экспорт невозможен.", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Microsoft.Office.Interop.Word.Document wordDoc; Microsoft.Office.Interop.Word.Paragraph wordParag; wordDoc = wordApp.Documents.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); wordParag = wordDoc.Paragraphs.Add(); wordParag.Range.Text = "Требования к параметрам настройки средств защиты информации в ИС \"" + IS.ISName + "\""; wordParag.Range.Font.Name = "Times New Roman"; wordParag.Range.Font.Size = 18; wordParag.Range.Font.Bold = 1; wordParag.Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; wordParag.Range.InsertParagraphAfter(); wordParag.Range.InsertParagraphAfter(); using (KPSZIContext db = new KPSZIContext()) { foreach (MeasureGroup mg in db.MeasureGroups.ToList()) { //Группа мер bool isMeasureGroupInTable = false; for (int i = mf.dgvConfigNMeasures.Rows.Count - 1; i >= 0; i--) { if (mf.dgvConfigNMeasures.Rows[i].Cells[0].Value.ToString().Contains(mg.ShortName + ".")) { isMeasureGroupInTable = true; } } if (!isMeasureGroupInTable) { continue; } wordParag.Range.Text = '\t' + mg.Name; wordParag.Range.Font.Name = "Times New Roman"; wordParag.Range.Font.Size = 16; wordParag.Range.Font.Bold = 1; wordParag.Range.Font.Italic = 0; wordParag.Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify; wordParag.Range.InsertParagraphAfter(); foreach (DataGridViewRow dgvr in mf.dgvConfigNMeasures.Rows) { if (dgvr.Cells[0].Value.ToString().Contains(mg.ShortName + ".")) { //Мера wordParag.Range.Text = '\t' + dgvr.Cells[0].Value.ToString(); wordParag.Range.Font.Name = "Times New Roman"; wordParag.Range.Font.Size = 14; wordParag.Range.Font.Bold = 1; wordParag.Range.Font.Italic = 0; wordParag.Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify; wordParag.Range.InsertParagraphAfter(); //тип сзи string szis = ""; string measure = dgvr.Cells[0].Value.ToString(); List <SZISort> szisorts = db.GisMeasures.ToList().Where(m => (m.MeasureGroup.ShortName + "." + m.Number + " " + m.Description) == measure).First().SZISorts.ToList(); var listOfSZIs = db.SZIs.ToList().Intersect(IS.listOfSZIs).ToList(); foreach (SZI sz in listOfSZIs) { SZI m = db.SZIs.Where(t => t.SZIId == sz.SZIId).First(); sz.SZISorts = m.SZISorts.ToList(); } foreach (SZISort s in szisorts) { szis += s.Name + ": " + listOfSZIs.Where(szi => szi.SZISorts.Contains(s)).First().Name + "; "; } if (szis != "") { szis = szis.Substring(0, szis.Length - 2) + "."; wordParag.Range.Text = '\t' + szis; wordParag.Range.Font.Name = "Times New Roman"; wordParag.Range.Font.Size = 14; wordParag.Range.Font.Bold = 0; wordParag.Range.Font.Italic = 1; wordParag.Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify; wordParag.Range.InsertParagraphAfter(); } string[] configOptions = dgvr.Cells[1].Value.ToString().Split('\n'); for (int i = 0; i < configOptions.Length - 1; i++) { //Параметры char divider = i == configOptions.Length - 2 ? '.' : ';'; wordParag.Range.Text = "\t– " + configOptions[i] + divider; wordParag.Range.Font.Name = "Times New Roman"; wordParag.Range.Font.Size = 12; wordParag.Range.Font.Bold = 0; wordParag.Range.Font.Italic = 0; wordParag.Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify; wordParag.Range.InsertParagraphAfter(); } wordParag.Range.InsertParagraphAfter(); } else { continue; } } wordParag.Range.InsertParagraphAfter(); } wordApp.Visible = true; mf.wsm.Visible = false; } }
private void BtnExprotSFHInterop_Click(object sender, EventArgs e) { Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document wordDoc; Microsoft.Office.Interop.Word.Paragraph wordParag; Microsoft.Office.Interop.Word.Table wordTable; //создаём новый документ Word и задаём параметры листа wordDoc = wordApp.Documents.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); //создаём документ Word // первый параграф wordParag = wordDoc.Paragraphs.Add(Type.Missing); //wordParag.Range.Font.Name = "Times New Roman"; //wordParag.Range.Font.Size = 16; //wordParag.Range.Font.Bold = 1; //wordParag.Range.Text = "Заголовок"; //wordParag.Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; // второй параграф, таблица из n строк и 2 колонок //wordDoc.Paragraphs.Add(Type.Missing); wordParag.Range.Tables.Add(wordParag.Range, 45, 2, Type.Missing, Type.Missing); wordTable = wordDoc.Tables[1]; wordTable.Range.Font.Bold = 0; wordParag.Range.Font.Name = "Times New Roman"; wordTable.Range.Font.Size = 14; //задаём ширину колонок и высоту строк wordTable.Columns.PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPoints; wordTable.Columns[1].SetWidth(200f, Microsoft.Office.Interop.Word.WdRulerStyle.wdAdjustNone); wordTable.Rows.SetHeight(20f, Microsoft.Office.Interop.Word.WdRowHeightRule.wdRowHeightAuto); wordTable.Rows.Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter; wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; wordTable.Range.Select(); //заполнение шапки таблицы wordTable.Cell(1, 1).Range.Text = "Структурно–функциональная характеристика информационной системы"; wordTable.Cell(1, 2).Range.Text = "Мера защиты информации, которая может применяться в информационной системе с данной характеристикой"; //заполняем таблицу int row = 2; using (KPSZIContext db = new KPSZIContext()) { var sfhs = db.SFHs.OrderBy(t => t.SFHNumber).ToList(); foreach (SFH sfh in sfhs) { string measuresSFH = ""; foreach (GISMeasure gm in sfh.GISMeasures.OrderBy(m => m.GISMeasureId)) { measuresSFH += gm.MeasureGroup.ShortName + "." + gm.Number + ". " + gm.Description + ";\n"; } measuresSFH.TrimEnd('\n'); measuresSFH.TrimEnd(';'); wordTable.Cell(row, 1).Range.Text = sfh.Name; wordTable.Cell(row++, 2).Range.Text = measuresSFH; } } //сохраняем документ, закрываем документ, выходим из Word wordDoc.SaveAs(Directory.GetCurrentDirectory() + @"\СФХ-меры.docx"); wordApp.ActiveDocument.Close(); wordApp.Quit(); }
private void refreshThreatDBToolStripMenuItem_Click(object sender, EventArgs e) { // Обновить список угроз if (MessageBox.Show("Будет проведено сравнение локальной базы угроз с данными из файла \"thrlist.xlsx\" и автоматическое обновление данных.\nПродолжить?", "Ахтунг!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { using (KPSZIContext db = new KPSZIContext()) { try { FileInfo fi = new FileInfo("thrlist.xlsx"); List <Threat> listThreatsFromFile = Threat.GetThreatsFromXlsx(fi, db); List <Threat> listThreatsFromDB = db.Threats.OrderBy(t => t.ThreatNumber).ToList(); DateTime lastUpdateOfLocalDB; if (listThreatsFromDB != null) { // Получение даты последнего обновления угроз из БД lastUpdateOfLocalDB = listThreatsFromDB.Select(t => t.DateOfChange).Max(); } else { lastUpdateOfLocalDB = DateTime.MinValue; } // Получение даты последнего обновления угроз из актуального файла с угрозами DateTime lastUpdateOfFile = listThreatsFromFile.Select(t => t.DateOfChange).Max(); // Если нет изменений, то прекратить обновление if (lastUpdateOfLocalDB == lastUpdateOfFile) { MessageBox.Show("База угроз не требует обновления!", "КПСЗИ", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Отбор угроз, претерпевших изменения List <Threat> listChangedOrAddedThreats = listThreatsFromFile.Where(t => t.DateOfChange > lastUpdateOfLocalDB).ToList(); // Внесение изменений foreach (Threat thr in listChangedOrAddedThreats) { Threat ThrFromDB = listThreatsFromDB.Where(t => t.ThreatNumber == thr.ThreatNumber).FirstOrDefault(); if (ThrFromDB == null) { //listThreatsFromDB.Add(thr); db.Threats.Add(thr); continue; } ThrFromDB.AvailabilityViolation = thr.AvailabilityViolation; ThrFromDB.ConfidenceViolation = thr.ConfidenceViolation; ThrFromDB.DateOfAdd = thr.DateOfAdd; ThrFromDB.DateOfChange = thr.DateOfChange; ThrFromDB.Description = thr.Description; ThrFromDB.IntegrityViolation = thr.IntegrityViolation; ThrFromDB.Name = thr.Name; ThrFromDB.ObjectOfInfluence = thr.Name; ThrFromDB.ThreatNumber = thr.ThreatNumber; ThrFromDB.ThreatSources = thr.ThreatSources; } db.SaveChanges(); } catch (Exception ex) { MessageBox.Show("В refreshThreatDBToolStripMenuItem_Click Exception!\n" + ex.Message, "Ахтунг!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } MessageBox.Show("Список угроз обновлен", "Это успех, парень!", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void BtnExportInterop_Click(object sender, EventArgs e) { Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document wordDoc; Microsoft.Office.Interop.Word.Paragraph wordParag; Microsoft.Office.Interop.Word.Table wordTable; //создаём новый документ Word и задаём параметры листа wordDoc = wordApp.Documents.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); //создаём документ Word // первый параграф wordParag = wordDoc.Paragraphs.Add(Type.Missing); //wordParag.Range.Font.Name = "Times New Roman"; //wordParag.Range.Font.Size = 16; //wordParag.Range.Font.Bold = 1; //wordParag.Range.Text = "Заголовок"; //wordParag.Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; // второй параграф, таблица из n строк и 2 колонок //wordDoc.Paragraphs.Add(Type.Missing); wordParag.Range.Tables.Add(wordParag.Range, 209, 3, Type.Missing, Type.Missing); wordTable = wordDoc.Tables[1]; wordTable.Range.Font.Bold = 0; wordParag.Range.Font.Name = "Times New Roman"; wordTable.Range.Font.Size = 14; //задаём ширину колонок и высоту строк wordTable.Columns.PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPoints; wordTable.Columns[1].SetWidth(200f, Microsoft.Office.Interop.Word.WdRulerStyle.wdAdjustNone); wordTable.Rows.SetHeight(20f, Microsoft.Office.Interop.Word.WdRowHeightRule.wdRowHeightAuto); wordTable.Rows.Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter; wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; wordTable.Range.Select(); //заполнение шапки таблицы wordTable.Cell(1, 1).Range.Text = "Номер УБИ"; wordTable.Cell(1, 2).Range.Text = "Наименование УБИ"; wordTable.Cell(1, 3).Range.Text = "Мера"; //заполняем таблицу int row = 2; using (KPSZIContext db = new KPSZIContext()) { var threats = db.Threats.OrderBy(t => t.ThreatNumber).ToList(); foreach (Threat thr in threats) { string threatName = thr.ThreatNumber + "." + thr.Name; string measuresThreat = ""; foreach (GISMeasure gm in thr.GISMeasures.OrderBy(m => m.GISMeasureId)) { measuresThreat += gm.MeasureGroup.ShortName + "." + gm.Number + ". " + gm.Description + ";\n"; } measuresThreat.TrimEnd('\n'); measuresThreat.TrimEnd(';'); wordTable.Cell(row, 1).Range.Text = "УБИ." + thr.ThreatNumber.ToString("000"); wordTable.Cell(row, 2).Range.Text = thr.Name; wordTable.Cell(row++, 3).Range.Text = measuresThreat; } } //сохраняем документ, закрываем документ, выходим из Word wordDoc.SaveAs(Directory.GetCurrentDirectory() + @"\меры.docx"); wordApp.ActiveDocument.Close(); wordApp.Quit(); }
protected override void initTabPage() { using (KPSZIContext db = new KPSZIContext()) { // Инициализация списка видов угроз listInfoTypes = db.InfoTypes.ToList(); ((ListBox)mf.lbInfoTypes).DataSource = listInfoTypes; ((ListBox)mf.lbInfoTypes).DisplayMember = "TypeName"; ((ListBox)mf.lbInfoTypes).ValueMember = "InfoTypeId"; mf.lbInfoTypes.Size = new Size(400, 16 * mf.lbInfoTypes.Items.Count); //Инициализация СФХ групбоксов listSFHTypes = db.SFHTypes.ToList(); listSFHs = db.SFHs.ToList(); GroupBox gb; RadioButton rb; CheckBox cb; checkboxesSFH = new List <CheckBox>(); radiobuttonsSFH = new List <RadioButton>(); int i = 0; int j = 0; int gbY = 85; foreach (SFHType itemSFHType in listSFHTypes) { gb = new GroupBox(); gb.Location = new Point(7, gbY); gb.Text = itemSFHType.Name; foreach (SFH itemSFH in itemSFHType.SFHs) { if (itemSFHType.MultipleChoice) { cb = new CheckBox(); cb.Text = itemSFH.Name; cb.Margin = new Padding(10, 5, 5, 5); cb.Location = new Point(10, 17 + (17 * j)); cb.Size = new Size(440, 17); cb.CheckedChanged += new System.EventHandler(rbSFH_CheckedChanged); checkboxesSFH.Add(cb); gb.Controls.Add(cb); j++; } else { rb = new RadioButton(); rb.Text = itemSFH.Name; rb.Margin = new Padding(10, 5, 5, 5); rb.Location = new Point(10, 17 + (17 * j)); rb.Size = new Size(440, 17); rb.CheckedChanged += new System.EventHandler(rbSFH_CheckedChanged); radiobuttonsSFH.Add(rb); gb.Controls.Add(rb); j++; } } gb.Size = new Size(440, 25 + j * 17); gbY += 30 + j * 17; j = 0; stageTab.Controls.Add(gb); i++; } } mf.lbInfoTypes.SelectedIndexChanged += new System.EventHandler(lbInfoTypes_SelectedIndexChanged); mf.dgvProjectSecurityResult.SelectionChanged += new System.EventHandler(dgvProjectSecurityResult_SelectionChanged); mf.dgvProjectSecurityResult.Rows.Add(4); mf.dgvProjectSecurityResult.Rows[0].Cells[0].Value = "Процент характеристик, соответствующих уровню «высокий»"; mf.dgvProjectSecurityResult.Rows[1].Cells[0].Value = "Процент характеристик, соответствующих уровню «средний»"; mf.dgvProjectSecurityResult.Rows[2].Cells[0].Value = "Процент характеристик, соответствующих уровню «низкий»"; mf.dgvProjectSecurityResult.Rows[3].Cells[0].Value = "Уровень проектной защищенности"; mf.dgvProjectSecurityResult.Rows[3].DefaultCellStyle.BackColor = Color.FromArgb(234, 240, 255); mf.dgvProjectSecurityResult.Rows[3].DefaultCellStyle.ForeColor = Color.FromArgb(28, 32, 57); mf.dgvProjectSecurityResult.Columns[0].Width = mf.dgvProjectSecurityResult.Width - 70; }
private void BtnGetRequirm_Click(object sender, EventArgs e) { mf.wsm.Visible = true; mf.wsm.Update(); if (IS.listOfAllNSDMeasures.Count == 0) { if (MessageBox.Show("Не определен перечень мер защиты информации, необходимый для дальнейшней работы. \nПерейти во вкладку \"Перечень мер\"?", "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { mf.treeView.SelectedNode = mf.returnTreeNode("tnMeasures"); return; } else { return; } } mf.tabControlSZIs.TabPages.Clear(); mf.tpSZItbInfo.Text = "Ниже представлены сформированные требования к средствам защиты информации согласно классу защищенности информационной системы и условиям функционирования. В соответствии с требованиям сформирован перечень видов СЗИ и их представителей. После осуществления выбора, нажмите \"СЗИ\", чтобы просмотреть информацию о них."; switch (IS.GISClass) { case 1: { mf.tbtpSZISVT.Text = "не ниже 5-го класса"; mf.tbtpSZISZI.Text = "не ниже 4-го класса"; mf.tbtpSZINDV.Text = "4"; break; } case 2: { mf.tbtpSZISVT.Text = "не ниже 5-го класса"; mf.tbtpSZISZI.Text = "не ниже 5-го класса"; mf.tbtpSZINDV.Text = "4"; break; } case 3: { mf.tbtpSZISVT.Text = "не ниже 5-го класса"; mf.tbtpSZISZI.Text = "не ниже 6-го класса"; mf.tbtpSZINDV.Text = "не требуется"; break; } default: { if (MessageBox.Show("Не определен класс защищенности для дальнейшней работы. \nПерейти во вкладку \"Классификация\"?", "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { mf.treeView.SelectedNode = mf.returnTreeNode("tnClassification"); return; } else { return; } } } mf.tabControlSZIs.TabPages.Add(mf.tpSZItpReq); using (KPSZIContext db = new KPSZIContext()) { listOfSZIsFromDB = db.SZIs.ToList(); listOfNeededSZISorts = new List <SZISort>(); var listOfAllNSDMeasuresTemporary = db.GisMeasures.ToList().Intersect(IS.listOfAllNSDMeasures).ToList(); foreach (GISMeasure gm in listOfAllNSDMeasuresTemporary) { foreach (SZISort ss in gm.SZISorts) { listOfNeededSZISorts.Add(ss); } } listOfNeededSZISorts = listOfNeededSZISorts.Distinct().ToList(); GroupBox gb; RadioButton rb; CheckBox cb; radiobuttonsSZISorts = new List <RadioButton>(); checkboxesSZISorts = new List <CheckBox>(); mf.ptpSZIforSZI.Controls.Clear(); int i = 0; int j = 0; int gbY = 5; foreach (SZISort szisort in listOfNeededSZISorts) { gb = new GroupBox(); gb.Location = new Point(7, gbY); gb.Text = szisort.Name; foreach (SZI szi in szisort.SZIs) { if (szisort.ShortName != "САВЗ") { rb = new RadioButton(); rb.Text = szi.Name; rb.Margin = new Padding(10, 5, 5, 5); rb.Location = new Point(10, 17 + (17 * j)); rb.Size = new Size(300, 17); rb.CheckedChanged += Rb_CheckedChanged; radiobuttonsSZISorts.Add(rb); gb.Controls.Add(rb); j++; } else { cb = new CheckBox(); cb.Text = szi.Name; cb.Margin = new Padding(10, 5, 5, 5); cb.Location = new Point(10, 17 + (17 * j)); cb.Size = new Size(300, 17); cb.CheckedChanged += Rb_CheckedChanged; checkboxesSZISorts.Add(cb); gb.Controls.Add(cb); j++; } //ставим птичку на первом добавленном СЗИ if (gb.Controls.Count == 1) { var ctrl = gb.Controls[0]; if (ctrl is CheckBox) { var _cb = (CheckBox)ctrl; _cb.Checked = true; } if (ctrl is RadioButton) { var _rb = (RadioButton)ctrl; _rb.Checked = true; } } } gb.Size = new Size(300, 25 + j * 17); gbY += 30 + j * 17; j = 0; //stageTab.Controls.Add(gb); string description; switch (szisort.ShortName) { case "СЗИ от НСД": { description = "Средство защиты информации от несанкционированного доступа. Может реализовывать функции средства контроля съемных машинных носителей"; break; } case "СОВ": { description = "Средство обнаружения вторжений. Может реализовывать функции межсетевых экранов, поэтому не имеет смысла выбирать отличное от него, т.к. приведет к дополнительным затратам. Требования к СОВ утверждены Приказом ФСТЭК России от 6 декабря 2011 г. № 638."; break; } case "МСЭ": { description = "Межсетевой экран. Может реализовывать функции средств обнаружения вторжений, поэтому не имеет смысла выбирать отличное от него, т.к. приведет к дополнительным затратам. Требования к Межсетевым экранам утверждены Приказом ФСТЭК России от 9 февраля 2016 г. № 9."; break; } case "СДЗ": { description = "Средство доверенной загрузки. Обеспечивает доверенную загрузку СВТ. Требования к СДЗ утверждены Приказом ФСТЭК России от 27 сентября 2013 г. № 119."; break; } case "САВЗ": { description = "Средство антивирусной защиты. Обеспечивает защиту от компьютерных вирусов. Требования к САВЗ утверждены Приказом ФСТЭК России от 20 марта 2012 г. № 28."; break; } case "СКН": { description = "Средство контроля съемных машинных носителей информации. Обеспечивает защиту от компьютерных вирусов. Требования к СКН утверждены Приказом ФСТЭК России от 28 июля 2014 г. № 87."; break; } case "САНЗ": { description = "Средство анализа (контроля) защищенности информационной системы. Предназначено для анализа защищенности информации в корпоративных сетях. Специальных требований, кроме наличия сертификата ФСТЭК России, к данному виду СЗИ не устанавливается."; break; } case "СРСБ": { description = "Средство регистрации событий безопасности. Предназначено для управления событиями и информацией ИБ с целью выявления инцидентов в режиме реального времени. Специальных требований, кроме наличия сертификата ФСТЭК России, к данному виду СЗИ не устанавливается."; break; } case "СЗСВ": { description = "Средство защиты среды виртуализации. Предназначено для защиты среды виртуальной инфраструктуры предприятия. Специальных требований, кроме наличия сертификата ФСТЭК России, к данному виду СЗИ не устанавливается."; break; } case "СРК": { description = "Средство резервного копирования и восстановления информации. Предназначено для обеспечения целостности и доступности информации. Специальных требований, кроме наличия сертификата ФСТЭК России, к данному виду СЗИ не устанавливается."; break; } default: { description = "Описание отсутствует"; break; } } TextBox tb = new TextBox(); tb.Text = description; tb.Multiline = true; tb.TextAlign = HorizontalAlignment.Left; tb.Location = new Point(gb.Location.X + gb.Size.Width + 5, gb.Location.Y + 8); tb.Size = new Size(stageTab.Size.Width - 7 - gb.Size.Width - 5 - 50, gb.Size.Height - 8); tb.BackColor = SystemColors.Control; tb.ReadOnly = true; mf.ptpSZIforSZI.Controls.Add(tb); mf.ptpSZIforSZI.Controls.Add(gb); i++; } } mf.wsm.Visible = false; }
private void BtnExportTP_Click(object sender, EventArgs e) { mf.wsm.Visible = true; mf.wsm.Update(); Microsoft.Office.Interop.Word._Application oWord = null; try { oWord = new Microsoft.Office.Interop.Word.Application(); } catch { mf.wsm.Visible = false; MessageBox.Show("На ПК не установлен пакет Microsoft Office Word 2007 или позднее. Экспорт невозможен.", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Microsoft.Office.Interop.Word._Document oDoc = null; try { oDoc = oWord.Documents.Add(Environment.CurrentDirectory + "\\templateTP.docx"); } catch { mf.wsm.Visible = false; MessageBox.Show("Отсутствует файл шаблона тех. проекта \"templateTP.docx\". Экспорт невозможен.", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Microsoft.Office.Interop.Word.Table wordTable; Microsoft.Office.Interop.Word.Range bm; int row = 0; using (KPSZIContext db = new KPSZIContext()) { #region Заполнение СФХ var listOfSFHs = db.SFHs.ToList().Intersect(IS.listOfSFHs).ToList(); var listOfSFHTypes = new List <SFHType>(); foreach (SFH sfh in listOfSFHs) { listOfSFHTypes.Add(sfh.SFHType); } listOfSFHTypes = listOfSFHTypes.Distinct().OrderBy(st => st.SFHTypeId).ToList(); bm = oDoc.Bookmarks["SFH"].Range; bm.Tables.Add(bm, listOfSFHTypes.Count, 2, Type.Missing, Type.Missing); wordTable = bm.Tables[1]; wordTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Rows.Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft; wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; wordTable.Range.Select(); List <SFHType> lst = new List <SFHType>(); row = 1; foreach (SFHType sfhtype in listOfSFHTypes) { if (IS.listOfSFHs.Where(s => s.SFHType.Name == sfhtype.Name).ToList().Count == 0) { continue; } wordTable.Cell(row, 1).Range.Text = sfhtype.Name; string sfhs = ""; foreach (SFH sfh in IS.listOfSFHs.Where(sfh => sfh.SFHType.Name == sfhtype.Name).ToList()) { sfhs += sfh.Name + ", "; } sfhs = sfhs.TrimEnd(' ').TrimEnd(','); wordTable.Cell(row, 2).Range.Text = sfhs; row++; } #endregion #region Базовый набор мер bm = oDoc.Bookmarks["Basic_Set"].Range; bm.Tables.Add(bm, mf.dgvBasicMeas.Rows.Count + 1, 2, Type.Missing, Type.Missing); wordTable = bm.Tables[1]; wordTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Columns.PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent; wordTable.Columns[1].PreferredWidth = 6f; wordTable.Columns[2].PreferredWidth = 94f; wordTable.Rows.Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft; wordTable.Rows[1].Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter; wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; wordTable.Range.Select(); wordTable.Cell(1, 1).Range.Text = "№ п/п"; wordTable.Cell(1, 2).Range.Text = "Наименование базовой меры"; row = 2; foreach (DataGridViewRow dgvrow in mf.dgvBasicMeas.Rows) { wordTable.Cell(row, 1).Range.Text = (row - 1).ToString(); wordTable.Cell(row++, 2).Range.Text = dgvrow.Cells[1].Value.ToString(); } #endregion #region Адаптация базового набора мер bm = oDoc.Bookmarks["Adaptive_Set"].Range; bm.Tables.Add(bm, StageMeasures.ListOfExcludedMeasures.Count + 1, 2, Type.Missing, Type.Missing); wordTable = bm.Tables[1]; wordTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Columns.PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent; wordTable.Columns[1].PreferredWidth = 6f; wordTable.Columns[2].PreferredWidth = 94f; wordTable.Rows.Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft; wordTable.Rows[1].Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter; wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; wordTable.Range.Select(); wordTable.Cell(1, 1).Range.Text = "№ п/п"; wordTable.Cell(1, 2).Range.Text = "Наименование меры"; row = 2; foreach (GISMeasure gm in StageMeasures.ListOfExcludedMeasures) { wordTable.Cell(row, 1).Range.Text = (row - 1).ToString(); wordTable.Cell(row++, 2).Range.Text = gm.ToString(); } #endregion #region Уточненение адаптированного базового набора мер //Вывод УБИ-меры bm = oDoc.Bookmarks["Thr_Meas"].Range; bm.Tables.Add(bm, mf.dgvThrMeas.Rows.Count + 1, 3, Type.Missing, Type.Missing); wordTable = bm.Tables[1]; wordTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Columns.PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent; wordTable.Columns[1].PreferredWidth = 6f; wordTable.Columns[2].PreferredWidth = 19f; wordTable.Columns[3].PreferredWidth = 75f; wordTable.Rows.Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft; wordTable.Rows[1].Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter; wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; wordTable.Range.Select(); wordTable.Cell(1, 1).Range.Text = "№ п/п"; wordTable.Cell(1, 2).Range.Text = "Наименование угрозы"; wordTable.Cell(1, 3).Range.Text = "Меры по нейтрализации УБИ"; row = 2; foreach (DataGridViewRow dgvrow in mf.dgvThrMeas.Rows) { wordTable.Cell(row, 1).Range.Text = (row - 1).ToString(); wordTable.Cell(row, 2).Range.Text = dgvrow.Cells[1].Value.ToString(); wordTable.Cell(row++, 3).Range.Text = dgvrow.Cells[2].Value.ToString(); } //Вывод добавляемых мер bm = oDoc.Bookmarks["Add_Meas"].Range; bm.Tables.Add(bm, StageMeasures.ListOfAddedMeasures.Count + 1, 2, Type.Missing, Type.Missing); wordTable = bm.Tables[1]; wordTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Columns.PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent; wordTable.Columns[1].PreferredWidth = 6f; wordTable.Columns[2].PreferredWidth = 94f; wordTable.Rows.Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft; wordTable.Rows[1].Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter; wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; wordTable.Range.Select(); wordTable.Cell(1, 1).Range.Text = "№ п/п"; wordTable.Cell(1, 2).Range.Text = "Наименование добавляемой меры"; row = 2; foreach (GISMeasure gm in StageMeasures.ListOfAddedMeasures) { wordTable.Cell(row, 1).Range.Text = (row - 1).ToString(); wordTable.Cell(row++, 2).Range.Text = gm.ToString(); } #endregion #region Итоговый перечень мер bm = oDoc.Bookmarks["Final_Set"].Range; bm.Tables.Add(bm, mf.dgvConcreteMeas.Rows.Count + 1, 2, Type.Missing, Type.Missing); wordTable = bm.Tables[1]; wordTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Columns.PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent; wordTable.Columns[1].PreferredWidth = 6f; wordTable.Columns[2].PreferredWidth = 94f; wordTable.Rows.Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft; wordTable.Rows[1].Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter; wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; wordTable.Range.Select(); wordTable.Cell(1, 1).Range.Text = "№ п/п"; wordTable.Cell(1, 2).Range.Text = "Наименование меры"; row = 2; foreach (DataGridViewRow dgvrow in mf.dgvConcreteMeas.Rows) { wordTable.Cell(row, 1).Range.Text = (row - 1).ToString(); wordTable.Cell(row++, 2).Range.Text = dgvrow.Cells[1].Value.ToString(); } #endregion #region Перечень предлагаемых СЗИ bm = oDoc.Bookmarks["SZIs_Set"].Range; bm.Tables.Add(bm, mf.dgvSZIs.Rows.Count + 1, 5, Type.Missing, Type.Missing); wordTable = bm.Tables[1]; wordTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Columns.PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent; wordTable.Columns[1].PreferredWidth = 4.5f; wordTable.Columns[2].PreferredWidth = 36.3f; wordTable.Columns[3].PreferredWidth = 19.6f; wordTable.Columns[4].PreferredWidth = 25.7f; wordTable.Columns[5].PreferredWidth = 13.6f; wordTable.Rows.Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft; wordTable.Rows[1].Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter; wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; wordTable.Range.Select(); wordTable.Cell(1, 1).Range.Text = "№"; wordTable.Cell(1, 2).Range.Text = "Наименование СЗИ"; wordTable.Cell(1, 3).Range.Text = "Вид"; wordTable.Cell(1, 4).Range.Text = "Сертификат"; wordTable.Cell(1, 5).Range.Text = "Уровень контроля отсутствия НДВ"; row = 2; foreach (DataGridViewRow dgvrow in mf.dgvSZIs.Rows) { wordTable.Cell(row, 1).Range.Text = (row - 1).ToString(); wordTable.Cell(row, 2).Range.Text = dgvrow.Cells[1].Value.ToString(); wordTable.Cell(row, 3).Range.Text = dgvrow.Cells[2].Value.ToString(); wordTable.Cell(row, 4).Range.Text = dgvrow.Cells[3].Value.ToString(); wordTable.Cell(row++, 5).Range.Text = dgvrow.Cells[4].Value.ToString(); } #endregion #region Мера-СЗИ bm = oDoc.Bookmarks["Meas_SZIs"].Range; bm.Tables.Add(bm, mf.dgvMeasSZIs.Rows.Count + 1, 3, Type.Missing, Type.Missing); wordTable = bm.Tables[1]; wordTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; wordTable.Columns.PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent; wordTable.Columns[1].PreferredWidth = 6f; wordTable.Columns[2].PreferredWidth = 60f; wordTable.Columns[3].PreferredWidth = 34f; wordTable.Rows.Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft; wordTable.Rows[1].Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter; wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; wordTable.Range.Select(); wordTable.Cell(1, 1).Range.Text = @"№ п\п"; wordTable.Cell(1, 2).Range.Text = "Название меры"; wordTable.Cell(1, 3).Range.Text = "Перечень СЗИ"; row = 2; foreach (DataGridViewRow dgvrow in mf.dgvMeasSZIs.Rows) { wordTable.Cell(row, 1).Range.Text = (row - 1).ToString(); wordTable.Cell(row, 2).Range.Text = dgvrow.Cells[1].Value.ToString(); wordTable.Cell(row++, 3).Range.Text = dgvrow.Cells[2].Value.ToString(); } #endregion #region Замена слов mf.FindAndReplace(oWord, "{ИМЯ_ИС}", IS.ISName); mf.FindAndReplace(oWord, "{КЗ}", IS.GISClass); #endregion oDoc.Activate(); oWord.Visible = true; } mf.wsm.Visible = false; }
private void initForm() { listEmptyThreats = new List <Threat>(); foreach (Threat t in ((StageActualThreats)mf.stages["tnActualThreats"]).listThreats) { if (t.ImplementWays.ToList().Count == 0 || t.Vulnerabilities.ToList().Count == 0 || t.SFHs.ToList().Count == 0) { listEmptyThreats.Add(t); } } dgvThreats.DataSource = listEmptyThreats; dgvThreats.Columns["ThreatID"].Visible = false; dgvThreats.Columns["ThreatSources"].Visible = false; dgvThreats.Columns["DateOfChange"].Visible = false; dgvThreats.Columns["DateOfAdd"].Visible = false; dgvThreats.Columns["ImplementWays"].Visible = false; dgvThreats.Columns["SFHs"].Visible = false; dgvThreats.Columns["Vulnerabilities"].Visible = false; dgvThreats.Columns["Description"].Visible = false; dgvThreats.Columns["ObjectOfInfluence"].Visible = false; dgvThreats.Columns["GISMeasures"].Visible = false; dgvThreats.Columns["ConfidenceViolation"].Visible = false; dgvThreats.Columns["IntegrityViolation"].Visible = false; dgvThreats.Columns["AvailabilityViolation"].Visible = false; dgvThreats.Columns["stringSources"].Visible = false; dgvThreats.Columns["ThreatNumber"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None; dgvThreats.Columns["ThreatID"].DisplayIndex = 0; dgvThreats.Columns["ThreatNumber"].Width = 60; dgvThreats.Columns["ThreatNumber"].DisplayIndex = 1; dgvThreats.Columns["ThreatNumber"].HeaderText = "№ УБИ"; dgvThreats.Columns["Name"].HeaderText = "Название УБИ"; dgvThreats.Columns["Name"].DisplayIndex = 2; dgvThreats.Columns["stringVuls"].HeaderText = "Уязвимости"; dgvThreats.Columns["stringVuls"].DisplayIndex = 3; dgvThreats.Columns["stringWays"].HeaderText = "Способы реализации УБИ"; dgvThreats.Columns["stringWays"].DisplayIndex = 4; dgvThreats.Columns["stringSFHS"].HeaderText = "СФХ"; dgvThreats.Columns["stringSFHS"].DisplayIndex = 5; using (KPSZIContext db = new KPSZIContext()) { //Инициализация СФХ групбоксов listSFHTypes = db.SFHTypes.ToList(); listSFHs = db.SFHs.ToList(); GroupBox gb; RadioButton rb; CheckBox cb; checkboxesSFH = new List <CheckBox>(); radiobuttonsSFH = new List <RadioButton>(); int i = 0; int j = 0; int gbY = 5; foreach (SFHType itemSFHType in listSFHTypes) { gb = new GroupBox(); gb.Location = new Point(7, gbY); gb.Text = itemSFHType.Name; foreach (SFH itemSFH in itemSFHType.SFHs) { if (itemSFHType.MultipleChoice) { cb = new CheckBox(); cb.Text = itemSFH.Name; cb.Margin = new Padding(10, 5, 5, 5); cb.Location = new Point(10, 17 + (17 * j)); cb.Size = new Size(440, 17); cb.CheckedChanged += new System.EventHandler(rbSFH_CheckedChanged); checkboxesSFH.Add(cb); gb.Controls.Add(cb); j++; } else { rb = new RadioButton(); rb.Text = itemSFH.Name; rb.Margin = new Padding(10, 5, 5, 5); rb.Location = new Point(10, 17 + (17 * j)); rb.Size = new Size(440, 17); rb.CheckedChanged += new System.EventHandler(rbSFH_CheckedChanged); radiobuttonsSFH.Add(rb); gb.Controls.Add(rb); j++; } } gb.Size = new Size(440, 25 + j * 17); gbY += 30 + j * 17; j = 0; tpSFHs.Controls.Add(gb); i++; } // инициализация таблицы уязвимостей listVuls = db.Vulnerabilities.ToList(); dgvVulnerabilities.DataSource = listVuls; dgvVulnerabilities.Columns["Threats"].Visible = false; dgvVulnerabilities.Columns["VulnerabilityId"].Visible = false; dgvVulnerabilities.Columns["VulnerabilityNumber"].Visible = false; dgvVulnerabilities.Columns["cbVulnerability"].Width = 30; dgvVulnerabilities.Columns["cbVulnerability"].MinimumWidth = 30; dgvVulnerabilities.Columns["VulnerabilityName"].Width = 300; dgvVulnerabilities.Columns["VulnerabilityName"].HeaderText = "Уязвимость"; dgvVulnerabilities.Columns["VulnerabilityDescription"].HeaderText = "Описание"; foreach (DataGridViewColumn column in dgvVulnerabilities.Columns) { column.ReadOnly = true; } dgvVulnerabilities.Columns["cbVulnerability"].ReadOnly = false; ((DataGridViewCheckBoxColumn)dgvVulnerabilities.Columns["cbVulnerability"]).TrueValue = true; ((DataGridViewCheckBoxColumn)dgvVulnerabilities.Columns["cbVulnerability"]).FalseValue = false; dgvVulnerabilities.ColumnHeadersDefaultCellStyle.BackColor = Color.FromArgb(234, 240, 255); dgvVulnerabilities.ColumnHeadersDefaultCellStyle.ForeColor = Color.FromArgb(28, 32, 57); dgvVulnerabilities.EnableHeadersVisualStyles = false; dgvVulnerabilities.SelectionChanged += new System.EventHandler(dgvVulnerabilities_SelectionChanged); // инициализация способов реализации ListImplementWays = db.ImplementWays.OrderBy(iw => iw.WayNumber).ToList(); int k = 0; int yLoc = 5; foreach (ImplementWay iw in ListImplementWays) { CheckBox cbox = new CheckBox(); cbox.Text = iw.WayName; cbox.AutoSize = false; int y = 13 * ((TextRenderer.MeasureText(iw.WayName, clbImplementWays.Font).Width + 50) / (clbImplementWays.Width - 25) + 1) + 10; cbox.Size = new Size(clbImplementWays.Width - 25, y); cbox.Location = new Point(8, yLoc); cbox.CheckedChanged += new System.EventHandler(cbWay_CheckedChanged); yLoc += y; k++; clbImplementWays.Controls.Add(cbox); } yLoc += 14; clbImplementWays.Height = yLoc; } }