mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 06:03:28 +00:00
Merge branch 'master' of github.com:webmin/webmin
This commit is contained in:
@@ -7,13 +7,13 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-latest
|
||||
if: contains(github.event.head_commit.message, '[build]')
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: awalsh128/cache-apt-pkgs-action@latest
|
||||
with:
|
||||
packages: git tar gzip openssl curl openssh-client rpm perl libjson-pp-perl libdigest-sha-perl liblist-moreutils-perl libencode-detect-perl
|
||||
packages: git tar gzip openssl curl openssh-client rpm perl libjson-pp-perl libdigest-sha-perl liblist-moreutils-perl libencode-detect-perl zstd
|
||||
version: 1.0
|
||||
- uses: szenius/set-timezone@v1.2
|
||||
with:
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
## Changelog
|
||||
|
||||
#### 2.202 (Upcoming)
|
||||
* Fix to set the WebSocket URL webprefix correctly
|
||||
#### 2.202 (July 31, 2024)
|
||||
* Add LDAP related fixes and improvements
|
||||
* Fix to automatically set the WebSocket URL webprefix correctly
|
||||
* Fix to name downloaded backup file nicely in Backup Configuration Files module [#2239](https://github.com/webmin/webmin/issues/2239)
|
||||
* Fix to optimize getting table index stats for large tables in MySQL/MariaDB module [pull#2234](https://github.com/webmin/webmin/pull/2234)
|
||||
* Fix duplication of _systemd_ actions and init scripts [#2227](https://github.com/webmin/webmin/issues/2227)
|
||||
* Fix BIND service name for Debian 12 and Ubuntu 24.04
|
||||
|
||||
#### 2.201 (July 24, 2024)
|
||||
* Fix real-time monitoring not updating graphs in the Dashboard [#2222](https://github.com/webmin/webmin/issues/2222)
|
||||
|
||||
50
bind8/config-Ubuntu-Linux-24.04-ALL
Normal file
50
bind8/config-Ubuntu-Linux-24.04-ALL
Normal file
@@ -0,0 +1,50 @@
|
||||
soa_style=1
|
||||
named_path=/usr/sbin/named
|
||||
named_conf=/etc/bind/named.conf
|
||||
show_list=1
|
||||
records_order=0
|
||||
max_zones=50
|
||||
rev_def=0
|
||||
support_aaaa=1
|
||||
allow_comments=0
|
||||
allow_wild=1
|
||||
allow_long=0
|
||||
master_ttl=1
|
||||
whois_cmd=whois
|
||||
short_names=0
|
||||
updserial_def=0
|
||||
updserial_on=1
|
||||
updserial_man=1
|
||||
ndc_cmd=ndc
|
||||
forwardzonefilename_format=ZONE.hosts
|
||||
reversezonefilename_format=ZONE.rev
|
||||
rev_must=0
|
||||
ipv6_mode=1
|
||||
allow_underscore=1
|
||||
by_view=0
|
||||
confirm_zone=1
|
||||
confirm_rec=0
|
||||
no_chroot=0
|
||||
relative_paths=0
|
||||
rndc_cmd=rndc
|
||||
pid_file=/var/run/named/named.pid
|
||||
zones_file=/etc/bind/named.conf.local
|
||||
master_dir=/var/lib/bind
|
||||
slave_dir=/var/lib/bind
|
||||
no_pid_chroot=0
|
||||
soa_start=0
|
||||
rndc_conf=/etc/bind/rndc.conf
|
||||
rndcconf_cmd=rndc-confgen
|
||||
largezones=0
|
||||
checkzone=named-checkzone
|
||||
keygen=dnssec-keygen
|
||||
signzone=dnssec-signzone
|
||||
checkconf=named-checkconf
|
||||
other_slaves=1
|
||||
force_random=0
|
||||
spf_record=0
|
||||
dnssec_info=1
|
||||
start_cmd=systemctl start named.service
|
||||
stop_cmd=systemctl stop named.service
|
||||
restart_cmd=systemctl reload named.service
|
||||
dnssec_period=21
|
||||
50
bind8/config-debian-linux-10.0-11.99
Normal file
50
bind8/config-debian-linux-10.0-11.99
Normal file
@@ -0,0 +1,50 @@
|
||||
soa_style=1
|
||||
named_path=/usr/sbin/named
|
||||
named_conf=/etc/bind/named.conf
|
||||
show_list=1
|
||||
records_order=0
|
||||
max_zones=50
|
||||
rev_def=0
|
||||
support_aaaa=1
|
||||
allow_comments=0
|
||||
allow_wild=1
|
||||
allow_long=0
|
||||
master_ttl=1
|
||||
whois_cmd=whois
|
||||
short_names=0
|
||||
updserial_def=0
|
||||
updserial_on=1
|
||||
updserial_man=1
|
||||
ndc_cmd=ndc
|
||||
forwardzonefilename_format=ZONE.hosts
|
||||
reversezonefilename_format=ZONE.rev
|
||||
rev_must=0
|
||||
ipv6_mode=1
|
||||
allow_underscore=1
|
||||
by_view=0
|
||||
confirm_zone=1
|
||||
confirm_rec=0
|
||||
no_chroot=0
|
||||
relative_paths=0
|
||||
rndc_cmd=rndc
|
||||
pid_file=/var/run/named/named.pid
|
||||
zones_file=/etc/bind/named.conf.local
|
||||
master_dir=/var/lib/bind
|
||||
slave_dir=/var/lib/bind
|
||||
no_pid_chroot=0
|
||||
soa_start=0
|
||||
rndc_conf=/etc/bind/rndc.conf
|
||||
rndcconf_cmd=rndc-confgen
|
||||
largezones=0
|
||||
checkzone=named-checkzone
|
||||
keygen=dnssec-keygen
|
||||
signzone=dnssec-signzone
|
||||
checkconf=named-checkconf
|
||||
other_slaves=1
|
||||
force_random=0
|
||||
spf_record=0
|
||||
dnssec_info=1
|
||||
start_cmd=systemctl start bind9.service
|
||||
stop_cmd=systemctl stop bind9.service
|
||||
restart_cmd=systemctl reload bind9.service
|
||||
dnssec_period=21
|
||||
50
bind8/config-debian-linux-12.0-ALL
Normal file
50
bind8/config-debian-linux-12.0-ALL
Normal file
@@ -0,0 +1,50 @@
|
||||
soa_style=1
|
||||
named_path=/usr/sbin/named
|
||||
named_conf=/etc/bind/named.conf
|
||||
show_list=1
|
||||
records_order=0
|
||||
max_zones=50
|
||||
rev_def=0
|
||||
support_aaaa=1
|
||||
allow_comments=0
|
||||
allow_wild=1
|
||||
allow_long=0
|
||||
master_ttl=1
|
||||
whois_cmd=whois
|
||||
short_names=0
|
||||
updserial_def=0
|
||||
updserial_on=1
|
||||
updserial_man=1
|
||||
ndc_cmd=ndc
|
||||
forwardzonefilename_format=ZONE.hosts
|
||||
reversezonefilename_format=ZONE.rev
|
||||
rev_must=0
|
||||
ipv6_mode=1
|
||||
allow_underscore=1
|
||||
by_view=0
|
||||
confirm_zone=1
|
||||
confirm_rec=0
|
||||
no_chroot=0
|
||||
relative_paths=0
|
||||
rndc_cmd=rndc
|
||||
pid_file=/var/run/named/named.pid
|
||||
zones_file=/etc/bind/named.conf.local
|
||||
master_dir=/var/lib/bind
|
||||
slave_dir=/var/lib/bind
|
||||
no_pid_chroot=0
|
||||
soa_start=0
|
||||
rndc_conf=/etc/bind/rndc.conf
|
||||
rndcconf_cmd=rndc-confgen
|
||||
largezones=0
|
||||
checkzone=named-checkzone
|
||||
keygen=dnssec-keygen
|
||||
signzone=dnssec-signzone
|
||||
checkconf=named-checkconf
|
||||
other_slaves=1
|
||||
force_random=0
|
||||
spf_record=0
|
||||
dnssec_info=1
|
||||
start_cmd=systemctl start named.service
|
||||
stop_cmd=systemctl stop named.service
|
||||
restart_cmd=systemctl reload named.service
|
||||
dnssec_period=21
|
||||
@@ -68,8 +68,28 @@ if (@keyrecs) {
|
||||
my $ds = &get_ds_record($zone);
|
||||
if ($ds) {
|
||||
print $text{'zonekey_ds'},"<br>\n";
|
||||
print &ui_textarea("ds", join("\n".$desc, split(/$desc/, $ds)), 2, 80, "off", 0,
|
||||
# Split DS records in string into a list
|
||||
my @ds = split(/\s(?=\S+\.\s+\d+\s+IN\s+DS\s+\d+\s+
|
||||
\d+\s+\d+\s+[0-9A-Fa-f]{16,})/x, $ds);
|
||||
print &ui_textarea("ds", join("\n", @ds), 2, 80, "off", 0,
|
||||
"readonly style='width:90%'"),"<br>\n";
|
||||
print &ui_columns_start([
|
||||
$text{'zonekey_ds_keytag'},
|
||||
$text{'zonekey_ds_alg'},
|
||||
$text{'zonekey_ds_type'},
|
||||
$text{'zonekey_ds_digest'},
|
||||
]);
|
||||
foreach my $r (@ds) {
|
||||
if ($r =~ /
|
||||
\bDS\s+(?<key_tag>\d+)\s+(?<algorithm>\d+)\s+
|
||||
(?<digest_type>\d+)\s+
|
||||
(?<digest>[0-9A-Fa-f]+)\b/x) {
|
||||
print &ui_columns_row([
|
||||
$+{key_tag}, $+{algorithm},
|
||||
$+{digest_type}, $+{digest}]);
|
||||
}
|
||||
}
|
||||
print &ui_columns_end();
|
||||
}
|
||||
|
||||
# Offer to disable
|
||||
|
||||
@@ -1282,6 +1282,10 @@ zonekey_private=Private key details :
|
||||
zonekey_privatefile=Private key file : $1
|
||||
zonekey_algorithm=DNSSEC algorithm : $1
|
||||
zonekey_ds=DS record for parent zone :
|
||||
zonekey_ds_keytag=Key tag
|
||||
zonekey_ds_alg=Algorithm
|
||||
zonekey_ds_type=Digest type
|
||||
zonekey_ds_digest=Digest string
|
||||
zonekey_expandksk=Show public and private key-signing-key details ..
|
||||
zonekey_expandzone=Show public and private zone-key details ..
|
||||
zonekey_noprivate=However, Webmin could not find the private key associated with the zone, and so will not be able to re-sign it.
|
||||
|
||||
@@ -26,9 +26,13 @@ if (@{$d->{'data'}}) {
|
||||
$i++;
|
||||
next if ($access{'perms'} == 2 && !&can_edit_db($u->[1]));
|
||||
local @cols;
|
||||
my $dbname = &unquote_mysql_database($u->[1]);
|
||||
my $big_style = ' style="position: absolute; margin-top: -2px;"';
|
||||
my $wildcard = $u->[1]=~ /\_/ &&
|
||||
$u->[1] eq $dbname ? "<big$big_style>∗</big>" : '';
|
||||
push(@cols, "<a href='edit_db.cgi?idx=$i'>".
|
||||
($u->[1] eq '%' || $u->[1] eq '' ? $text{'dbs_any'}
|
||||
: &html_escape($u->[1]))."</a>");
|
||||
($u->[1] eq '%' || $u->[1] eq '' ? $text{'dbs_any'} :
|
||||
&html_escape($dbname))." $wildcard</a>");
|
||||
push(@cols, $u->[2] eq '' ? $text{'dbs_anon'}
|
||||
: &html_escape($u->[2]));
|
||||
push(@cols, $u->[0] eq '%' ? $text{'dbs_any'} :
|
||||
|
||||
@@ -675,6 +675,15 @@ $db =~ s/%/\\%/g;
|
||||
return $db;
|
||||
}
|
||||
|
||||
# unquote_mysql_database(name)
|
||||
# Returns a MySQL database name with \% and \_ characters unescaped
|
||||
sub unquote_mysql_database {
|
||||
my ($db) = @_;
|
||||
$db =~ s/\\%/%/g;
|
||||
$db =~ s/\\_/_/g;
|
||||
return $db;
|
||||
}
|
||||
|
||||
# escapestr(string)
|
||||
# Returns a string with quotes escaped, for use in SQL
|
||||
sub escapestr
|
||||
|
||||
@@ -173,7 +173,20 @@ return ( ) if ($?);
|
||||
my @lines = split(/\r?\n/, $out);
|
||||
my @w = split(/\s+/, $lines[$#lines]);
|
||||
shift(@w) if ($w[0] eq '');
|
||||
return ( $w[-3], $w[-2], $w[-1], 0, 0, undef, undef );
|
||||
my ($bi, $bo) = (0, 0);
|
||||
my $out2 = &backquote_command("iostat -Ix -d -t da 0.25 2 2>/dev/null");
|
||||
if (!$?) {
|
||||
foreach my $l (split(/\r?\n/, $out2)) {
|
||||
# Getting the 4th and 5th columns of the last line for direct access device
|
||||
# device r/i w/i kr/i kw/i qlen tsvc_t/i sb/i
|
||||
# ada0 3457.0 134574.0 61068.0 8443152.0 0 36.3 19.2
|
||||
if ($l =~ /^.*?da\d+\s+\S+\s+\S+\s+(\S+)\s+(\S+)\s+\d/) {
|
||||
$bi = int($1) * 4; # kr/i per period, i.e. 0.25 seconds
|
||||
$bo = int($2) * 4; # kw/i per period, i.e. 0.25 seconds
|
||||
}
|
||||
}
|
||||
}
|
||||
return ( $w[-3], $w[-2], $w[-1], 0, 0, $bi, $bo );
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -710,5 +710,29 @@ else {
|
||||
}
|
||||
}
|
||||
|
||||
# count_processes()
|
||||
sub count_processes
|
||||
{
|
||||
my $process_count = 0;
|
||||
if ($gconfig{'os_type'} eq 'windows') {
|
||||
open(my $ps, '-|', 'tasklist /FO CSV') || return -1;
|
||||
while (my $line = <$ps>) {
|
||||
next if $. == 1; # Skip the header line
|
||||
$process_count++;
|
||||
}
|
||||
close($ps);
|
||||
return $process_count;
|
||||
}
|
||||
else {
|
||||
open(my $ps, '-|', 'ps -e') || return -1;
|
||||
while (<$ps>) {
|
||||
$process_count++;
|
||||
}
|
||||
close($ps);
|
||||
# Skip the header line
|
||||
return $process_count - 1;
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
@@ -1690,7 +1690,7 @@ if (!$tconfig{'nohr'} && !$tconfig{'nobottomhr'}) {
|
||||
return $rv;
|
||||
}
|
||||
|
||||
=head2 ui_print_header(subtext, image, [help], [config], [nomodule], [nowebmin], [rightside], [head-stuff], [body-stuff], [below])
|
||||
=head2 ui_print_header(subtext, title, image, [help], [config], [nomodule], [nowebmin], [rightside], [head-stuff], [body-stuff], [below])
|
||||
|
||||
Print HTML for a header with the post-header line. The args are the same
|
||||
as those passed to header(), defined in web-lib-funcs.pl, with the addition
|
||||
|
||||
Reference in New Issue
Block a user