die on rsync error
authorDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 22 Jul 2011 12:18:54 +0000 (12:18 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 22 Jul 2011 12:18:54 +0000 (12:18 +0000)
create-user.sh
rsync-piper.pl
test.sh

index 2f07d3b..85913a6 100755 (executable)
@@ -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
index 2c93367..cbca36f 100755 (executable)
@@ -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 (executable)
--- 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"