public static bool Init() { try { var cfg = (TextIndexCfgSectionHandler)ConfigurationManager.GetSection("fullTextIndex"); ChangedCron = new CronExpression(cfg.ChangedCron); RemovedCron = new CronExpression(cfg.RemovedCron); Modules = cfg.Modules .Cast<TextIndexCfgModuleElement>() .Select(e => new ModuleInfo(e.Name)) .ToList(); DataPath = cfg.DataPath; var settings = InitConnectionSettings(cfg); if (settings.Host != "localhost") return false; InitLocalhostSearcherAndIndexer(); } catch (Exception e) { log4net.LogManager.GetLogger("ASC").Fatal("Error while init config", e); return false; } return true; }
public TextIndexCfg() { var cfg = (TextIndexCfgSectionHandler)ConfigurationManager.GetSection("fullTextIndex"); indexPath = cfg.IndexPath.Trim('\\').Trim(); var currentDirectory = AppDomain.CurrentDomain.BaseDirectory; if (string.IsNullOrEmpty(indexPath)) { indexPath = currentDirectory; } if (!Path.IsPathRooted(indexPath)) { indexPath = Path.Combine(currentDirectory, indexPath); } ChangedCron = new CronExpression(cfg.ChangedCron); RemovedCron = new CronExpression(cfg.RemovedCron); Delay = TimeSpan.FromMilliseconds(cfg.Delay); ConnectionString = ConfigurationManager.ConnectionStrings[cfg.ConnectionStringName]; Modules = cfg.Modules .Cast<TextIndexCfgModuleElement>() .Select(e => new ModuleInfo(e.Name, e.Select, ConfigurationManager.ConnectionStrings[e.ConnectionStringName] ?? ConnectionString)) .ToList(); }
public TextIndexCfg() { var cfg = (TextIndexCfgSectionHandler)ConfigurationManager.GetSection("fullTextIndex"); indexPath = cfg.IndexPath.Trim('\\').Trim(); var currentDirectory = AppDomain.CurrentDomain.BaseDirectory; if (string.IsNullOrEmpty(indexPath)) { indexPath = currentDirectory; } if (!Path.IsPathRooted(indexPath)) { indexPath = Path.Combine(currentDirectory, indexPath); } ChangedCron = new CronExpression(cfg.ChangedCron); RemovedCron = new CronExpression(cfg.RemovedCron); ConnectionStringName = cfg.ConnectionStringName; UserActivityDays = cfg.UserActivityDays; Modules = cfg.Modules .Cast<TextIndexCfgModuleElement>() .Select(e => new ModuleInfo(e.Name, e.Select, e.ConnectionStringName ?? ConnectionStringName)) .ToList(); }
public static void SendAutoReports(DateTime datetime) { try { var now = DateTime.UtcNow.Date.AddHours(DateTime.UtcNow.Hour); foreach (var t in new DaoFactory(Global.DbID, -1).GetReportDao().GetAutoTemplates()) { try { var tenant = CoreContext.TenantManager.GetTenant(t.Tenant); if (tenant != null && tenant.Status == TenantStatus.Active && CoreContext.PaymentManager.GetTariff(tenant.TenantId).State < TariffState.NotPaid) { CoreContext.TenantManager.SetCurrentTenant(tenant); var cron = new CronExpression(t.Cron) { TimeZone = CoreContext.TenantManager.GetCurrentTenant().TimeZone }; var date = cron.GetTimeAfter(now.AddTicks(-1)); LogManager.GetLogger("ASC.Web.Projects.Reports").DebugFormat("Find auto report: {0} - {1}, now: {2}, date: {3}", t.Name, t.Cron, now, date); if (date == now) { var user = CoreContext.UserManager.GetUsers(t.CreateBy); if (user.ID != Constants.LostUser.ID && user.Status == EmployeeStatus.Active) { SecurityContext.AuthenticateMe(user.ID); Thread.CurrentThread.CurrentCulture = user.GetCulture(); Thread.CurrentThread.CurrentUICulture = user.GetCulture(); var result = ReportHelper.BuildReport(t.ReportType, t.Filter, ReportViewType.EMail, t.Id); var message = new NoticeMessage(user, HttpUtility.HtmlDecode(t.Name), result, "html"); message.AddArgument(new TagValue(CommonTags.SendFrom, CoreContext.TenantManager.GetCurrentTenant().Name)); message.AddArgument(new TagValue(CommonTags.Priority, 1)); LogManager.GetLogger("ASC.Web.Projects.Reports").DebugFormat("Send auto report: {0} to {1}, tenant: {2}", t.Name, user, CoreContext.TenantManager.GetCurrentTenant()); WorkContext.NotifyContext.DispatchEngine.Dispatch(message, "email.sender"); } } } } catch (System.Security.SecurityException se) { LogManager.GetLogger("ASC.Web.Projects.Reports").Info("SendAutoReports", se); } catch (Exception ex) { LogManager.GetLogger("ASC.Web.Projects.Reports").ErrorFormat("TemplateId: {0}, Temaplate: {1}\r\n{2}", t.Id, t.Filter.ToXml(), ex); } } } catch (Exception ex) { LogManager.GetLogger("ASC.Web.Projects.Reports").Error("SendAutoReports", ex); } }
public string GetAutugeneratedTime(string cronString) { ProjectSecurity.DemandAuthentication(); var cron = new CronExpression(cronString) { TimeZone = CoreContext.TenantManager.GetCurrentTenant().TimeZone }; var date = cron.GetTimeAfter(DateTime.UtcNow); return date.HasValue ? string.Format("@ {0}", TenantUtil.DateTimeFromUtc(date.Value).ToShortString()) : string.Empty; }
public static void SendAutoReports(DateTime datetime) { try { var now = DateTime.UtcNow.Date.AddHours(DateTime.UtcNow.Hour); foreach (var t in new DaoFactory(Global.DB_ID, -1).GetReportDao().GetAutoTemplates()) { try { var tenant = CoreContext.TenantManager.GetTenant(t.Tenant); if (tenant != null && tenant.Status == TenantStatus.Active) { CoreContext.TenantManager.SetCurrentTenant(tenant); var cron = new CronExpression(t.Cron) { TimeZone = CoreContext.TenantManager.GetCurrentTenant().TimeZone }; var date = cron.GetTimeAfter(now.AddTicks(-1)); log4net.LogManager.GetLogger("ASC.Web.Projects.Reports").DebugFormat("Find auto report: {0} - {1}, now: {2}, date: {3}", t.Name, t.Cron, now, date); if (date == now) { var user = CoreContext.UserManager.GetUsers(new Guid(t.CreateBy)); if (user.ID != ASC.Core.Users.Constants.LostUser.ID /*&& user.Status*/) { SecurityContext.AuthenticateMe(user.Email, CoreContext.Authentication.GetUserPasswordHash(user.ID)); var result = BuildReport(t.ReportType, t.Filter, ReportViewType.EMail); if (!string.IsNullOrEmpty(result)) { var message = new NoticeMessage(user, HtmlUtil.SanitizeFragment(HttpUtility.HtmlDecode(t.Name)), result, "html"); log4net.LogManager.GetLogger("ASC.Web.Projects.Reports").DebugFormat("Send auto report: {0} to {1}, tenant: {2}", t.Name, user, CoreContext.TenantManager.GetCurrentTenant()); WorkContext.NotifyContext.DispatchEngine.Dispatch(message, "email.sender"); } else { SendEmptyAutoReports(t); } } } } } catch (System.Security.SecurityException se) { LogManager.GetLogger("ASC.Web.Projects.Reports").Info("SendAutoReports", se); } catch (Exception ex) { LogManager.GetLogger("ASC.Web.Projects.Reports").Error("SendAutoReports", ex); } } } catch (Exception ex) { LogManager.GetLogger("ASC.Web.Projects.Reports").Error("SendAutoReports", ex); } }
public SendMethodWrapper(Action<DateTime> method, string cron) { this.method = method; if (!string.IsNullOrEmpty(cron)) { this.cronExpression = new CronExpression(cron); } UpdateScheduleDate(DateTime.UtcNow); }
public object Clone() { CronExpression copy; try { copy = new CronExpression(CronExpressionString); copy.TimeZone = TimeZone; } catch (FormatException) { throw new Exception("Not Cloneable."); } return copy; }