dsfs

command module
v0.3.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 3, 2023 License: MIT Imports: 25 Imported by: 0

README

dsfs

An experimental Filesystem in USErspace (FUSE) with Discord attachments using cgofuse.

Use at your own risk! This is an unfinished project and only for research or recreational purposes only.

Files are backed on Discord with a very primitive append-only filesystem.

This is considered pre-alpha software and there will be bugs pertaining to synchronization and functionality.

Demo

Here is a blog post going over some implementation details: FUSEing for fun

Building

Go 1.18+ is required due to the use of generics.

Windows cgo

Prerequisites: WinFsp, gcc (e.g. from Mingw-builds)

set CPATH=C:\Program Files (x86)\WinFsp\inc\fuse
go build
Windows !cgo

Prerequisites: WinFsp

set CGO_ENABLED=0
go build
macOS

Prerequisites: FUSE for macOS, command line tools

go build
Linux

Prerequisites: libfuse-dev, gcc

go build

Usage

A drive letter is chosen for Windows if the mount point is not provided.

To run:

dsfs -t <Bot token> -s <Server ID> -m <Mount point>

To run with user token:

dsfs -t <Bot token> -s <Server ID> -m <Mount point> -u

To run with transaction compaction:

dsfs -t <Bot token> -s <Server ID> -m <Mount point> -x

To run with FUSE options:

dsfs -t <Bot token> -s <Server ID> -m <Mount point> -o <FUSE option>

To get more information about the available options:

dsfs --help

You can also use DSFS_TOKEN and DSFS_SERVER environment variables in place of -t and -s flags.

# use `set` instead of `export` on Windows
export DSFS_TOKEN=<Bot token>
export DSFS_SERVER=<Server ID>
dsfs -m <Mount point>

Common fixes to issues

  • If you are using a bot token, you must allow the Message Content Intent for your bot in the Discord Developer Portal.
  • If you are having problems with realtime file synchronization, make sure you are using a different token for each instance of dsfs.
  • If you are experiencing slow startup times, try using the -c flag to compact transactions.
  • If you are using Windows and encountering errors with FUSE, try updating WinFsp to the latest version.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package fuse allows the creation of user mode file systems in Go.
Package fuse allows the creation of user mode file systems in Go.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL