From 8e5633d9affe9a66d907d0cc990a65cc120a5a8c Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Wed, 4 Jun 2025 23:01:08 +0300 Subject: [PATCH 01/16] Fix provides --- makerpm.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makerpm.pl b/makerpm.pl index 69df6986c..87b1ebb10 100755 --- a/makerpm.pl +++ b/makerpm.pl @@ -85,7 +85,7 @@ Summary: A web-based administration interface for Unix systems. Name: webmin Version: $ver Release: $rel -Provides: %{name}-%{version} perl(WebminCore) +Provides: %{name}-%{version} perl(WebminCore) /usr/libexec/webmin Requires(pre): /usr/bin/perl Requires: /bin/sh /usr/bin/perl perl(lib) perl(open) perl(Net::SSLeay) perl(Time::Local) perl(Data::Dumper) perl(File::Path) perl(File::Basename) perl(Digest::SHA) perl(Digest::MD5) openssl unzip tar gzip Recommends: perl(DateTime) perl(DateTime::TimeZone) perl(DateTime::Locale) perl(Time::Piece) perl(Encode::Detect) perl(Time::HiRes) perl(Socket6) html2text shared-mime-info perl-File-Basename perl-File-Path perl-JSON-XS qrencode perl(DBI) perl(DBD::mysql) From cc407bc1c3e97c467f273d3f978e8af31aaa77da Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Thu, 5 Jun 2025 00:28:05 +0300 Subject: [PATCH 02/16] Fix to sort alphabetically default modules list --- mod_def_list.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod_def_list.txt b/mod_def_list.txt index 60662fe4e..4e5e8479c 100644 --- a/mod_def_list.txt +++ b/mod_def_list.txt @@ -1 +1 @@ -cron dfsadmin exports inetd init mount samba useradmin fdisk format proc webmin quota software pap acl apache lpadmin bind8 sendmail squid bsdexports hpuxexports net dhcpd custom servers time syslog mysql man inittab raid postfix webminlog postgresql xinetd status cpan pam nis shell fetchmail passwd at proftpd sshd heartbeat cluster-software cluster-useradmin qmailadmin stunnel usermin fsdump lvm procmail cluster-webmin firewall sgiexports openslp webalizer shorewall adsl-client updown ppp-client pptp-server pptp-client ipsec ldap-useradmin change-user cluster-shell cluster-cron spam htaccess-htpasswd logrotate cluster-passwd mailboxes ipfw sarg bandwidth cluster-copy backup-config smart-status idmapd krb5 smf ipfilter rbac tunnel zones cluster-usermin dovecot syslog-ng mailcap ldap-client phpini filter bacula-backup ldap-server exim tcpwrappers package-updates system-status webmincron shorewall6 iscsi-server iscsi-client gray-theme iscsi-target iscsi-tgtd bsdfdisk fail2ban authentic-theme firewalld filemin firewall6 logviewer xterm \ No newline at end of file +acl adsl-client apache at authentic-theme backup-config bacula-backup bandwidth bind8 bsdexports bsdfdisk change-user cluster-copy cluster-cron cluster-passwd cluster-shell cluster-software cluster-useradmin cluster-usermin cluster-webmin cpan cron custom dfsadmin dhcpd dovecot exim exports fail2ban fdisk fetchmail filemin filter firewall firewall6 firewalld format fsdump gray-theme heartbeat hpuxexports htaccess-htpasswd idmapd inetd init inittab ipfilter ipfw ipsec iscsi-client iscsi-server iscsi-target iscsi-tgtd krb5 ldap-client ldap-server ldap-useradmin logrotate logviewer lpadmin lvm mailboxes mailcap man mount mysql net nis openslp package-updates pam pap passwd phpini postfix postgresql ppp-client pptp-client pptp-server proc procmail proftpd qmailadmin quota raid rbac samba sarg sendmail servers sgiexports shell shorewall shorewall6 smart-status smf software spam squid sshd status stunnel syslog syslog-ng system-status tcpwrappers time tunnel updown useradmin usermin webalizer webmin webmincron webminlog xinetd xterm zones \ No newline at end of file From ce16f808487e03236b7f6967fc56f0d3ea5e00f3 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Thu, 5 Jun 2025 02:56:18 +0300 Subject: [PATCH 03/16] Add support for building on given list of modules --- makedist.pl | 61 +++++++++++++++++++---------------------------- mod_core_list.txt | 1 + 2 files changed, 26 insertions(+), 36 deletions(-) create mode 100644 mod_core_list.txt diff --git a/makedist.pl b/makedist.pl index d5a485008..23f389d27 100755 --- a/makedist.pl +++ b/makedist.pl @@ -1,34 +1,28 @@ #!/usr/local/bin/perl # Builds a tar.gz package of a specified Webmin version -if ($0 =~ /^(.*)\//) { - chdir($1); - } -@ARGV == 1 || @ARGV == 2 || @ARGV == 3 || usage(); -if ($ARGV[0] eq "-minimal" || $ARGV[0] eq "--minimal") { - $min++; - shift(@ARGV); - } -if ($ARGV[0] =~ /^--exclude-modules/) { - $exclude_modules = $ARGV[0]; - shift(@ARGV); - } -if ($ARGV[0] =~ /^--product-type/) { - $product_type = $ARGV[0]; - $product_type =~ s/--product-type=//; - if ($product_type =~ /^(minimal|essential)$/) { - $product_suff = "-$product_type"; - $product_pref = "$product_type-"; +# Parse command line options +$mod_list = 'def'; +@ARGV = map { /^--\S+\s+/ ? split(/\s+/, $_) : $_ } @ARGV; +while (@ARGV && $ARGV[0] =~ /^--?/) { + my $opt = shift(@ARGV); + if ($opt eq '--minimal' || $opt eq '-minimal') { + $min = 1; + next; } - shift(@ARGV); + if ($opt eq '--mod-list') { + $mod_list = shift(@ARGV) // usage(); + next; + } + usage(); } +@ARGV == 1 || usage(); $fullvers = $ARGV[0]; -$fullvers =~ /^([0-9\.]+)(\-(\d+))?$/ || usage(); -$vers = $1; -$release = $3; -$tardir = $min ? "minimal" : "tarballs"; -$vfile = $product_pref ? "$product_pref$fullvers" : $min ? "$fullvers-minimal" : $fullvers; -$zipdir = "zips"; +$fullvers =~ /^([0-9\.]+)(?:-(\d+))?$/ || usage(); +($vers, $release) = ($1, $2); +$tardir = $min ? 'minimal' : 'tarballs'; +$vfile = $min ? "$fullvers-minimal" : $fullvers; +$zipdir = 'zips'; $vers || usage(); @files = ("config.cgi", "config-*-linux", @@ -70,20 +64,15 @@ if ($min) { } else { # All the modules - my $mod_def_list; + my $mods_list; my $curr_dir = $0; ($curr_dir) = $curr_dir =~ /^(.+)\/[^\/]+$/; $curr_dir = "." if ($curr_dir !~ /^\//); - open(my $fh, '<', "$curr_dir/mod_def_list.txt") || die "Error opening \"mod_def_list.txt\" : $!\n"; - $mod_def_list = do { local $/; <$fh> }; + open(my $fh, '<', "$curr_dir/mod_${mod_list}_list.txt") || + die "Error opening \"mod_${mod_list}_list.txt\" : $!\n"; + $mods_list = do { local $/; <$fh> }; close($fh); - @mlist = split(/\s+/, $mod_def_list); - if ($exclude_modules) { - $exclude_modules =~ s/--exclude-modules=//; - my @mlist_excluded = - grep { my $f = $_; ! grep $_ eq $f, split(',', $exclude_modules) } @mlist; - @mlist = @mlist_excluded; - } + @mlist = split(/\s+/, $mods_list); } # Build EOL data @@ -296,6 +285,6 @@ close(ARFILE); sub usage { -die "usage: makedist.pl [-minimal] [--exclude-modules] "; + die "Usage: $0 [--minimal] [--mod-list file] \n"; } diff --git a/mod_core_list.txt b/mod_core_list.txt new file mode 100644 index 000000000..3900563a8 --- /dev/null +++ b/mod_core_list.txt @@ -0,0 +1 @@ +acl authentic-theme backup-config bind8 change-user cron dovecot fail2ban fdisk filemin firewalld fsdump gray-theme htaccess-htpasswd init logrotate logviewer lvm mailboxes mailcap mount mysql net package-updates passwd phpini postfix proc proftpd quota software spam sshd status system-status time updown useradmin usermin webmin webminlog xterm \ No newline at end of file From b0c029887f0edc43c3a38594ff6665ba2bc54964 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Thu, 5 Jun 2025 03:02:37 +0300 Subject: [PATCH 04/16] Add missing modules for core --- mod_core_list.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod_core_list.txt b/mod_core_list.txt index 3900563a8..f4bfff7e8 100644 --- a/mod_core_list.txt +++ b/mod_core_list.txt @@ -1 +1 @@ -acl authentic-theme backup-config bind8 change-user cron dovecot fail2ban fdisk filemin firewalld fsdump gray-theme htaccess-htpasswd init logrotate logviewer lvm mailboxes mailcap mount mysql net package-updates passwd phpini postfix proc proftpd quota software spam sshd status system-status time updown useradmin usermin webmin webminlog xterm \ No newline at end of file +acl apache authentic-theme backup-config bind8 change-user cron dovecot fail2ban fdisk filemin firewalld fsdump gray-theme htaccess-htpasswd init logrotate logviewer lvm mailboxes mailcap mount mysql net package-updates passwd phpini postfix proc procmail proftpd quota software spam sshd status system-status time updown useradmin usermin webmin webminlog xterm \ No newline at end of file From 0be73ac4337c9cf11c377fbf0d3ae771077afbe6 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Thu, 5 Jun 2025 03:07:17 +0300 Subject: [PATCH 05/16] Add missing "servers" module to the core --- mod_core_list.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod_core_list.txt b/mod_core_list.txt index f4bfff7e8..162b77b65 100644 --- a/mod_core_list.txt +++ b/mod_core_list.txt @@ -1 +1 @@ -acl apache authentic-theme backup-config bind8 change-user cron dovecot fail2ban fdisk filemin firewalld fsdump gray-theme htaccess-htpasswd init logrotate logviewer lvm mailboxes mailcap mount mysql net package-updates passwd phpini postfix proc procmail proftpd quota software spam sshd status system-status time updown useradmin usermin webmin webminlog xterm \ No newline at end of file +acl apache authentic-theme backup-config bind8 change-user cron dovecot fail2ban fdisk filemin firewalld fsdump gray-theme htaccess-htpasswd init logrotate logviewer lvm mailboxes mailcap mount mysql net package-updates passwd phpini postfix proc procmail proftpd quota servers software spam sshd status system-status time updown useradmin usermin webmin webminlog xterm \ No newline at end of file From d519c4099f0e4a90460b1b982cd7f1c52a4e22c1 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Thu, 5 Jun 2025 03:23:48 +0300 Subject: [PATCH 06/16] Add missing "webmincron" module to the core --- mod_core_list.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod_core_list.txt b/mod_core_list.txt index 162b77b65..fd8c059c9 100644 --- a/mod_core_list.txt +++ b/mod_core_list.txt @@ -1 +1 @@ -acl apache authentic-theme backup-config bind8 change-user cron dovecot fail2ban fdisk filemin firewalld fsdump gray-theme htaccess-htpasswd init logrotate logviewer lvm mailboxes mailcap mount mysql net package-updates passwd phpini postfix proc procmail proftpd quota servers software spam sshd status system-status time updown useradmin usermin webmin webminlog xterm \ No newline at end of file +acl apache authentic-theme backup-config bind8 change-user cron dovecot fail2ban fdisk filemin firewalld fsdump gray-theme htaccess-htpasswd init logrotate logviewer lvm mailboxes mailcap mount mysql net package-updates passwd phpini postfix proc procmail proftpd quota servers software spam sshd status system-status time updown useradmin usermin webmin webmincron webminlog xterm \ No newline at end of file From 282b28da5e7419da138c76bd587bd28761fa20ba Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Thu, 5 Jun 2025 23:38:46 +0300 Subject: [PATCH 07/16] Fix to use new file names for modes --- makedist.pl | 4 ++-- makemoduledeb.pl | 2 +- makemodulerpm.pl | 2 +- mod_def_list.txt => mod_full_list.txt | 0 4 files changed, 4 insertions(+), 4 deletions(-) rename mod_def_list.txt => mod_full_list.txt (100%) diff --git a/makedist.pl b/makedist.pl index 23f389d27..38c83bcea 100755 --- a/makedist.pl +++ b/makedist.pl @@ -2,7 +2,7 @@ # Builds a tar.gz package of a specified Webmin version # Parse command line options -$mod_list = 'def'; +$mod_list = 'full'; @ARGV = map { /^--\S+\s+/ ? split(/\s+/, $_) : $_ } @ARGV; while (@ARGV && $ARGV[0] =~ /^--?/) { my $opt = shift(@ARGV); @@ -285,6 +285,6 @@ close(ARFILE); sub usage { - die "Usage: $0 [--minimal] [--mod-list file] \n"; + die "Usage: $0 [--minimal] [--mod-list type] \n"; } diff --git a/makemoduledeb.pl b/makemoduledeb.pl index b7a51a223..3e062c6fa 100755 --- a/makemoduledeb.pl +++ b/makemoduledeb.pl @@ -246,7 +246,7 @@ if ($debdepends && exists($minfo{'depends'})) { my $curr_dir = $0; ($curr_dir) = $curr_dir =~ /^(.+)\/[^\/]+$/; $curr_dir = "." if ($curr_dir !~ /^\//); - my $mod_def_file = "$curr_dir/mod_def_list.txt"; + my $mod_def_file = "$curr_dir/mod_full_list.txt"; next if (! -r $mod_def_file); open(my $fh, '<', $mod_def_file) || die "Error opening \"$mod_def_file\" : $!\n"; diff --git a/makemodulerpm.pl b/makemodulerpm.pl index 89357c911..f7aa7f9df 100755 --- a/makemodulerpm.pl +++ b/makemodulerpm.pl @@ -267,7 +267,7 @@ if ($rpmdepends && defined($minfo{'depends'})) { my $curr_dir = $0; ($curr_dir) = $curr_dir =~ /^(.+)\/[^\/]+$/; $curr_dir = "." if ($curr_dir !~ /^\//); - my $mod_def_file = "$curr_dir/mod_def_list.txt"; + my $mod_def_file = "$curr_dir/mod_full_list.txt"; next if (! -r $mod_def_file); open(my $fh, '<', $mod_def_file) || die "Error opening \"$mod_def_file\" : $!\n"; diff --git a/mod_def_list.txt b/mod_full_list.txt similarity index 100% rename from mod_def_list.txt rename to mod_full_list.txt From 87ba4dd18139cc428d3bd88943153e90e2f98d83 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Thu, 5 Jun 2025 23:47:48 +0300 Subject: [PATCH 08/16] Add minimal list of modules in a separate file --- mod_minimal_list.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 mod_minimal_list.txt diff --git a/mod_minimal_list.txt b/mod_minimal_list.txt new file mode 100644 index 000000000..51efe9e8a --- /dev/null +++ b/mod_minimal_list.txt @@ -0,0 +1 @@ +acl cron init inittab man proc servers system-status webmin webmincron webminlog \ No newline at end of file From 09d0b26aeac56b795a24aa9aa9a6aa23701c9779 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Fri, 6 Jun 2025 22:41:05 +0300 Subject: [PATCH 09/16] Add module list flag support when building modules --- makemoduledeb.pl | 8 +++++++- makemodulerpm.pl | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/makemoduledeb.pl b/makemoduledeb.pl index 3e062c6fa..0e63f2855 100755 --- a/makemoduledeb.pl +++ b/makemoduledeb.pl @@ -29,6 +29,8 @@ my ($force_theme, $url, $upstream, $debdepends, $debrecommends, $no_prefix, $force_usermin, $release, $allow_overwrite, $final_mod, $dsc_file, $dir, $ver, @exclude); +my $mod_list = 'full'; + while(@ARGV) { my $a = shift(@ARGV); if ($a eq "--deb-depends") { @@ -79,6 +81,9 @@ while(@ARGV) { elsif ($a eq "--exclude") { push(@exclude, shift(@ARGV)); } + elsif ($a eq "--mod-list") { + $mod_list = shift(@ARGV); + } elsif ($a =~ /^\-\-/) { print STDERR "Unknown option $a\n"; exit(1); @@ -113,6 +118,7 @@ if (!$dir) { print " [--dsc-file file.dsc]\n"; print " [--force-theme]\n"; print " [--exclude file-or-dir]\n"; + print " [--mod-list full|core|minimal]\n"; print RESET, "\n"; exit(1); } @@ -246,7 +252,7 @@ if ($debdepends && exists($minfo{'depends'})) { my $curr_dir = $0; ($curr_dir) = $curr_dir =~ /^(.+)\/[^\/]+$/; $curr_dir = "." if ($curr_dir !~ /^\//); - my $mod_def_file = "$curr_dir/mod_full_list.txt"; + my $mod_def_file = "$curr_dir/mod_${mod_list}_list.txt"; next if (! -r $mod_def_file); open(my $fh, '<', $mod_def_file) || die "Error opening \"$mod_def_file\" : $!\n"; diff --git a/makemodulerpm.pl b/makemodulerpm.pl index f7aa7f9df..fa948c3e8 100755 --- a/makemodulerpm.pl +++ b/makemodulerpm.pl @@ -36,6 +36,8 @@ my ($force_theme, $rpmdepends, $rpmrecommends, $no_prefix, $set_prefix, $vendor, $url, $force_usermin, $final_mod, $sign, $keyname, $epoch, $dir, $ver, @exclude); +my $mod_list = 'full'; + # Parse command-line args while(@ARGV) { # XXX Untainting isn't needed when running as non-root? @@ -97,6 +99,9 @@ while(@ARGV) { elsif ($a eq "--exclude") { push(@exclude, shift(@ARGV)); } + elsif ($a eq "--mod-list") { + $mod_list = shift(@ARGV); + } elsif ($a =~ /^\-\-/) { print STDERR "Unknown option $a\n"; exit(1); @@ -134,6 +139,7 @@ if (!$dir) { print " [--sign]\n"; print " [--key keyname]\n"; print " [--exclude file]\n"; + print " [--mod-list full|core|minimal]\n"; print RESET, "\n"; exit(1); } @@ -267,7 +273,7 @@ if ($rpmdepends && defined($minfo{'depends'})) { my $curr_dir = $0; ($curr_dir) = $curr_dir =~ /^(.+)\/[^\/]+$/; $curr_dir = "." if ($curr_dir !~ /^\//); - my $mod_def_file = "$curr_dir/mod_full_list.txt"; + my $mod_def_file = "$curr_dir/mod_${mod_list}_list.txt"; next if (! -r $mod_def_file); open(my $fh, '<', $mod_def_file) || die "Error opening \"$mod_def_file\" : $!\n"; From e5e8cde28e1bcb1348cb38e8aa64cceb8f9909c9 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Sun, 8 Jun 2025 18:02:12 +0300 Subject: [PATCH 10/16] Fix support for old RPM module name prefixes --- makemodulerpm.pl | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/makemodulerpm.pl b/makemodulerpm.pl index fa948c3e8..6c94a1e54 100755 --- a/makemodulerpm.pl +++ b/makemodulerpm.pl @@ -32,8 +32,8 @@ my $release = 1; $ENV{'PATH'} = "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin"; my $allow_overwrite = 0; -my ($force_theme, $rpmdepends, $rpmrecommends, $no_prefix, $set_prefix, $vendor, - $url, $force_usermin, $final_mod, $sign, $keyname, +my ($force_theme, $rpmdepends, $rpmrecommends, $no_prefix, $set_prefix, + $obsolete_wbm, $vendor, $url, $force_usermin, $final_mod, $sign, $keyname, $epoch, $dir, $ver, @exclude); my $mod_list = 'full'; @@ -54,6 +54,12 @@ while(@ARGV) { elsif ($a eq "--no-prefix") { $no_prefix = 1; } + elsif ($a eq "--prefix") { + $set_prefix = &untaint(shift(@ARGV)); + } + elsif ($a eq "--obsolete-wbm") { + $obsolete_wbm = 1; + } elsif ($a eq "--licence" || $a eq "--license") { $licence = &untaint(shift(@ARGV)); } @@ -81,9 +87,6 @@ while(@ARGV) { elsif ($a eq "--rpm-dir") { $basedir = &untaint(shift(@ARGV)); } - elsif ($a eq "--prefix") { - $set_prefix = &untaint(shift(@ARGV)); - } elsif ($a eq "--vendor") { $vendor = &untaint(shift(@ARGV)); } @@ -126,6 +129,7 @@ if (!$dir) { print " [--rpm-dir directory]\n"; print " [--no-prefix]\n"; print " [--prefix prefix]\n"; + print " [--no-wbm-prefix]\n"; print " [--vendor name]\n"; print " [--licence name]\n"; print " [--url url]\n"; @@ -170,7 +174,8 @@ if (!-d $spec_dir || !-d $rpm_source_dir || !-d $rpm_dir) { # Is this actually a module or theme directory? -d $source_dir || die "$dir is not a directory"; -my ($depends, $prefix, $desc, $prog, $iver, $istheme, $post_config); +my ($depends, $prefix, $prefix_auto, $desc, $prog, $iver, + $istheme, $post_config); if ($minfo{'desc'}) { $depends = join(" ", map { s/\/[0-9\.]+//; $_ } grep { !/^[0-9\.]+$/ } @@ -206,6 +211,7 @@ elsif ($tinfo{'desc'}) { else { die "$source_dir does not appear to be a webmin module or theme"; } +$prefix_auto = $prefix; $prefix = "" if ($no_prefix); $prefix = $set_prefix if ($set_prefix); my $ucprog = ucfirst($prog); @@ -350,6 +356,12 @@ if (exists($minfo{'rpm_obsoletes'})) { } } +# Fix support for old module name prefixes +if ($obsolete_wbm) { + push(@rprovides, "$prefix_auto$mod"); + push(@robsoletes, "$prefix_auto$mod"); + } + # Create the SPEC file my $vendorheader = $vendor ? "Vendor: $vendor" : ""; my $urlheader = $url ? "URL: $url" : ""; From 8de7fde8bbd1b8b0082fa15e3594a7d5bf4f9de6 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Sun, 8 Jun 2025 21:03:36 +0300 Subject: [PATCH 11/16] Fix license --- makerpm.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makerpm.pl b/makerpm.pl index 87b1ebb10..5e317dcf8 100755 --- a/makerpm.pl +++ b/makerpm.pl @@ -90,7 +90,7 @@ Requires(pre): /usr/bin/perl Requires: /bin/sh /usr/bin/perl perl(lib) perl(open) perl(Net::SSLeay) perl(Time::Local) perl(Data::Dumper) perl(File::Path) perl(File::Basename) perl(Digest::SHA) perl(Digest::MD5) openssl unzip tar gzip Recommends: perl(DateTime) perl(DateTime::TimeZone) perl(DateTime::Locale) perl(Time::Piece) perl(Encode::Detect) perl(Time::HiRes) perl(Socket6) html2text shared-mime-info perl-File-Basename perl-File-Path perl-JSON-XS qrencode perl(DBI) perl(DBD::mysql) AutoReq: 0 -License: BSD-3-clause +License: BSD-3-Clause Group: System/Tools Source: http://www.webmin.com/download/$tarfile Vendor: $rpm_maintainer From bfd2bfbc1107619e5c014bfb01909d6b6d0464b6 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Mon, 9 Jun 2025 00:46:51 +0300 Subject: [PATCH 12/16] Update changelog for 2.402 --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 238299697..2542362b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ## Changelog +#### 2.402 (June 9, 2025) +* Update the Authentic theme to the latest version with various fixes and improvements + #### 2.401 (June 2, 2025) * Add forgotten password recovery support for Virtualmin mailbox users * Add forgotten password recovery support in Usermin From bae4af74907234e6a31d006f17ceff81196de9b7 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Wed, 11 Jun 2025 23:53:32 +0300 Subject: [PATCH 13/16] Fix not to depend on the path --- makemodulerpm.pl | 2 +- makerpm.pl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/makemodulerpm.pl b/makemodulerpm.pl index 6c94a1e54..7ee5fe9cd 100755 --- a/makemodulerpm.pl +++ b/makemodulerpm.pl @@ -378,7 +378,7 @@ Summary: $desc Name: $prefix$mod Version: $ver Release: $release -Requires: /bin/sh /usr/bin/perl /usr/libexec/$prog $rdeps +Requires: /bin/sh /usr/bin/perl $prog $rdeps EOF print $SPEC "Recommends: $rrecom\n" if ($rrecom); print $SPEC "Suggests: " . join(" ", @rsuggests) . "\n" if (@rsuggests); diff --git a/makerpm.pl b/makerpm.pl index 5e317dcf8..4ee4cf985 100755 --- a/makerpm.pl +++ b/makerpm.pl @@ -85,7 +85,7 @@ Summary: A web-based administration interface for Unix systems. Name: webmin Version: $ver Release: $rel -Provides: %{name}-%{version} perl(WebminCore) /usr/libexec/webmin +Provides: %{name}-%{version} perl(WebminCore) Requires(pre): /usr/bin/perl Requires: /bin/sh /usr/bin/perl perl(lib) perl(open) perl(Net::SSLeay) perl(Time::Local) perl(Data::Dumper) perl(File::Path) perl(File::Basename) perl(Digest::SHA) perl(Digest::MD5) openssl unzip tar gzip Recommends: perl(DateTime) perl(DateTime::TimeZone) perl(DateTime::Locale) perl(Time::Piece) perl(Encode::Detect) perl(Time::HiRes) perl(Socket6) html2text shared-mime-info perl-File-Basename perl-File-Path perl-JSON-XS qrencode perl(DBI) perl(DBD::mysql) From 5462c3bbf8356ac7f261ba09bd696c5a34a47473 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Thu, 12 Jun 2025 01:52:48 +0300 Subject: [PATCH 14/16] Fix to use API to check for command --- bin/server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/server b/bin/server index 7b0a1f3d3..ff9108a35 100755 --- a/bin/server +++ b/bin/server @@ -64,7 +64,7 @@ sub run }; root($o->{'config'}, \&$conf_check); my $service = ($o->{'config'} =~ /usermin/ ? 'usermin' : 'webmin'); - my $systemctlcmd = `which systemctl`; + my $systemctlcmd = &has_command('systemctl'); $systemctlcmd =~ s/\s+$//; if ($o->{'cmd'} =~ /^(start|stop|restart|reload)$/) { my $rs = system("$o->{'config'}/$o->{'cmd'} $service"); From 06ce1379030a7711c70ecfd73cd454d4ee795696 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Thu, 12 Jun 2025 01:57:35 +0300 Subject: [PATCH 15/16] Fix to consider path separator as config init may never be run --- web-lib-funcs.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-lib-funcs.pl b/web-lib-funcs.pl index 4df2adc22..458e41d33 100755 --- a/web-lib-funcs.pl +++ b/web-lib-funcs.pl @@ -2126,7 +2126,7 @@ if ($_[0] =~ /^\// || $_[0] =~ /^[a-z]:[\\\/]/i) { else { # Check each directory in the path my %donedir; - foreach my $d (split($path_separator, $ENV{'PATH'})) { + foreach my $d (split($path_separator || ":", $ENV{'PATH'})) { next if ($donedir{$d}++); $d =~ s/$slash$// if ($d ne $slash); my $t = &translate_filename("$d/$_[0]"); From da9aa22fa730412e5dbda88d7a1914494e017289 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Thu, 12 Jun 2025 19:17:50 +0300 Subject: [PATCH 16/16] Fix not to rely on `which`, or the scriptlets will fail on EL 10 systems --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index d04205756..e14562219 100755 --- a/setup.sh +++ b/setup.sh @@ -662,7 +662,7 @@ if [ ! -f "$config_dir/.pre-install" ]; then fi # Test if we have systemd system -systemctlcmd=$(which systemctl 2>/dev/null) +systemctlcmd=$(command -v systemctl 2>/dev/null || :) if [ -x "$systemctlcmd" ]; then initsys=$(cat /proc/1/comm 2>/dev/null) if [ "$initsys" != "systemd" ]; then