From: Dobrica Pavlinusic Date: Fri, 22 Jul 2011 12:18:54 +0000 (+0000) Subject: die on rsync error X-Git-Url: http://git.rot13.org/?p=cloudstore.git;a=commitdiff_plain;h=d264b817ba0e710bdfc8c9142fb9996f6b509c86 die on rsync error --- diff --git a/create-user.sh b/create-user.sh index 2f07d3b..85913a6 100755 --- a/create-user.sh +++ b/create-user.sh @@ -2,11 +2,15 @@ login=$1 password=$2 +host=$3 if [ -z "$login" -o -z "$password" ]; then - echo "Usage: $0 login password" + echo "Usage: $0 login password [host]" exit 1 fi mkdir -p users/$login/blob -echo "$login:$password" > users/$login/secrets +secrets="users/$login/secrets" +test ! -z "$host" && login="$login+$host" +grep "^$login:" $secrets || echo "$login:$password" >> $secrets +cat $secrets diff --git a/rsync-piper.pl b/rsync-piper.pl index 2c93367..cbca36f 100755 --- a/rsync-piper.pl +++ b/rsync-piper.pl @@ -89,18 +89,21 @@ foreach my $path ( glob "$users/*" ) { $login =~ s{^.+/([^/]+)$}{$1}; if ( -d $path && -d "$path/blob" && -f "$path/secrets" ) { - print "INFO: user $login added\n"; + my @secrets = map { chomp } read_file "$path/secrets"; + my $auth_users = join(', ', map { s/:.+$//; $_ } @secrets ); $rsync_config .= <<__RSYNC_MODULE__; [$login] path = $dir/users/$login/blob - auth users = $login + auth users = $auth_users secrets file = $dir/users/$login/secrets read only = false __RSYNC_MODULE__ + print "INFO: added $login = $auth_users\n"; + } else { warn "skipped $login: $!"; } @@ -144,8 +147,10 @@ while(1) { warn "# reading log output from $log_fifo\n"; open(my $fifo, '<', $log_fifo); while( my $line = <$fifo> ) { + die $line if $line =~ /rsync error:/; chomp $line; print $line, $/; + if ( $line =~ /transfer-log:(.+)/ ) { my $transfer = $1; $transfer =~ s|(\d\d\d\d)/(\d\d)/(\d\d)[-\s](\d\d:\d\d:\d\d)|$1-$2-$3T$4|g; diff --git a/test.sh b/test.sh index a6644d6..9a3268e 100755 --- a/test.sh +++ b/test.sh @@ -5,7 +5,7 @@ rm -vf $user_dir/log/* push() { file=`shift` - RSYNC_PASSWORD=secret rsync $* $file rsync://test@127.0.0.1:6501/test/$file + RSYNC_PASSWORD=secret rsync $* $file rsync://test+localhost@127.0.0.1:6501/test/$file } pull() { from=$1 @@ -15,6 +15,7 @@ pull() { } ./create-user.sh test secret +./create-user.sh test secret localhost dir=/tmp/test rm -Rf "$dir"