예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <summary>
        /// Метод парсит текстовое описание источника угрозы и приводит к объекту класса ThreatSource
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static List <ThreatSource> Parse(string str, List <ThreatSource> tss)
        {
            // Список распарсенных источников угроз
            List <ThreatSource> listOfTS = new List <ThreatSource>();

            if (str == "" || str == null)
            {
                ThreatSource tsnull = tss.Where(t => t.Potencial == 3).FirstOrDefault();
                listOfTS.Add(tsnull);
                return(listOfTS);
            }

            string[] arrOfTextTS = str.Split(',');

            // Если массив пустой, то добавляем в него всю строку:
            if (arrOfTextTS == null)
            {
                arrOfTextTS = new string[1] {
                    str
                };
            }

            foreach (string s in arrOfTextTS)
            {
                ThreatSource ts = new ThreatSource();

                if (s.ToLower().Contains("внутренний"))
                {
                    if (s.ToLower().Contains("низким"))
                    {
                        ts = tss.Where(t => t.InternalIntruder == true && t.Potencial == 0).FirstOrDefault();
                    }
                    else if (s.ToLower().Contains("средним"))
                    {
                        ts = tss.Where(t => t.InternalIntruder == true && t.Potencial == 1).FirstOrDefault();
                    }
                    else if (s.ToLower().Contains("высоким"))
                    {
                        ts = tss.Where(t => t.InternalIntruder == true && t.Potencial == 2).FirstOrDefault();
                    }
                }
                else if (s.ToLower().Contains("внешний"))
                {
                    if (s.ToLower().Contains("низким"))
                    {
                        ts = tss.Where(t => t.InternalIntruder == false && t.Potencial == 0).FirstOrDefault();
                    }
                    else if (s.ToLower().Contains("средним"))
                    {
                        ts = tss.Where(t => t.InternalIntruder == false && t.Potencial == 1).FirstOrDefault();
                    }
                    else if (s.ToLower().Contains("высоким"))
                    {
                        ts = tss.Where(t => t.InternalIntruder == false && t.Potencial == 2).FirstOrDefault();
                    }
                }
                else
                {
                    MessageBox.Show("Произошла ошибка парсинга поля 'Источник угроз'.\nПриступай к дебаггингу", "Ахтунг!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(null);
                }
                listOfTS.Add(ts);
            }

            return(listOfTS);
        }