示例#1
0
        private void SyncLocal(PwDatabase pwDatabase, YandexWebDavClient webClient, string filename, YandexDiscSyncConf vaultConf)
        {
            SetStatusText("Check changes...");
            var value = GetRemoteLastModified(filename, webClient);

            if (value == null)
            {
                SetStatusText("Database not found on Yandex Disc. Nothing to sync");
                return;
            }
            var lastModified = value.Value;

            if (vaultConf.SyncRemoteLastModified == lastModified.ToString("u"))
            {
                SetStatusText("No changes");
                return;
            }

            SetStatusText("Downloading...");
            var dbData = Async.Invoke(() => DownloadFile(filename, webClient));

            SetStatusText("Sync...");
            SyncDatabase(pwDatabase, dbData, false);
            SetStatusText("Successfull Sync Local <= Remote");

            vaultConf.SyncRemoteLastModified = lastModified.ToString("u");
            vaultConf.Save();
            pwDatabase.Save(new NullStatusLogger());
        }
示例#2
0
        private void SyncDownload(PwDatabase pwDatabase, YandexWebDavClient webClient, string filename, YandexDiscSyncConf storageConf)
        {
            var lastModified = GetRemoteLastModified(filename, webClient);

            if (lastModified != null)
            {
                SetStatusText("Downloading...");
                var dbData = Async.Invoke(() => DownloadFile(filename, webClient));

                ReplaceDatabase(pwDatabase, dbData);
                SetStatusText("Download Done.");
                storageConf.ChangeDatabase(_host.Database);
                storageConf.SyncRemoteLastModified = lastModified.Value.ToString("u");
                storageConf.Save();
                pwDatabase.Save(new NullStatusLogger());
            }
            else
            {
                SetStatusText("Database not found. Nothing to sync");
            }
        }
示例#3
0
        private void SyncUpload(PwDatabase pwDatabase, YandexWebDavClient webClient, string databaseUuid,
                                YandexDiscSyncConf storageConf)
        {
            var lastModified = GetLastModified(pwDatabase);

            var location = _host.Database.IOConnectionInfo.Path;

            SetStatusText("Saving to Yandex Disc...");
            Async.Invoke(() =>
            {
                webClient.PutFile(
                    databaseUuid,
                    File.ReadAllBytes(location),
                    lastModified,
                    progress => { SetStatusText($"Saving to YandexDisc ({Math.Floor(progress)}%)"); });
            });
            SetStatusText("Successfull save to YandexDisc");

            storageConf.SyncRemoteLastModified = lastModified.ToString("u");
            storageConf.Save();
        }
示例#4
0
        /// <summary>
        /// Event handler for configuration menu entry
        /// </summary>
        private void OnConfigure(object sender, EventArgs e)
        {
            if (!_host.Database.IsOpen)
            {
                ShowMessageBox("You first need to open a database.");
                return;
            }

            if (_host.Database.IsOpen)
            {
                YandexDiscSyncConf conf = new YandexDiscSyncConf(_host.Database);

                VaultConnectionConfigForm form1 = new VaultConnectionConfigForm();
                form1.InitEx(conf);
                if (DialogResult.OK == UIUtil.ShowDialogAndDestroy(form1))
                {
                    conf.Save();
                    _host.MainWindow.UpdateUI(false, null, true, null, true, null, bSetModified: true);
                }
            }
        }
示例#5
0
        private void SyncRemote(PwDatabase pwDatabase, YandexWebDavClient webClient, string filename, YandexDiscSyncConf vaultConf)
        {
            SetStatusText("Check changes...");
            var localLastModified = GetLastModified(pwDatabase);
            var lastModified      = GetRemoteLastModified(filename, webClient);

            if (lastModified != null && lastModified == localLastModified)
            {
                SetStatusText("No changes.");
                return;
            }

            if (lastModified != null)
            {
                SetStatusText("Downloading...");
                var dbData = Async.Invoke(() => DownloadFile(filename, webClient));
                if (dbData != null)
                {
                    SetStatusText("Sync...");
                    SyncDatabase(pwDatabase, dbData, true);
                    _host.MainWindow.Enabled = false;
                    localLastModified        = GetLastModified(pwDatabase);
                }
            }

            SetStatusText("Saving to YandexDisc...");
            Async.Invoke(() =>
            {
                webClient.PutFile(
                    filename,
                    File.ReadAllBytes(pwDatabase.IOConnectionInfo.Path),
                    localLastModified,
                    progress => { SetStatusText($"Saving to YandexDisc ({Math.Floor(progress)}%)"); });
            });
            SetStatusText("Successfull Sync Local <=> Remote");

            vaultConf.SyncRemoteLastModified = localLastModified.ToString("u");
            vaultConf.Save();
            pwDatabase.Save(new NullStatusLogger());
        }