T PerformTheAnalysis <T>(string server) where T : IPingCastleReport { T pingCastleReport = default(T); bool status = StartTask("Perform analysis for " + server, () => { var analyzer = PingCastleFactory.GetPingCastleAnalyzer <T>(); pingCastleReport = analyzer.PerformAnalyze(new PingCastleAnalyzerParameters() { Server = server, Port = Port, Credential = Credential, PerformExtendedTrustDiscovery = AnalyzeReachableDomains, AdditionalNamesForDelegationAnalysis = NodesToInvestigate, }); string domain = pingCastleReport.Domain.DomainName; DisplayAdvancement("Generating html report"); var enduserReportGenerator = PingCastleFactory.GetEndUserReportGenerator <T>(); htmlreports[domain] = enduserReportGenerator.GenerateReportFile(pingCastleReport, License, pingCastleReport.GetHumanReadableFileName()); DisplayAdvancement("Generating xml file for consolidation report" + (EncryptReport ? " (encrypted)" : "")); pingCastleReport.SetExportLevel(ExportLevel); xmlreports[domain] = DataHelper <T> .SaveAsXml(pingCastleReport, pingCastleReport.GetMachineReadableFileName(), EncryptReport); DisplayAdvancement("Done"); }); return(pingCastleReport); }
public bool GenerateFakeReport() { return(StartTask("Generate fake reports", () => { var fakegenerator = new FakeHealthCheckDataGenerator(); var hcconso = fakegenerator.GenerateData(); foreach (var pingCastleReport in hcconso) { var enduserReportGenerator = PingCastleFactory.GetEndUserReportGenerator <HealthcheckData>(); enduserReportGenerator.GenerateReportFile(pingCastleReport, License, pingCastleReport.GetHumanReadableFileName()); pingCastleReport.SetExportLevel(ExportLevel); DataHelper <HealthcheckData> .SaveAsXml(pingCastleReport, pingCastleReport.GetMachineReadableFileName(), EncryptReport); } var reportConso = new ReportHealthCheckConsolidation(); reportConso.GenerateReportFile(hcconso, License, "ad_hc_summary.html"); ReportHealthCheckMapBuilder nodeAnalyzer = new ReportHealthCheckMapBuilder(hcconso, License); nodeAnalyzer.Log = Console.WriteLine; nodeAnalyzer.GenerateReportFile("ad_hc_summary_full_node_map.html"); nodeAnalyzer.FullNodeMap = false; nodeAnalyzer.CenterDomainForSimpliedGraph = CenterDomainForSimpliedGraph; nodeAnalyzer.GenerateReportFile("ad_hc_summary_simple_node_map.html"); var mapReport = new ReportNetworkMap(); mapReport.GenerateReportFile(hcconso, License, "ad_hc_hilbert_map.html"); } )); }
public bool RegenerateHtmlTask() { return(StartTask("Regenerate html report", () => { if (!File.Exists(FileOrDirectory)) { WriteInRed("The file " + FileOrDirectory + " doesn't exist"); return; } var fi = new FileInfo(FileOrDirectory); if (fi.Name.StartsWith("ad_cg_")) { CompromiseGraphData data = DataHelper <CompromiseGraphData> .LoadXml(FileOrDirectory); var report = new ReportCompromiseGraph(); report.GenerateReportFile(data, License, data.GetHumanReadableFileName()); } else { var healthcheckData = DataHelper <HealthcheckData> .LoadXml(FileOrDirectory); var endUserReportGenerator = PingCastleFactory.GetEndUserReportGenerator <HealthcheckData>(); endUserReportGenerator.GenerateReportFile(healthcheckData, License, healthcheckData.GetHumanReadableFileName()); } } )); }
public bool ScannerTask() { return(StartTask("Scanner", () => { PropertyInfo pi = Scanner.GetProperty("Name"); IScanner scanner = PingCastleFactory.LoadScanner(Scanner); string name = pi.GetValue(scanner, null) as string; DisplayAdvancement("Running scanner " + name); scanner.Initialize(Server, Port, Credential); scanner.Export("ad_scanner_" + name + "_" + Server + ".txt"); } )); }
public bool ExportTask() { return(StartTask("Running Export", () => { PropertyInfo pi = Export.GetProperty("Name"); IExport export = PingCastleFactory.LoadExport(Export); string name = pi.GetValue(export, null) as string; DisplayAdvancement("Running export " + name); export.Initialize(Server, Port, Credential); string file = "ad_export_" + name + "_" + Server + ".txt"; export.Export(file); DisplayAdvancement("Results saved to " + new FileInfo(file).FullName); } )); }
public bool RegenerateHtmlTask() { return(StartTask("Regenerate html report", () => { if (!File.Exists(FileOrDirectory)) { WriteInRed("The file " + FileOrDirectory + " doesn't exist"); return; } var fi = new FileInfo(FileOrDirectory); var healthcheckData = DataHelper <HealthcheckData> .LoadXml(FileOrDirectory); var endUserReportGenerator = PingCastleFactory.GetEndUserReportGenerator <HealthcheckData>(); endUserReportGenerator.GenerateReportFile(healthcheckData, License, healthcheckData.GetHumanReadableFileName()); } )); }
public bool ScannerTask() { return(StartTask("Scanner", () => { PropertyInfo pi = Scanner.GetProperty("Name"); IScanner scanner = PingCastleFactory.LoadScanner(Scanner); string name = pi.GetValue(scanner, null) as string; DisplayAdvancement("Running scanner " + name); scanner.Initialize(Server, Port, Credential); if (scanner as ScannerBase != null) { ((ScannerBase)scanner).FileOrDirectory = FileOrDirectory; } string file = "ad_scanner_" + name + "_" + Server + ".txt"; scanner.Export(file); DisplayAdvancement("Results saved to " + new FileInfo(file).FullName); } )); }
public bool GenerateDemoReportTask() { return(StartTask("Generating demo reports", () => { if (String.IsNullOrEmpty(FileOrDirectory)) { FileOrDirectory = Directory.GetCurrentDirectory(); } if (!Directory.Exists(FileOrDirectory)) { WriteInRed("The directory " + FileOrDirectory + " doesn't exist"); return; } string path = Path.Combine(FileOrDirectory, "demo"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } var consolidation = PingCastleReportHelper <HealthcheckData> .LoadXmls(FileOrDirectory, FilterReportDate); if (consolidation.Count == 0) { WriteInRed("No report has been found. Please generate one with PingCastle and the Healtch Check mode. The program will stop."); return; } consolidation = PingCastleReportHelper <HealthcheckData> .TransformReportsToDemo(consolidation); foreach (HealthcheckData data in consolidation) { string domain = data.DomainFQDN; var endUserReportGenerator = PingCastleFactory.GetEndUserReportGenerator <HealthcheckData>(); string html = endUserReportGenerator.GenerateReportFile(data, License, Path.Combine(path, data.GetHumanReadableFileName())); data.SetExportLevel(ExportLevel); string xml = DataHelper <HealthcheckData> .SaveAsXml(data, Path.Combine(path, data.GetMachineReadableFileName()), EncryptReport); } } )); }