Tomcat-Webmin-Module/tomcat_upgrade.cgi

76 lines
1.9 KiB
Perl

#!/usr/bin/perl
require './tomcat-lib.pl';
sub migrate_settings_and_apps{
my $old_ver = $_[0];
my $new_ver = $_[1];
my $apps_ref = $_[2];
#Copy Settings
my @files = ('bin/setenv.sh', 'conf/tomcat-users.xml');
foreach my $file (@files){
if( -f "/home/tomcat/apache-tomcat-$old_ver/$file"){
copy_source_dest("/home/tomcat/apache-tomcat-$old_ver/$file",
"/home/tomcat/apache-tomcat-$new_ver/$file");
print "Copying $file to /home/tomcat/apache-tomcat-$new_ver/$file<br>";
}
}
#make a list of installed apps
my @exclude_apps = ('docs', 'examples', 'host-manager', 'manager', 'ROOT');
#move apps
print "Copying apps ...<br>";
foreach my $app (@$apps_ref){
next if grep( /^$app$/, @exclude_apps);
if(!copy_source_dest( "/home/tomcat/apache-tomcat-$old_ver/webapps/$app",
"/home/tomcat/apache-tomcat-$new_ver/webapps/$app")){
&error("Error: Can't copy $app: $!");
}else{
print "$app<br>";
}
if(-f "/home/tomcat/apache-tomcat-$old_ver/webapps/$app.war"){
if(!copy_source_dest( "/home/tomcat/apache-tomcat-$old_ver/webapps/$app.war",
"/home/tomcat/apache-tomcat-$new_ver/webapps/$app.war")){
&error("Error: Can't copy $app.war: $!");
}else{
print "$app.war<br>";
}
}
}
}
sub upgrade_tomcat_from_archive{
my $install_ver = installed_tomcat_version();
my $latest_ver = latest_tomcat_version($install_ver);
my @installed_apps = get_all_war_infos();
#add_tomcat_user();
download_and_install($latest_ver);
tomcat_service_ctl('stop');
setup_catalina_env($latest_ver);
#setup_tomcat_users($latest_ver);
setup_tomcat_service($latest_ver);
migrate_settings_and_apps($install_ver, $latest_ver, \@installed_apps);
print("Update done, starting new Tomcat ".$latest_ver);
tomcat_service_ctl('start');
}
&ui_print_header(undef, $text{'index_title'}, "", "intro", 1, 1);
&ReadParse();
&error_setup($text{'start_err'});
$err = upgrade_tomcat_from_archive();
&ui_print_footer("", $text{'index_return'});