#!/usr/local/bin/perl # edit_net.cgi # Display networking related SSHd options require './sshd-lib.pl'; &ui_print_header(undef, $text{'net_title'}, "", "net"); $conf = &get_sshd_config(); print "
\n"; print "\n"; print "\n"; print "
$text{'net_header'}
\n"; if ($version{'type'} eq 'openssh' && $version{'number'} >= 3) { # Multiple listen addresses supported &scmd(1); @listens = &find("ListenAddress", $conf); print "\n"; print "\n"; &ecmd(); } &scmd(); @ports = &find("Port", $conf); $port = join(" ", map { $_->{'values'}->[0] } @ports); print "\n"; &ecmd(); if ($version{'type'} eq 'openssh' && $version{'number'} >= 2) { &scmd(); $prots = &find_value("Protocol", $conf); @prots = $prots ? split(/,/, $prots) : $version{'number'} >= 2.9 ? (1, 2) : (1); print "\n"; &ecmd(); } if ($version{'type'} eq 'ssh' && ($version{'number'} < 2 || $version{'number'} >= 3)) { &scmd(); $idle = &find_value("IdleTimeout", $conf); if ($idle =~ /^(\d+)([smhdw])$/i) { $idle = $1; $units = $2; } print "\n"; &ecmd(); } &scmd(); $keep = &find_value("KeepAlive", $conf); print "\n", lc($keep) eq 'no' ? "checked" : "", $text{'no'}; &ecmd(); &scmd(); $grace = &find_value("LoginGraceTime", $conf); print "\n"; &ecmd(); if ($version{'type'} ne 'openssh' || $version{'number'} >= 2) { &scmd(); $tcp = &find_value("AllowTcpForwarding", $conf); print "\n", lc($tcp) eq 'no' ? "checked" : "", $text{'no'}; &ecmd(); } if ($version{'type'} eq 'openssh' && $version{'number'} >= 2) { &scmd(); $gateway = &find_value("GatewayPorts", $conf); print "\n", lc($gateway) eq 'yes' ? "" : "checked", $text{'no'}; &ecmd(); if ($version{'number'} > 2.3 && $version{'number'} < 3.7) { &scmd(); $reverse = &find_value("ReverseMappingCheck", $conf); print "\n", lc($reverse) eq 'yes' ? "" : "checked", $text{'no'}; &ecmd(); } } print "
$text{'net_listen2'}\n"; printf " %s\n", @listens ? "" : "checked", $text{'net_listen_def'}; printf " %s
\n", @listens ? "checked" : "", $text{'net_below'}; print "\n"; print " ", "\n"; $i = 0; foreach $l (@listens, { }) { local ($a, $p) = $l->{'values'}->[0] =~ /^(.*):(\d+)$/ ? ($1, $2) : ($l->{'values'}->[0]); print "\n"; print "\n"; printf "\n"; print "\n"; $i++; } print "
$text{'net_laddress'}$text{'net_lport'}
%s ", $p ? "" : "checked", $text{'default'}; printf "\n", $p ? "checked" : ""; print "
\n"; &ecmd(); } else { # Just one listen address &scmd(); $listen = &find_value("ListenAddress", $conf); $listen = "" if ($listen eq "0.0.0.0"); print "
$text{'net_listen'} \n"; printf " %s\n", $listen ? "" : "checked", $text{'net_listen_def'}; printf "\n", $listen ? "checked" : ""; print "$text{'net_port'} \n"; printf " %s (22)\n", $port ? "" : "checked", $text{'default'}; printf "\n", $port ? "checked" : ""; print "$text{'net_prots'} \n"; foreach $p (1, 2) { printf " %s\n", $p, &indexof($p, @prots) >= 0 ? "checked" : "", $text{"net_prots_$p"}; } print "$text{'net_idle'} \n"; printf " %s\n", $idle ? "" : "checked", $text{'default'}; printf "\n", $idle ? "checked" : ""; print "\n"; print "$text{'net_keep'} \n"; printf " %s\n", lc($keep) eq 'no' ? "" : "checked", $text{'yes'}; printf " %s$text{'net_grace'} \n"; printf " %s\n", $grace ? "" : "checked", $text{'net_grace_def'}; printf "\n", $grace ? "checked" : ""; print " $text{'net_grace_s'}$text{'net_tcp'} \n"; printf " %s\n", lc($tcp) eq 'no' ? "" : "checked", $text{'yes'}; printf " %s$text{'net_gateway'} \n"; printf " %s\n", lc($gateway) eq 'yes' ? "checked" : "", $text{'yes'}; printf " %s$text{'net_reverse'} \n"; printf " %s\n", lc($reverse) eq 'yes' ? "checked" : "", $text{'yes'}; printf " %s
\n"; print "
\n"; &ui_print_footer("", $text{'index_return'});