mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 14:13:29 +00:00
Add support for IPv6 listen-on
This commit is contained in:
@@ -4546,7 +4546,8 @@ my ($conf, $name) = @_;
|
||||
my @rv;
|
||||
my $opts = &find("optons", $conf);
|
||||
if ($opts) {
|
||||
my @listen = &find("listen-on", $opts->{'members'});
|
||||
my @listen = ( &find("listen-on", $opts->{'members'}),
|
||||
&find("listen-on-v6", $opts->{'members'}) );
|
||||
foreach my $l (@listen) {
|
||||
my $idx = &indexof("tls", @{$l->{'values'}});
|
||||
if ($idx >= 0 && $l->{'values'}->[$idx+1] eq $name) {
|
||||
|
||||
@@ -22,7 +22,8 @@ print &ui_form_start("save_net.cgi", "post");
|
||||
print &ui_table_start($text{'net_header'}, "width=100%", 4);
|
||||
|
||||
# Ports and addresses to listen on
|
||||
my @listen = &find("listen-on", $mems);
|
||||
my @listen = ( &find("listen-on", $mems),
|
||||
&find("listen-on-v6", $mems) );
|
||||
my $ltable = &ui_radio("listen_def", @listen ? 0 : 1,
|
||||
[ [ 1, $text{'default'} ],
|
||||
[ 0, $text{'net_below'} ] ])."<br>\n";
|
||||
@@ -30,10 +31,17 @@ my $ltable = &ui_radio("listen_def", @listen ? 0 : 1,
|
||||
my @table = ( );
|
||||
push(@listen, { });
|
||||
for(my $i=0; $i<@listen; $i++) {
|
||||
my $port = $listen[$i]->{'value'} eq 'port' ?
|
||||
$listen[$i]->{'values'}->[1] : undef;
|
||||
my @vals = map { $_->{'name'} } @{$listen[$i]->{'members'}};
|
||||
my $l = $listen[$i];
|
||||
my $port = $l->{'value'} eq 'port' ?
|
||||
$l->{'values'}->[1] : undef;
|
||||
my @vals = map { $_->{'name'} } @{$l->{'members'}};
|
||||
push(@table, [
|
||||
&ui_select("proto_$i",
|
||||
$l->{'name'} eq 'listen-on-v6' ? 'v6' :
|
||||
$l->{'name'} eq 'listen-on' ? 'v4' : '',
|
||||
[ [ '', $text{'net_none'} ],
|
||||
[ 'v4', 'IPv4' ],
|
||||
[ 'v6', 'IPv6' ] ]),
|
||||
&ui_radio("pdef_$i", $port ? 0 : 1,
|
||||
[ [ 1, $text{'default'} ],
|
||||
[ 0, &ui_textbox("port_$i", $port, 5) ] ]),
|
||||
@@ -41,7 +49,7 @@ for(my $i=0; $i<@listen; $i++) {
|
||||
]);
|
||||
}
|
||||
$ltable .= &ui_columns_table(
|
||||
[ $text{'net_port'}, $text{'net_addrs'} ],
|
||||
[ $text{'net_proto'}, $text{'net_port'}, $text{'net_addrs'} ],
|
||||
undef,
|
||||
\@table,
|
||||
undef,
|
||||
|
||||
@@ -732,6 +732,8 @@ net_saddr=Source IP address for queries
|
||||
net_ip=IP address
|
||||
net_sport=Source port for queries
|
||||
net_port=Port number
|
||||
net_proto=Protocol
|
||||
net_none=<None>
|
||||
net_topol=Nameserver choice topology
|
||||
net_recur=Allow recursive queries from
|
||||
net_err=Failed to save address and topology options
|
||||
|
||||
@@ -17,25 +17,34 @@ my $conf = &get_config();
|
||||
my $options = &find("options", $conf);
|
||||
my %used;
|
||||
my @listen;
|
||||
my @listen6;
|
||||
if (!$in{'listen_def'}) {
|
||||
my $addr;
|
||||
for(my $i=0; defined($addr = $in{"addrs_$i"}); $i++) {
|
||||
next if (!$addr);
|
||||
my $l = { 'name' => 'listen-on',
|
||||
'type' => 1 };
|
||||
next if (!$in{"proto_$i"});
|
||||
my $l = { 'name' => $in{"proto_$i"} eq 'v6' ?
|
||||
'listen-on-v6' : 'listen-on',
|
||||
'type' => 1 };
|
||||
if (!$in{"pdef_$i"}) {
|
||||
$in{"port_$i"} =~ /^\d+$/ ||
|
||||
&error(&text('net_eport', $in{"port_$i"}));
|
||||
$l->{'values'} = [ 'port', $in{"port_$i"} ];
|
||||
}
|
||||
my $port = $in{"pdef_$i"} ? 53 : $in{"port_$i"};
|
||||
$used{$port}++ && &error(&text('net_eusedport', $port));
|
||||
$used{$port,$l->{'name'}}++ &&
|
||||
&error(&text('net_eusedport', $port));
|
||||
$l->{'members'} =
|
||||
[ map { { 'name' => $_ } } split(/\s+/, $addr) ];
|
||||
push(@listen, $l);
|
||||
if ($l->{'name'} eq 'listen-on') {
|
||||
push(@listen, $l);
|
||||
}
|
||||
else {
|
||||
push(@listen6, $l);
|
||||
}
|
||||
}
|
||||
}
|
||||
&save_directive($options, 'listen-on', \@listen, 1);
|
||||
&save_directive($options, 'listen-on-v6', \@listen6, 1);
|
||||
|
||||
# Save query source address and port
|
||||
my @qvals;
|
||||
|
||||
Reference in New Issue
Block a user