Glenn
aec45eebd4
As the software object has evolved along the way, and the handling of vaults has become generic FUSE filesystems mapping management, we need to correct all the places that still mention vaults. |
||
---|---|---|
.reuse | ||
doc | ||
LICENSES | ||
scripts | ||
spec | ||
src | ||
static | ||
.code_preloader.yml | ||
.drone.yml | ||
.gitattributes | ||
.gitignore | ||
.tool-versions | ||
Makefile | ||
README.md | ||
shard.lock | ||
shard.yml | ||
Vagrantfile |
ℹ️ This project is available on our self-hosted server and on CodeBerg and GitHub as mirrors. For the latest updates and comprehensive version of our project, please visit our primary repository at: https://code.apps.glenux.net/glenux/mfm.
Minimalist Fuse Manager (MFM)
MFM is a Crystal-lang CLI designed to streamline the management of various FUSE filesystems, such as sshfs, gocryptfs, httpdirfs, and more. Through its user-friendly interface, users can effortlessly mount and unmount filesystems, get real-time filesystem status, and handle errors proficiently.
Prerequisites & Dependencies
Before using MFM, make sure the following tools are installed on your system:
- gocryptfs: https://github.com/rfjakob/gocryptfs
- sshfs: https://github.com/libfuse/sshfs
- httpdirfs: https://github.com/fangfufu/httpdirfs
- fzf: https://github.com/junegunn/fzf
- libpcre3
- libevent-2.1
For Debian/Ubuntu you can use the following command:
$ sudo apt-get update && sudo apt-get install libpcre3 libevent-2.1-7 fzf gocryptfs httpdirfs sshfs
Building from source
To build from source, you'll also need:
- crystal-lang: https://crystal-lang.org/
For Debian/Ubuntu you can use the following command:
$ sudo apt-get update && sudo apt-get install libpcre3-dev libevent-2.1-dev
Installation
1. From Source
- Clone or download the source code.
- Navigate to the source directory.
- Run
shards install
to fetch dependencies. - Compile using
shards build
. - The compiled binary will be in the
bin
directory.
2. Binary Download
Alternatively, download a pre-compiled binary version of MFM.
Usage
Command Line Options
Global
Usage: mfm [options]
Global options
-c, --config FILE Set configuration file
-v, --verbose Set more verbosity
-o, --open Automatically open directory after mount
--version Show version
-h, --help Show this help
Commands (not implemented yet):
config Manage configuration file
mapping Manage filesystems
Config management
Usage: mfm filesystem [options]
Global options
-c, --config FILE Set configuration file
-v, --verbose Set more verbosity
-o, --open Automatically open directory after mount
--version Show version
-h, --help Show this help
Commands (not implemented yet):
init Create init file
Filesystem management
Usage: mfm mapping [options]
Global options
-c, --config FILE Set configuration file
-v, --verbose Set more verbosity
-o, --open Automatically open directory after mount
--version Show version
-h, --help Show this help
Commands (not implemented yet):
list List fuse mappings
create Create new fuse mapping
edit Edit fuse mapping
delete Create new fuse mapping
Demo
Configuration
MFM uses a YAML configuration file, typically found at ~/.config/mfm.yml
, to
detail the filesystem names, types, and respective configurations.
YAML File Format
---
version: "1"
global:
mountpoint: "{{env.HOME}}/mnt"
filesystems:
- type: "gocryptfs"
name: "Work - SSH Keys"
encrypted_path: "/home/user/.ssh/keyring.work.vault"
- type: "sshfs"
name: "Personal - Media Server"
remote_user: "{{env.USER}}"
remote_host: "mediaserver.local"
remote_path: "/mnt/largedisk/music"
remote_port: 22
- type: httpdirfs
name: "Debian Repository"
url: "http://ftp.debian.org/debian/"
# Add more filesystems as needed
Contribution Guidelines
Contributing to MFM:
- Fork the Repository: Start by forking MFM's repository.
- Create a Feature Branch: Develop each feature or fix in its own branch.
- Commit Changes: Provide clear and informative commit messages.
- Run Tests: Ensure that all features are operational.
- Push to Your Fork: Push your changes to your fork on GitHub.
- Submit a Pull Request: Begin a pull request to the main repository and explain your changes.
- Review: Await feedback from the maintainers and respond as necessary.
By contributing, you agree to our code of conduct and license terms.
Authors and Contributors
- Glenn Y. Rolland - Initial Work
Inspired By
- Qasim: A user-friendly FUSE manager. https://code.apps.glenux.net/glenux/qasim
- Sirikali: A Qt/C++ GUI front-end for various FUSE filesystems like cryfs, gocryptfs, securefs, ecryptfs, and encfs. https://mhogomchungu.github.io/sirikali/
License
GNU GPL-3