Handle hostnames with upper-case letters
[webmin.git] / zones / save_pkg.cgi
1 #!/usr/local/bin/perl
2 # Update, add or delete an inherited package directory
3
4 require './zones-lib.pl';
5 do 'forms-lib.pl';
6 &ReadParse();
7 $zinfo = &get_zone($in{'zone'});
8 $zinfo || &error($text{'edit_egone'});
9 if (!$in{'new'}) {
10         # Find the directory
11         ($pkg) = grep { $_->{'dir'} eq $in{'old'} }
12                       @{$zinfo->{'inherit-pkg-dir'}};
13         $pkg || &error($text{'pkg_egone'});
14         }
15 $pkg ||= { 'keytype' => 'inherit-pkg-dir' };
16
17 if ($in{'delete'}) {
18         # Just remove this dir
19         &delete_zone_object($zinfo, $pkg);
20         }
21 else {
22         # Validate inputs
23         $form = &get_pkg_form(\%in, $zinfo, $pkg);
24         $form->validate_redirect("edit_pkg.cgi");
25         $pkg->{'dir'} = $form->get_value("dir");
26         &find_clash($zinfo, $pkg) &&
27                 $form->validate_redirect("edit_pkg.cgi",
28                                          [ [ "dir", $text{'pkg_eclash'} ] ]);
29
30         # Save the zone settings
31         if ($in{'new'}) {
32                 &create_zone_object($zinfo, $pkg);
33                 }
34         else {
35                 &modify_zone_object($zinfo, $pkg);
36                 }
37         }
38
39 &webmin_log($in{'new'} ? "create" : $in{'delete'} ? "delete" : "modify",
40             "pkg", $in{'old'} || $pkg->{'dir'}, $pkg);
41 &redirect("edit_zone.cgi?zone=$in{'zone'}");
42