[BACK]Return to ServerTorrents.pl CVS log [TXT][DIR] Up to [local] / openbsd / OpenBSDTorrents

Diff for /openbsd/OpenBSDTorrents/ServerTorrents.pl between version 1.19 and 1.26

version 1.19, 2005/05/21 01:48:03 version 1.26, 2008/12/29 22:02:14
Line 1 
Line 1 
 #!/usr/bin/perl -T  #!/usr/bin/perl -T
 #$Id$  #$RedRiver: ServerTorrents.pl,v 1.25 2008/09/23 16:35:45 andrew Exp $
 use strict;  use strict;
 use warnings;  use warnings;
 use diagnostics;  use diagnostics;
   
 use LWP::UserAgent;  use LWP::UserAgent;
 use Time::Local;  use Time::Local;
   use File::Basename;
   #use YAML;
   
 use lib 'lib';  use lib 'lib';
 use OpenBSDTorrents;  use OpenBSDTorrents;
Line 13 
Line 15 
   
 %ENV = ();  %ENV = ();
   
 #use YAML;  
   
 justme();  justme();
   
 my @Sizes = ('', 'Ki', 'Mi', 'Gi', 'Ti');  my @Sizes = ('', 'Ki', 'Mi', 'Gi', 'Ti');
Line 32 
Line 32 
             s/^\s+//;              s/^\s+//;
             s/\s+$//;              s/\s+$//;
             next unless $_;              next unless $_;
             my ($name, $hash) = split /\t/;              my ($name, $hash, $disabled) = split /\t/;
             next if $name eq 'File';              next if $name eq 'File';
   
             $name =~ s#^/torrents/##;              $name =~ s#.*/##;
             $server_torrents{$name} = $hash;              $server_torrents{$name}{$hash} = $disabled;
         }          }
     }      }
 } else {  } else {
     die $response->status_line;      die $response->status_line;
 }  }
   
   
 my %files;  my %files;
 opendir DIR, $OBT->{DIR_TORRENT} or die "Couldn't opendir $OBT->{DIR_TORRENT}: $!";  opendir DIR, $OBT->{DIR_TORRENT} or die "Couldn't opendir $OBT->{DIR_TORRENT}: $!";
 foreach (readdir DIR) {  foreach (readdir DIR) {
Line 54 
Line 53 
                 die "Invalid character in $_: $!";                  die "Invalid character in $_: $!";
         }          }
         next unless /\.torrent$/;          next unless /\.torrent$/;
         my ($name, $year, $mon, $mday, $hour, $min) =  
            /^(.*)-(\d{4})-(\d{2})-(\d{2})-(\d{2})(\d{2})/;  
   
           my $name = basename($_, '.torrent');
   
           if (my ($base, $year, $mon, $mday, $hour, $min) =
              /^(.*)-(\d{4})-(\d{2})-(\d{2})-(\d{2})(\d{2})/) {
                   $name = $base;
           }
   
         my $t;          my $t;
         eval {          eval {
                 $t = BT::MetaInfo::Cached->new(                  $t = BT::MetaInfo::Cached->new(
                         $OBT->{DIR_TORRENT} . '/' . $_,                          $OBT->{DIR_TORRENT} . '/' . $_,
                         {                          {
                                 cache_root =>                                  cache_root => '/tmp/OBTFileCache'
                                 $OBT->{DIR_HOME} . '/FileCache'                                  #$OBT->{DIR_HOME} . '/FileCache'
                         }                          }
                 );                  );
         };          };
Line 85 
Line 89 
 }  }
 closedir DIR;  closedir DIR;
   
 #print Dump \%server_torrents, \%files;  #print Dump \%server_torrents;
   #print Dump \%files;
   #exit;
   
 foreach my $name (keys %files) {  my %torrents;
   FILE: foreach my $name (keys %files) {
         #print "$name\n";          #print "$name\n";
         foreach my $epoch ( sort { $b <=> $a } keys %{ $files{$name} } ) {          foreach my $epoch ( sort { $b <=> $a } keys %{ $files{$name} } ) {
                 #print "\t$epoch\n";                  #print "\t$epoch\n";
                 my $torrent = $files{$name}{$epoch}{file};                  my $torrent = $files{$name}{$epoch}{file};
                   my $hash = unpack("H*", $files{$name}{$epoch}{'details'}->info_hash );
                   #printf "LOCAL:  [%s] [%s]\n", $hash, $torrent;
   
                 my $hash = $files{$name}{$epoch}{'details'}->info_hash;                  $torrents{$torrent}{$hash} = $files{$name}{$epoch};
                 $hash = unpack("H*", $hash);  
   
                 next if (                  unless (exists $server_torrents{$torrent}{$hash}) {
                         exists $server_torrents{$torrent} &&                          Upload_Torrent($files{$name}{$epoch});
                         $server_torrents{$torrent} eq $hash                  }
                 );  
   
                 Upload_Torrent($files{$name}{$epoch});  
         }          }
 }  }
   
 foreach my $file (keys %server_torrents) {  foreach my $torrent (keys %server_torrents) {
         my ($name, $year, $mon, $mday, $hour, $min) =          foreach my $hash (keys %{ $server_torrents{$torrent} }) {
            $file =~                  #printf "SERVER: [%s] [%s]\n", $hash, $torrent;
            /^(.*)-(\d{4})-(\d{2})-(\d{2})-(\d{2})(\d{2})/;                  if ((! exists $torrents{$torrent}{$hash}) &&
         unless (exists $files{$name}) {                       defined $server_torrents{$torrent}{$hash} &&
                 Delete_Torrent($file);                       $server_torrents{$torrent}{$hash} != 1
                   ) {
                           Delete_Torrent($torrent, $hash);
                   }
         }          }
 }  }
   
Line 150 
Line 158 
         my $comment = $t->{comment};          my $comment = $t->{comment};
         $comment =~ s/\n.*$//s;          $comment =~ s/\n.*$//s;
   
         my ($filename) = $comment =~ /Files from (.+)/;          my $filename =
                    $comment =~ /($OBT->{BASENAME}.+)/ ? $1
                   :                                $file;
         $filename =~ s#/# #g;          $filename =~ s#/# #g;
           $filename =~ s/\.torrent\z//;
   
         $comment  .= " [$size]";          $comment  .= " [$size]";
         $filename .= " [$time]";          $filename .= " [$time]";
Line 178 
Line 189 
   
 sub Delete_Torrent  sub Delete_Torrent
 {  {
         my $file = shift;          my $filename = shift;
         print "Will delete $file soon enough\n";          my $hash = shift;
           die "No hash passed!" unless $hash;
   
           print "Removing $filename [$hash]\n";
   
           my $response = $ua->post($OBT->{'URL_DELETE'}, {
                   username => $OBT->{UPLOAD_USER},
                   password => $OBT->{UPLOAD_PASS},
                   filename => $filename,
                   hash     => $hash,
           }, Content_Type => 'form-data');
   
           if ($response->is_success) {
                   my ($result) = $response->content =~ /class="error"\>([^<]+)\</;
   
                   if ($result eq 'Torrent was removed successfully.') {
                           print STDERR "Removed $filename [$hash]\n";
                   }
                   elsif ($result) {
                           print STDERR "Error: $result (removing $filename [$hash])\n";
                   }
                   else {
                           print STDERR "An unknown error occurred removing $filename [$hash]\n";
                   }
           }
           else {
                   die $response->status_line . " removing $filename [$hash]\n";
           }
 }  }

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.26

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>