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);
        }
Example #2
0
        /// <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);
        }