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