fiche [![Build Status](https://travis-ci.org/solusipse/fiche.svg?branch=master)](https://travis-ci.org/solusipse/fiche) ===== Command line pastebin for sharing terminal output. # Client-side usage Self-explanatory live examples (using public server): ``` echo just testing! | nc termbin.com 9999 ``` ``` cat file.txt | nc termbin.com 9999 ``` In case you installed and started fiche on localhost: ``` ls -la | nc localhost 9999 ``` ## Requirements To use fiche you have to have netcat installed. You probably already have it - try typing `nc` or `netcat` into your terminal! ------------------------------------------------------------------------------- # Server-side usage ## Installation ## 1. Clone: ``` git clone https://github.com/solusipse/fiche.git ``` 2. Build: ``` make ``` 3. Install: ``` sudo make install ``` ------------------------------------------------------------------------------- ## Settings ### Usage ``` usage: fiche [-D6epbsdSolBuw]. [-d domain] [-p port] [-s slug size] [-o output directory] [-B buffer size] [-u user name] [-l log file] [-b banlist] [-w whitelist] ``` 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. ### Examples ------------------------------------------------------------------------------- #### Output directory `-o` Relative or absolute path to the directory where you want to store user-posted pastes. ``` fiche -o ./code ``` ``` fiche -o /home/www/code/ ``` __Default value:__ `./code` ------------------------------------------------------------------------------- #### Domain `-d` This will be used as a prefix for an output received by the client. Value will be prepended with `http`. ``` fiche -d domain.com ``` ``` fiche -d subdomain.domain.com ``` __Default value:__ `localhost` ------------------------------------------------------------------------------- #### Slug size `-s` This will force slugs to be of requires length: ``` fiche -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:__ 4 ------------------------------------------------------------------------------- #### User name `-u` Fiche will try to switch to the requested user on startup if any is provided. ``` fiche -u _fiche ``` __Default value:__ not set __WARNING:__ This requires that fiche is started as a root. ------------------------------------------------------------------------------- #### Buffer size `-B` 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. ``` fiche -B 2048 ``` __Default value:__ 32768 ------------------------------------------------------------------------------- #### Log file `-l` ``` fiche -l /home/www/fiche-log.txt ``` __Default value:__ not set __WARNING:__ this file has to be user-writable ------------------------------------------------------------------------------- #### Ban list `-b` Relative or absolute path to a file containing IP addresses of banned users. ``` fiche -b fiche-bans.txt ``` __Format of the file:__ this file should contain only addresses, one per line. __Default value:__ not set __WARNING:__ not implemented yet ------------------------------------------------------------------------------- #### White list `-w` If whitelist mode is enabled, only addresses from the list will be able to upload files. ``` fiche -w fiche-whitelist.txt ``` __Format of the file:__ this file should contain only addresses, one per line. __Default value:__ not set __WARNING:__ not implemented yet ------------------------------------------------------------------------------- ### Running as a service There's a simple systemd example: ``` [Unit] Description=FICHE-SERVER [Service] ExecStart=/usr/local/bin/fiche -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, there's example: ------------------------------------------------------------------------------- ## Example nginx config Fiche 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; } } ``` # License Fiche is MIT licensed.