Fix setting Protocol directive in contemporary SSH

This commit is contained in:
Ilia Ross
2025-01-14 03:14:21 +02:00
parent 66a792292a
commit aab912dccf
2 changed files with 21 additions and 9 deletions

View File

@@ -58,15 +58,23 @@ print &ui_table_row($text{'net_port'},
if ($version{'type'} eq 'openssh' && $version{'number'} >= 2) {
# Protocols
$prots = &find_value("Protocol", $conf);
@prots = $prots ? split(/,/, $prots) :
$version{'number'} >= 2.9 ? (1, 2) : (2);
$cbs = "";
foreach $p (1, 2) {
$cbs .= &ui_checkbox("prots", $p, $text{"net_prots_$p"},
&indexof($p, @prots) >= 0)." ";
my @prots_avail = (1, 2);
if ($version{'number'} < 2 || $version{'number'} >= 7.6) {
# Since SSH-1 is removed in 7.6, displaying the protocol is
# unnecessary because only SSH-2 protocol is available.
# Protocol directive is ignored even if set
@prots_avail = ();
}
if (@prots_avail) {
my $prots = &find_value("Protocol", $conf);
my @prots = $prots ? split(/,/, $prots) : @prots_avail;
my $cbs = "";
foreach $p (1, 2) {
$cbs .= &ui_checkbox("prots", $p, $text{"net_prots_$p"},
&indexof($p, @prots) >= 0)." ";
}
print &ui_table_row($text{'net_prots'}, $cbs);
}
print &ui_table_row($text{'net_prots'}, $cbs);
}
if ($version{'type'} eq 'ssh' &&

View File

@@ -66,11 +66,15 @@ else {
&save_directive("Port", $conf, \@ports, "ListenAddress");
}
if ($version{'type'} eq 'openssh' && $version{'number'} >= 2) {
if ($version{'type'} eq 'openssh' &&
$version{'number'} >= 2 && $version{'number'} < 7.6) {
@prots = split(/\0/, $in{'prots'});
@prots || &error($text{'net_eprots'});
&save_directive("Protocol", $conf, join(",", @prots));
}
elsif ($version{'number'} >= 7.6) {
&save_directive("Protocol", $conf);
}
if ($version{'type'} eq 'ssh' &&
($version{'number'} < 2 || $version{'number'} >= 3)) {