mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 14:13:29 +00:00
Fix support for idle conns in contemporary SSH
This commit is contained in:
@@ -41,7 +41,8 @@ print &ui_table_row($text{'host_user'},
|
|||||||
&ui_opt_textbox("user", $user, 20, $text{'host_user_def'}));
|
&ui_opt_textbox("user", $user, 20, $text{'host_user_def'}));
|
||||||
|
|
||||||
# Send keep-alive packets?
|
# Send keep-alive packets?
|
||||||
$keep = &find_value("KeepAlive", $conf);
|
$keep = &find_value($version_number >= 3.8 ? 'ServerAliveInterval' : 'KeepAlive',
|
||||||
|
$conf);
|
||||||
print &ui_table_row($text{'host_keep'},
|
print &ui_table_row($text{'host_keep'},
|
||||||
&yes_no_default_radio("keep", $keep));
|
&yes_no_default_radio("keep", $keep));
|
||||||
|
|
||||||
|
|||||||
@@ -94,9 +94,12 @@ if ($version{'type'} eq 'ssh' &&
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Send keepalive packets?
|
# Send keepalive packets?
|
||||||
$keep = &find_value("KeepAlive", $conf);
|
$keep = &find_value($version{'number'} >= 3.8 ? 'TCPKeepAlive' : 'KeepAlive',
|
||||||
|
$conf);
|
||||||
print &ui_table_row($text{'net_keep'},
|
print &ui_table_row($text{'net_keep'},
|
||||||
&ui_yesno_radio("keep", lc($keep) ne 'no'));
|
&ui_yesno_radio("keep", $version{'number'} >= 3.8 ?
|
||||||
|
# Defaults to 'No' Defaults to 'Yes'
|
||||||
|
lc($keep) eq 'yes' : lc($keep) ne 'no'));
|
||||||
|
|
||||||
# Grace time for logins
|
# Grace time for logins
|
||||||
$grace = &find_value("LoginGraceTime", $conf);
|
$grace = &find_value("LoginGraceTime", $conf);
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ net_idle_m=minutes
|
|||||||
net_idle_h=hours
|
net_idle_h=hours
|
||||||
net_idle_d=days
|
net_idle_d=days
|
||||||
net_idle_w=weeks
|
net_idle_w=weeks
|
||||||
net_keep=Disconnect if client has crashed?
|
net_keep=Keep inactive clients?
|
||||||
net_listen=Listen on address
|
net_listen=Listen on address
|
||||||
net_listen2=Listen on addresses
|
net_listen2=Listen on addresses
|
||||||
net_laddress=Address
|
net_laddress=Address
|
||||||
@@ -154,7 +154,7 @@ host_header=Client options for SSH host
|
|||||||
host_name=Options for host
|
host_name=Options for host
|
||||||
host_user=Login as user
|
host_user=Login as user
|
||||||
host_user_def=Current login
|
host_user_def=Current login
|
||||||
host_keep=Disconnect if server has crashed?
|
host_keep=Keep idle connections?
|
||||||
host_hostname=Real hostname to connect to
|
host_hostname=Real hostname to connect to
|
||||||
host_hostname_def=Same as above
|
host_hostname_def=Same as above
|
||||||
host_batch=Ask for password if needed?
|
host_batch=Ask for password if needed?
|
||||||
|
|||||||
@@ -50,9 +50,28 @@ else {
|
|||||||
$in{'user'} =~ /^\S+$/ || &error($text{'host_euser'});
|
$in{'user'} =~ /^\S+$/ || &error($text{'host_euser'});
|
||||||
&save_directive("User", $conf, $in{'user'});
|
&save_directive("User", $conf, $in{'user'});
|
||||||
}
|
}
|
||||||
|
my $keep_now = $in{'keep'} == 2 ? undef : $in{'keep'};
|
||||||
&save_directive("KeepAlive", $conf,
|
if ($version_number >= 3.8) {
|
||||||
$in{'keep'} == 2 ? undef : $in{'keep'} ? 'yes' : 'no');
|
if (!defined($keep_now)) {
|
||||||
|
# Default
|
||||||
|
&save_directive("ServerAliveInterval", $conf, undef);
|
||||||
|
&save_directive("ServerAliveCountMax", $conf, undef);
|
||||||
|
}
|
||||||
|
elsif ($keep_now == 1) {
|
||||||
|
# Enabled
|
||||||
|
&save_directive("ServerAliveInterval", $conf, 60);
|
||||||
|
&save_directive("ServerAliveCountMax", $conf, 3);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
# Disabled
|
||||||
|
&save_directive("ServerAliveInterval", $conf, 0);
|
||||||
|
&save_directive("ServerAliveCountMax", $conf, undef);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
&save_directive("KeepAlive", $conf,
|
||||||
|
$in{'keep'} == 2 ? undef : $in{'keep'} ? 'yes' : 'no');
|
||||||
|
}
|
||||||
|
|
||||||
if ($in{'hostname_def'}) {
|
if ($in{'hostname_def'}) {
|
||||||
&save_directive("HostName", $conf);
|
&save_directive("HostName", $conf);
|
||||||
|
|||||||
@@ -88,7 +88,27 @@ if ($version{'type'} eq 'ssh' &&
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&save_directive("KeepAlive", $conf, $in{'keep'} ? 'yes' : 'no');
|
# Determine if the SSH version is 3.8 or higher
|
||||||
|
my $sshv38 = $version{'number'} >= 3.8;
|
||||||
|
my $keep_alive_key = $sshv38 ? 'TCPKeepAlive' : 'KeepAlive';
|
||||||
|
my $keep_curr = &find_value($keep_alive_key, $conf);
|
||||||
|
my $keep_now = $in{'keep'} ? 'yes' : 'no';
|
||||||
|
# Check if the current keep-alive value differs from the input value
|
||||||
|
if ($keep_curr ne $keep_now) {
|
||||||
|
# Update the keep-alive value based on the input
|
||||||
|
&save_directive($keep_alive_key, $conf, $keep_now);
|
||||||
|
# Additional configuration for version 3.8 or higher
|
||||||
|
if ($sshv38) {
|
||||||
|
if ($keep_now eq 'yes') {
|
||||||
|
# Enabled
|
||||||
|
&save_directive('ClientAliveInterval', $conf, 60);
|
||||||
|
} else {
|
||||||
|
# Disabled
|
||||||
|
&save_directive('ClientAliveInterval', $conf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($in{'grace_def'}) {
|
if ($in{'grace_def'}) {
|
||||||
&save_directive("LoginGraceTime", $conf);
|
&save_directive("LoginGraceTime", $conf);
|
||||||
|
|||||||
@@ -370,9 +370,9 @@ return ('QUIET', 'FATAL', 'ERROR', 'INFO', 'VERBOSE', 'DEBUG');
|
|||||||
|
|
||||||
sub yes_no_default_radio
|
sub yes_no_default_radio
|
||||||
{
|
{
|
||||||
local ($name, $value) = @_;
|
local ($name, $val) = @_;
|
||||||
return &ui_radio($name, lc($value) eq 'yes' ? 1 :
|
return &ui_radio($name, (lc($val) eq 'yes' || $val =~ /^\d+$/ && $val > 0) ? 1 :
|
||||||
lc($value) eq 'no' ? 0 : 2,
|
(lc($val) eq 'no' || $val =~ /^\d+$/) ? 0 : 2,
|
||||||
[ [ 1, $text{'yes'} ], [ 0, $text{'no'} ],
|
[ [ 1, $text{'yes'} ], [ 0, $text{'no'} ],
|
||||||
[ 2, $text{'default'} ] ]);
|
[ 2, $text{'default'} ] ]);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user