mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 14:13:29 +00:00
Merge branch 'master' of github.com:webmin/webmin
This commit is contained in:
43
CHANGELOG.md
43
CHANGELOG.md
@@ -1,12 +1,43 @@
|
||||
## Changelog
|
||||
|
||||
#### 2.403 (June 30, 2025)
|
||||
#### 2.500 (September, 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 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 reversible encryption helpers API
|
||||
* Add API to display relative dates
|
||||
* Add API to mask sensitive text, like displayed passwords, unless hovered over
|
||||
* Add status monitor for PHP FPM #2499
|
||||
* Add support for DNF5 format in the "Software Packages" module
|
||||
* Add support for redirecting to the enforced domain when the `musthost_redirect` directive is set
|
||||
* Add a UI API to mask sensitive text—like displayed passwords, unless hovered over container
|
||||
* Add option to customize the SMTP login for scheduled background monitoring in the "System and Server Status" module
|
||||
* Change to show relative dates in "Webmin Users: Current Login Sessions" and "Webmin Actions Log: Search Results" pages
|
||||
* 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 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
|
||||
- Add improvements to tooltips in dark palette
|
||||
- Change the default shortcut key for toggling the light/dark palette
|
||||
- Change the default shortcut key for toggling right slider
|
||||
- Change wording to use "shortcut" instead of "hotkey"
|
||||
- Change the default maximum column width
|
||||
- Fix navigation menu load in proxy mode #2502
|
||||
- Fix navigation menu to always stay in sync with the product switch
|
||||
- Fix sporadic issue where the navigation menu disappeared and the content page was shifted
|
||||
- Fix info alert text color and button color in the dark palette
|
||||
- Fix styling of checkboxes and radios for backup and restore pages in Virtualmin
|
||||
- Fix styling for extra backup destinations in Virtualmin
|
||||
- Fix advanced schedule display in the cron chooser in Virtualmin
|
||||
[More details...](https://github.com/webmin/authentic-theme/releases/tag/25.00)
|
||||
|
||||
#### 2.402 (June 16, 2025)
|
||||
* Update the Authentic theme to the latest version with various fixes and improvements
|
||||
@@ -131,7 +162,7 @@
|
||||
* Update the Authentic theme to the latest version with various fixes and improvements
|
||||
|
||||
#### 2.201 (July 24, 2024)
|
||||
* Fix real-time monitoring not updating graphs in the Dashboard [#2222](https://github.com/webmin/webmin/issues/2222)
|
||||
* Fix real-time monitoring not updating graphs in the dashboard [#2222](https://github.com/webmin/webmin/issues/2222)
|
||||
* Fix Terminal module to work correctly with _sudo_-capable users [#2223](https://github.com/webmin/webmin/issues/2223)
|
||||
|
||||
#### 2.200 (July 21, 2024)
|
||||
@@ -244,7 +275,7 @@
|
||||
* Add support for editing ACLs in File Manager
|
||||
* Add support to configure SSL connection for MySQL/MariaDB module
|
||||
* Add support for compressed backups in PostgreSQL module
|
||||
* Add support for displaying inodes too in Disk Usage in the Dashboard
|
||||
* Add support for displaying inodes too in Disk Usage in the dashboard
|
||||
* Add better support for CloudLinux
|
||||
* Fix to always default to RSA key type in Let's Encrypt requests
|
||||
* Fix setup repository script for Oracle
|
||||
@@ -252,7 +283,7 @@
|
||||
* Fix support for SpamAssassin 4
|
||||
* Fix to use system default hashing format for `htpasswd` file
|
||||
* Fix FastRPC issues
|
||||
* Update the Authentic theme to the latest version, with sped-up Dashboard performance
|
||||
* Update the Authentic theme to the latest version, with sped-up dashboard performance
|
||||
|
||||
#### 2.013 (January 19, 2023)
|
||||
* Fix Authentic theme issue with error handling
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -355,6 +355,7 @@ unix_utable=Allowed Unix users
|
||||
sessions_title=Current Login Sessions
|
||||
sessions_id=Session ID
|
||||
sessions_user=Webmin user
|
||||
sessions_login_ago=Last active ago
|
||||
sessions_login=Last active at
|
||||
sessions_host=IP address
|
||||
sessions_lview=View logs..
|
||||
|
||||
@@ -28,7 +28,7 @@ print &ui_columns_start([ $text{'sessions_id'},
|
||||
$text{'sessions_state'},
|
||||
$text{'sessions_user'},
|
||||
$text{'sessions_host'},
|
||||
$text{'sessions_login'},
|
||||
$text{'sessions_login_ago'},
|
||||
$text{'sessions_actions'},
|
||||
], 100);
|
||||
foreach my $k (sort { my @a = split(/\s+/, $sessiondb{$a});
|
||||
@@ -68,7 +68,8 @@ foreach my $k (sort { my @a = split(/\s+/, $sessiondb{$a});
|
||||
push(@cols, $user);
|
||||
}
|
||||
push(@cols, $lip);
|
||||
push(@cols, &make_date($ltime));
|
||||
push(@cols, &make_date_relative($ltime).
|
||||
" ".&ui_help(&make_date($ltime)));
|
||||
my @links;
|
||||
if ($haslog) {
|
||||
push(@links, ui_link("../webminlog/search.cgi?uall=1&mall=1&tall=1&wall=1&fall=1&sid=$k", $text{'sessions_lview'}));
|
||||
|
||||
@@ -20,7 +20,12 @@ foreach my $k (keys %sessiondb) {
|
||||
next if ($k =~ /^1111111/);
|
||||
next if (!$sessiondb{$k});
|
||||
my ($user, $ltime, $lip) = split(/\s+/, $sessiondb{$k});
|
||||
next if ($user ne $remote_user && $user ne "!".$remote_user);
|
||||
next if (&webmin_user_is_admin()
|
||||
? ($user eq "!" ||
|
||||
($user ne $remote_user &&
|
||||
# Show all logins for past 3 days for admin
|
||||
$ltime && $ltime < time() - 3*24*60*60))
|
||||
: ($user ne $remote_user && $user ne "!".$remote_user));
|
||||
push(@logins, [ $user, $ltime, $lip, $k ]);
|
||||
}
|
||||
if (@logins) {
|
||||
@@ -29,7 +34,8 @@ if (@logins) {
|
||||
@logins = @logins[0..4];
|
||||
}
|
||||
my $html = &ui_columns_start([ $text{'sessions_host'},
|
||||
$text{'sessions_login'},
|
||||
$text{'sessions_user'},
|
||||
$text{'sessions_login_ago'},
|
||||
$text{'sessions_state'},
|
||||
$text{'sessions_action'} ]);
|
||||
my $open = 0;
|
||||
@@ -62,9 +68,13 @@ if (@logins) {
|
||||
&ui_link("@{[&get_webprefix()]}/acl/delete_session.cgi?id=$l->[3]&redirect_ref=1",
|
||||
$text{'sessions_kill'}))
|
||||
}
|
||||
my $user = $l->[0];
|
||||
$user =~ s/^\!//;
|
||||
$html .= &ui_columns_row([
|
||||
$l->[2],
|
||||
&make_date($l->[1]),
|
||||
$user,
|
||||
&make_date_relative($l->[1]).
|
||||
" ".&ui_help(&make_date($l->[1])),
|
||||
$state,
|
||||
&ui_links_row(\@links) ]);
|
||||
}
|
||||
|
||||
@@ -1356,7 +1356,7 @@ xfer_done=.. from $1 : Completed OK
|
||||
xfer_count=Test transfer successfully fetched $1 records from at least one nameserver. Actual transfers by BIND should also succeed.
|
||||
xfer_none=Test transfer appeared to succeed, but didn't actually fetch any records!
|
||||
|
||||
tls_title=SSL Keys And Certificates
|
||||
tls_title=SSL Keys and Certificates
|
||||
tls_ecannot=You are not allowed to edit SSL keys and certificates
|
||||
tls_esupport=SSL keys and certificates are not supported on this system
|
||||
tls_name=Key name
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 4.3 KiB |
31
lang/en
31
lang/en
@@ -438,6 +438,37 @@ file_truncated_message=fetched $1 of data, truncated $2 out of $3
|
||||
file_truncated_message_head=fetched beginning $1 of data, truncated $2 out of $3
|
||||
file_truncated_message_tail=fetched ending $1 of data, truncated $2 out of $3
|
||||
|
||||
time_ago_col=Time ago
|
||||
time_ago_year=$1 year ago
|
||||
time_ago_years=$1 years ago
|
||||
time_ago_month=$1 month ago
|
||||
time_ago_months=$1 months ago
|
||||
time_ago_week=$1 week ago
|
||||
time_ago_weeks=$1 weeks ago
|
||||
time_ago_day=$1 day ago
|
||||
time_ago_days=$1 days ago
|
||||
time_ago_hour=$1 hour ago
|
||||
time_ago_hours=$1 hours ago
|
||||
time_ago_min=$1 minute ago
|
||||
time_ago_mins=$1 minutes ago
|
||||
time_ago_sec=$1 second ago
|
||||
time_ago_secs=$1 seconds ago
|
||||
time_in_year=In $1 year
|
||||
time_in_years=In $1 years
|
||||
time_in_month=In $1 month
|
||||
time_in_months=In $1 months
|
||||
time_in_week=In $1 week
|
||||
time_in_weeks=In $1 weeks
|
||||
time_in_day=In $1 day
|
||||
time_in_days=In $1 days
|
||||
time_in_hour=In $1 hour
|
||||
time_in_hours=In $1 hours
|
||||
time_in_min=In $1 minute
|
||||
time_in_mins=In $1 minutes
|
||||
time_in_sec=In $1 second
|
||||
time_in_secs=In $1 seconds
|
||||
time_now=Just now
|
||||
|
||||
defcert_error=Default $1 bundled SSL certificate is being used. It is highly advised to update default <tt>$2</tt> certificate before proceeding with login.
|
||||
|
||||
main_error_details=Error details
|
||||
|
||||
@@ -20,6 +20,7 @@ journal_journalctl_unit=Messages for specific unit
|
||||
journal_since0=Latest available
|
||||
journal_since1=Real-time follow
|
||||
journal_since2=Current boot
|
||||
journal_since2-1=Last boot
|
||||
journal_since3=7 days ago
|
||||
journal_since4=24 hours ago
|
||||
journal_since5=8 hours ago
|
||||
|
||||
@@ -35,6 +35,7 @@ return [
|
||||
{ "" => $text{'journal_since0'} },
|
||||
{ "--follow" => $text{'journal_since1'} },
|
||||
{ "--boot" => $text{'journal_since2'} },
|
||||
{ "--boot -1" => $text{'journal_since2-1'} },
|
||||
{ "--since '7 days ago'" => $text{'journal_since3'} },
|
||||
{ "--since '24 hours ago'" => $text{'journal_since4'} },
|
||||
{ "--since '8 hours ago'" => $text{'journal_since5'} },
|
||||
|
||||
@@ -200,11 +200,9 @@ if (!$?) {
|
||||
my @lines = split(/\r?\n/, $out);
|
||||
my @last_line = split(/\s+/, $lines[$#lines]);
|
||||
shift(@last_line) if ($last_line[0] eq '');
|
||||
if (@last_line >= 6) {
|
||||
$user_time = $last_line[3]; # us
|
||||
$system_time = $last_line[4]; # sy
|
||||
$idle_time = $last_line[5]; # id
|
||||
}
|
||||
$user_time = $last_line[-6]; # us
|
||||
$system_time = $last_line[-5]; # sy
|
||||
$idle_time = $last_line[-4]; # id
|
||||
}
|
||||
# Get disk I/O
|
||||
my ($bi, $bo) = (0, 0);
|
||||
|
||||
@@ -2409,6 +2409,47 @@ if (ref($only) || !$only) {
|
||||
return $date;
|
||||
}
|
||||
|
||||
# make_date_relative(timestamp)
|
||||
# Return localized relative time from now or to the future
|
||||
# for a given timestamp, or undef if not a valid timestamp
|
||||
sub make_date_relative
|
||||
{
|
||||
my $ts = shift;
|
||||
return undef unless(defined($ts) && $ts =~ /^-?\d+(?:\.\d+)?$/);
|
||||
$ts = 0 + $ts;
|
||||
my $last_login;
|
||||
my $now = time();
|
||||
my $diff = $ts - $now; # >0 future, <0 past
|
||||
my $abs = abs($diff);
|
||||
return $text{'time_now'} if ($abs < 10); # within ±10 seconds is now
|
||||
my @units = (
|
||||
[ 31536000, 'year', 'years' ],
|
||||
[ 2592000, 'month', 'months' ],
|
||||
[ 604800, 'week', 'weeks' ],
|
||||
[ 86400, 'day', 'days' ],
|
||||
[ 3600, 'hour', 'hours' ],
|
||||
[ 60, 'min', 'mins' ],
|
||||
[ 1, 'sec', 'secs' ],
|
||||
);
|
||||
my ($val, $sing, $plur);
|
||||
foreach my $unit (@units) {
|
||||
my ($secs, $s, $p) = @$unit;
|
||||
next if ($abs < $secs);
|
||||
$val = int($abs / $secs);
|
||||
($sing, $plur) = ($s, $p);
|
||||
last;
|
||||
}
|
||||
if (defined($val) && $val > 0) {
|
||||
my $key = ($diff > 0 ? 'time_in_' : 'time_ago_').
|
||||
($val == 1 ? $sing : $plur);
|
||||
$last_login = &text($key, $val);
|
||||
}
|
||||
else {
|
||||
$last_login = $text{'time_now'};
|
||||
}
|
||||
return $last_login;
|
||||
}
|
||||
|
||||
=head2 file_chooser_button(input, type, [form], [chroot], [addmode])
|
||||
|
||||
Return HTML for a button that pops up a file chooser when clicked, and places
|
||||
|
||||
@@ -197,6 +197,7 @@ elsif (@match) {
|
||||
$text{'search_user'},
|
||||
$text{'search_host'},
|
||||
$config{'host_search'} ? ( $text{'search_webmin'} ) : ( ),
|
||||
$text{'time_ago_col'},
|
||||
$text{'search_datetime'} ], "100");
|
||||
foreach my $act (sort { $b->{'time'} <=> $a->{'time'} } @match) {
|
||||
my @tm = localtime($act->{'time'});
|
||||
@@ -231,6 +232,7 @@ elsif (@match) {
|
||||
if ($config{'host_search'}) {
|
||||
push(@cols, $act->{'webmin'});
|
||||
}
|
||||
push(@cols, &make_date_relative($act->{'time'}));
|
||||
push(@cols, &make_date($act->{'time'}));
|
||||
print &ui_columns_row(\@cols);
|
||||
}
|
||||
|
||||
@@ -59,7 +59,8 @@ if ($act->{'sid'} ne '-') {
|
||||
&urlize($in{'returndesc'}), $act->{'sid'}) );
|
||||
}
|
||||
|
||||
print &ui_table_row($text{'view_time'}, &make_date($act->{'time'}));
|
||||
print &ui_table_row($text{'view_time'}, &make_date($act->{'time'}).
|
||||
" (".&make_date_relative($act->{'time'}).")");
|
||||
|
||||
if ($act->{'webmin'}) {
|
||||
print &ui_table_row($text{'view_host'},
|
||||
|
||||
Reference in New Issue
Block a user