#!/usr/bin/perl

use lib '/usr/local/cpanel', '/scripts';

eval {
    require Cpanel::Config;
    if ( defined &Cpanel::Config::is_ea3 ) {
        if ( Cpanel::Config::is_ea3() ) {
            print "This module is now managed via easyapache.\n";
            print "To keep this message from appearing: ";
            print "Remove its entry from /var/cpanel/addonmodules\n";
            exit;
        }
    }
};

require '/scripts/regsrep.pl';

print "Uninstalling TomCat...";
system("/usr/sbin/stoptomcat");
system("rm","-rf","/usr/local/jakarta/");
opendir(TESTS,"/usr/local");
while(my $file = readdir(TESTS)) {
        next if ($file =~ /^\./);
	next if ($file !~ /^j2sdk/);
	system("rm","-rf","/usr/local/${file}");
}
closedir(TESTS);
unlink("/etc/chkserv.d/tomcat");
system("/etc/init.d/chkservd","restart");
unlink("/usr/sbin/starttomcat");
unlink("/usr/sbin/stoptomcat");
unlink("/usr/local/jdk");
unlink("/usr/local/jdk1.5.0_02");
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");
unlink("/usr/java");
unlink("/usr/local/jre");
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);
seek(RCL,0,0);
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";


unlink("/usr/local/cpanel/bin/addservlets");
unlink("/usr/local/cpanel/bin/gentomcatlist");
nooutputsystem("userdel","tomcat");
unlink("/var/cpanel/cptomcat");

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);
}
                                                                                                                                                         

