3
2
Fork
You've already forked goblinshare
0
p2p filesharing demo for Goblins.
  • Scheme 80.5%
  • Makefile 19.5%
Juliana Sims 638d6cbffe
guix: Add tagged commit to Magenc package definition.
* guix.scm (guile-magenc): Add tagged commit to package definition.
2025年11月19日 13:20:32 -05:00
src Add optional out-port arguments to gs-receive and gs-send. 2025年11月07日 18:24:18 -05:00
tests Add test data. 2025年11月07日 18:26:34 -05:00
.gitignore Initial commit 2025年11月06日 13:02:37 -05:00
COPYING Initial commit 2025年11月06日 13:02:37 -05:00
guix.scm guix: Add tagged commit to Magenc package definition. 2025年11月19日 13:20:32 -05:00
Makefile Makefile: Modify check comment to work with GoblinShare. 2025年11月07日 18:26:57 -05:00
README.org README: Remove mentions of Magic Wormhole. 2025年11月14日 15:14:12 -05:00

GoblinShare

Overview

GoblinShare is an encrypted, peer-to-peer file-sharing utility built on Magenc and using the Goblins Tor netlayer.

Building

The easiest way to build GoblinShare is using Guix. You can use guix.scm to enter a development shell and build manually:

 guix shell -Df guix.scm
 make

You can also enter a shell with the package built and installed by Guix using guix shell -f guix.scm, or install it to a profile with guix install -f guix.scm [-p /path/to/guix/profile].

If you want to build GoblinShare without Guix, you'll need a few runtime dependencies:

You'll also need a few build dependencies:

The manual build process is quite simple:

 make
 # and optionally
 # make install

If you install GoblinShare, it should end up on your PATH. If you don't, there is a goblinshare executable in the root of the build directory which should work just fine.

Note that cross-compilation is not currently supported by the build system. Similarly, this build has only been tested on Linux, but it should work just fine on other Unix-like platforms.

Usage

GoblinShare has two commands: goblinshare send and goblinshare receive. Before using either command, you must have a running Tor daemon.

Setting Up Tor

First, make sure there is a file at $XDG_CONFIG_HOME/goblins/tor-config.txt with the following content ($XDG_CACHE_HOME should be its actual value, usually /home/<user>/.cache where <user> is your user name):

 DataDirectory $XDG_CACHE_HOME/goblins/tor/data
 SocksPort unix:$XDG_CACHE_HOME/goblins/tor/tor-socks-sock RelaxDirModeCheck
 ControlSocket unix:$XDG_CACHE_HOME/goblins/tor/tor-control-sock RelaxDirModeCheck
 Log notice file $XDG_CACHE_HOME/goblins/tor/tor-log.txt

Then, ensure the requisite directories exist, such as by mkdir -p $XDG_CACHE_HOME/goblins/tor/data.

Finally, run tor -f $XDG_CONFIG_HOME/goblins/tor-config.txt. You should see some textual output. Assuming there are no errors, you can now leave this process running and use GoblinShare.

Send

goblinshare send accepts one argument, the name of a file to send. Assuming you want to share a file called file.txt, that would look like:

 goblinshare send file.txt

This will print the magnet URL for the file, which includes an OCapN URL. Copy that and give it to your intended recipient through your preferred medium.

Receive

goblinshare receive also accepts one argument, the magnet URL of the file to download. It can also take one option, -o or --output, whose argument is the name of the file to write out. If we want to receive a file and write it to file.txt, that would look like this, putting a placeholder for the magnet URL for brevity:

 goblinshare receive magnet://... -o file.txt # or --output=file.txt

Other Options

The standard --help and --version options are also supported.

And that's it! That's GoblinShare in a nutshell!

License

GoblinShare is licensed under Apache v2.