public void LoadGroupData()
        {
            GroupDetailsObject  = GroupTuppleObject.Item1;
            DeleteGroup.Visible = true;
            this.Text           = "Group : " + GroupDetailsObject.Name;
            NameTextBox.Text    = GroupDetailsObject.Name;
            PathTextBox.Text    = GroupDetailsObject.Path;
            GroupFileDialog.InitialDirectory = System.IO.Path.GetDirectoryName(GroupDetailsObject.Path);
            GroupFileDialog.FileName         = System.IO.Path.GetFileName(GroupDetailsObject.Path);
            if (GroupDetailsObject.Enabled)
            {
                EnabledComboBox.SelectedIndex = 0;
            }
            else
            {
                EnabledComboBox.SelectedIndex = 1;
            }
            switch (GroupDetailsObject.ScheduleOccurrence)
            {
            case "weekly":
                OccurrenceComboBox.SelectedIndex = 0;
                break;

            case "daily":
                OccurrenceComboBox.SelectedIndex = 1;
                break;

            case "interval":
                OccurrenceComboBox.SelectedIndex = 2;
                break;
            }
            DayComboBox.SelectedIndex      = GroupDetailsObject.ScheduleDay - 1;
            HourTextBox.Text               = GroupDetailsObject.ScheduleTime.Hour.ToString();
            MinuteTextBox.Text             = GroupDetailsObject.ScheduleTime.Minute.ToString().PadLeft(2, '0');
            IntervalTextBox.Text           = GroupDetailsObject.ScheduleInterval.ToString();
            CreateSaveGroupButton.Text     = "Save Group";
            CancelCloseButton.Text         = "Close";
            IntervalComboBox.SelectedIndex = 0;
            GroupID              = GroupDetailsObject.ID;
            GroupIDLabel.Text    = "ID : " + GroupID.ToString();
            TasksLoadedCount     = 0;
            TaskCollectionObject = GroupTuppleObject.Item2;
            NumberOfTasks        = TaskCollectionObject.TaskList.Count;
            TotalTasksLabel.Text = "Total Tasks : " + NumberOfTasks.ToString();
            foreach (Task TaskObject in TaskCollectionObject.TaskList)
            {
                ThreadPool.QueueUserWorkItem(new WaitCallback(PopulateTasks), TaskObject);
            }
        }
Exemple #2
0
        private void PerformUpdate()
        {
            if (StartupArguments.MCSyncProcessID != -1)
            {
                NonTaskExecuting?.Invoke(this, "Waiting for MCSync to close...");
                while (Process.GetProcesses().Any(p => p.Id == StartupArguments.MCSyncProcessID))
                {
                    Thread.Sleep(50);
                }
            }

            NetworkCredential ftpCredentials = new NetworkCredential("Reporting", "NetLogon");
            FtpWebRequest     webRequest     = (FtpWebRequest)WebRequest.Create($"ftp://www.clussmanproductions.com/support/MCSyncNew/updates/{StartupArguments.VersionToDownload}");

            webRequest.Method      = WebRequestMethods.Ftp.ListDirectory;
            webRequest.Credentials = ftpCredentials;

            string files;

            try
            {
                using (Stream responseStream = webRequest.GetResponse().GetResponseStream())
                    using (StreamReader reader = new StreamReader(responseStream))
                    {
                        files = reader.ReadToEnd();
                    }
            }
            catch (WebException _)
            {
                InvalidVersion?.Invoke(this, new EventArgs());
                return;
            }

            using (StringReader reader = new StringReader(files))
            {
                string file;

                int counter = 0;
                while ((file = reader.ReadLine()) != null)
                {
                    counter++;
                }

                NumberOfTasks?.Invoke(this, counter);
            }

            string directoryPrefix = "";

            if (!string.IsNullOrEmpty(StartupArguments.FolderToDelete) && Directory.GetCurrentDirectory().Contains(StartupArguments.FolderToDelete))
            {
                directoryPrefix = "..\\";
            }
            using (StringReader reader = new StringReader(files))
            {
                string file;
                while ((file = reader.ReadLine()) != null)
                {
                    TaskExecuting?.Invoke(this, "Downloading " + file);

                    webRequest             = (FtpWebRequest)WebRequest.Create($"ftp://www.clussmanproductions.com/support/MCSyncNew/updates/{StartupArguments.VersionToDownload}/{file}");
                    webRequest.Credentials = ftpCredentials;
                    webRequest.Method      = WebRequestMethods.Ftp.DownloadFile;

                    using (Stream responseStream = webRequest.GetResponse().GetResponseStream())
                        using (Stream fileStream = File.Create(directoryPrefix + file))
                        {
                            responseStream.CopyTo(fileStream);
                        }
                }
            }

            StringBuilder argumentBuilder = new StringBuilder($"-processID {Process.GetCurrentProcess().Id}");

            if (!string.IsNullOrEmpty(StartupArguments.FolderToDelete))
            {
                argumentBuilder.Append($" -folder {StartupArguments.FolderToDelete}");
            }

            NonTaskExecuting?.Invoke(this, "Starting MCSync...");
            ProcessStartInfo startInfo = new ProcessStartInfo(directoryPrefix + "MesaSuite.exe", argumentBuilder.ToString());

            startInfo.WorkingDirectory = Directory.GetCurrentDirectory() + directoryPrefix;
            Process.Start(startInfo);
        }