2 # $Id: save_zones.cgi,v 1.2 2005/04/16 14:30:21 jfranken Exp $
3 # File added 2005-04-15 by Johannes Franken <jfranken@jfranken.de>
4 # Distributed under the terms of the GNU General Public License, v2 or later
6 # * Save zone directives to configfile
8 require './dhcpd-lib.pl';
9 require './params-lib.pl';
11 &lock_file($config{'dhcpd_conf'});
13 unless ($in{'new'}){ # on change or delete
14 # Read current zone data from config file
15 ($par, $zone, $indent) = &get_branch('zone');
18 # Get values from CGI Parameters
19 $zonename=$in{'name'};
20 $zonename.='.' unless ($zonename=~m/\.$/); # Add trailing dot to zone name
21 $primary=$in{'primary'};
25 # Prepare data structure
26 local $oldzone=$zone; # backup (neccessary if name changes)
28 'values' => [ $zonename ],
29 'comment' => $in{'desc'},
33 push (@primarys, { 'name' => 'primary', 'values' => [ $primary ] });
34 push (@keys, { 'name' => 'key', 'values' => [ $key ] });
37 # Save data structure to config file
41 &save_directive($par, [ $oldzone ], [ ], 0);
42 } else { # if not delete
43 if ($in{'new'}) { # Add this zone
44 &save_directive(&get_parent_config(), [ ], [ $zone ], 0);
47 &save_directive($par, [ $oldzone ], [ ], 0); # delete old zone
48 &save_directive($par, [ $oldzone ], [ $zone ], 0); # add new zone
50 # Add Details to that zone
51 &save_directive($zone, "primary", \@primarys, 1);
52 &save_directive($zone, "key", \@keys, 1);
57 &unlock_file($config{'dhcpd_conf'});
59 &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
60 'shared', $zone->{'values'}->[0], \%in);