#!/usr/bin/perl
die "Must run as tux" if ($> == 0);
my $i;
my (@BOXES);
for ($i=1;$i<=6;$i++) {
   push(@BOXES,"httpupdate${i}.cpanel.net");
}


$|=1;

my(@OSES) = ("bsd","gentoo");
foreach my $os (@OSES) {
   opendir(BC,"/home/cpanel/cpanelsync/${os}conf");
   while($app = readdir(BC)) {
      next if ($app =~ /^\./) ;

      chdir("/home/cpanel/cpanelsync/${os}conf/${app}") || next();

      chdir("/home/cpanel/cpanelsync/${os}conf");

      system("tar","cjfv","${app}.tar.bz2","--exclude",'*.bz2',"${app}");

      chdir("/home/cpanel/cpanelsync/${os}conf/${app}") || next();

      open(DL,">","/home/cpanel/cpanelsync/${os}conf/${app}/.cpanelsync.lock");
      print DL "locked\n";
      close(DL);
      system("/home/cpanel/buildcpanelsync");
      open(DL,">","/home/cpanel/cpanelsync/${os}conf/${app}/.cpanelsync.lock");
      close(DL);
   }
   closedir(BC);

   foreach my $box (@BOXES) {
      system("rsync","-av","-e","ssh",
            "/home/cpanel/cpanelsync/${os}conf/",
            "tux\@${box}:/home/cpanel/cpanelsync/${os}conf/");
   }

}

sub listdir {
   my $dir = shift;
   opendir(RDDF, $dir);
   my @dirlist = readdir(RDDF);
   @dirlist = grep(!/^\.+$/,@dirlist);
   closedir(RDDF);
   return(@dirlist);
}


sub saferun {
   my(@PROGA) = @_;
   return if (substr($PROGA[0],0,1) eq "/" && ! -x $PROGA[0]);

   my($output);
   open(PROG,"-|") || exec(@PROGA);
   while(<PROG>) {
      $output .= $_;
   }
   close(PROG);
   return($output);
}

sub addfile {
   my($flistref,$file) = @_;

   $file =~ s/\/$//g;

   $$flistref{$file} = 1;
   $$flistref{"${file}.bz2"} = 1;

   my @dirs = split(/\//, ${file});
   pop(@dirs);
   while($#dirs > -1) {
      $$flistref{join("/",@dirs)} = 1;
      pop(@dirs);
   }
}
