Handle hostnames with upper-case letters
[webmin.git] / dhcpd / save_zones.cgi
1 #!/usr/bin/perl
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
5 #
6 # * Save zone directives to configfile
7
8 require './dhcpd-lib.pl';
9 require './params-lib.pl';
10 &ReadParse();
11 &lock_file($config{'dhcpd_conf'});
12
13 unless ($in{'new'}){  # on change or delete
14         # Read current zone data from config file
15         ($par, $zone, $indent) = &get_branch('zone');
16 }
17
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'};
22 $key=$in{'key'};
23
24
25 # Prepare data structure
26 local $oldzone=$zone; # backup (neccessary if name changes)
27 local $zone = {
28         'values' => [ $zonename ],
29         'comment' => $in{'desc'},
30         'name' => 'zone',
31         'type' => 1
32 };
33 push (@primarys, { 'name' => 'primary', 'values' => [ $primary ] });
34 push (@keys, { 'name' => 'key', 'values' => [ $key ] });
35
36
37 # Save data structure to config file
38
39 if ($in{'delete'}) {
40         # Delete this zone
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);
45         }
46         else { # Update zone
47                 &save_directive($par, [ $oldzone ], [ ], 0); # delete old zone
48                 &save_directive($par, [ $oldzone ], [ $zone ], 0); # add new zone
49         }
50         # Add Details to that zone
51         &save_directive($zone, "primary", \@primarys, 1);
52         &save_directive($zone, "key", \@keys, 1);
53 }
54
55 &flush_file_lines();
56
57 &unlock_file($config{'dhcpd_conf'});
58
59 &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
60             'shared', $zone->{'values'}->[0], \%in);
61
62 &redirect("");