public override bool? CalcNextFireTime(ScheduleTask task)
        {
            //检查今天时间
            var date = DateTime.Now;
            if (_time < date.TimeOfDay)
                date = date.AddDays(1); //从明天之后开始找打钩

            //找下一个打钩的天
            var nextDayOfWeek = _daysOfWeekly
                .Where(p => p >= date.DayOfWeek)
                .Select(p => (DayOfWeek?)p)
                .FirstOrDefault();

            if (nextDayOfWeek.HasValue) // 找到了
            {
                // 本周
                date = date.AddDays(-(int)date.DayOfWeek + (int)nextDayOfWeek);
            }
            else
            {
                //找不到则下个星期第一个打钩
                nextDayOfWeek = _daysOfWeekly.First();
                date = date.AddDays(-(int)date.DayOfWeek + 7 + (int)nextDayOfWeek);
            }

            task.NextFireTime = new DateTime(date.Year, date.Month, date.Day, _time.Hours, _time.Minutes, _time.Seconds);

            return true;
        }
        /// <summary>
        /// Deletes a task
        /// </summary>
        /// <param name="task">Task</param>
        public virtual void DeleteTask(ScheduleTask task)
        {
            if (task == null)
                throw new ArgumentNullException("task");

            _taskRepository.Delete(task);
        }
        public override bool? CalcNextFireTime(ScheduleTask task)
        {
            //检查今天时间
            var date = DateTime.Now;
            if (_time < date.TimeOfDay)
                date = date.AddDays(1); //从明天之后开始找打钩

            //找下一个打钩的天
            var nextDay = _daysOfMonthly
                .Where(p => p >= date.Day)
                .Select(p => (int?)p)
                .FirstOrDefault();

            if (nextDay.HasValue == false) //找不到则下个月第一个打钩
            {
                nextDay = _daysOfMonthly.First();
                date = date.AddMonths(1);
            }

            task.NextFireTime = new DateTime(
                    date.Year, date.Month, nextDay.Value,
                    _time.Hours, _time.Minutes, _time.Seconds);

            return true;
        }
Example #4
0
 public Task(ScheduleTask scheduleTask)
 {
     Type = scheduleTask.Type;
     Enabled = scheduleTask.Enabled;
     StopOnError = scheduleTask.StopOnError;
     Name = scheduleTask.Name;
 }
Example #5
0
 /// <summary>
 /// Ctor for Task
 /// </summary>
 /// <param name="task">Task </param>
 public XTask(ScheduleTask task)
 {
     this._type = task.Type;
     this._enabled = task.Enabled;
     this._stopOnError = task.StopOnError;
     this._name = task.Name;
 }
        public void UpdateTask(ScheduleTask task)
        {
            Guard.NotNull(task, "task");

            SetMinimumSqlDateTimeValue(task);
            _taskRepository.Update(task);
        }
Example #7
0
        public override bool? CalcNextFireTime(ScheduleTask task)
        {
            if (_dateTime < DateTime.Now)
                return null;

            task.NextFireTime = _dateTime;
            return false;
        }
        /// <summary>
        /// Inserts a task
        /// </summary>
        /// <param name="task">Task</param>
        public virtual void InsertTask(ScheduleTask task)
        {
            if (task == null)
            {
                throw new ArgumentNullException(nameof(task));
            }

            _taskRepository.Insert(task, false);
        }
        /// <summary>
        /// Inserts a task
        /// </summary>
        /// <param name="task">Task</param>
        public virtual async Task InsertTaskAsync(ScheduleTask task)
        {
            if (task == null)
            {
                throw new ArgumentNullException(nameof(task));
            }

            await _taskRepository.InsertAsync(task, false);
        }
Example #10
0
        public void DeleteTask(ScheduleTask task)
        {
            if (task == null)
            {
                throw new ArgumentNullException(nameof(task));
            }

            _taskRepository.Delete(task);
        }
Example #11
0
 /// <summary>
 /// Ctor for Task
 /// </summary>
 /// <param name="task">Task </param>
 public Job(ScheduleTask task)
 {
     this.Type        = task.Type;
     this.Enabled     = task.Enabled;
     this.StopOnError = task.StopOnError;
     this.Name        = task.Name;
     this.LastError   = task.LastError;
     this.IsRunning   = task.IsRunning;                          //task.LastStartUtc.GetValueOrDefault() > task.LastEndUtc.GetValueOrDefault();
 }
Example #12
0
        private async Task <bool> MeetsRecurrenceCriteria(ScheduleTask reminderTask, DateTimeOffset now)
        {
            var lastRun = await _scheduleTaskRepo.GetLastRunTime(reminderTask.ScheduleTaskId);

            var taskHasNeverRan         = !lastRun.HasValue;
            var hasNotRanWithin_N_Weeks = !taskHasNeverRan && now.Subtract(lastRun.Value).TotalDays > (reminderTask.RecurEveryNWeeks * 7);

            return(taskHasNeverRan || hasNotRanWithin_N_Weeks);
        }
Example #13
0
        /// <summary>
        /// Updates the task
        /// </summary>
        /// <param name="task">Task</param>
        public virtual void UpdateTask(ScheduleTask task)
        {
            if (task == null)
            {
                throw new ArgumentNullException(nameof(task));
            }

            _taskRepository.Update(task);
        }
        /// <summary>
        /// Updates the task
        /// </summary>
        /// <param name="task">Task</param>
        public virtual async Task UpdateTask(ScheduleTask task)
        {
            if (task == null)
            {
                throw new ArgumentNullException(nameof(task));
            }

            await _taskRepository.UpdateAsync(task);
        }
Example #15
0
        /// <summary>
        /// Deletes a task
        /// </summary>
        /// <param name="task">Task</param>
        public virtual void DeleteTask(ScheduleTask task)
        {
            if (task == null)
            {
                throw new ArgumentNullException("task");
            }

            _taskRepository.Delete(task);
        }
        /// <summary>
        /// Insert the task
        /// </summary>
        /// <param name="task">Task</param>
        public virtual async Task <ScheduleTask> InsertTask(ScheduleTask task)
        {
            if (task == null)
            {
                throw new ArgumentNullException(nameof(task));
            }

            return(await _taskRepository.InsertAsync(task));
        }
Example #17
0
        /// <summary>
        /// Delete the task
        /// </summary>
        /// <param name="task">Task</param>
        public virtual async Task DeleteTask(ScheduleTask task)
        {
            if (task == null)
            {
                throw new ArgumentNullException("task");
            }

            await _taskRepository.DeleteAsync(task);
        }
Example #18
0
        /// <summary>
        /// Executes the task
        /// </summary>
        /// <param name="scheduleTask">Schedule task</param>
        /// <param name="forceRun">Force run</param>
        /// <param name="throwException">A value indicating whether exception should be thrown if some error happens</param>
        /// <param name="ensureRunOncePerPeriod">A value indicating whether we should ensure this task is run once per run period</param>
        public async Task ExecuteAsync(ScheduleTask scheduleTask, bool forceRun = false, bool throwException = false, bool ensureRunOncePerPeriod = true)
        {
            var enabled = forceRun || (scheduleTask?.Enabled ?? false);

            if (scheduleTask == null || !enabled)
            {
                return;
            }

            if (ensureRunOncePerPeriod)
            {
                //task already running
                if (IsTaskAlreadyRunning(scheduleTask))
                {
                    return;
                }

                //validation (so nobody else can invoke this method when he wants)
                if (scheduleTask.LastStartUtc.HasValue && (DateTime.UtcNow - scheduleTask.LastStartUtc).Value.TotalSeconds < scheduleTask.Seconds)
                {
                    //too early
                    return;
                }
            }

            try
            {
                //get expiration time
                var expirationInSeconds = Math.Min(scheduleTask.Seconds, 300) - 1;
                var expiration          = TimeSpan.FromSeconds(expirationInSeconds);

                //execute task with lock
                _locker.PerformActionWithLock(scheduleTask.Type, expiration, () => ExecuteTask(scheduleTask));
            }
            catch (Exception exc)
            {
                var store = await _storeContext.GetCurrentStoreAsync();

                var scheduleTaskUrl = $"{store.Url}{NopTaskDefaults.ScheduleTaskPath}";

                scheduleTask.Enabled    = !scheduleTask.StopOnError;
                scheduleTask.LastEndUtc = DateTime.UtcNow;
                await _scheduleTaskService.UpdateTaskAsync(scheduleTask);

                var message = string.Format(await _localizationService.GetResourceAsync("ScheduleTasks.Error"), scheduleTask.Name,
                                            exc.Message, scheduleTask.Type, store.Name, scheduleTaskUrl);

                //log error
                await _logger.ErrorAsync(message, exc);

                if (throwException)
                {
                    throw;
                }
            }
        }
Example #19
0
        /// <summary>
        ///		Delete the specified task from the database.
        /// </summary>
        private async System.Threading.Tasks.Task RemoveTaskAsync(string name)
        {
            ScheduleTask task = await _scheduleTaskService.GetTaskByTypeAsync(GetTaskType(name));

            if (task != null)
            {
                await _scheduleTaskService.DeleteTaskAsync(task);
            }
            return;
        }
Example #20
0
        private async Task <bool> ShouldRun(ScheduleTask reminderTask)
        {
            var rightNow           = DateTimeOffset.Now;
            var isAfterStartDate   = rightNow.Subtract(reminderTask.StartDate).TotalSeconds > 0;
            var isCorrectDayOfWeek = MatchesDay(reminderTask, rightNow);

            return(isAfterStartDate &&
                   isCorrectDayOfWeek &&
                   (await MeetsRecurrenceCriteria(reminderTask, rightNow)));
        }
Example #21
0
        /// <summary>
        /// Gets whether the schedule task is visible or not.
        /// </summary>
        /// <param name="task">Scheduled task.</param>
        /// <returns><c>true</c> task is visible, <c>false</c> task is not visible.</returns>
        public static bool IsVisible(this ScheduleTask task)
        {
            Guard.NotNull(task, nameof(task));
            if (task.IsHidden)
            {
                return(false);
            }

            return(true);
        }
Example #22
0
        private bool IsTaskInstalled(ScheduleTask task)
        {
            var type = Type.GetType(task.Type);

            if (type != null)
            {
                return(PluginManager.IsActivePluginAssembly(type.Assembly));
            }
            return(false);
        }
Example #23
0
        public Scheduler()
        {
            var workerNumber = 6;

            _root     = new RootScheduleTask();
            _idToTask = new ConcurrentDictionary <long, ScheduleTask>();
            _idToTask.TryAdd(0, _root);
            _waitingScheduleTask = new AsyncQueue <ScheduleTaskPriority, ScheduleTask>();
            _worker = Enumerable.Range(0, workerNumber).Select(i => Task.Run(Work)).ToList();
        }
Example #24
0
        /// <summary>
        /// 周期性任务
        /// </summary>
        /// <param name="task">任务</param>
        /// <param name="delay">延迟开始时间(毫秒)</param>
        /// <param name="periodic">间隔周期时间(毫秒)</param>
        /// <returns></returns>
        public PeriodicTaskHandle scheduleExecute(ScheduleTask task, long delay, long periodic)
        {
            TaskWrapper wrapper = new TaskWrapper(task, delay, periodic);

            PeriodicTaskHandle handle = new PeriodicTaskHandleImpl(wrapper, this);

            addTask(wrapper);

            return(handle);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="TaskViewModel"/> class.
        /// </summary>
        /// <param name="fileProvider">File provider.</param>
        /// <param name="fileDialog">File dialog.</param>
        /// <param name="scheduleTask">Processed task.</param>
        public TaskViewModel(IFileProvider fileProvider, IFileDialog fileDialog, ScheduleTask scheduleTask)
        {
            fileProvider.ThrowIfNull(nameof(fileProvider));
            fileDialog.ThrowIfNull(nameof(fileDialog));

            _fileProvider = fileProvider;
            _fileDialog   = fileDialog;
            DisplayName   = "Add scheduling task";
            _scheduleTask = scheduleTask ?? new ScheduleTask();
        }
Example #26
0
        public void UninstallTask()
        {
            ScheduleTask scheduleTask = GetScheduleTask();

            if (scheduleTask.Id > 0)
            {
                _scheduleTaskService.DeleteTask(scheduleTask);
                RestartAllTasks();
            }
        }
Example #27
0
        //加载初始值
        private void Schedule_Load(object sender, EventArgs e)
        {
            this.Text      = Model_Data.Language.ScheduleStr.scheduleManager;    //日程管理
            btnAdd.Text    = Model_Data.Language.ScheduleStr.addScheduleTask;    //添加任务
            btnDelete.Text = Model_Data.Language.ScheduleStr.deleteScheduleTask; //删除任务

            SolarSchedule.ScheduleManager manager = SolarSchedule.ScheduleManager.getInstance();

            //===================dataGridView======================//

            if (pk.Rows.Count == 0)
            {
                pk.Columns.Add(Model_Data.Language.ScheduleStr.Event);
                pk.Columns.Add(Model_Data.Language.ScheduleStr.ExecutionTime);
                pk.Columns.Add(Model_Data.Language.ScheduleStr.frequency);
                pk.Columns.Add(Model_Data.Language.ScheduleStr.Result);
                pk.Columns.Add(Model_Data.Language.ScheduleStr.Lastexecution);
                pk.Columns.Add("obj", typeof(ScheduleTask));
                //col.ColumnMapping = MappingType.Hidden;
            }
            for (int i = 0; i < manager._tasks.Count; i++)
            {
                DataRow dr = pk.NewRow();
                dr[Model_Data.Language.ScheduleStr.Event]         = ScheduleTask.transTask(manager._tasks[i].tag);
                dr[Model_Data.Language.ScheduleStr.ExecutionTime] = manager._tasks[i].time.ToString("yyyy-MM-dd HH:mm:ss");
                dr[Model_Data.Language.ScheduleStr.frequency]     = ScheduleTask.transFreq(manager._tasks[i].frequence);
                dr[Model_Data.Language.ScheduleStr.Result]        = ScheduleTask.transResult(manager._tasks[i].result);
                dr[Model_Data.Language.ScheduleStr.Lastexecution] = ScheduleTask.transPreResult(manager._tasks[i].preExecuteTime);
                dr["obj"] = manager._tasks[i];

                pk.Rows.Add(dr);
            }

            //数据不够5行,添加空白行
            int count = pk.Rows.Count;

            for (int i = 6 - count; i >= 0; i--)
            {
                dr = pk.NewRow();
                pk.Rows.Add(dr);
            }

            dataGridView1.DataSource = pk;
            this.dataGridView1.Columns[1].FillWeight = 130;//设置列宽
            this.dataGridView1.Columns[4].FillWeight = 130;
            dataGridView1.Columns[5].Visible         = false;
            //取消列排序
            for (int i = 0; i < this.dataGridView1.Columns.Count; i++)
            {
                this.dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
            }
            //定义行列头显示
            dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = System.Drawing.Color.CornflowerBlue; //列颜?色?
            dataGridView1.RowHeadersDefaultCellStyle.BackColor    = System.Drawing.Color.CornflowerBlue; //行头颜色
        }
Example #28
0
        private async Task From470To480()
        {
            #region Install String resources

            await InstallStringResources("EN_470_480.nopres.xml");

            #endregion

            #region Update customer settings

            var _settingService  = _serviceProvider.GetRequiredService <ISettingService>();
            var customerSettings = _serviceProvider.GetRequiredService <CustomerSettings>();
            customerSettings.HideSubAccountsTab = true;
            await _settingService.SaveSetting(customerSettings);

            #endregion

            #region Update permissions - Actions

            IPermissionProvider provider = new StandardPermissionProvider();
            //install new permissions
            await _mediator.Send(new InstallNewPermissionsCommand()
            {
                PermissionProvider = provider
            });

            var permissions       = provider.GetPermissions();
            var permissionService = _serviceProvider.GetRequiredService <IPermissionService>();
            foreach (var permission in permissions)
            {
                var p = await permissionService.GetPermissionRecordBySystemName(permission.SystemName);

                if (p != null)
                {
                    p.Actions = permission.Actions;
                    await permissionService.UpdatePermissionRecord(p);
                }
            }

            #endregion

            #region Update cancel order Scheduled Task

            var tasks           = _serviceProvider.GetRequiredService <IRepository <ScheduleTask> >();
            var cancelOrderTask = new ScheduleTask {
                ScheduleTaskName = "Cancel unpaid and pending orders",
                Type             = "Grand.Services.Tasks.CancelOrderScheduledTask, Grand.Services",
                Enabled          = false,
                StopOnError      = false,
                TimeInterval     = 1440
            };
            await tasks.InsertAsync(cancelOrderTask);

            #endregion
        }
Example #29
0
 public void Add(ScheduleTask task, int periodic)
 {
     lock (this.Mutex)
     {
         this.TaskList.Add(new MyTaskContext
         {
             Periodic = (long)periodic,
             Task     = task
         });
     }
 }
Example #30
0
        public static void ProccessScheduling()
        {
            int tasksCount  = int.Parse(Console.ReadLine()?.Split(':', StringSplitOptions.RemoveEmptyEntries).ToArray()[1]);
            var tasks       = new List <ScheduleTask>();
            var chosenTasks = new List <ScheduleTask>();
            var indexes     = new List <int>();

            for (int i = 0; i < tasksCount; i++)
            {
                var tokens = Console.ReadLine()?.Split('-', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();
                var task   = new ScheduleTask
                {
                    // ReSharper disable once PossibleNullReferenceException
                    Value = tokens[0],
                    Step  = tokens[1]
                };
                tasks.Add(task);
            }

            var maxSteps = tasks.Select(x => x.Step).Max();
            var minStep  = tasks.Select(x => x.Step).Min();

            while (minStep <= maxSteps)
            {
                var nextStep    = minStep + 1;
                var currentTask = tasks.Where(x => x.Step == minStep && chosenTasks.All(z => z != x))
                                  .OrderByDescending(x => x.Value).FirstOrDefault()
                                  ?? tasks.Where(x =>
                                                 x.Step == nextStep && chosenTasks.All(z => z != x))
                                  .OrderByDescending(x => x.Value).FirstOrDefault();

                var nextBestTask = minStep + 1 <= maxSteps
                                        ? tasks.Where(x => x.Step == minStep + 1).OrderByDescending(x => x.Value).First()
                                        : null;

                if (nextBestTask?.Value > currentTask?.Value)
                {
                    var changeTask = currentTask.Value + nextBestTask.Value <
                                     nextBestTask.Value + tasks.Where(x => x.Step > minStep && x != nextBestTask).OrderByDescending(x => x.Value).First().Value
                                                                        ? nextBestTask
                                                                        : currentTask;

                    currentTask = changeTask;
                }

                var index = tasks.IndexOf(currentTask) + 1;
                chosenTasks.Add(currentTask);
                indexes.Add(index);
                minStep++;
            }

            Console.WriteLine(string.Join("->", indexes));
            Console.WriteLine($"Total value:{chosenTasks.Sum(x => x.Value)}");
        }
Example #31
0
        public override bool? CalcNextFireTime(ScheduleTask task)
        {
            //今天指定时间
            task.NextFireTime = DateTime.Now.Date.Add(_time);

            //如果已经过了时间, 则安排到明天
            if (DateTime.Now.TimeOfDay > _time)
                task.NextFireTime = task.NextFireTime.AddDays(1);

            return true;
        }
Example #32
0
 public static void Delete(ScheduleTask objItem)
 {
     if (objItem != null)
     {
         using (var client = WebApiHelper.myclient(HouseEndpoint, SystemConst.APIJosonReturnValue))
         {
             HttpResponseMessage response = client.DeleteAsync(string.Format(Resource + "?id={0}&CompanyID={1}", objItem.Id, objItem.CompanyID)).GetAwaiter().GetResult();
         }
         RemoveCache(objItem);
     }
 }
Example #33
0
        /// <summary>
        /// Creates and prepares a schedule task view model.
        /// </summary>
        /// <param name="task">Schedule task.</param>
        /// <param name="lastEntry">Last task history entry.</param>
        /// <returns>Schedule task model.</returns>
        public ScheduleTaskModel CreateScheduleTaskModel(ScheduleTask task, ScheduleTaskHistory lastEntry)
        {
            if (task == null)
            {
                return(null);
            }

            var now           = DateTime.UtcNow;
            var nextRunPretty = string.Empty;
            var isOverdue     = false;

            TimeSpan?dueIn = task.NextRunUtc.HasValue
                ? task.NextRunUtc.Value - now
                : (TimeSpan?)null;

            if (dueIn.HasValue)
            {
                if (dueIn.Value.TotalSeconds > 0)
                {
                    nextRunPretty = dueIn.Value.Prettify();
                }
                else
                {
                    nextRunPretty = T("Common.Waiting") + "...";
                    isOverdue     = true;
                }
            }

            var model = new ScheduleTaskModel
            {
                Id              = task.Id,
                Name            = task.Name,
                CronExpression  = task.CronExpression,
                CronDescription = CronExpression.GetFriendlyDescription(task.CronExpression),
                Enabled         = task.Enabled,
                Priority        = task.Priority,
                RunPerMachine   = task.RunPerMachine,
                StopOnError     = task.StopOnError,
                NextRunPretty   = nextRunPretty,
                CancelUrl       = _urlHelper.Action("CancelJob", "ScheduleTask", new { id = task.Id }),
                ExecuteUrl      = _urlHelper.Action("RunJob", "ScheduleTask", new { id = task.Id }),
                EditUrl         = _urlHelper.Action("Edit", "ScheduleTask", new { id = task.Id }),
                IsOverdue       = isOverdue
            };

            if (task.NextRunUtc.HasValue)
            {
                model.NextRun = _dateTimeHelper.ConvertToUserTime(task.NextRunUtc.Value, DateTimeKind.Utc);
            }

            model.LastHistoryEntry = CreateScheduleTaskHistoryModel(lastEntry);

            return(model);
        }
Example #34
0
        //添加任务
        private void AddOK_Click(object sender, EventArgs e)
        {
            ScheduleFrequence frequence  = 0;
            ScheduleOffGrid   schoffGrid = ScheduleOffGrid.On;

            RadioButton[] freqs  = { radBtnOneDay, radBtnEveDay, radWeekly };            //频率
            RadioButton[] Events = { radStartInverter, radCloseInverter, radioVoltage }; //事件
            foreach (RadioButton freq in freqs)
            {
                if (freq.Checked == true)
                {
                    switch (Convert.ToInt16(freq.Tag))
                    {
                    case 0: frequence = ScheduleFrequence.Single; break;

                    case 1: frequence = ScheduleFrequence.EveryDay; break;

                    case 2: frequence = ScheduleFrequence.EveryWeek; break;
                    }
                }
            }
            foreach (RadioButton Event in Events)
            {
                if (Event.Checked == true)
                {
                    schoffGrid = (ScheduleOffGrid)Convert.ToInt16(Event.Tag);
                    break;
                }
            }
            //创建一个任务
            ScheduleTask schTask = new ScheduleTask(Convert.ToDateTime(dateTimePicker1.Text), frequence);

            schTask.tag     = (int)schoffGrid;
            schTask.handle += new TaskHandle(new OffGridTask(schoffGrid).handle);
            SolarSchedule.ScheduleManager.getInstance().addTask(schTask);

            //schedule.listBox1.Items.Add(schTask);


            for (int i = 0; i < schedule.dataGridView1.Rows.Count; i++)
            {
                if (schedule.dataGridView1.Rows[i].Cells[0].Value.ToString() == null || schedule.dataGridView1.Rows[i].Cells[0].Value.ToString() == "")
                {
                    schedule.dataGridView1.Rows[i].Cells[0].Value = ScheduleTask.transTask(schTask.tag);
                    schedule.dataGridView1.Rows[i].Cells[1].Value = schTask.time.ToString("yyyy-MM-dd HH:mm:ss dddd");
                    schedule.dataGridView1.Rows[i].Cells[2].Value = ScheduleTask.transFreq(schTask.frequence);
                    schedule.dataGridView1.Rows[i].Cells[3].Value = ScheduleTask.transResult(schTask.result);
                    schedule.dataGridView1.Rows[i].Cells[4].Value = ScheduleTask.transPreResult(schTask.preExecuteTime);
                    schedule.dataGridView1.Rows[i].Cells[5].Value = schTask;
                    break;
                }
            }
            this.Close();
        }
        public override void Uninstall()
        {
            ScheduleTask task = _scheduleTaskService.GetTaskByType("Nop.Plugin.ExternalProcessing.BDOBalance.SyncTask, Nop.Plugin.ExternalProcessing.BDOBalance");

            if (task != null)
            {
                _scheduleTaskService.DeleteTask(task);
            }
            _settingService.DeleteSetting <BDOBalanceSettings>();
            base.Uninstall();
        }
Example #36
0
        internal static void Init()
        {
            if (isInited is false)
            {
                isInited = true;

                try
                {
                    Assembly.LoadFrom("Markdig.dll");
                }
                catch (Exception)
                {
                    Trace.WriteLine("Cannot load Markdig.dll, MDBlog may be unable to work correctly.");
                }
                bool Found = false;
                //Determine if Markdig is loaded.
                foreach (var item in AppDomain.CurrentDomain.GetAssemblies())
                {
                    try
                    {
                        foreach (var t in item.GetTypes())
                        {
                            if (t.Namespace is not null)
                            {
                                if (
                                    t.Namespace.StartsWith("Markdig"))
                                {
                                    isMarkdownUnavailable = false;
                                    Found = true;
                                    break;
                                }
                            }
                        }
                    }
                    catch (Exception)
                    {
                    }
                    if (Found == true)
                    {
                        break;
                    }
                }
                if (isMarkdownUnavailable == true)
                {
                    Trace.WriteLine("Markdig is unavailable, MDBlog may be unable to work correctly.");
                }
                CheckArticleTemplate();
                CheckHomepageItemTamplate();
                CheckHomepageTamplate();
                CheckArticleFolder();
                ScheduleTask.Schedule(typeof(SharedResources), "MarkdownBlog.FixedTimeUpdate", ScheduleTaskGap.Sec10);
            }
        }
Example #37
0
        public async System.Threading.Tasks.Task ExecuteCronTaskAsync(ScheduleTask scheduleTask)
        {
            try
            {
                var type = Type.GetType(scheduleTask.Type) ??
                           //ensure that it works fine when only the type name is specified (do not require fully qualified names)
                           AppDomain.CurrentDomain.GetAssemblies()
                           .Select(a => a.GetType(scheduleTask.Type))
                           .FirstOrDefault(t => t != null);
                if (type == null)
                {
                    await _logger.ErrorAsync($"Type for schedule task ({scheduleTask.Type}) cannot be found");

                    return;
                }

                object instance = null;
                try
                {
                    instance = EngineContext.Current.Resolve(type);
                }
                catch
                {
                    //try resolve
                }

                if (instance == null)
                {
                    //not resolved
                    instance = EngineContext.Current.ResolveUnregistered(type);
                }

                if (!(instance is IScheduleTask task))
                {
                    return;
                }

                scheduleTask.LastStartUtc = DateTime.UtcNow;
                await _scheduleTaskService.UpdateTaskAsync(scheduleTask);

                await task.ExecuteAsync();

                scheduleTask.LastEndUtc = scheduleTask.LastSuccessUtc = DateTime.UtcNow;
                await _scheduleTaskService.UpdateTaskAsync(scheduleTask);
            }
            catch (Exception ex)
            {
                scheduleTask.LastEndUtc = DateTime.UtcNow;
                await _scheduleTaskService.UpdateTaskAsync(scheduleTask);

                await _logger.ErrorAsync($"Error trying to execute a CRON task \"{scheduleTask.Name}\". {ex.Message}", ex);
            }
        }
Example #38
0
        private async System.Threading.Tasks.Task AddTaskAsync()
        {
            ScheduleTask task = new ScheduleTask();

            task.Name        = $"Update Mattresses";
            task.Seconds     = 14400;
            task.Type        = TaskType;
            task.Enabled     = false;
            task.StopOnError = false;

            await _scheduleTaskService.InsertTaskAsync(task);
        }
        private static void SetMinimumSqlDateTimeValue(ScheduleTask task)
        {
            var minDateTime = DateTime.Parse("1753-01-01");

            if (task.LastEndUtc == DateTime.MinValue)
                task.LastEndUtc = minDateTime;

            if (task.LastStartUtc == DateTime.MinValue)
                task.LastEndUtc = minDateTime;

            if (task.LastSuccessUtc == DateTime.MinValue)
                task.LastSuccessUtc = minDateTime;
        }
 public ScheduleTask RegisterTask(Action task, TaskMoment moment, bool repeat = true)
 {
     var momentInfo = moment.GetInfo();
     var scheduleTask = new ScheduleTask()
     {
         LastExecuted = momentInfo.Item1,
         Action = task,
         Frequency = momentInfo.Item2,
         Repeat = repeat
     };
     AddScheduleTask(scheduleTask);
     return scheduleTask;
 }
Example #41
0
        static int Main(string[] args) 
        {
            Dictionary<string, string> argDict = parseArgs(args);
            String cmd = "\"C:\\Windows\\System32\\cmd.exe\" /K start";
            String ip = null, disable_exhaust = null, disable_spoof = null, disable_defender = null,schedule_task = null,spoof_host = "WPAD";
            String wpad_exclude_str="live.sysinternals.com";
            int srvPort = 80;
   
            if (argDict.ContainsKey("ip")) ip = argDict["ip"];
            if (argDict.ContainsKey("cmd")) cmd = argDict["cmd"];
            if (argDict.ContainsKey("disable_exhaust")) disable_exhaust = argDict["disable_exhaust"];
            if (argDict.ContainsKey("disable_defender")) disable_defender = argDict["disable_defender"];
            if (argDict.ContainsKey("disable_spoof")) disable_spoof = argDict["disable_spoof"];
            if (argDict.ContainsKey("spoof_host")) spoof_host = argDict["spoof_host"];
            if (argDict.ContainsKey("wpad_exclude")) wpad_exclude_str = argDict["wpad_exclude"];
            if (argDict.ContainsKey("schedule_task")) schedule_task = argDict["schedule_task"];
            if (argDict.ContainsKey("srv_port")) srvPort = Int32.Parse(argDict["srv_port"]);

            if (ip == null)
            {
                Console.WriteLine("Usage: potato.exe -ip <ip address, required> -cmd <command, optional> -disable_exhaust <true/false, optional> -disable_defender <true/false, optional> -disable_spoof <true/false, optional> -spoof_host <default wpad, optional> -wpad_exclude <comma separated host to exclude, optional> -schedule_task <true/false, Win10 only, optional> -srv_port <port for webserver to listen, default 80>");
                return 0;
            }
            bool disableExhaust = false;
            if (disable_exhaust != null && disable_exhaust.Equals("true"))
            {
                disableExhaust = true;
            }

            Spoofer spoof;
            spoof = new NBNSSpoofer();
     
            HTTPNtlmHandler httpServer = new HTTPNtlmHandler();
            String[] wpad_exclude = wpad_exclude_str.Split(',');
            Thread httpServerThread = new Thread(() => httpServer.startListening(cmd,wpad_exclude,srvPort));
            httpServerThread.Start();
            
            Thread spoofThread = new Thread(() => spoof.startSpoofing(ip, spoof_host, disableExhaust));

            if (disable_spoof == null || disable_spoof.Equals("false"))
            {
                spoofThread.Start();
                if (!disableExhaust)
                {
                    while (NBNSSpoofer.doneUdp == false)
                    {
                        Thread.Sleep(2000);
                    }
                }
                spoof.checkSpoof(spoof_host);
                Console.WriteLine("Spoofed target " + spoof_host + " succesfully...");
            }

            UpdateLauncher updateL = new UpdateLauncher();
            Thread updateLThread = new Thread(() => updateL.launchUpdateCheck());
            if (disable_defender == null || disable_defender.Equals("false"))
            {
                updateLThread.Start();
            }

            ScheduleTask sc = new ScheduleTask();
<<<<<<< HEAD
            Thread schTask = new Thread(() => sc.schtask(srvPort));
            if (schedule_task != null && schedule_task.Equals("true"))
            {
                schTask.Start(srvPort);
=======
            Thread schTask = new Thread(() => sc.schtask());
            if (schedule_task != null && schedule_task.Equals("true"))
            {
                schTask.Start();
>>>>>>> a80fdfbf7cbef7ae601d584bf185afc7c211099c
            }

            httpServer.finished.WaitOne();
            spoofThread.Abort();
            updateLThread.Abort();
            httpServerThread.Abort();
            return 0;
        }
    }
Example #42
0
 public override bool? CalcNextFireTime(ScheduleTask task)
 {
     task.NextFireTime = DateTime.Now.Add(_delay);
     return true;
 }
        /// <summary>
        /// Inserts a task
        /// </summary>
        /// <param name="task">Task</param>
        public virtual void InsertTask(ScheduleTask task)
        {
            if (task == null)
                throw new ArgumentNullException("task");

            task.CreationDate = DateTime.Now;
            task.ModifiedDate = DateTime.Now;

            _taskRepository.Insert(task);
        }
 public void InsertTask(ScheduleTask scheduleTask)
 {
     Guard.NotNull(scheduleTask, "scheduleTask");
     _taskRepository.Insert(scheduleTask);
     _eventPublisher.EntityInserted(scheduleTask);
 }
Example #45
0
 internal TaskThread(ScheduleTask scheduleTask)
 {
     this._tasks = new Dictionary<string, XTask>();
     this._seconds = scheduleTask.Seconds;
     this._isRunning = false;
 }
 public ScheduleTask RegisterTask(Action task, TimeSpan frequency, bool repeat = true)
 {
     var scheduleTask = new ScheduleTask
     {
         LastExecuted = DateTime.Now,
         Action = task,
         Frequency = frequency,
         Repeat = repeat
     };
     AddScheduleTask(scheduleTask);
     return scheduleTask;
 }
 private void AddScheduleTask(ScheduleTask task)
 {
     var list = doingTasks ? _waiting : _tasks;
     list.Add(task);
 }