summaryrefslogtreecommitdiff
path: root/support/instant-rsyncd
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2008-09-11 08:42:27 -0700
committerWayne Davison <wayned@samba.org>2008-09-11 08:50:14 -0700
commit794d033981cc87f8b9d2219b977df56873299ff8 (patch)
treea3e68701f67c3627830405d68b25160b341b1a85 /support/instant-rsyncd
parent45574a73c156e389ab4aec98b6d30bb79d3ab367 (diff)
downloadrsync-794d033981cc87f8b9d2219b977df56873299ff8.tar.gz
A couple instant-rsyncd improvements:
- Prompt the user for the parameters when missing. - Allow the creation of a module without a user+password.
Diffstat (limited to 'support/instant-rsyncd')
-rwxr-xr-xsupport/instant-rsyncd83
1 files changed, 50 insertions, 33 deletions
diff --git a/support/instant-rsyncd b/support/instant-rsyncd
index dcd87577..6ab1e66d 100755
--- a/support/instant-rsyncd
+++ b/support/instant-rsyncd
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -e
# instant-rsyncd lets you quickly set up and start a simple, unprivileged rsync
# daemon with a single module in the current directory. I've found it
@@ -12,34 +12,43 @@
# and once to log in to test the daemon.
# -- Matt McCutchen <matt@mattmccutchen.net>
-set -e
-
dir="$(pwd)"
-if [ "$#" -lt 3 ]; then
- echo "I would install an rsync daemon in $dir if you gave me"
- echo "a module name, a port, and an rsync username."
- exit 1
+echo
+echo "This will setup an rsync daemon in $dir"
+
+if [ $# = 0 ]; then
+ IFS='' read -p 'Module name to create (or return to exit): ' module
+ [ ! "$module" ] && exit
+else
+ module="$1"
+ shift
fi
-module="$1"
-port="$2"
-user="$3"
-rsync="$4"
-if [ ! "$rsync" ]; then
- rsync=rsync
+if [ $# = 0 ]; then
+ IFS='' read -p 'Port number the daemon should listen on [873]: ' port
+else
+ port="$1"
+ shift
fi
+[ "$port" ] || port=873
-moduledir="${dir%/}/$module"
+if [ $# = 0 ]; then
+ IFS='' read -p 'User name for authentication (empty for none): ' user
+else
+ user="$1"
+ shift
+fi
-echo
-echo "I'm about to install an rsync daemon in $dir."
-echo "It will listen on port $port for requests giving rsync username $user"
-echo "and the password you are about to specify. It will serve a module"
-echo "$module corresponding to $moduledir."
-echo
+if [ "$user" ]; then
+ IFS='' read -s -p 'Desired password: ' password
+ echo
+fi
-IFS='' read -s -p 'Desired password: ' password
+rsync="$1"
+[ "$rsync" ] || rsync=rsync
+
+moduledir="${dir%/}/$module"
mkdir "$module"
@@ -50,17 +59,20 @@ port = $port
use chroot = no
[$module]
- path = $module
- read only = false
- auth users = $user
- secrets file = $module.secrets
+ path = $module
+ read only = false
EOF
-touch "$module".secrets
-chmod go-rwx "$module".secrets
-cat >"$module".secrets <<EOF
-$user:$password
-EOF
+if [ "$user" ]; then
+ cat >>rsyncd.conf <<-EOF
+ auth users = $user
+ secrets file = $module.secrets
+ EOF
+ touch "$module".secrets
+ chmod go-rwx "$module".secrets
+ echo "$user:$password" >"$module".secrets
+ user="$user@"
+fi
cat >start <<EOF
#!/bin/bash
@@ -82,12 +94,12 @@ cd `dirname $0`
EOF
chmod +x stop
-path="rsync://$user@$(hostname):$port/$module/"
+path="rsync://$user$(hostname):$port/$module/"
if ./start; then
sleep .2
echo
- echo "I tried to start the daemon. The log file rsyncd.log says:"
+ echo "I ran the start command for the daemon. The log file rsyncd.log says:"
echo
cat rsyncd.log
echo
@@ -97,7 +109,12 @@ if ./start; then
echo "Give rsync the following path to access the module:"
echo " $path"
echo
- echo "Let's test the daemon now. Enter the password you chose."
+ if [ "$user" ]; then
+ echo "Let's test the daemon now. Enter the password you chose at the prompt."
+ else
+ echo "Let's test the daemon now."
+ fi
+ echo
echo '$' $rsync --list-only "$path"
$rsync --list-only "$path"
echo