Example #1
0
        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;
        }
Example #2
0
        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();
        }
Example #3
0
        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();
        }
Example #4
0
        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;
        }
Example #6
0
        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);
            }
        }
Example #7
0
 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;
 }