mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 14:13:29 +00:00
50 lines
1.6 KiB
Perl
Executable File
50 lines
1.6 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# save_net.cgi
|
|
# Save networking options
|
|
|
|
require './wuftpd-lib.pl';
|
|
&error_setup($text{'net_err'});
|
|
&ReadParse();
|
|
|
|
&lock_file($config{'ftpaccess'});
|
|
$conf = &get_ftpaccess();
|
|
|
|
# Save TCP windows
|
|
for($i=0; defined($tsize = $in{"tsize_$i"}); $i++) {
|
|
next if (!$tsize);
|
|
$tsize =~ /^\d+$/ || &error(&text('net_etsize', $tsize));
|
|
push(@tcpwindow, { 'name' => 'tcpwindow',
|
|
'values' => [ $tsize, $in{"tclass_$i"} ] } );
|
|
}
|
|
&save_directive($conf, 'tcpwindow', \@tcpwindow);
|
|
|
|
# Save PASV options
|
|
for($i=0; defined($aip = $in{"aip_$i"}); $i++) {
|
|
$anet = $in{"anet_$i"}; $acidr = $in{"acidr_$i"};
|
|
next if (!$aip);
|
|
&check_ipaddress($aip) || &error(&text('net_eip', $aip));
|
|
&check_ipaddress($anet) || &error(&text('net_enet', $anet));
|
|
$acidr =~ /^\d+$/ && $acidr <= 32 || &error(&text('net_ecidr', $acidr));
|
|
push(@passive, { 'name' => 'passive',
|
|
'values' => [ 'address', $aip, "$anet/$acidr" ] } );
|
|
}
|
|
for($i=0; defined($pmin = $in{"pmin_$i"}); $i++) {
|
|
$pmax = $in{"pmax_$i"}; $pnet = $in{"pnet_$i"};
|
|
$pcidr = $in{"pcidr_$i"};
|
|
next if ($pmin eq "" || $pmax eq "");
|
|
$pmin =~ /^\d+$/ || &error(&text('net_eport', $pmin));
|
|
$pmax =~ /^\d+$/ || &error(&text('net_eport', $pmax));
|
|
&check_ipaddress($pnet) || &error(&text('net_enet', $pnet));
|
|
$pcidr =~ /^\d+$/ && $pcidr <= 32 || &error(&text('net_ecidr', $pcidr));
|
|
push(@passive,
|
|
{ 'name' => 'passive',
|
|
'values' => [ 'ports', "$pnet/$pcidr", $pmin, $pmax ] } );
|
|
}
|
|
&save_directive($conf, 'passive', \@passive);
|
|
|
|
&flush_file_lines();
|
|
&unlock_file($config{'ftpaccess'});
|
|
&webmin_log("net", undef, undef, \%in);
|
|
&redirect("");
|
|
|