Ejemplo n.º 1
0
        public Task <VirtualStorage.VirtualVolume> Restore()
        {
            // todo: load last connected session from settings
            var @virtual = new Settings.VirtualVolume()
            {
                MountOptions      = DokanOptions.DebugMode | DokanOptions.AltStream | DokanOptions.CurrentSession,
                Drive             = 'Z',
                DriveMustBeReused = false,
                Format            = "NTFS",
                Label             = "CoreData",
                MaxPathLength     = 256,
                Features          = FileSystemFeatures.CaseSensitiveSearch | FileSystemFeatures.CasePreservedNames
                                    | FileSystemFeatures.UnicodeOnDisk | FileSystemFeatures.PersistentAcls
            };
            var local = new Settings.LocalStorage {
                Home = Environment.CurrentDirectory
            };
            var coreData = new Server.Settings.BasicConnection(
                new Uri("https://test01-dev.coredata.is"), "autoit", "test123!");
            // todo: ^^^

            var lastSession = new CoreDataStorage(@virtual, local, coreData);

            return(Connect(lastSession));
        }
Ejemplo n.º 2
0
        public async Task <VirtualStorage.VirtualVolume> Connect(CoreDataStorage session)
        {
            var acl = session.VirtualStorage.IsSecuritySupported
                ? AccessControl.AllAllowed : AccessControl.Undefined;

            var localStorage   = new PhysicalStorage(session.LocalStorage, acl);
            var coreDataClient = _coreDataConnectionFactory(session.CoreData);
            var authenticated  = await coreDataClient.Authenticate();

            if (!localStorage.Exists && !authenticated)
            {
                _trayNotifier.Warn(_connectError);
                return(null);
            }

            var drive = _virtualDriveFactory(session.VirtualStorage, coreDataClient, localStorage);

            // todo: save drive as last successful connections session, to be able to restore within this or next app session.

            return(drive);
        }