Purrito Bin

    purrito(1)                                           purr(1)
                                 /\_/\
                                ( o.o )
                                 > ^ <

    NAME

    	purrito: ultra fast, minimalistic, encrypted command line paste-bin
    	purr: POSIX shell client to paste to bsd.ac
    	meow: POSIX shell client to paste encrypted paste to bsd.ac
    	meowd: POSIX shell client to decrypt encrypted paste from bsd.ac

    CLIENT

    	: ${P_SERVER=bsd.ac}
    	: ${P_PORT=42069}
    	: ${P_MAXTIME=30}
    	: ${_PL=week} # can be set to day/week/month/<lifetime-in-minutes>

    	# POSIX shell client to upload standard message
    	purr() {
    		curl --silent --max-time "${P_MAXTIME}" --data-binary "@${1:-/dev/stdin}" "${P_SERVER}:${P_PORT}/${_PL}"
    	}

    	# POSIX shell client to upload encrypted message
    	meow() {
    		# we need to generate a 256 byte random key
    		# for using the aes-256-cbc cipher
    		key="$(openssl rand -hex 32)"
    		iv="$(openssl rand -hex 16)"
    		# calculate its encryption and upload it
    		url="$(openssl enc -aes-256-cbc -K ${key} -iv ${iv} -e -base64 -A < ${1:-/dev/stdin} | purr)"
    		printf %s\\n "${url%\/*}/paste.html#${url##*\/}_${key}_${iv}"
    		unset key iv url
    	}

    	# POSIX shell client to decrypt the message
    	meowd() {
    		url="$1"
    		baseurl="${url%\/*}"
    		vals="${url##*\#}"
    		paste=$(printf %s\\n "${vals}" | cut -d'_' -f1)
    		key=$(printf %s\\n "${vals}" | cut -d'_' -f2)
    		iv=$(printf %s\\n "${vals}" | cut -d'_' -f3)
    		curl --max-time "${P_MAXTIME}" --write-out "\n" --silent "${baseurl}/${paste}" | openssl enc -aes-256-cbc -base64 -d -K ${key} -iv ${iv}
    		unset url baseurl vals paste key iv
    	}

    USAGE

    	~$ purr c00lfile.txt
    	https://bsd.ac/purrit0

    	~$ purr < h0tfile.txt
    	https://bsd.ac/purri1o

    	~$ echo Hello world. | purr
    	https://bsd.ac/d4nklit

    	~$ purr
    	This is my input
    	it can span multiple lines
    	<Ctrl-d to exit>
    	https://bsd.ac/curlpr0

    LIMITS

    	max paste size: 64KB

    SOURCE

    	https://github.com/PurritoBin/PurritoBin