colorize server output
[cloudstore.git] / lib / CloudStore / Couchbase.pm
index 5016789..d2a0c39 100644 (file)
@@ -12,6 +12,8 @@ use Data::Dump qw(dump);
 use LWP::Simple;
 use Carp qw(confess);
 
+use WarnColor;
+
 my $buckets = {
        users => 5800,
        files => 5801,
@@ -28,7 +30,7 @@ sub new {
                my $port = $buckets->{$bucket};
                my $server = new Cache::Memcached {
                        'servers' => [ "127.0.0.1:$port" ],
-                       'debug' => $ENV{DEBUG} > 3,
+                       'debug' => defined $ENV{DEBUG} && $ENV{DEBUG} > 3,
                #       'compress_threshold' => 10_000,
                };
                #$server->set_servers($array_ref);
@@ -189,19 +191,32 @@ sub new_link {
                my $file = readlink $path;
                warn "## $path -> $file";
                if ( $file =~ s{^\Q/rsyncd-munged/../../\E}{$dir} ) {
+
+                       while ( $file =~ s{/[^/]+/../}{/} ) {
+                               warn "cleanup parent dir /../ $file";
+                       }
+
                        warn "SEND To:$to Name:$name File:$file\n";
                        my $s = "users/$data->{login}/blob/$file";
                        my $d = "users/$to/blob";
                        die "no user $to" unless -e $d;
                        $d .= "/$name";
 
-                       # since $name can contain directories we must create them
+                       # $name can contain directories so we must create them
                        my $to_dir = $d;
                        $to_dir =~ s{/[^/]+$}{};
                        make_path $to_dir if ! -e $to_dir;
 
                        warn "link $s -> $d\n";
                        link $s, $d;
+
+                       my $origin = $self->file_get({
+                               login => $data->{login},
+                               file  => $file,
+                       });
+                       $self->new_file($origin);
+                       warn "INFO: sent file ",dump($origin);
+
                } else {
                        warn "ERROR: can't SEND To:$to Name:$name File:$file";
                }
@@ -281,7 +296,7 @@ sub dedup {
                                        size => -s $new,
                                };
                                $self->new_file($fake);
-                               warn "fake ",dump($fake);
+                               warn "import from $path ",dump($fake);
                        } else {
                                md5pool $new => $md5;
                        }