private async Task <ParsedSPFRecord> ParseSPFOutput(string[] spfOutput, string domainName, int lookupCount) { ParsedSPFRecord spfModel = new ParsedSPFRecord(); Parallel.ForEach(spfOutput, async spfSubstring => { if (spfSubstring.Contains("include:")) { ParsedIncludeRecord includeRecords = new ParsedIncludeRecord(); SPFParseScheduler spfNew = new SPFParseScheduler(); includeRecords.includeRecord = spfSubstring.Split(':')[1]; includeRecords.subLookup = await spfNew.GetSPF(includeRecords.includeRecord, ++lookupCount); if (includeRecords.subLookup == null) { includeRecords.subLookup = new ParsedSPFRecord(); } spfModel.includeRecords.Add(includeRecords); } }); spfModel.lookupCount = lookupCount; return(spfModel); }
public static void SPFRecurse(ParsedIncludeRecord subInclude, string parentIncludeRecord) { if (parentIncludeRecord == "") { Console.WriteLine("---------------------------------------------------"); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("SPF Domain: {0}", subInclude.includeRecord); Console.ResetColor(); } else { Console.WriteLine("---------------------------------------------------"); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("SPF Domain: {0} : {1}", parentIncludeRecord, subInclude.includeRecord); Console.ResetColor(); } foreach (IPVulnerabilities subipVulns in subInclude.subLookup.ip4Records) { Console.WriteLine("---------------------------------------------------"); Console.WriteLine("IP Address: {0}", subipVulns.ip4records); Console.WriteLine("Organisation Name: {0}", subipVulns.organisationName); Console.WriteLine("Country Name: {0}", subipVulns.country_name); Console.WriteLine("Spam Score: {0}", subipVulns.spamLookup); } foreach (CanIBeSpoofed.Spoof_Check.IPVulnerabilities subipVulns in subInclude.subLookup.ip6Records) { Console.WriteLine("---------------------------------------------------"); Console.WriteLine("IP Address: {0}", subipVulns.ip4records); Console.WriteLine("Organisation Name: {0}", subipVulns.organisationName); Console.WriteLine("Country Name: {0}", subipVulns.country_name); Console.WriteLine("Spam Score: {0}", subipVulns.spamLookup); } if (subInclude.subLookup.aRecord.Count != 0) { foreach (ParsedMXARecord aRecords in subInclude.subLookup.aRecord) { Console.WriteLine("---------------------------------------------------"); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("SPF Domain: {0} : {1} 'A' Records", subInclude.includeRecord, aRecords.lookupDomain); Console.ResetColor(); foreach (CanIBeSpoofed.Spoof_Check.IPVulnerabilities ipVulns in aRecords.ipLookup) { Console.WriteLine("---------------------------------------------------"); Console.WriteLine("IP Address: {0}", ipVulns.ip4records); Console.WriteLine("Organisation Name: {0}", ipVulns.organisationName); Console.WriteLine("Country Name: {0}", ipVulns.country_name); Console.WriteLine("Spam Score: {0}", ipVulns.spamLookup); } } } if (subInclude.subLookup.mxRecord.Count != 0) { foreach (CanIBeSpoofed.Spoof_Check.ParsedMXARecord mxRecords in subInclude.subLookup.mxRecord) { Console.WriteLine("---------------------------------------------------"); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("SPF Domain: {0} : {1} 'MX' Records", subInclude.includeRecord, mxRecords.lookupDomain); Console.ResetColor(); foreach (CanIBeSpoofed.Spoof_Check.IPVulnerabilities ipVulns in mxRecords.ipLookup) { Console.WriteLine("---------------------------------------------------"); Console.WriteLine("IP Address: {0}", ipVulns.ip4records); Console.WriteLine("Organisation Name: {0}", ipVulns.organisationName); Console.WriteLine("Country Name: {0}", ipVulns.country_name); Console.WriteLine("Spam Score: {0}", ipVulns.spamLookup); } } } }