#!/usr/bin/perl

require '/scripts/regsrep.pl';

print "Uninstalling TomCat...";
system("/usr/sbin/stoptomcat");
system("rm","-rf","/usr/local/jakarta/");
system("rm","-rf","/usr/local/j2sdk1.4.2_05/");
unlink("/etc/chkserv.d/tomcat");
unlink("/usr/sbin/starttomcat");
unlink("/usr/sbin/stoptomcat");
unlink("/usr/local/jdk");
unlink("/usr/local/apache/libexec/mod_jk.so");
unlink("/usr/local/apache/conf/workers.properties");
unlink("/usr/local/apache/conf/workers2.properties");
unlink("/usr/local/apache/conf/jk.conf");

print "Removing starttomcat from rc.local...";
my $rcl = '/etc/rc.d/rc.local';
if (! -e "/etc/rc.d/rc.local" && -e "/etc/rc.local") {
        $rcl = '/etc/rc.local';
}
my $rlock = SafeFile::safeopen(\*RCL,"+<",$rcl);
my @RCL=<RCL>;
@RCL = grep(!/starttomcat/,@RCL);
print RCL join("",@RCL);
truncate(RCL,tell(RCL));
SafeFile::safeclose(\*RCL,$rlock);
print "Done\n";

print "Cleaning up httpd.conf...";
delinclude();
regsrep("/usr/local/apache/conf/httpd.conf","LoadModule[\\s]*jk_module[\\s]*libexec/mod_jk.so","#LoadModule jk_module        libexec/mod_.so");
regsrep("/usr/local/apache/conf/httpd.conf","AddModule[\\s]*mod_jk.c","#AddModule mod_jk.c");
print "Done\n";



nooutputsystem("userdel","tomcat");

print "Uninstall Complete!\n";

sub delinclude {
   my $conflock = SafeFile::safeopen(\*HC,"+<","/usr/local/apache/conf/httpd.conf");
   my $addmodule = 0;
   my (@HC);
   while(<HC>) {
      next if (/Include/ && /jk\.conf/);
      push(@HC,$_);
   }
   seek(HC,0,0);
   print HC join("",@HC);
   truncate(HC,tell(HC));
   SafeFile::safeclose(\*HC,$conflock);
}

                                                                                                                                                         
sub nooutputsystem {
   my(@unsafecmd) = @_;
   my(@cmd);
   while ($unsafecmd[$#unsafecmd] eq "") { pop(@unsafecmd); }
   foreach(@unsafecmd) {
      my @cmds = split(/ /, $_);
      foreach(@cmds) { push(@cmd,$_); }
   }
   my $pid;
   if ($pid = fork()) {
#master
   } else {
      close(STDOUT);
      close(STDERR);
      close(STDIN);
      open(STDIN,"<","/dev/null");
      open(STDOUT,">","/dev/null");
      open(STDERR,">","/dev/null");
      exec(@cmd);
   }
   waitpid($pid,0);
}
                                                                                                                                                         

