#!/bin/sh # public domain. usage() { echo "usage: ${0##*/} [-l n] [-d dest] [-r webroot] [-v vhost ] file" \ >/dev/stderr exit 1 } type pctencode >/dev/null || { exec >/dev/stderr echo "pctencode: not found" echo "see https://para.mohrie.net/sw/pctcode.xhtml" exit 1 } while getopts v:d:l:r: o; do case $o in l) len=$OPTARG ;; r) webroot=$OPTARG ;; d) dest=$OPTARG ;; v) vhost=$OPTARG ;; *) usage ;; esac done shift $((OPTIND - 1)) case $# in 0) file=/dev/stdin ;; 1) file="$1" ;; *) usage ;; esac : ${dest:=op@procyon.mohrie.net} : ${vhost:=abzu.mohrie.net} : ${len:=3} : ${webroot:=/var/www/htdocs} : ${file:=/dev/stdin} test -e "$file" || { printf "%s: file '%s' does not exist\n" \ "${0##/}" "$file" >/dev/stderr exit 1 } test -n "$len" && { secret="$(jot -rw '%x' -s '' "$len" 0 15 || exit 1)/" } name=$(basename "$file") wname=$(printf '%s' "$name" | pctencode) path=$secret$name wpath=$secret$wname fpath=$webroot/$vhost/$path cat "$file" | ssh "$dest" " install -d $(dirname $fpath) && cat > $fpath" echo "https://$vhost/$wpath"