public TrotterWatchMiddleware(RequestDelegate next, TrotterWatchOptions options) { _next = next; _continueChecks = options.ContinueChecks; _rblProviders = options.RblProviders is null?ProviderFactory.ReturnRblItems() : ProviderFactory.ReturnRblItems(options.RblProviders); _logger = new TrotterLog(options.Logger); }
/// <summary> /// Checks requests IP and/or Hostname against the Rbl's database /// </summary> /// <param name="context"></param> /// <param name="logger"></param> /// <returns></returns> public async Task <bool> CheckProvider(HttpContext context, TrotterLog logger) { _logger = logger; _context = context; var requestIp = context.Connection.RemoteIpAddress; var formattedIp = FormatIp(requestIp); if (ProviderType == RblType.Both || ProviderType == RblType.Hostname) { _logger.LogEvent(LogLevel.Information, "Initiating PTR Lookup & Hostname check..."); await PtrLookupIp(requestIp); await RblHostLookup(_requestHostname.HostName); _logger.LogEvent(LogLevel.Information, "PTR Lookup & Hostname check completed!"); } _logger.LogEvent(LogLevel.Information, "Initiating IP Lookup against RBL"); await RblHostLookup(formattedIp); _logger.LogEvent(LogLevel.Information, $"RBL Lookup has completed for {ProviderName}"); return(_isListed); }