Пример #1
0
        internal CxWSQueryVulnerabilityData[] LoadStoredScanData(long id)
        {
            if (scanId != id)
            {
                XML    = null;
                scanId = id;
            }
            List <CxWSQueryVulnerabilityData> list = new List <CxWSQueryVulnerabilityData>();

            if (XML != null)
            {
                XmlNodeList queryNodes = XML.SelectNodes("/CxXMLResults/Query");
                foreach (XmlNode xmlNode in queryNodes)
                {
                    CxWSQueryVulnerabilityData query = new CxWSQueryVulnerabilityData();
                    string idValue = xmlNode.Attributes["id"].Value ?? xmlNode.Attributes["Id"].Value;
                    if (idValue != null)
                    {
                        query.QueryId = int.Parse(idValue);
                    }

                    string cweIdValue = xmlNode.Attributes["cweId"].Value ?? xmlNode.Attributes["CweId"].Value;
                    if (cweIdValue != null)
                    {
                        query.CWE = int.Parse(cweIdValue);
                    }

                    query.QueryName = xmlNode.Attributes["name"].Value ?? xmlNode.Attributes["Name"].Value;
                    query.GroupName = xmlNode.Attributes["group"].Value ?? xmlNode.Attributes["Group"].Value;
                    XmlAttribute severityAttribute = xmlNode.Attributes["severity"] ?? xmlNode.Attributes["Severity"];
                    if (severityAttribute.Value != null)
                    {
                        query.Severity = (int)ReportQueryResult.SeverityTypeFromString(severityAttribute.Value);
                    }

                    query.AmountOfResults = xmlNode.ChildNodes.Count;

                    list.Add(query);
                }
            }

            return(list.ToArray());
        }
        /// <summary>
        /// Execute 'Show Stored' command
        /// </summary>
        /// <param name="queries"></param>
        /// <param name="login"></param>
        /// <param name="scanId"></param>
        public static void ShowStored(CxWSQueryVulnerabilityData[] queries, LoginData login, long scanId)
        {
            Dictionary <ReportQuerySeverityType, List <CxWSQueryVulnerabilityData> > queriesGroups = new Dictionary <ReportQuerySeverityType, List <CxWSQueryVulnerabilityData> >();
            List <CxWSQueryVulnerabilityData> sev0 = new List <CxWSQueryVulnerabilityData>();
            List <CxWSQueryVulnerabilityData> sev1 = new List <CxWSQueryVulnerabilityData>();
            List <CxWSQueryVulnerabilityData> sev2 = new List <CxWSQueryVulnerabilityData>();
            List <CxWSQueryVulnerabilityData> sev3 = new List <CxWSQueryVulnerabilityData>();

            for (int i = 0; i < queries.Length; i++)
            {
                CxWSQueryVulnerabilityData cur = queries[i];
                switch (cur.Severity)
                {
                case 0:
                    sev0.Add(cur);
                    break;

                case 1:
                    sev1.Add(cur);
                    break;

                case 2:
                    sev2.Add(cur);
                    break;

                case 3:
                    sev3.Add(cur);
                    break;
                }
            }
            if (sev3.Count > 0)
            {
                queriesGroups.Add(ReportQuerySeverityType.High, sev3);
            }
            if (sev2.Count > 0)
            {
                queriesGroups.Add(ReportQuerySeverityType.Medium, sev2);
            }
            if (sev1.Count > 0)
            {
                queriesGroups.Add(ReportQuerySeverityType.Low, sev1);
            }
            if (sev0.Count > 0)
            {
                queriesGroups.Add(ReportQuerySeverityType.Information, sev0);
            }


            Dictionary <ReportQuerySeverityType, List <ReportQueryResult> > tree = new Dictionary <ReportQuerySeverityType, List <ReportQueryResult> >();

            foreach (var queryGroup in queriesGroups)
            {
                List <ReportQueryResult> list = new List <ReportQueryResult>();

                for (int i = 0; i < queryGroup.Value.Count; i++)
                {
                    CxWSQueryVulnerabilityData query = queryGroup.Value[i];

                    ReportQueryResult queryResult = new ReportQueryResult()
                    {
                        CweId            = (int)query.CWE,
                        Group            = query.GroupName,
                        Id               = (int)query.QueryId,
                        Name             = query.QueryName,
                        Paths            = null,
                        Report           = null,
                        Severity         = (ReportQuerySeverityType)query.Severity,
                        AmountOfResults  = query.AmountOfResults,
                        ScanId           = scanId,
                        QueryVersionCode = query.QueryVersionCode
                    };

                    list.Add(queryResult);
                }

                tree.Add(queryGroup.Key, list);
            }

            ReportResult report = new ReportResult();

            report.Tree = tree;

            var reportWinObject = CommonActionsInstance.getInstance().ReportPersepectiveView;

            reportWinObject.Report = report;

            reportWinObject.BindData();
        }