/// <summary> /// Exec backup (new thread "body") /// </summary> private void ExecBackupThread(object data) { String[] parameters = data as String[]; Properties.Settings conf = Properties.Settings.Default; IWebProxy webproxy = Utility.GetProxy(conf.ProxyExplicit, conf.ProxyDirectConnection, conf.ProxyHostPortSource, conf.ProxyHost, conf.ProxyPort, conf.ProxyAuthMode, conf.ProxyUsername, conf.ProxyPassword); Config config = new Config( parameters[0], parameters[1], parameters[2], parameters[3] == "ALL", Utility.DecodeDownloadTypeArray(conf.DocumentExportFormat).ToArray(), Utility.DecodeDownloadTypeArray(conf.SpreadsheetExportFormat).ToArray(), Utility.DecodeDownloadTypeArray(conf.PresentationExportFormat).ToArray(), Utility.DecodeDownloadTypeArray(conf.DrawingExportFormat).ToArray(), webproxy, conf.BypassCertificateChecks, this.DebugMode, conf.DateDelta, conf.AppsMode, conf.AppsDomain, String.IsNullOrEmpty(conf.AppsOAuthSecretEncrypted) ? null : Utility.UnprotectData(conf.AppsOAuthSecretEncrypted), conf.AppsOAuthOnly); Backup b = new Backup(config); b.Feedback += new EventHandler<FeedbackEventArgs>(Backup_Feedback); bool result = b.Exec(); this.BeginInvoke((MethodInvoker)delegate() { EndDownload(result, b.DuplicatedDocNames, b.LastException); }); }
/// <summary> /// ... /// </summary> private static bool DoBackup(Dictionary<string, string> parameters) { // Google Apps bool appsMode = parameters.ContainsKey("appsMode") ? parameters["appsMode"] == "1" : false; string appsDomain = null; string appsOAuthSecret = null; bool appsOAuthOnly = false; if (appsMode) { appsDomain = parameters.ContainsKey("appsDomain") ? parameters["appsDomain"] : null; appsOAuthSecret = parameters.ContainsKey("appsOAuthSecret") ? parameters["appsOAuthSecret"] : null; appsOAuthOnly = parameters.ContainsKey("appsOAuthOnly") ? parameters["appsOAuthOnly"] == "1" : false; if (String.IsNullOrEmpty(appsDomain)) throw new ApplicationException("Empty appsDomain parameter"); if (String.IsNullOrEmpty(appsOAuthSecret)) throw new ApplicationException("Empty appsOAuthSecret parameter"); } // Get username string username = parameters.ContainsKey("username") ? parameters["username"] : null; if ((appsMode == false && username == null) || (appsMode == true && appsOAuthOnly == false && username == null)) throw new ApplicationException("Empty username parameter"); // Get password string password = null; if (parameters.ContainsKey("password")) password = parameters["password"]; if (parameters.ContainsKey("passwordEnc")) password = Utility.UnprotectData(parameters["passwordEnc"]); if (parameters.ContainsKey("passwordEncFile")) password = Utility.UnprotectData(File.ReadAllText(parameters["passwordEncFile"])); if ((appsMode == false && password == null) || (appsMode == true && appsOAuthOnly == false && password == null)) throw new ApplicationException("Empty password parameter"); // Get destDir string destDir = parameters.ContainsKey("destDir") ? parameters["destDir"] : null; if (destDir == null) throw new ApplicationException("Empty destDir parameter"); // Get document export format string docF = parameters.ContainsKey("docF") ? parameters["docF"] : null; string sprsF = parameters.ContainsKey("sprsF") ? parameters["sprsF"] : null; string presF = parameters.ContainsKey("presF") ? parameters["presF"] : null; string drawF = parameters.ContainsKey("drawF") ? parameters["drawF"] : null; if (docF == null) throw new ApplicationException("Empty docF parameter"); if (sprsF == null) throw new ApplicationException("Empty sprsF parameter"); if (presF == null) throw new ApplicationException("Empty presF parameter"); if (drawF == null) throw new ApplicationException("Empty drawF parameter"); List<Document.DownloadType> docTypes = Utility.DecodeDownloadTypeArray(docF, '+'); List<Document.DownloadType> sprsTypes = Utility.DecodeDownloadTypeArray(sprsF, '+'); List<Document.DownloadType> presTypes = Utility.DecodeDownloadTypeArray(presF, '+'); List<Document.DownloadType> drawTypes = Utility.DecodeDownloadTypeArray(drawF, '+'); string downloadAll = parameters.ContainsKey("downloadAll") ? parameters["downloadAll"] : null; // Get BypassHttpsCertChecks bool bypassHttpsCertChecks = parameters.ContainsKey("bypassHttpsCertChecks"); // Output parameters Console.WriteLine(new String('-', 40)); Console.WriteLine("Parameters: "); Console.WriteLine("Username: "******"Password: "******"[hidden]"); Console.WriteLine("DestDir: " + destDir); Console.WriteLine("Document: " + docF); Console.WriteLine("Spreadsheet: " + sprsF); Console.WriteLine("Presentation: " + presF); Console.WriteLine("Drawing: " + drawF); Console.WriteLine("DownloadAll: " + downloadAll); Console.WriteLine("appsMode: " + appsMode); Console.WriteLine("appsDomain: " + appsDomain); Console.WriteLine("appsOAuthSecret: " + appsOAuthSecret); Console.WriteLine("appsOAuthOnly: " + appsOAuthOnly); Console.WriteLine(new String('-', 40)); // Exec backup Config config = new Config( username, password, destDir, downloadAll == "yes", docTypes.ToArray(), sprsTypes.ToArray(), presTypes.ToArray(), drawTypes.ToArray(), null, bypassHttpsCertChecks, false, null, appsMode, appsDomain, appsOAuthSecret, appsOAuthOnly); Backup backup = new Backup(config); backup.Feedback += new EventHandler<FeedbackEventArgs>(backup_Feedback); bool resOK = backup.Exec(); return resOK; }