From: Matt McCutchen Date: Tue, 24 Jun 2008 05:56:13 +0000 (-0700) Subject: The deny-rsync script from bug 3945. X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/commitdiff_plain/5e7f63f0bf98f9d7baab80430535d02915ade88c The deny-rsync script from bug 3945. --- diff --git a/support/deny-rsync b/support/deny-rsync new file mode 100755 index 00000000..c563186c --- /dev/null +++ b/support/deny-rsync @@ -0,0 +1,31 @@ +#!/bin/bash +# deny-rsync [message]: send an rsync-protocol error message + +protocol_version=29 +exit_code=4 # same as a daemon that refuses an option + +# byte_escape 29 ==> \035 +function byte_escape { + octbyte="000$(bc <<<"obase=8; $1")" + echo -n "\\${octbyte: -3}" +} + +msg="$1" +if [ "${#msg}" -gt 255 ]; then + # message is too long for this naive script to handle + msg="${msg:0:252}..." +fi + +# send protocol version +echo -ne "$(byte_escape $protocol_version)\\000\\000\\000" + +# send checksum seed +echo -ne "\\000\\000\\000\\000" + +# the following is equivalent to rwrite(FERROR, $msg) +# message header: length 17; MPLEX_BASE + code FERROR +echo -ne "$(byte_escape ${#msg})\\000\\000\\010" +# data +echo -n "$msg" + +exit $exit_code