dotfiles

custom linux config files managed with gnu stow

dotfiles

bin/.local/bin/pb


#!/bin/bash

# pb; command line pastebin service helper
# {kopimi,CC0} MMXVIII-MMXXIV . syntax samurai
#         ▟▙
# ▟▒░░░░░░░▜▙▜████████████████████████████████▛
# ▜▒░░░░░░░▟▛▟▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▛
#         ▜▛
# authors:
#   xero  <https://x-e.ro>
#   stark <https://git.io/stark>
# code:
#   https://code.x-e.ro/pb
#   https://git.io/pb.sh
# greetz:
#   all the ops of these great free services <3

usage() {
	cat <<EOF

     █
▄▀▀▄ █▐▀▄
█▐░█░█▐░█░ ░ ░ https://git.io/pb.sh
█▐▄▀ ▀▄▄▀
█   pb; command line pastebin service helper
 {kopimi,CC0} MMXVIII-MMXXIV . syntax samurai
         ▟▙
 ▟▒░░░░░░░▜▙▜████████████████████████████████▛
 ▜▒░░░░░░░▟▛▟▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▛
         ▜▛
usage:
   pb <service> [file|stream]

services:
   0x0.st, catbox.moe, clbin.com, iotek.org, ix.io, pastebin.com, temp.sh, uguu.se

environment variables:
   UA: user-agent string (defaults to some chrome one)

envs for pastebin.com:
   PB_API_DEV: developer api key [required] https://pastebin.com/api#1
   PB_API_USR: user api key [optional] https://pastebin.com/api#8
   PRIVACY: paste visibility  [optional] valid values: public|0, unlisted|1, private|2
   ANON: paste w/o a user key even if defined [optional]

examples:
   pb 0x0 ~/.vimrc
   pb clbin <(ps aux)
   dmesg | pb iop
   PB_API_DEV=XXXX PRIVACY=0 pb pb /tmp/leak.txt
   UA="Mozilla/5.0 (PlayStation 4 5.55) AppleWebKit/601.2" pb uguu waifu.jpg

EOF
	exit 0
}

ARG="${2:-/dev/stdin}"
UA=${UA:="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36"}

case  in
temp | tmp | temp.sh)
	curl -A "$UA" -sF 'file=@-' https://temp.sh/upload <"$ARG"
	;;
ix | ix.io)
	curl -A "$UA" -sF 'f:1=<-' http://ix.io <"$ARG"
	;;
0x0 | null | nullbyte | 0*)
	curl -A "$UA" -sF 'file=@-' https://0x0.st <"$ARG"
	;;
iotek | iopaste | p.iotek.org | iop*)
	curl -A "$UA" -sT- https://p.iotek.org <"$ARG"
	;;
clbin | clbin.com | cl*)
	curl -A "$UA" -sF 'clbin=<-' https://clbin.com <"$ARG"
	;;
uguu | uguu.se | u*)
	curl -A "$UA" -sF 'files[]=@-' https://uguu.se/upload?output=text <"$ARG"
	;;
catbox | catbox.moe | cat*)
	curl -A "$UA" -sF 'reqtype=fileupload' -F 'fileToUpload=@-' https://catbox.moe/user/api.php <"$ARG"
	;;
lewd | lewd.se | l*)
	curl -A "$UA" -sF 'file=@-' https://lewd.se/api.php?d=upload-tool <"$ARG"
	;;
pb | pastebin | pastebin.com)
	[[ -z ${PB_API_DEV} ]] && usage
	PRIVACY="${PRIVACY:-1}"
	if [ -n "${PRIVACY}" ]; then
		case ${PRIVACY} in
		public | 0)
			PRIVACY=0
			;;
		unlisted | 1)
			PRIVACY=1
			;;
		private | 2)
			PRIVACY=2
			;;
		*)
			usage
			;;
		esac
	fi
	qs="api_option=paste&api_dev_key=${PB_API_DEV}&api_paste_expire_date=N&api_paste_private=${PRIVACY}&api_paste_name=$(basename ${ARG})"
	[[ -n ${PB_API_USR} ]] && [[ -z ${ANON} ]] && qs="${qs}&api_user_key=${PB_API_USR}"
	curl -A "$UA" -d "${qs}" --data-urlencode "api_paste_code=$(<"$ARG")" https://pastebin.com/api/api_post.php
	;;
*)
	usage
	;;
esac
# vi:syntax=sh

Download

raw zip tar