#!/bin/bash # This must be called as (note the trailing dot): # # stunnel-rsync HOSTNAME rsync --server --daemon . # # ... which is typically done via the rsync-ssl script, which results in something like this: # # rsync --rsh=stunnel-rsync -aiv HOSTNAME::module [ARGS] # # This SSL setup based on the files by: http://dozzie.jarowit.net/trac/wiki/RsyncSSL # Note that this requires at least version 4.x of stunnel. # The current environment can override using the RSYNC_SSL_* values: if [ x"$RSYNC_SSL_CERT" = x ]; then cert="" else cert="cert = $RSYNC_SSL_CERT" fi if [ x"$RSYNC_SSL_CA_CERT" ]; then cafile="" verify=0 else cafile="CAfile = $RSYNC_SSL_CA_CERT" verify=3 fi port=${RSYNC_SSL_PORT:-874} # If the user specified USER@HOSTNAME::module, then rsync passes us # the -l USER option too, so we must be prepared to ignore it. if [ x"$1" = x"-l" ]; then shift 2 fi hostname=$1 shift if [ x"$hostname" = x -o x"$1" != x"rsync" -o x"$2" != x"--server" -o x"$3" != x"--daemon" ]; then echo "Usage: stunnel-rsync HOSTNAME rsync --server --daemon ." 1>&2 exit 1 fi # devzero@web.de came up with this no-tmpfile calling syntax: @stunnel4@ -fd 10 11<&0 <