- warn "# reading log output from $log_fifo\n";
- open(my $log, '<', $log_fifo);
- while( my $line = <$log> ) {
- print "LINE: $line";
- if ( $line =~ /transfer-log:(.+\|.+)/ ) {
- my (%data);
- %data{ keys %$transfer_log } = split(/\|/,$1); # FIXME validate?
- print dump(\%data);
+ die "no rsync running" unless kill 0, rsync_running_pid;
+ warn "waiting for log from $log_fifo\n";
+ open(my $fifo, '<', $log_fifo);
+ while( my $line = <$fifo> ) {
+ Module::Refresh->refresh;
+ chomp $line;
+ warn $line, $/;
+
+ if ( $line =~ /\[(\d+)\] transfer-log:(.+)/ ) {
+ my $pid = $1;
+ my $transfer = $2;
+ $transfer =~ s|(\d\d\d\d)/(\d\d)/(\d\d)[-\s](\d\d:\d\d:\d\d)|$1-$2-$3T$4|g;
+ my ( $yyyy,$mm,$dd,undef,$login,undef ) = split( /[\-T\|]/, $transfer, 6 );
+ my $host = $1 if $login =~ s/\+(.+)//;
+
+if(0) {
+ my $path = "users/$login/log";
+ mkdir $path unless -d $path;
+ $path .= "/$yyyy-$mm-$dd";
+ my $new_log = ! -e $path;
+ open( my $log, '>>', $path );
+ print $log join('|',@transfer),"\n" if $new_log; # store header
+ print $log "$transfer\n";
+ close $log;
+}
+
+ my @v = split(/\|/,$transfer,$#transfer + 1);
+ my %data;
+ @data{@transfer_names} = @v ; # FIXME validate?
+
+ $data{pid} = $pid;
+ # overwrite pid from transfer log with consistant one for start/stop
+
+ print ">>> data ",dump( \%data ) if $ENV{DEBUG};
+
+ $store->rsync_transfer( \%data );
+=for gearman
+ $gearman->dispatch_background( 'rsync_transfer' => $json );
+=cut
+
+ die "no rsync running" unless kill 0, rsync_running_pid;
+ } elsif ( $line =~ m/(unknown module|rebuild|reload|config)/ ) {
+ warn "refresh modules, rebuild config and HUP rsync";
+ Module::Refresh->refresh;
+ rsync_rebuild_config;
+ my $pid = rsync_running_pid;
+ kill 1, $pid && warn "reload config";
+ } else {
+ $store->rsync_log( $line );