Compare commits

...

18 Commits
2.500 ... 2.510

Author SHA1 Message Date
Ilia Ross
f7058f10b4 2.510 2025-09-16 20:11:26 +03:00
Jamie Cameron
a4df380e2e new version bump 2025-09-16 09:19:34 -07:00
Jamie Cameron
70d1c843fc Merge branch 'master' of github.com:webmin/webmin 2025-09-15 15:37:13 -07:00
Jamie Cameron
1b38d806fc Make sure re-signing period is less than 30 days
https://github.com/webmin/webmin/issues/2550
2025-09-15 15:37:06 -07:00
Ilia Ross
f8d7e8810a Fix new line
*Note: For devel purposes. I expect a separate package "webmin-custom" rebuilt.
2025-09-12 15:17:08 +03:00
Jamie Cameron
43d5355114 201 is a valid OK resoonse code 2025-09-11 18:07:46 -07:00
Jamie Cameron
87d39127ef Put back english
https://github.com/webmin/webmin/issues/2547
2025-09-10 21:13:55 -07:00
Jamie Cameron
825d54adc4 Small version bump 2025-09-07 20:51:21 -07:00
Jamie Cameron
cbaff19725 Add option, disabled by default, to allow use of ALIAS records
https://github.com/webmin/webmin/issues/2095
2025-09-06 10:33:51 -07:00
Jamie Cameron
ece2ff6a1e Merge branch 'master' of github.com:webmin/webmin 2025-09-06 10:09:52 -07:00
Jamie Cameron
6b71562abf Auto-select the correct mode when uploading a new cert 2025-09-06 10:08:02 -07:00
Ilia Ross
a73210adc9 Fix to show FAN even if RPM is zero 2025-09-06 18:51:36 +03:00
Ilia Ross
c6d9d0338f Update changelog 2025-09-06 16:47:35 +03:00
Ilia Ross
5066534a40 Add Squid 7 support
https://forum.virtualmin.com/t/squid-version-7-1-not-support-in-webmin-any-solution-please/134609?u=ilia
2025-09-06 16:46:29 +03:00
Ilia Ross
84a417bd6e Update links and name 2025-09-06 13:25:53 +03:00
Ilia Ross
90c31af379 Update changelog for upcoming 2.501 2025-09-06 00:52:11 +03:00
Ilia Ross
1453508592 Add support for Raspberry Pi sensors #2539 #2517 2025-09-06 00:44:10 +03:00
Ilia Ross
35455f04e6 Fix comment 2025-09-05 18:16:16 +03:00
84 changed files with 262 additions and 34 deletions

View File

@@ -1,15 +1,34 @@
## Changelog
#### 2.510 (September 16, 2025)
* Fix to ensure DNSSEC re-signing period is less than 30 days in the BIND DNS module
* Fix to treat 201 as a valid response code in the internal download function
* Update the Authentic theme to the latest version with various improvements and fixes:
- Add optimizations to dashboard graphs with dynamic trimming to prevent page lagging
- Add improvements to how the system cache for the dashboard is updated
- Add support to correctly reload the page in proxy mode
- Add an option to choose if default page should always load when switching navigation
- Fix to ensure the color palette is preserved for the user [webmin#2537](https://github.com/webmin/webmin/issues/2537)
- Fix algorithm for calculating rows per page in data table pagination
- Fix the alert info box text color for dark mode
- Fix critical lags and appearance of Custom Commands module
#### 2.501 (September 10, 2025)
* Add support for Raspberry Pi sensors #2539 #2517
* Add Squid 7 support
* Update the Authentic theme to the latest version with the following fixes:
- Fix broken editor in "Bootup and Shutdown" module
#### 2.500 (September 4, 2025)
* Add support for the Webmin webserver to work in both HTTP and HTTPS modes at the same time
* Add distinct warning to the login page if the connection is not secure
* Add support for timeouts in temporary rules in FirewallD module
* Add support for timeouts in temporary rules in "FirewallD" module
* Add support for the new Dovecot version 2.4
* Add support for MariaDB version 12 #2522
* Add support for IMAP through a local command for Usermin
* Add latest SSLeay support for redirects to SSL work
* Add improvements to "Bootup and Shutdown" module for _systemd_ systems
* Add field for secondary server key in BIND module
* Add field for secondary server key in "BIND DNS Server" module
* Add reversible encryption helpers API
* Add API to display relative dates
* Add API to mask sensitive text, like displayed passwords, unless hovered over
@@ -21,7 +40,7 @@
* Change "Last Logins" on the dashboard to show usernames, relative dates, and all users from the past 3 days
* Change to always enable HSTS by default
* Fix MySQL/MariaDB to remove obsolete `set-variable` options that break modern config files #2497
* Fix download link in table rows in MySQL/MariaDB module
* Fix download link in table rows in "MySQL/MariaDB Database Server" module
* Fix module not to fail on old MySQL 5.5
* Update the Authentic theme to the latest version with various improvements and fixes:
- Add support to automatically set the color palette based on OS or browser preferences

View File

@@ -44,7 +44,7 @@ Webmin 可以两种方法安装:
### 贡献者
* [Joe Cooper](https://github.com/swelljoe)
* [Ilia Rostovtsev](https://github.com/iliajie)
* [Ilia Rostovtsev](https://github.com/iliaross)
* [Kay Marquardt](https://github.com/gnadelwartz)
* [Nawawi Jamili](https://github.com/nawawi) + [其他无偿奉献的开发者](https://github.com/webmin/webmin/graphs/contributors)

View File

@@ -48,13 +48,13 @@ For detailed installation instructions check our guide on [webmin.com/download](
* [Jamie Cameron](https://www.webmin.com/about.html) [![](https://github.com/webmin-devel/webmin/blob/master/media/linkedin-15x15.png?raw=true)](https://www.linkedin.com/in/jamiecameron2)
### Developers
* [Ilia Rostovtsev](https://github.com/iliajie)
* [Ilia Rostovtsev](https://github.com/iliaross)
* [Joe Cooper](https://github.com/swelljoe)
### Contributors
* [Kay Marquardt](https://github.com/gnadelwartz)
* [Nawawi Jamili](https://github.com/nawawi)
* [unknown10777](https://github.com/unknown10777) + [90 more..](https://github.com/webmin/webmin/graphs/contributors)
* [unknown10777](https://github.com/unknown10777) + [90 more...](https://github.com/webmin/webmin/graphs/contributors)
## License

View File

@@ -116,4 +116,4 @@ Name of the user to disable two-factor authentication for.
Copyright 2018 Jamie Cameron <jcameron@webmin.com>
Joe Cooper <joe@virtualmin.com>
Ilia Rostovtsev <ilia@virtualmin.com>
Ilia Ross <ilia@virtualmin.com>

View File

@@ -260,5 +260,5 @@ Set new user password. Using this option may be unsecure.
Copyright 2018 Jamie Cameron <jcameron@webmin.com>
Joe Cooper <joe@virtualmin.com>
Ilia Rostovtsev <ilia@virtualmin.com>
Ilia Ross <ilia@virtualmin.com>

View File

@@ -174,5 +174,5 @@ sub root
Copyright 2018 Jamie Cameron <jcameron@webmin.com>
Joe Cooper <joe@virtualmin.com>
Ilia Rostovtsev <ilia@virtualmin.com>
Ilia Ross <ilia@virtualmin.com>

View File

@@ -457,5 +457,5 @@ Returns Webmin and other modules and themes versions installed (only those for w
Copyright 2018 Jamie Cameron <jcameron@webmin.com>
Joe Cooper <joe@virtualmin.com>
Ilia Rostovtsev <ilia@virtualmin.com>
Ilia Ross <ilia@virtualmin.com>

View File

@@ -1135,6 +1135,10 @@ elsif ($type eq "CNAME") {
print &ui_table_row($text{'value_CNAME1'},
&ui_textbox("value0", $v[0], 30)." ($text{'edit_cnamemsg'})", 3);
}
elsif ($type eq "ALIAS") {
print &ui_table_row($text{'value_ALIAS1'},
&ui_textbox("value0", $v[0], 30)." ($text{'edit_cnamemsg'})", 3);
}
elsif ($type eq "MX") {
print &ui_table_row($text{'value_MX2'},
&ui_textbox("value1", $v[1], 30));
@@ -3117,7 +3121,11 @@ $slave_error = $_[0];
sub get_forward_record_types
{
return ("A", "NS", "CNAME", "MX", "HINFO", "TXT", "SPF", "DMARC", "WKS", "RP", "PTR", "LOC", "SRV", "KEY", "TLSA", "SSHFP", "CAA", "NAPTR", "NSEC3PARAM", $config{'support_aaaa'} ? ( "AAAA" ) : ( ), @extra_forward);
return ("A", "NS", "CNAME",
$config{'allow_alias'} ? ( "ALIAS" ) : ( ),
"MX", "HINFO", "TXT", "SPF", "DMARC", "WKS", "RP", "PTR", "LOC",
"SRV", "KEY", "TLSA", "SSHFP", "CAA", "NAPTR", "NSEC3PARAM",
$config{'support_aaaa'} ? ( "AAAA" ) : ( ), @extra_forward);
}
sub get_reverse_record_types

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -52,3 +52,4 @@ spf_record=0
dnssec_info=1
chroot=
auto_chroot=
allow_alias=0

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -50,3 +50,4 @@ tmpl_dnssec_dt=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -47,3 +47,4 @@ restart_cmd=service named restart
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -48,3 +48,4 @@ start_cmd=systemctl start bind9.service
stop_cmd=systemctl stop bind9.service
restart_cmd=systemctl reload bind9.service
dnssec_period=21
allow_alias=0

View File

@@ -48,3 +48,4 @@ start_cmd=systemctl start named.service
stop_cmd=systemctl stop named.service
restart_cmd=systemctl reload named.service
dnssec_period=21
allow_alias=0

View File

@@ -38,3 +38,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -44,3 +44,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -48,3 +48,4 @@ start_cmd=systemctl start bind9.service
stop_cmd=systemctl stop bind9.service
restart_cmd=systemctl reload bind9.service
dnssec_period=21
allow_alias=0

View File

@@ -48,3 +48,4 @@ start_cmd=systemctl start named.service
stop_cmd=systemctl stop named.service
restart_cmd=systemctl reload named.service
dnssec_period=21
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -43,3 +43,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -44,3 +44,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ force_random=0
spf_record=0
pid_file=/var/run/named/pid
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ force_random=0
spf_record=0
pid_file=/var/run/named/pid
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -43,3 +43,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ pid_file=/var/run/named/named.pid /private/var/run/named/named.pid
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -43,3 +43,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -43,3 +43,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -42,3 +42,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -42,3 +42,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -48,3 +48,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -42,3 +42,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -45,3 +45,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -52,3 +52,4 @@ spf_record=0
dnssec_info=1
chroot=
auto_chroot=
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -43,3 +43,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -45,3 +45,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -46,3 +46,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -48,3 +48,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -35,3 +35,4 @@ other_slaves=1
updserial_man=1
master_ttl=1
dnssec_info=1
allow_alias=0

View File

@@ -47,3 +47,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -47,3 +47,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -47,3 +47,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -43,3 +43,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -58,3 +58,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -19,6 +19,7 @@ support_aaaa=Support DNS for IPv6 addresses,1,1-Yes,0-No
allow_comments=Allow comments for records,1,1-Yes,0-No
allow_wild=Allow wildcards?,1,1-Yes,0-No
allow_underscore=Allow underscores in record names?,1,1-Yes,0-No
allow_alias=Allow ALIAS records?,1,1-Yes,0-No
short_names=Convert record names to canonical form?,1,0-Yes,1-No
extra_forward=Extra record types for forward zones,0
extra_reverse=Extra record types for reverse zones,0

View File

@@ -398,6 +398,7 @@ type_A=Address
type_AAAA=IPv6 Address
type_NS=Name Server
type_CNAME=Name Alias
type_ALIAS=Address Alias
type_MX=Mail Server
type_HINFO=Host Information
type_NSEC3PARAM=DNSSEC Parameters
@@ -420,6 +421,7 @@ edit_A=Address
edit_AAAA=IPv6 Address
edit_NS=Name Server
edit_CNAME=Name Alias
edit_ALIAS=Address Alias
edit_MX=Mail Server
edit_HINFO=Host Information
edit_TXT=Text
@@ -442,6 +444,7 @@ recs_A=Address
recs_AAAA=IPv6 Address
recs_NS=Name Server
recs_CNAME=Name Alias
recs_ALIAS=Address Alias
recs_MX=Mail Server
recs_HINFO=Host Information
recs_TXT=Text
@@ -465,6 +468,7 @@ value_A1=Address
value_AAAA1=IPv6 Address
value_NS1=Name Server
value_CNAME1=Real Name
value_ALIAS1=Copy Address From
value_MX1=Priority
value_MX2=Mail Server
value_HINFO1=Hardware
@@ -1203,6 +1207,7 @@ dnssec_secs=seconds
dnssec_desc=Zones signed with DNSSEC typically have two keys - a zone key which must be re-generated and signed regularly, and a key signing key which remains constant. This page allows you to configure Webmin to perform this re-signing automatically.
dnssec_err=Failed to save DNSSEC key re-signing
dnssec_eperiod=Missing or invalid number of days between re-signs
dnssec_eperiod30=Number of days between re-signs must be less than 30
dnssectools_title=DNSSEC-Tools Automation
dt_conf_title=DNSSEC-Tools Automation

View File

@@ -16,6 +16,7 @@ require './bind8-lib.pl';
$access{'defaults'} || &error($text{'dnssec_ecannot'});
$in{'period'} =~ /^[1-9]\d*$/ || &error($text{'dnssec_eperiod'});
$in{'period'} < 30 || &error($text{'dnssec_eperiod30'});
# Create or delete the cron job
my $job = &get_dnssec_cron_job();

View File

@@ -48,8 +48,10 @@ $in{'dt_zsklife'} =~ /(\b[0-9]+\b)/ ||
&error($text{'dt_conf_ezsklife'});
$nv{'zsklife'} = $1;
&save_dnssectools_directive($conf, \%nv);
$in{'period'} =~ /^[1-9]\d*$/ || &error($text{'dnssec_eperiod'});
$in{'period'} < 30 || &error($text{'dnssec_eperiod30'});
&save_dnssectools_directive($conf, \%nv);
&lock_file($module_config_file);
$config{'dnssec_period'} = $in{'period'};

View File

@@ -216,6 +216,13 @@ else {
$vals .= ".";
}
}
elsif ($in{'type'} eq "ALIAS") {
&valname($vals) ||
&error(&text('edit_ecname', $vals));
if ($vals =~ /\.\Q$in{'origin'}\E$/) {
$vals .= ".";
}
}
elsif ($in{'type'} eq "MX") {
&valname($in{'value1'}) ||
&error(&text('edit_emx', $in{'value1'}));

View File

@@ -1 +1,59 @@
Jedes Kommando hat eine Beschreibung, die auf der Schaltfläche auf der Hauptseite angezeigt wird, sowie ein auszuführendes Kommando. Kommandos werden von <tt>sh</tt> ausgeführt und können daher Shell-Metazeichen wie <tt>|</tt>, <tt>&gt;</tt> und <tt>&amp;</tt> enthalten. Ebenso können Parameter wie <tt>$foo</tt> verwendet werden, die vor der Ausführung vom/von der Benutzer abgefragt werden.<p>Diese Parameter können in die untenstehende Tabelle eingetragen werden. Für jeden Parameter müssen folgende Angaben gemacht werden:<dl><dt><b>Name</b><dd>Ein eindeutiger Code für den Parameter. Wenn der Name <tt>foo</tt> lautet, wird <tt>$foo</tt> durch diese Eingabe ersetzt, wenn das Kommando ausgeführt wird.<p><dt><b>Beschreibung</b><dd>Diese Beschreibung wird neben den Parametern auf der Hauptseite angezeigt.<p><dt><b>Typ</b><dd>Diese Option bestimmt, wie der Parameter eingegeben wird. Mögliche Optionen sind:<ul><li><b>Text</b><br>Freie Texteingabe<li><b>Benutzer</b><br>Ein:e Benutzer Ihres Systems<li><b>UID</b><br>Die Benutzer-ID eines/einer Benutzer Ihres Systems<li><b>Gruppe</b><br>Ein Gruppenname Ihres Systems<li><b>GID</b><br>Die Gruppen-ID einer Gruppe Ihres Systems<li><b>Datei</b><br>Der vollständige Pfad zu einer Datei<li><b>Verzeichnis</b><br>Der vollständige Pfad zu einem Verzeichnis<li><b>Option</b><br>Eine Ja/Nein-Eingabe, die den Parameter auf den Wert setzt, der im Feld daneben eingetragen ist aber nur, wenn <tt>JA</tt> ausgewählt wurde.<li><b>Passwort</b><br>Eine vollständig freie Texteingabe, wobei die Eingabe als „<tt>*</tt>“ maskiert wird.<li><b>Menü</b><br>Ein Dropdown-Menü mit Optionen, die aus der Datei entnommen werden, die im Feld daneben angegeben ist.</ul><p><dt><b>Parameter zitieren?</b><dd>Wenn <tt>Ja</tt> ausgewählt ist, werden die Parameter vor der Ausführung in Anführungszeichen (<tt>"</tt>) gesetzt. Dies ermöglicht die Verwendung von Parametern mit Leerzeichen.<p></dl><hr>
Each command has a description (displayed on the button on the main page),
and an actual command to execute. This command string can contain shell
operators like |, &gt; and ; for executing multiple commands and pipelines.
The string can also contain parameters like <tt>$foo</tt>, which are replaced
by user inputs when the command is run. <p>
These parameters can be entered into the table at the bottom of the page.
For each parameter you must enter :
<dl>
<dt><b>Name</b>
<dd>A unique code for this parameter. If the name is <tt>foo</tt>, then
<tt>$foo</tt> will be replaced by the parameter value when the command
is executed.<p>
<dt><b>Description</b>
<dd>The description next to this parameter on the main page.<p>
<dt><b>Type</b>
<dd>This option controls how the parameter is input. Available options are :
<ul>
<li><b>Text</b><br>
A totally free-text input.
<li><b>User</b><br>
A username from your system.
<li><b>UID</b><br>
The UID of a user from your system.
<li><b>Group</b><br>
A group name from your system.
<li><b>GID</b><br>
The GID of a group from your system.
<li><b>File</b><br>
The full path to a file.
<li><b>Directory</b><br>
The full path to a directory.
<li><b>Option</b><br>
A Yes/No input that will set the parameter to whatever is in
the field next to the type input only if Yes is chosen.
<li><b>Password</b><br>
A totally free-text input, but with the password replaced by *'s.
<li><b>Menu</b><br>
A drop-down menu of options, taken from the filename entered into
the text field to it. Or, instead of a filename you can enter a
command with an | at the end, whose output will be used to determine
the available options.
<li><b>Upload</b><br>
An input box for selecting a file on the client side, which will be
uploaded to the server when the command is run. This will be be
placed in a temporary file, and the path to that file will be the
value of this parameter when the command is run.
<li><b>Textbox</b><br>
A multi-line free text field. When the command is run, any newline
characters in the entered text will be converted into spaces.
</ul><p>
In most cases, the default value for the parameter will be whatever you
enter in the text box next to the parameter type menu.
<dt><b>Quote parameter?</b>
<dd>If Yes, the parameter will be quoted with " before substitution, allowing
the user to enter values containing whitespaces.<p>
</dl>
<hr>

View File

@@ -501,6 +501,13 @@ my @fans;
my @fans_all;
my @cpu_thermisters;
my $cpu_broadcoms;
my @sensors;
my $ceil = sub {
my $x = shift;
$x //= 0;
my $i = int($x);
return $i + ($x > $i);
};
if (&has_command("sensors")) {
my ($cpu, $cpu_aux, $cpu_unnamed, $cpu_package, $cpu_broadcom, $cpu_amd);
my $fh = "SENSORS";
@@ -510,9 +517,10 @@ if (&has_command("sensors")) {
&open_execute_command($fh, "sensors </dev/null 2>/dev/null", 1);
while (<$fh>) {
# Buffer output for later use
push(@sensors, $_);
# CPU full output must have either voltage or fan data
my ($cpu_volt) = $_ =~ /(?|in[\d+]\s*:\s+([\+\-0-9\.]+)\s+V|cpu\s+core\s+voltage\s*:\s+([0-9\.]+)\s+V)/i;
my ($cpu_volt) = $_ =~ /(?|in\d+\s*:\s+([\+\-0-9\.]+)\s+V|cpu\s+core\s+voltage\s*:\s+([0-9\.]+)\s+V)/i;
# CPU fans should be always labeled as 'cpu fan' or 'cpu_fan' or 'cpufan'
# and/or 'cpu fan 1', 'cpu_fan1', 'cpufan1', 'cpu_fan 2', 'cpu_fan2',
# 'cpufan2' etc.
@@ -535,7 +543,7 @@ if (&has_command("sensors")) {
# AMD CPU Thermisters #1714
if ($cpu && /thermistor\s+[\d]+:\s+[+-]([\d]+)/i) {
my $temp = int($1);
my $temp = $ceil->($1);
push(@cpu_thermisters,
{ 'core' => scalar(@cpu_thermisters) + 1,
'temp' => $temp
@@ -552,13 +560,13 @@ if (&has_command("sensors")) {
# Common CPU multi
if (/Core\s+(\d+):\s+([\+\-][0-9\.]+)/) {
# Prioritise package core temperature
# Prioritize package core temperature
# data over motherboard but keep fans
@cpu = (), $cpu_aux++
if ($cpu_aux & 1 && grep { $_->{'core'} eq $1 } @cpu);
push(@cpu,
{ 'core' => $1,
'temp' => int($2)
'temp' => $ceil->($2)
});
}
@@ -566,7 +574,7 @@ if (&has_command("sensors")) {
elsif (/CPU:\s+([\+\-][0-9\.]+)/) {
push(@cpu,
{ 'core' => 0,
'temp' => int($1)
'temp' => $ceil->($1)
});
}
}
@@ -588,7 +596,7 @@ if (&has_command("sensors")) {
if (/temp(\d+):\s+([\+][0-9\.]+).*?[Cc]\s+.*?[=+].*?\)/) {
push(@cpu,
{ 'core' => (int($1) - 1),
'temp' => int($2)
'temp' => $ceil->($2)
});
}
@@ -597,7 +605,7 @@ if (&has_command("sensors")) {
/(cpu\s+temperature)\s*:\s+([\+][0-9\.]+).*?[Cc]/i) {
push(@cpu,
{ 'core' => 0,
'temp' => int($2)
'temp' => $ceil->($2)
});
}
}
@@ -606,8 +614,8 @@ if (&has_command("sensors")) {
elsif ($cpu_broadcom) {
if (/temp(\d+):\s+([\+\-][0-9\.]+)/) {
push(@cpu,
{ 'core' => $1,
'temp' => int($2)
{ 'core' => int($1),
'temp' => $ceil->($2)
});
$cpu_broadcoms++;
}
@@ -615,7 +623,7 @@ if (&has_command("sensors")) {
$cpu_unnamed++;
push(@cpu,
{ 'core' => $cpu_unnamed,
'temp' => int($2)
'temp' => $ceil->($2)
});
$cpu_broadcoms++;
}
@@ -628,15 +636,15 @@ if (&has_command("sensors")) {
if (/Tdie:\s+([\+\-][0-9\.]+)/) {
push(@cpu,
{ 'core' => 0,
'temp' => int($1),
'temp' => $ceil->($1),
});
}
# Like in #1481 #1484
elsif (/temp(\d+):\s+([\+\-][0-9\.]+).*?[Cc]\s+.*?[=+].*?\)/) {
push(@cpu,
{ 'core' => (int($1) - 1),
'temp' => int($2),
{ 'core' => ($ceil->($1) - 1),
'temp' => $ceil->($2),
});
}
@@ -644,7 +652,7 @@ if (&has_command("sensors")) {
elsif (/Tctl:\s*([\+\-][0-9\.]+)/) {
push(@cpu,
{ 'core' => 0,
'temp' => int($1),
'temp' => $ceil->($1),
});
}
}
@@ -690,6 +698,58 @@ if (!@fans && @cpu && @fans_all &&
}
}
}
# Fall back logic for CPU temperature and fans spread over multiple
# devices like Raspberry Pi #2517 and #2539
if (@cpu || !@fans) {
# - Look for least two ISA voltage rails anywhere
# - See a CPU temp under cpu_thermal
# - Optionally grab a fan RPM under pwmfan-isa-*
my $can_fallback =
(!@cpu && (grep { /^\s*cpu_thermal/i } @sensors)) ||
(@cpu && !@fans && (grep { /^\s*pwmfan-isa-/i } @sensors));
return (\@cpu, \@fans) if (!$can_fallback);
my ($chip, $bus); # isa|pci|platform|virtual
my $isa_volt;
my ($cpu_temp, $fan_rpm);
for (@sensors) {
# Chip header
if (/^([A-Za-z0-9_+\-]+)-(isa|pci|platform|virtual)-[\w:]+\s*$/) {
$chip = lc $1;
$bus = lc $2;
next;
}
# Count real voltage rails
if (defined $bus && $bus eq 'isa' &&
/\bin\d+\s*:\s*([+\-]?[0-9]+(?:\.[0-9]+)?)\s*V\b/i) {
$isa_volt++;
next;
}
# CPU temperature
if (defined $chip && $chip =~ /^cpu_thermal/i &&
/\b(?:CPU(?:\s*Temp)?|temp\d+)\s*:\s*([+\-]?[0-9]+(?:\.[0-9]+)?)\s*°?C\b/i) {
$cpu_temp //= $1;
next;
}
# Fan RPM
if (defined $chip && $chip =~ /^pwmfan/i &&
/\b(?:cpu[_ ]?fan(?:\s*\d+)?|fan\d+)\s*:\s*(\d+)\s*rpm\b/i) {
my $rpm = $1 + 0;
$fan_rpm = $rpm if (!$fan_rpm || $rpm > $fan_rpm);
next;
}
}
# Update only what's missing
push(@cpu, { 'core' => 1, 'temp' => $ceil->($cpu_temp) })
if (!@cpu && defined $cpu_temp && $isa_volt >= 2);
push(@fans, { 'fan' => 1, 'rpm' => $fan_rpm })
if (!@fans && defined $fan_rpm);
}
return (\@cpu, \@fans);
}

View File

@@ -45,10 +45,10 @@ if ($ver =~ /version\s+(\S+)/i) {
$ver = $1;
}
my $squid_version;
if ($ver =~ /Version\s+([2-6]\.[0-9]+)/ ||
if ($ver =~ /Version\s+([2-7]\.[0-9]+)/ ||
$ver =~ /^(1\.1)\.\d+/ ||
$ver =~ /^(1)\.NOVM/ ||
$ver =~ /^([2-6]\.[0-9]+)/) {
$ver =~ /^([2-7]\.[0-9]+)/) {
# Save version number
open(VERSION, ">$module_config_directory/version");
print VERSION $1,"\n";

View File

@@ -1 +1 @@
2.500
2.510

View File

@@ -3090,7 +3090,7 @@ local ($line, %header, @headers, $s);
$timeout = 60 if (!defined($timeout));
alarm($timeout) if ($timeout);
($line = &read_http_connection($h)) =~ tr/\r\n//d;
if ($line !~ /^HTTP\/1\..\s+(200|30[0-9]|400)(\s+|$)/) {
if ($line !~ /^HTTP\/1\..\s+(20[0-9]|30[0-9]|400)(\s+|$)/) {
$line ||= "Failed to read HTTP response line";
alarm(0) if ($timeout);
&close_http_connection($h);

View File

@@ -242,7 +242,8 @@ print ui_table_row($text{'ssl_privcert'},
[ 0, $text{'ssl_below'} ] ])."<br>\n".
ui_textarea("cert", undef, 7, 70)."<br>\n".
"<b>$text{'ssl_upload'}</b>\n".
ui_upload("certfile"));
ui_upload("certfile", undef, undef,
"onChange='form.cert_def.value = 0'"));
print ui_table_row($text{'ssl_privchain'},
ui_radio("chain_def", 1,
@@ -251,7 +252,8 @@ print ui_table_row($text{'ssl_privchain'},
[ 0, $text{'ssl_below'} ] ])."<br>\n".
ui_textarea("chain", undef, 7, 70)."<br>\n".
"<b>$text{'ssl_upload'}</b>\n".
ui_upload("chainfile"));
ui_upload("chainfile", undef, undef,
"onChange='form.chain_def.value = 0'"));
print ui_table_end();
print ui_form_end([ [ "save", $text{'save'} ] ]);