From cc458b3af5e743bf65586629b9082230fc563250 Mon Sep 17 00:00:00 2001 From: glenux Date: Tue, 24 Oct 2023 09:22:26 +0000 Subject: [PATCH] Update README.md --- README.md | 121 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 83 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 3b9f87f..fb4d218 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,103 @@ -# GX-Vault Manager +# Minimalist Fuse Manager (MFM) -GX-Vault Manager is a Crystal-lang script that helps in managing encrypted vaults using `gocryptfs`. The script offers a user-friendly interface for mounting and unmounting vaults, providing real-time status and handling errors gracefully. +MFM is a Crystal-lang CLI tailored to simplify the management of encrypted vaults using multiple FUSE filesystems such as sshfs, gocryptfs, httpdirfs, and more. It provides a user-friendly interface, enabling users to smoothly mount and unmount filesystems, obtain filesystem status, and handle errors adeptly. -## Configuration +## Prerequisites & Dependencies -The script uses a YAML configuration file, typically stored at `~/.config/gx-vault.yml`. This file contains details about the vaults, including their names and paths. +Before using MFM, ensure the following tools are installed on your system: -## YAML File Format +- **gocryptfs**: +- **sshfs**: +- **httpdirfs**: +- **fzf**: -The configuration file consists of an array of vaults, with each vault having a name and an encrypted path. Below is the structure of the YAML file: +To build from source, you'll also require: -```yaml -vaults: - - name: "vault1" - encrypted_path: "/absolute/path/to/vault1" - - - name: "vault2" - encrypted_path: "/absolute/path/to/vault2" - - # Add more vaults as needed -``` +- **crystal-lang** : -## Fields Description +## Installation -- **vaults:** The root element containing an array of all defined vaults. +### 1. From Source -- **name:** The unique name of the vault. This is used for display and selection purposes. +1. Clone or download the source code. +2. Navigate to the source directory. +3. Execute `shards install` to obtain dependencies. +4. Compile using `shards build`. +5. Find the compiled binary in the `bin` directory. -- **encrypted_path:** The absolute path to the directory where the encrypted data is stored. This path is used by `gocryptfs` for mounting the vault. +### 2. Binary Download -## Example +You can also fetch a pre-compiled binary version of MFM. -Here is a sample configuration with two vaults named "Personal" and "Work": - -```yaml -vaults: - - name: "Personal" - encrypted_path: "/home/user/encrypted/personal" - - - name: "Work" - encrypted_path: "/home/user/encrypted/work" -``` ## Usage -Once the YAML configuration file is set up, run the script. It will read the configuration, and you can select a vault to mount or unmount using the `fzf` interactive selector. The status of each vault (whether it's open or closed) is displayed next to the vault's name. +### Command Line Options -## Dependencies +``` +Usage: mfm [options] -- gocryptfs -- fzf -- Crystal-lang -- Other dependencies as per the Crystal-lang script +Global options: + -c, --config FILE Define configuration file + -h, --help Showcase this help + +Commands: + create Instantiate a new vault + delete Erase an existing vault + edit Adjust the configuration +``` + + +## Configuration + +The script harnesses a YAML configuration file, typically located at `~/.config/mfm.yml`, which outlines vault names and paths. + +### YAML File Format + +```yaml +version: "1" + +global: + mountpoint: "/home/user/mnt/{{name}}" + +fsmap: + - type: "gocryptfs" + name: "Work - SSH Keys" + encrypted_path: "/home/user/.ssh/keyring.work" + + - type: "sshfs" + name: "Personal - Media Server" + remote_user: "user" + remote_host: "mediaserver.local" + remote_path: "/mnt/largedisk/music" + remote_port: 22 + + # Incorporate more vaults as necessary +``` + +## Contribution Guidelines + +To contribute to MFM: + +1. **Fork the Repository**: Begin by forking the MFM repository. +2. **Create a Feature Branch**: Every feature or fix should reside in distinct branches. +3. **Commit Changes**: Commit with expressive messages. +4. **Run Tests**: Confirm no functional disruptions. +5. **Push to Your Fork**: Transfer changes to your GitHub fork. +6. **Submit a Pull Request**: Commence a pull request to the main repo, elaborating on your changes. +7. **Review**: Anticipate feedback from maintainers and react suitably. + +Contributors are bound by our code of conduct and the terms of the GPL-2 license. + +## Authors and Contributors + +- Glenn Y. Rolland - *Initial Work* + +## Inspired By + +- **Qasim**: A user-convenient FUSE manager. +- **Sirikali**: A Qt/C++ GUI front end for various FUSE filesystems like cryfs, gocryptfs, securefs, ecryptfs, and encfs. ## License -GPL-2 +GNU GPL-2