return $db;
}
-sub rsync_log {
- my ( $self, $data ) = @_;
- if ( $data =~ m/\[(\d+)\] rsync \w+ (\S+) \w+ (\S+)/ ) {
- my ( $pid, $module, $login ) = ( $1, $2, $3 );
-
- $login =~ s/\@.+//;
- my ( undef, undef, $uid, $gid, undef, undef, $email, $dir, $shell ) =
- getpwnam $login;
+sub init_pid_login {
+ my ( $self, $pid, $login ) = @_;
- $self->{pid}->{$pid} = {
- login => $login,
- uid => $uid,
- gid => $gid,
- email => $email,
- dir => $dir,
- shell => $shell,
- };
+ $login =~ s/\@.+//;
+ my ( undef, undef, $uid, $gid, undef, undef, $email, $dir, $shell ) =
+ getpwnam $login;
- warn "created $pid";
+ $self->{pid}->{$pid} = {
+ login => $login,
+ uid => $uid,
+ gid => $gid,
+ email => $email,
+ dir => $dir,
+ shell => $shell,
+ };
- } elsif ( $data =~ m/\[(\d+)\] sent \S+ bytes\s+received \S+ bytes/ ) {
- my $pid = $1;
+ warn "created $pid";
+}
- foreach my $login ( keys %{ $self->{md5sum} } ) {
- $self->{md5sum}->{$login}->close;
- warn "close md5sum $login";
- }
- delete $self->{md5sum};
+sub cleanup_pid {
+ my ( $self, $pid ) = @_;
+ foreach my $login ( keys %{ $self->{md5sum} } ) {
+ # FIXME only login's?
+ $self->{md5sum}->{$login}->close;
+ warn "close md5sum $login";
+ }
+ delete $self->{md5sum};
- delete $self->{pid}->{$pid};
- warn "removed $pid";
+ delete $self->{pid}->{$pid};
+ warn "removed $pid";
+}
+sub rsync_log {
+ my ( $self, $data ) = @_;
+ if ( $data =~ m/\[(\d+)\] rsync \w+ (\S+) \w+ (\S+)/ ) {
+ my ( $pid, $module, $login ) = ( $1, $2, $3 );
+ $self->init_pid_login( $pid, $login );
+ } elsif ( $data =~ m/\[(\d+)\] sent \S+ bytes\s+received \S+ bytes/ ) {
+ my $pid = $1;
+ $self->cleanup_pid( $pid );
} else {
# warn "## rsync_log $data";
}
}
if ( $data->{md5} ne $empty_md5 ) {
+ $self->md5sum($data)->put( $data->{file} => $data->{md5} );
$self->md5pool( $data );
} else {
warn "empty md5", dump $data;