fork of fiche (https://github.com/solusipse/fiche)
Command line pastebin for sharing terminal output that also serves back a gopher URL if -g is set.
Self-explanatory live examples (using public server):
echo just testing! | nc rot.uk 9999
cat file.txt | nc r0t.uk 9999
In case you installed and started gofiche on localhost:
ls -la | nc localhost 9999
You will get an url to your paste as a response, e.g.:
http://r0t.uk/ydxh
You can make your life easier by adding a termbin alias to your rc file. We list some of them here:
Linux/macOS:
alias tb="(exec 3<>/dev/tcp/r0t.uk/9999; cat >&3; cat <&3; exec 3<&-)"
echo less typing now! | tb
Linux (Bash):
echo 'alias tb="nc r0t.uk 9999"' >> .bashrc
echo less typing now! | tb
macOS:
echo 'alias tb="nc r0t.uk 9999"' >> .bash_profile
echo less typing now! | tb
Linux (Bash):
echo 'alias tbc="netcat r0t.uk 9999 | xclip -selection c"' >> .bashrc
echo less typing now! | tbc
macOS:
echo 'alias tbc="nc r0t.uk 9999 | pbcopy"' >> .bash_profile
echo less typing now! | tbc
Remember to restart your terminal session after adding any of provided above!
To use gofiche (as a client) you have to have netcat installed. You probably already have it - try typing nc
or netcat
into your terminal!
-
Clone:
git clone https://github.com/slackhead/gofiche.git
-
Build:
make
-
Install:
sudo make install
usage: gofiche [-D6epsdSolBug].
[-d domain] [-p port] [-s slug size]
[-o output directory] [-B buffer size] [-u user name]
[-l log file] [-S] [-g gopher domain]
These are command line arguments. You don't have to provide any of them to run the application. Default settings will be used in such case. See section below for more info.
Relative or absolute path to the directory where you want to store user-posted pastes.
gofiche -o ./code
gofiche -o /home/www/code/
Default value: ./code
This will be used as a prefix for an output received by the client.
Value will be prepended with http
.
gofiche -d domain.com
gofiche -d subdomain.domain.com
gofiche -d subdomain.domain.com/some_directory
Default value: NULL
This will be used as a prefix for an output received by the client.
Value will be prepended with http
.
gofiche -g domain.com
gofiche -g subdomain.domain.com
gofiche -g subdomain.domain.com/some_directory
Default value: NULL
This will force slugs to be of required length:
gofiche -s 6
Output url with default value: http://localhost/xxxx
,
where x is a randomized character
Output url with example value 6: http://localhost/xxxx
,
where is a randomized character
Default value: 6
If set, gofiche returns url with https prefix instead of http
gofiche -S
Output url with this parameter: https://localhost/xxxx
,
where x is a randomized character
gofiche will try to switch to the requested user on startup if any is provided.
gofiche -u _gofiche
Default value: not set
WARNING: This requires that gofiche is started as a root.
This parameter defines size of the buffer used for getting data from the user. Maximum size (in bytes) of all input files is defined by this value.
gofiche -B 2048
Default value: 32768
gofiche -l /home/www/gofiche-log.txt
Default value: not set
WARNING: this file has to be user-writable
There's a simple systemd example:
[Unit]
Description=GOFICHE-SERVER
[Service]
ExecStart=/usr/local/bin/gofiche -d yourdomain.com -o /path/to/output -l /path/to/log -u youruser
[Install]
WantedBy=multi-user.target
WARNING: In service mode you have to set output directory with -o
parameter.
gofiche has no http server built-in, thus you need to setup one if you want to make files available through http.
There's a sample configuration for nginx:
server {
listen 80;
server_name mysite.com www.mysite.com;
charset utf-8;
location / {
root /home/www/code/;
index index.txt index.html;
}
}
gofiche is MIT licensed.