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(); }