3 # Display networking related SSHd options
5 require './sshd-lib.pl';
6 &ui_print_header(undef, $text{'net_title'}, "", "net");
7 $conf = &get_sshd_config();
9 print &ui_form_start("save_net.cgi", "post");
10 print &ui_table_start($text{'net_header'}, "width=100%", 2);
12 if ($version{'type'} eq 'openssh' && $version{'number'} >= 3) {
13 # Multiple listen addresses supported
14 @listens = &find("ListenAddress", $conf);
17 foreach $l (@listens, { }) {
18 local ($a, $p) = $l->{'values'}->[0] =~ /^([^:]*):(\d+)$/ ||
19 $l->{'values'}->[0] =~ /^\[(.*)\]:(\d+)$/ ?
21 $l->{'values'}->[0] =~ /^\[(.*)\]$/ ?
23 ($l->{'values'}->[0]);
24 $amode = $a eq "::" ? 2 : $a eq "0.0.0.0" ? 1 :
27 &ui_select("mode_$i", $amode,
29 [ 1, $text{'net_all4'} ],
30 [ 2, $text{'net_all6'} ],
31 [ 3, $text{'net_sel'} ] ])." ".
32 &ui_textbox("address_$i", $amode == 3 ? $a : "", 25),
33 &ui_opt_textbox("port_$i", $p, 6, $text{'default'})
37 print &ui_table_row($text{'net_listen2'},
38 &ui_radio("listen_def", @listens ? 0 : 1,
39 [ [ 1, $text{'net_listen_def'} ],
40 [ 0, $text{'net_below'} ] ])."<br>\n".
41 &ui_columns_table([ $text{'net_laddress'},
46 # Just one listen address
47 $listen = &find_value("ListenAddress", $conf);
48 $listen = "" if ($listen eq "0.0.0.0");
49 print &ui_table_row($text{'net_listen'},
50 &ui_opt_textbox("listen", $listen, 20,$text{'net_listen_def'}));
54 @ports = &find("Port", $conf);
55 $port = join(" ", map { $_->{'values'}->[0] } @ports);
56 print &ui_table_row($text{'net_port'},
57 &ui_opt_textbox("port", $port, 15, $text{'default'}." (22)"));
59 if ($version{'type'} eq 'openssh' && $version{'number'} >= 2) {
61 $prots = &find_value("Protocol", $conf);
62 @prots = $prots ? split(/,/, $prots) :
63 $version{'number'} >= 2.9 ? (1, 2) : (1);
66 $cbs .= &ui_checkbox("prots", $p, $text{"net_prots_$p"},
67 &indexof($p, @prots) >= 0)." ";
69 print &ui_table_row($text{'net_prots'}, $cbs);
72 if ($version{'type'} eq 'ssh' &&
73 ($version{'number'} < 2 || $version{'number'} >= 3)) {
74 # Idle connection timeout
75 $idle = &find_value("IdleTimeout", $conf);
76 if ($idle =~ /^(\d+)([smhdw])$/i) {
77 $idle = $1; $units = $2;
79 print &ui_table_row($text{'net_idle'},
80 &ui_radio("idle_def", $idle ? 0 : 1,
81 [ [ 1, $text{'default'} ],
82 [ 0, &ui_textbox("idle", $idle, 6)." ".
83 &ui_select("idle_units", $units,
84 [ map { [ $_, $text{"net_idle_".$_} ] }
85 ('s', 'm', 'h', 'd', 'w') ]) ] ]));
88 # Send keepalive packets?
89 $keep = &find_value("KeepAlive", $conf);
90 print &ui_table_row($text{'net_keep'},
91 &ui_yesno_radio("keep", lc($keep) ne 'no'));
93 # Grace time for logins
94 $grace = &find_value("LoginGraceTime", $conf);
95 print &ui_table_row($text{'net_grace'},
96 &ui_opt_textbox("grace", $grace, 6, $text{'net_grace_def'})." ".
97 $text{'net_grace_s'});
99 if ($version{'type'} ne 'openssh' || $version{'number'} >= 2) {
100 # Allow port forwarding?
101 $tcp = &find_value("AllowTcpForwarding", $conf);
102 print &ui_table_row($text{'net_tcp'},
103 &ui_yesno_radio("tcp", lc($tcp) ne 'no'));
106 if ($version{'type'} eq 'openssh' && $version{'number'} >= 2) {
107 # Allow connections to forwarded ports
108 $gateway = &find_value("GatewayPorts", $conf);
109 print &ui_table_row($text{'net_gateway'},
110 &ui_yesno_radio("gateway", lc($gateway) eq 'yes'));
112 if ($version{'number'} > 2.3 && $version{'number'} < 3.7) {
113 # Validate reverse IP
114 $reverse = &find_value("ReverseMappingCheck", $conf);
115 print &ui_table_row($text{'net_reverse'},
116 &ui_yesno_radio("reverse", lc($reverse) eq 'yes'));
120 print &ui_table_end();
121 print &ui_form_end([ [ undef, $text{'save'} ] ]);
123 &ui_print_footer("", $text{'index_return'});