5 use Data::Dump qw(dump);
6 use File::Path qw(make_path);
10 my ( undef, undef, $uid, $gid, undef, undef, $email, $dir, $shell ) = getpwnam $login;
15 my $worker = Gearman::Worker->new;
16 $worker->job_servers('127.0.0.1:4730');
18 $worker->register_function( send_file => sub {
23 warn "# send_file [$work]\n";
25 my ( $from, $to ) = split(/#/,$work,2);
27 my $f_dir = home_dir($1) if $from =~ s/~(\w+)//;
28 my $t_dir = home_dir($1) if $to =~ s/~(\w+)//;
30 warn "send_file $f_dir $from -> $t_dir $to\n";
32 my $t_basedir = $t_dir . $to;
33 $t_basedir =~ s{/[^/]+$}{};
34 make_path $t_basedir unless -d $t_basedir;
35 link $f_dir . $from => $t_dir . $to;
37 return "send_file $f_dir $from -> $t_dir $to";
41 $worker->register_function( delete => sub {
45 warn "# delete [$work]\n";
47 my $dir = home_dir($1) if $work =~ s/~(\w+)//;
48 my $full = $dir . $work;
52 rmdir $full || warn "ERROR $!";
54 warn "unlink $full\n";
55 unlink $full || warn "ERROR $!";
60 warn "$0 pid $$ waitng for jobs\n";
61 $worker->work while 1;