From 03606c82144be388aa43f6a98e1be34f80229632 Mon Sep 17 00:00:00 2001 From: iliajie Date: Wed, 22 Mar 2023 20:15:49 +0200 Subject: [PATCH] Fix to consider initial install directory upon upgrading --- usermin/upgrade.cgi | 17 ++++++++++++++--- webmin/upgrade.cgi | 19 +++++++++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/usermin/upgrade.cgi b/usermin/upgrade.cgi index 46b0ba833..c20ba0582 100755 --- a/usermin/upgrade.cgi +++ b/usermin/upgrade.cgi @@ -15,6 +15,17 @@ else { &ui_print_unbuffered_header(undef, $in{'install'} ? $text{'upgrade_title2'} : $text{'upgrade_title'}, ""); +# Do we have an install dir? +my $indir = $in{'dir'}; +if (!$indir) { + my $install_dir = "$config_directory/install-dir"; + if (-e $install_dir) { + $indir = &read_file_contents($install_dir); + $indir = &trim($indir); + $indir = undef if (!-d $indir); + } + } + if ($in{'source'} == 0) { # from local file &error_setup(&text('upgrade_err1', $in{'file'})); @@ -245,7 +256,7 @@ else { } else { # Upgrading .. work out where to extract - if ($in{'dir'}) { + if ($indir) { # Since we are currently installed in a fixed directory, # just extract to a temporary location $extract = &transname(); @@ -265,7 +276,7 @@ else { $ENV{'config_dir'} = $config{'usermin_dir'}; $ENV{'webmin_upgrade'} = 1; $ENV{'autothird'} = 1; - $setup = $in{'dir'} ? "./setup.sh '$in{'dir'}'" : "./setup.sh"; + $setup = $indir ? "./setup.sh '$indir'" : "./setup.sh"; if ($in{'delete'}) { $ENV{'deletedold'} = 1; $cmd = "(cd $extract/usermin-$version && $setup && rm -rf \"$miniserv{'root'}\")"; @@ -278,7 +289,7 @@ else { print "
";
 	&proc::safe_process_exec($cmd, 0, 0, STDOUT, undef, 1);
 	print "
"; - if ($in{'dir'}) { + if ($indir) { # Can delete the temporary source directory system("rm -rf \"$extract\""); } diff --git a/webmin/upgrade.cgi b/webmin/upgrade.cgi index 6bf4b3bfa..f4f31d787 100755 --- a/webmin/upgrade.cgi +++ b/webmin/upgrade.cgi @@ -11,6 +11,17 @@ $| = 1; $theme_no_table = 1; &ui_print_header(undef, $text{'upgrade_title'}, ""); +# Do we have an install dir? +my $indir = $in{'dir'}; +if (!$indir) { + my $install_dir = "$config_directory/install-dir"; + if (-e $install_dir) { + $indir = &read_file_contents($install_dir); + $indir = &trim($indir); + $indir = undef if (!-d $indir); + } + } + # Save this CGI from being killed by the upgrade $SIG{'TERM'} = 'IGNORE'; @@ -361,7 +372,7 @@ elsif ($in{'mode'} eq 'solaris-pkg' || $in{'mode'} eq 'sun-pkg') { $dir = $1; } - $setup = $in{'dir'} ? "./setup.sh '$in{'dir'}'" : "./setup.sh"; + $setup = $indir ? "./setup.sh '$indir'" : "./setup.sh"; print "Package Directory: $dir
"; print "cd $dir && ./setup.sh
"; &proc::safe_process_exec( @@ -439,7 +450,7 @@ else { } # Work out where to extract - if ($in{'dir'}) { + if ($indir) { # Since we are currently installed in a fixed directory, # just extract to a temporary location $extract = &transname(); @@ -498,7 +509,7 @@ else { $ENV{'deletedold'} = 1 if ($in{'delete'}); print "

",$text{'upgrade_setup'},"

\n"; print "

";
-	$setup = $in{'dir'} ? "./setup.sh '$in{'dir'}'" : "./setup.sh";
+	$setup = $indir ? "./setup.sh '$indir'" : "./setup.sh";
 	&proc::safe_process_exec(
 		"cd $extract/webmin-$version && $setup", 0, 0,
 		STDOUT, undef, 1, 1);
@@ -508,7 +519,7 @@ else {
 			# Can delete the old root directory
 			system("rm -rf ".quotemeta($root_directory));
 			}
-		elsif ($in{'dir'}) {
+		elsif ($indir) {
 			# Can delete the temporary source directory
 			system("rm -rf ".quotemeta($extract));
 			}