3 # Save virtual server options such as the port and address
5 require './proftpd-lib.pl';
8 $vconf = $conf->[$in{'virt'}];
11 # Delete a virtual server
12 &lock_file($vconf->{'file'});
14 $lref = &read_file_lines($vconf->{'file'});
15 splice(@$lref, $vconf->{'line'},
16 $vconf->{'eline'} - $vconf->{'line'} + 1);
19 &unlock_file($vconf->{'file'});
20 &webmin_log("virt", "delete", $vconf->{'value'});
24 # Update virtual server and directives
25 &error_setup($text{'vserv_err'});
28 &to_ipaddress($in{'addr'}) || &to_ip6address($in{'addr'}) ||
29 &error($text{'vserv_eaddr'});
30 $in{'Port_def'} || $in{'Port'} =~ /^\d+$/ ||
31 &error($text{'vserv_eport'});
32 $in{'ServerName_def'} || $in{'ServerName'} =~ /\S/ ||
33 &error($text{'vserv_ename'});
35 # Update <VirtualHost> directive
36 &lock_file($vconf->{'file'});
38 $lref = &read_file_lines($vconf->{'file'});
39 $lref->[$vconf->{'line'}] = "<VirtualHost $in{'addr'}>";
41 # Update DocumentRoot and ServerName
42 &save_directive("ServerName", $in{'ServerName_def'} ? [ ] :
43 [ "\"$in{'ServerName'}\"" ],
44 $vconf->{'members'}, $conf);
45 &save_directive("Port", $in{'Port_def'} ? [ ] : [ $in{'Port'} ],
46 $vconf->{'members'}, $conf);
51 &unlock_file($vconf->{'file'});
52 &webmin_log("virt", "save", $vconf->{'value'}, \%in);
53 &redirect("virt_index.cgi?virt=$in{'virt'}");