mirror of
https://github.com/webmin/webmin.git
synced 2026-09-21 13:00:38 +01:00
Update webmin from repository if a package is available
This commit is contained in:
@@ -56,6 +56,10 @@ if (!$skip_upgrade) {
|
||||
elsif ($mode ne "sun-pkg") {
|
||||
push(@opts, [ 2, $text{'upgrade_ftp'} ]);
|
||||
}
|
||||
($repotype, $repover) = &get_webmin_repo_version();
|
||||
if ($repotype) {
|
||||
push(@opts, [ 6, &text('upgrade_repo', uc($repotype)) ]);
|
||||
}
|
||||
print &ui_table_row($text{'upgrade_src'},
|
||||
&ui_radio_table("source", $opts[$#opts]->[0], \@opts));
|
||||
|
||||
|
||||
@@ -481,6 +481,7 @@ upgrade_ftp=Latest version from www.webmin.com
|
||||
upgrade_cup=Latest version from Caldera's <tt>cupdate</tt> tool
|
||||
upgrade_emerge=Latest version from Emerge repository
|
||||
upgrade_delete=Delete old version's directory after upgrade?
|
||||
upgrade_repo=Latest version from $1 repository
|
||||
upgrade_ok=Upgrade Webmin
|
||||
upgrade_err1=Failed to upgrade from $1
|
||||
upgrade_err2=Failed to upgrade from uploaded file
|
||||
|
||||
@@ -5,7 +5,23 @@
|
||||
require './webmin-lib.pl';
|
||||
&foreign_require("proc", "proc-lib.pl");
|
||||
&foreign_require("acl", "acl-lib.pl");
|
||||
&ReadParseMime();
|
||||
if ($ENV{'REQUEST_METHOD'} eq 'GET') {
|
||||
&ReadParse();
|
||||
}
|
||||
else {
|
||||
&ReadParseMime();
|
||||
}
|
||||
|
||||
if ($in{'source'} == 3) {
|
||||
# Get the latest version from Caldera with cupdate
|
||||
&redirect("/cupdate/");
|
||||
return;
|
||||
}
|
||||
elsif ($in{'source'} == 6) {
|
||||
# Upgrade from package repository
|
||||
&redirect("/package-updates/update.cgi?u=webmin");
|
||||
return;
|
||||
}
|
||||
|
||||
$| = 1;
|
||||
$theme_no_table = 1;
|
||||
@@ -137,10 +153,6 @@ elsif ($in{'source'} == 5) {
|
||||
$full = $version.($release ? "-$release" : "");
|
||||
}
|
||||
}
|
||||
elsif ($in{'source'} == 3) {
|
||||
# Get the latest version from Caldera with cupdate
|
||||
&redirect("/cupdate/");
|
||||
}
|
||||
elsif ($in{'source'} == 4) {
|
||||
# Just run the command emerge webmin
|
||||
&error_setup(&text('upgrade_err4'));
|
||||
|
||||
@@ -1288,8 +1288,15 @@ if (&foreign_available($module_name) && !$gconfig{'nowebminup'} &&
|
||||
$config{'last_version_release'} &&
|
||||
$config{'last_version_release'} >= 2;
|
||||
my $full = &get_webmin_full_version();
|
||||
if ($config{'last_version_full'} &&
|
||||
&compare_version_numbers($config{'last_version_full'}, $full) > 0) {
|
||||
my $compver = $config{'last_version_full'};
|
||||
my ($repotype, $repover) = &get_webmin_repo_version();
|
||||
my $source = 2;
|
||||
if ($repotype) {
|
||||
$compver = $repover;
|
||||
$source = 6;
|
||||
}
|
||||
if ($compver &&
|
||||
&compare_version_numbers($compver, $full) > 0) {
|
||||
# New version is out there .. offer to upgrade
|
||||
my $mode = &get_install_type();
|
||||
my $checksig = 0;
|
||||
@@ -1306,9 +1313,8 @@ if (&foreign_available($module_name) && !$gconfig{'nowebminup'} &&
|
||||
'target="_blank" data-link-external="after"').".";
|
||||
# $release_notes_link = "" if ($minor_release);
|
||||
push(@notifs,
|
||||
&ui_form_start("@{[&get_webprefix()]}/webmin/upgrade.cgi",
|
||||
"form-data").
|
||||
&ui_hidden("source", 2).
|
||||
&ui_form_start("@{[&get_webprefix()]}/webmin/upgrade.cgi").
|
||||
&ui_hidden("source", $source).
|
||||
&ui_hidden("sig", $checksig).
|
||||
&ui_hidden("mode", $mode).
|
||||
&text('notif_upgrade', $config{'last_version_full'}, $full).
|
||||
@@ -2716,4 +2722,18 @@ if ($os =~ /rocky/i && $basever >= 8) {
|
||||
return ". $link" if ($link);
|
||||
}
|
||||
|
||||
# get_webmin_repo_version()
|
||||
# If Webmin was installed from a repository like APT or YUM, return the repo
|
||||
# type and the new version number
|
||||
sub get_webmin_repo_version
|
||||
{
|
||||
return () if (!&foreign_check("package-updates"));
|
||||
&foreign_require("package-updates");
|
||||
return () if (!&package_updates::supports_updates_available());
|
||||
my @updates = &package_updates::updates_available();
|
||||
my ($wpkg) = grep { $_->{'name'} eq 'webmin' } @updates;
|
||||
return () if (!$wpkg);
|
||||
return ($wpkg->{'system'}, $wpkg->{'version'});
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
Reference in New Issue
Block a user