SkillAgentSearch skills...

DokanCloudFS

A virtual filesystem for various publicly accessible Cloud storage services on the Microsoft Windows platform.

Install / Use

/learn @viciousviper/DokanCloudFS
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

DokanCloudFS

DokanCloudFS is a virtual filesystem for various publicly accessible cloud storage services on the Microsoft Windows platform.

License Release

| Branch | Build status | Code coverage | Code analysis | | :------ | :----------: | :-----------: | :-----------: | | master | Build status | codecov.io | Code analysis | | develop | Build status | codecov.io | |

Objective

DokanCloudFS implements a virtual filesystem that allows direct mounting of various publicly accessible cloud storage services on the Microsoft Windows platform.

Mounted cloud storage drives appear as ordinary removable drives in Windows Explorer (albeit very slow ones) and can be used just about like any local drive or file share.

Multiple mounted drives

All content written through DokanCloudFS is transparently AES-encrypted with a user-specified key before handing it off to the cloud storage backend.

Some limitations apply concerning transfer speed, maximum file size, permissions, and alternate streams depending on parameters of the cloud storage service used as a backend.

Features

  • Mounting of cloud storage volumes as removable drives into Windows Explorer
    • number of mounted volumes only limited by available drive letters
    • mounting of multiple accounts of the same cloud storage service in parallel
    • automatic re-authentication to cloud storage services after first login (optional AES encryption of persisted account credentials and authentication tokens)
  • Full support for interactive file manipulation in Winows Explorer including but not limited to
    • copying and moving of multiple files and folders between DokanCloudFS drives and other drives
    • opening of files in default application via Mouse double click
    • right-click-menu on drive, files, and folders with access to menu commands and drive/file properties
    • thumbnails display for media files
  • Transparent client-side encryption and decryption of all file content via AESCrypt
    • encryption key configurable per drive
    • unencrypted files may be read and will be encrypted on modification

Supported Cloud storage services

DokanCloudFS requires a gateway assembly for any cloud storage service to be used as a backend.

The expected gateway interface types and a set of prefabricated gateways are provided in a separate GitHub repository for the CloudFS project.<br />The associated NuGet packages CloudFS and CloudFS-Signed include preconfigured API keys for the included cloud storage services and are ready to use. Unless marked otherwise, CloudFS NuGet packages should be used in a version matching the DokanCloudFS version.

System Requirements

  • Platform
    • .NET 4.6
  • Drivers
    • Dokany driver version 1.0.3 or greater installed
  • Operating system
    • tested on Windows 8.1 x64 and Windows Server 2012 R2 (until version 1.0.0-alpha) /<br/>Windows 10 x64 (from version 1.0.1-alpha)
    • expected to run on Windows 7/8/8.1/10 and Windows Server 2008(R2)/2012(R2)/2016

Local compilation

Using pre-configured API keys from the CloudFS NuGet packages

  • Download and compile the DokanCloudFS solution using any of the following build configurations:
    • Debug (NuGet) / Release (NuGet) - non-optimized and optimized build, respectively, using gateway assemblies from the unsigned NuGet package
    • Debug (NuGet-Signed) / Release (NuGet-Signed) - non-optimized and optimized build, respectively, using gateway assemblies from the signed NuGet package
  • During the build process, an appropriate CloudFS NuGet package will be downloaded and the assemblies and .config files required by DokanCloudFS will be copied to the Library directory.

Using your own API keys

  • Prepare the CloudFS solution
    • Download the CloudFS sources in a version matching the DokanCloudFS version
    • Retrieve your own cloud API authentication keys from the URLs cited in Local Compilation and apply them in the respective Secrets.cs files for the affected cloud services.
    • Compile the CloudFS solution
  • Download and compile the DokanCloudFS solution using any of the following build configurations:
    • Debug - non-optimized build
    • Release - optimized build
  • Copy all IgorSoft.CloudFS.Gateways.*.dll assemblies and the associated IgorSoft.CloudFS.Gateways.*.dll.config files from the Gateways directory in the build output of CloudFS.GatewayTests to the Library directory of DokanCloudFS.

Usage

  • Configure the desired mount points in DokanCloudFS.Mounter's configuration file IgorSoft.DokanCloudFS.Mounter.exe.config.<br/>See below for a sample configuration.
  • Ensure the presence of all required cloud service gateway assemblies and their dependencies - either from a downloaded CloudFS NuGet Package or a local compile - in the path specified by the libPath attribute in the <mount>-tag in the config file (defaults to the solution's .\Library directory).
  • Run IgorSoft.DokanCloudFS.Mounter.exe from the command line. Depending on your account configuration you may have to use an administrative command line. The following command line arguments are supported:
    IgorSoft.DokanCloudFS.Mounter 1.0.11
    
    Usage: Mounter [options] [command]
    
    Options:
      -?|-h|--help  Show help information
    
    Commands:
      mount
      reset
    
    Usage: Mounter mount [arguments] [options]
    
    Arguments:
      <userNames>  If specified, mount the drives associated with the specified users; otherwise, mount all configured drives.
    
    Options:
      -p|--passPhrase  The pass phrase used to encrypt persisted user credentials and access tokens
      -?|-h|--help     Show help information
    
    Usage: Mounter reset [arguments] [options]
    
    Arguments:
      <userNames>  If specified, purge the persisted settings of the drives associated with the specified users; otherwise, purge the persisted settings of all configured drives.
    
    Options:
      -?|-h|--help  Show help information
    
    • The mount command will mount the drives configured in IgorSoft.DokanCloudFS.Mounter.exe.config, optionally filtered by the specified user names.
      • If you use the -p|--passPhrase option for the first time, previously unencrypted persisted settings of the drives mounted at this time - and all newly acquired authentication credentials - will be encrypted with the specified pass phrase. Persisted settings of drives not mounted at this time will remain as they are.
    • The reset command will purge all persisted settings and require you to explicitely login on the next start of IgorSoft.DokanCloudFS.Mounter.exe.

Sample configuration

  <mount libPath="..\..\..\Library" threads="5">
    <drives>
      <drive schema="box" userName="BoxUser" root="P:" encryptionKey="MyBoxSecret&amp;I" timeout="300" />
      <!--<drive schema="file" root="Q:" encryptionKey="MyFileSecret&amp;I" parameters="root=..\..\..\TestData" />-->
      <drive schema="gcs" userName="GoogleCloudStorageUser" root="R:" encryptionKey="MyGoogleCloudStorageSecret&amp;I" parameters="bucket=-- Insert bucket ID here --" timeout="300"
             apiKey="-- Insert Google Cloud Storage Credentials here --" />
      <drive schema="gdrive" userName="GDriveUser" root="S:" encryptionKey="MyGDriveSecret&amp;I" timeout="300" />
      <drive schema="hubic" userName="hubiCUser" root="T:" encryptionKey="MyhubiCSecret&amp;I" parameters="container=default" timeout="300" />
      <drive schema="mediafire" userName="MediaFireUser" root="U:" encryptionKey="MyMediaFireSecret&amp;I" timeout="300" />
      <drive schema="mega" userName="MegaUser" root="V:" encryptionKey="MyMegaSecret&amp;I" timeout="300" />
      <drive schema="onedrive" userName="OneDriveUser" root="W:" encryptionKey="MyOneDriveSecret&amp;I" timeout="300" />
      <drive schema="pcloud" userName="pCloudUser" root="X:" encryptionKey="MypCloudSecret&amp;I" timeout="300" />
      <drive schema="webdav" userName="webDavUser" root="Y:" parameters="baseAddress=https://webdav.magentacloud.de" encryptionKey="MyWebDavSecred&amp;I" timeout="300" />
      <drive schema="yandex" userName="YandexUser" root="Z:" encryptionKey="MyYandexSecret&amp;I" timeout="300" />
    </drives>
  </mount>

Configuration options:

  • Global
    • libPath: Path to search for gateway plugin assemblies (relative to the location of IgorSoft.DokanCloudFS.Mounter.exe).<br/>All plugin dependencies not covered directly by DokanCloudFS should be placed in this path as well.
    • threads: Number of concurrent threads used for each drive by the Dokan driver.<br />Defaults to 5.
  • Per drive
    • schema: Selects the cloud storage service gateway to be used.<br />Must

Related Skills

View on GitHub
GitHub Stars320
CategoryDevelopment
Updated1mo ago
Forks56

Languages

C#

Security Score

100/100

Audited on Feb 15, 2026

No findings