private IEnumerable <DnsCheckTaskDto> GetTasks()
        {
            var dnsTasks = new List <DnsCheckTaskDto>();

            try
            {
                var dnsCheckDal = new DalDomainDnsCheck();

                dnsTasks = dnsCheckDal.GetOldUnverifiedTasks(_checkUnverifiedInMinutes, _checkTasksLimit);

                _log.Info("Found {0} unverified tasks to check.", dnsTasks.Count);

                if (!dnsTasks.Any() || dnsTasks.Count < _checkTasksLimit)
                {
                    var dnsVerifiedTasks = dnsCheckDal.GetOldVerifiedTasks(_checkVerifiedInMinutes,
                                                                           _checkTasksLimit - dnsTasks.Count);

                    _log.Info("Found {0} verified tasks to check.", dnsVerifiedTasks.Count);

                    if (dnsVerifiedTasks.Any())
                    {
                        dnsTasks.AddRange(dnsVerifiedTasks);
                    }
                }
            }
            catch (Exception ex)
            {
                _log.Error("GetTasks() Exception: \r\n {0} \r\n", ex.ToString());
            }

            return(dnsTasks);
        }
 private void SetDomainChecked(int domainId)
 {
     try
     {
         var dnsCheckDal = new DalDomainDnsCheck();
         dnsCheckDal.SetDomainChecked(domainId);
     }
     catch (Exception ex)
     {
         _log.Error("SetDomainChecked(domainId={0}) Exception: \r\n {1} \r\n",
                    domainId, ex.ToString());
     }
 }
 private void SetDomainVerifiedAndChecked(int domainId, bool isVerified)
 {
     try
     {
         var dnsCheckDal = new DalDomainDnsCheck();
         dnsCheckDal.SetDomainVerifiedAndChecked(domainId, isVerified);
     }
     catch (Exception ex)
     {
         _log.Error("SetDomainVerifiedAndChecked(domainId={0}, isVerified= {1}) Exception: \r\n {2} \r\n",
                    domainId, isVerified, ex.ToString());
     }
 }
 private void DisableDomain(int domainId)
 {
     try
     {
         var dnsCheckDal = new DalDomainDnsCheck();
         dnsCheckDal.SetDomainDisabled(domainId, _disableUnpaidDomainDays);
     }
     catch (Exception ex)
     {
         _log.Error("DisableDomain(domainId={0}) Exception: \r\n {1} \r\n",
                    domainId, ex.ToString());
     }
 }
        public DnsCheckerService()
        {
            InitializeComponent();
            CanStop = true;
            AutoLog = true;

            XmlConfigurator.Configure();

            _log = LoggerFactory.GetLogger(LoggerFactory.LoggerType.Log4Net, "DnsChecker");

            _mreStop = new ManualResetEvent(false);

            _tsInterval = TimeSpan.FromMinutes(Convert.ToInt32(ConfigurationManager.AppSettings["mailserver.check-timeout-in-minutes"]));

            _checkVerifiedInMinutes   = Convert.ToInt32(ConfigurationManager.AppSettings["mailserver.check-verified-in-minutes"]);
            _checkUnverifiedInMinutes = Convert.ToInt32(ConfigurationManager.AppSettings["mailserver.check-unverified-in-minutes"]);
            _checkTasksLimit          = Convert.ToInt32(ConfigurationManager.AppSettings["mailserver.check-tasks-limit"]);
            _tenantCachingPeriod      = TimeSpan.FromMinutes(Convert.ToInt32(ConfigurationManager.AppSettings["mailserver.tenant-caching-period-in-minutes"]));
            _disableUnpaidDomainDays  = Convert.ToInt32(ConfigurationManager.AppSettings["mailserver.disable-unpaid-domain-check-in-days"]);
            _waitBeforeNextTaskCheckInMilliseconds = Convert.ToInt32(ConfigurationManager.AppSettings["mailserver.wait-before-next-task-check-in-milliseconds"]);

            _log.Info("\r\nConfiguration:\r\n" +
                      "\t- check dns-records of all domains in every {0} minutes;\r\n" +
                      "\t- check no more then {1} domain's dns-records at the same time;\r\n" +
                      "\t- check unverified dns-records every {2} minutes;\r\n" +
                      "\t- check verified dns-records every {3} minutes;\r\n" +
                      "\t- tenant caching period {4} minutes\r\n" +
                      "\t- disable unpaid domain checks {5} days\r\n" +
                      "\t- wait before next task check {6} milliseconds\r\n",
                      _tsInterval.TotalMinutes,
                      _checkTasksLimit,
                      _checkUnverifiedInMinutes,
                      _checkVerifiedInMinutes,
                      _tenantCachingPeriod.TotalMinutes,
                      _disableUnpaidDomainDays,
                      _waitBeforeNextTaskCheckInMilliseconds);

            _dnsCheckDal = new DalDomainDnsCheck();

            _tenantMemCache = new MemoryCache("TenantCache");

            if (ConfigurationManager.AppSettings["mail.default-api-scheme"] != null)
            {
                var defaultApiScheme = ConfigurationManager.AppSettings["mail.default-api-scheme"];

                ApiHelper.SetupScheme(defaultApiScheme);
            }
        }
        public DnsCheckerService()
        {
            InitializeComponent();
            CanStop                   = true;
            AutoLog                   = true;
            _log                      = LoggerFactory.GetLogger(LoggerFactory.LoggerType.Nlog, "DnsChecker");
            _mreStop                  = new ManualResetEvent(false);
            _waitTimeInMinutes        = Convert.ToInt32(ConfigurationManager.AppSettings["check_timeout_in_minutes"]);
            _checkVerifiedInMinutes   = Convert.ToInt32(ConfigurationManager.AppSettings["check_verified_in_minutes"]);
            _checkUnverifiedInMinutes = Convert.ToInt32(ConfigurationManager.AppSettings["check_unverified_in_minutes"]);
            _checkTasksLimit          = Convert.ToInt32(ConfigurationManager.AppSettings["check_tasks_limit"]);
            _tenantCachingPeriod      = TimeSpan.FromMinutes(Convert.ToInt32(ConfigurationManager.AppSettings["tenant_caching_period_in_minutes"]));
            _disableUnpaidDomainDays  = Convert.ToInt32(ConfigurationManager.AppSettings["disable_unpaid_domain_check_in_days"]);
            _waitBeforeNextTaskCheckInMilliseconds = Convert.ToInt32(ConfigurationManager.AppSettings["wait_before_next_task_check_in_milliseconds"]);

            _dnsCheckDal = new DalDomainDnsCheck();
            _manager     = new MailBoxManager(0, _log);
        }