Esempio n. 1
0
        /// <summary>
        /// Schedule backup when outlook is closed
        /// </summary>
        public void ScheduleBackupOnExit(Office.IRibbonControl control)
        {
            var config = BackupSettingsDao.loadSettings();

            config.LastRun = new DateTime();
            BackupSettingsDao.saveSettings(config);
        }
Esempio n. 2
0
        /// <summary>
        /// Saves the current settings from the form to disk
        /// </summary>
        /// <returns>true, if save action was successful</returns>
        private bool saveSettings()
        {
            //preserve hidden flags
            //BackupSettings config = BackupSettingsDao.loadSettings();
            if (config == null)
            {
                config = new BackupSettings();
            }
            config.DestinationPath  = txtDestination.Text;
            config.Interval         = (int)numInterval.Value;
            config.BackupProgram    = txtBackupExe.Text;
            config.BackupPrefix     = txtPrefix.Text;
            config.BackupSuffix     = txtSuffix.Text;
            config.PostBackupCmd    = txtPostBackupCmd.Text;
            config.BackupAll        = cbxBackupAll.Checked;
            config.CountdownSeconds = (int)numCountdown.Value;
            if (String.IsNullOrEmpty(txtLastBackup.Text))
            {
                config.LastRun = DateTime.MinValue;
            }

            config.Items.Clear();
            for (int i = 0; i < lvStores.Items.Count; i++)
            {
                if (lvStores.Items[i].Checked)
                {
                    config.Items.Add(lvStores.Items[i].Text);
                }
            }
            return(BackupSettingsDao.saveSettings(config));
        }
Esempio n. 3
0
        private /*async*/ void startAsyncWork()
        {
            Console.WriteLine("DoWork Starting");
            //await Task.Run(() =>
            Task t = Task.Factory.StartNew(() =>
            {
                int iError            = 0;
                BackupSettings config = BackupSettingsDao.loadSettings();

                BackupTool.setFileLabel(this.lblFilename);
                BackupTool.setProgressBar(this.pbCopyProgress);
                BackupTool.setTotalProgressBar(this.pbTotalProgress);
                BackupTool.setMegaByesPerSecondLabel(this.lblMegaBytesPerSecond);

                if (config != null && config.LastRun == null)
                {
                    startCountdown(config, LogToScreen);
                    iError = BackupTool.tryBackup(config, LogToScreen);
                }
                else if (config != null && config.LastRun.AddDays(config.Interval) <= DateTime.Now)
                {
                    startCountdown(config, LogToScreen);
                    iError = BackupTool.tryBackup(config, LogToScreen);
                }

                if (iError == 0)
                {
                    Application.Exit();
                }
                else
                {
                    BackupTool.CanExit = true;  //allow manual closing
                }
            });
        }
Esempio n. 4
0
        /// <summary>
        /// Waits, till outlook ends and then starts the backup process
        /// </summary>
        /// <param name="config">Stored configuration from outlook plugin</param>
        /// <param name="log">logging delegate to send error information</param>
        /// <returns>number of occurred errors</returns>
        public static int tryBackup(BackupSettings config, Logger log)
        {
            int iError = 0;

            if (config == null)
            {
                log("backup not configured");
                return(0);
            }

            log("Starting backup...please wait...");

            try
            {
                if (config.Items.Count > 0)
                {
                    log("Check whether outlooks is still running ...");
                    if (WaitForProcessEnd(OUTLOOK_PROC, log))
                    {
                        log("No outlook process found");
                        iError += doBackup(config, log);
                        if (!String.IsNullOrEmpty(config.PostBackupCmd))
                        {
                            int iRes = RunPostCmd(config.PostBackupCmd, config.ProfileName, log);
                            iError += iRes;
                        }
                    }
                    else
                    {
                        iError++;
                        log("Error waiting for " + OUTLOOK_PROC);
                    }
                }
                else
                {
                    iError++;
                    log("Error: no files for backup selected");
                }

                //if no errors occurred, save current timestamp
                if (iError == 0)
                {
                    config.LastRun = DateTime.Now;
                    BackupSettingsDao.saveSettings(config);
                }
            }
            catch (InstanceAlreadyRunningException)
            {
                log("Backup already running...");
                iError++;
            }

            return(iError);
        }
Esempio n. 5
0
        static int Main(string[] args)
        {
            int RetCode = 0;

            Dictionary <String, String> argsDict = new Dictionary <String, String>();

            if (!parseArgs(args, argsDict))
            {
                showHelp(args);
                return(0);
            }

            if (argsDict.ContainsKey("/register"))
            {
                RetCode = registerPlugin(true) ? 0 : 1;
            }
            else if (argsDict.ContainsKey("/registersetup"))
            {
                RetCode = registerPlugin(false) ? 0 : 1;
            }
            else if (argsDict.ContainsKey("/unregister"))
            {
                RetCode = unregisterPlugin() ? 0 : 1;
            }
            else if (argsDict.ContainsKey("/backupnow"))
            {
                int iError = 0;
                SafeNativeMethods.AttachConsole(SafeNativeMethods.ATTACH_PARENT_PROCESS);
                try
                {
                    LogToConsole("Reading settings ...");
                    BackupSettings config = BackupSettingsDao.loadSettings();
                    LogToConsole("Reading settings finished");
                    iError = BackupTool.tryBackup(config, LogToConsole);
                }
                catch (Exception e)
                {
                    LogToConsole(e.Message);
                    LogToConsole(e.StackTrace);
                }

                SendKeys.SendWait("{ENTER}");
                SafeNativeMethods.FreeConsole();
                RetCode = iError;
            }
            else
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new frmMain());
            }

            return(RetCode);
        }
Esempio n. 6
0
        /// <summary>
        /// Run backup program if neccessary
        /// </summary>
        void ThisAddIn_Quit()
        {
            try
            {
                BackupSettings config = BackupSettingsDao.loadSettings();

                //if configuration was done and backup program was configured
                if (config != null && !String.IsNullOrEmpty(config.BackupProgram))
                {
                    //and if not yet backuped or if backup too old, then run program
                    if (config.LastRun == null ||
                        config.LastRun.AddDays(config.Interval).AddHours(config.IntervalHours) <= DateTime.Now)
                    {
                        bool configChanged = false;
                        if (config.BackupAll)
                        {
                            //If alles pdf-files should be saved, enumerate them and save to config-file
                            //Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
                            config.Items.Clear();

                            var list = BackupUtils.GetStoreLocations(config, Application.Session.Stores);
                            config.Items.AddRange(list.ToArray());

                            configChanged = true;
                        }


                        if (config.ProfileName != Application.Session.CurrentProfileName)
                        {
                            config.ProfileName = Application.Session.CurrentProfileName;
                            configChanged      = true;
                        }

                        if (configChanged)
                        {
                            BackupSettingsDao.saveSettings(config);
                        }

                        try
                        {
                            Process.Start(config.BackupProgram);
                        }
                        catch (Exception e)
                        {
                            System.Windows.Forms.MessageBox.Show(config.BackupProgram + " not found! " + e.Message);
                        }
                    }
                }//config loaded
            }
            catch (Exception e)
            {
                System.Windows.Forms.MessageBox.Show(e.Message);
            }
        }
Esempio n. 7
0
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            ((Outlook.ApplicationEvents_11_Event)Application).Quit
                += new Outlook.ApplicationEvents_11_QuitEventHandler(ThisAddIn_Quit);

            //set language to office language
            //http://blog.sebastianbrand.com/2010/03/vsto-using-net-multi-language-support.html
            Thread.CurrentThread.CurrentUICulture =
                CultureInfo.GetCultureInfo(this.Application.LanguageSettings.get_LanguageID(Microsoft.Office.Core.MsoAppLanguageID.msoLanguageIDUI));

            BackupSettings config = BackupSettingsDao.loadSettings();

            Rib.setAccessSettingsAllowed(config.AllowSettingsAccess);
        }
Esempio n. 8
0
        /// <summary>
        /// Populate form and display saved settings (if available)
        /// </summary>
        /// <param name="sender">not used</param>
        /// <param name="e">OnLoad-Event-Args</param>
        private void FBackupSettings_Load(object sender, EventArgs e)
        {
            //cleanup
            txtDestination.Text = "";
            lvStores.Items.Clear();
            config = BackupSettingsDao.loadSettings();

            //Add pst-files to list
            var list = BackupUtils.GetStoreLocations(config, stores);

            ListViewItem[] lItem = list.Select(f => new ListViewItem(f + " (" + GetHumanReadableFileSize(f) + ")"))
                                   .ToArray();
            lvStores.Items.AddRange(lItem);

            lvStores.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);

            applySettings();
        }
Esempio n. 9
0
        private /*async*/ void startAsyncWork()
        {
            Console.WriteLine("DoWork Starting");
            //await Task.Run(() =>
            Task t = Task.Factory.StartNew(() =>
            {
                int iError            = 0;
                BackupSettings config = BackupSettingsDao.loadSettings();

                BackupTool.setFileLabel(this.lblFilename);
                BackupTool.setProgressBar(this.pbCopyProgress);
                BackupTool.setTotalProgressBar(this.pbTotalProgress);
                BackupTool.setMegaByesPerSecondLabel(this.lblMegaBytesPerSecond);

                if (config != null && config.LastRun == null)
                {
                    startCountdown(config, LogToScreen);
                    iError = BackupTool.tryBackup(config, LogToScreen);
                }
                else if (config != null && config.LastRun.AddDays(config.Interval).AddHours(config.IntervalHours) <= DateTime.Now)
                {
                    startCountdown(config, LogToScreen);
                    iError = BackupTool.tryBackup(config, LogToScreen);
                }

                //if (!EventLog.SourceExists(EVENT_SRC))
                //    EventLog.CreateEventSource(EVENT_SRC, "Application");

                if (iError == 0)
                {
                    //if (sbLogs.Length > 0)
                    //    EventLog.WriteEntry(EVENT_SRC, sbLogs.ToString(), EventLogEntryType.Information);
                    Application.Exit();
                }
                else
                {
                    BackupTool.CanExit = true; //allow manual closing
                    LogToScreen("One or more errors occurred. Please check the messages above and close this window manually.");
                    //if (sbLogs.Length > 0)
                    //    EventLog.WriteEntry(EVENT_SRC, sbLogs.ToString(), EventLogEntryType.Warning);
                }
            });
        }
Esempio n. 10
0
        /// <summary>
        /// Populate form and display saved settings (if available)
        /// </summary>
        /// <param name="sender">not used</param>
        /// <param name="e">OnLoad-Event-Args</param>
        private void FBackupSettings_Load(object sender, EventArgs e)
        {
            //cleanup
            txtDestination.Text = "";
            lvStores.Items.Clear();
            config = BackupSettingsDao.loadSettings();

            //Add pst-files to list
            var list = BackupUtils.GetStoreLocations(config, stores);

            ListViewItem[] lItem = list.Select(X => new ListViewItem(X)).ToArray();
            lvStores.Items.AddRange(lItem);

            /*
             * for (int i = 1; i <= 20; i++)
             *  lvStores.Items.Add("test test test test test testes testes testest " + i);
             */

            lvStores.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);

            applySettings();
        }