--- /dev/null
+#!/usr/bin/env zsh
+# Simpler authenticated alternative to the paster.
+# Install:
+# pw useradd paster -s /usr/sbin/nologin -w no
+# mkdir /path/to/pastes
+# cat > /path/to/pastes/index.html <<EOF
+# <!DOCTYPE html>
+# <html>
+# <head><title>paster</title></head>
+# <body>Paste service.</body>
+# </html>
+# EOF
+# chown -R paster:www pastes
+# chmod 2750 pastes
+# chmod 640 /path/to/pastes/index.html
+# mkdir /home/paster/.ssh
+# cat >/home/paster/.ssh/authorized_keys <<EOF
+# restrict,command="internal-sftp -d /path/to/pastes" ...
+# EOF
+# chmod 600 /home/paster/.ssh/authorized_keys
+# chmod 700 /home/paster/.ssh
+# chown -R paster:paster /home/paster
+
+setopt ERR_EXIT
+
+if [[ -s $1 ]] ; then
+ src=$1
+ ext=$src:e
+else
+ ext=$1
+ src=$(mktemp)
+ trap "rm -f $src" HUP PIPE INT QUIT TERM EXIT
+ cat >$src
+fi
+[[ -n $ext ]] || ext=txt
+rnd=$(dd if=/dev/urandom bs=12 count=1 2>/dev/null | base64 | tr "+/=" "-_=")
+fn=$rnd.$ext
+if [[ $ext = cast ]] ; then
+ cast=$(mktemp)
+ trap "rm -f $cast" HUP PIPE INT QUIT TERM EXIT
+ cat >$cast <<EOF
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>asciicast</title>
+ <link rel="stylesheet" type="text/css" href="asciinema-player-v2.6.1.css" />
+ </head>
+ <body>
+ <asciinema-player src="$fn"></asciinema-player>
+ <script src="asciinema-player-v2.6.1.js"></script>
+ <noscript>
+ No JavaScript support.
+ Download <a href="{{.Cast}}">asciicast</a> and play it with
+ <a href="https://pypi.org/project/asciinema/">asciinema</a>.
+ </noscript>
+ </body>
+</html>
+EOF
+fi
+{
+ cat <<EOF
+put $src $fn.tmp
+chmod 640 $fn.tmp
+rename $fn.tmp $fn
+EOF
+ [[ -z $cast ]] || cat <<EOF
+put $cast $fn.html.tmp
+chmod 640 $fn.html.tmp
+rename $fn.html.tmp $fn.html
+EOF
+} | sftp paster@gw.stargrave.org
+print http://paster.stargrave.org/$fn
+[[ $ext != cast ]] || print http://paster.stargrave.org/$fn.html
+b3sum <$src