Handle hostnames with upper-case letters
[webmin.git] / ldap-server / down_acl.cgi
1 #!/usr/local/bin/perl
2 # Move an access control rule down (later)
3
4 require './ldap-server-lib.pl';
5 &local_ldap_server() == 1 || &error($text{'slapd_elocal'});
6 $access{'acl'} || &error($text{'acl_ecannot'});
7 &ReadParse();
8
9 &lock_slapd_files();
10
11 if (&get_config_type() == 1) {
12         # Move down in old-style config
13         $conf = &get_config();
14         @access = &find("access", $conf);
15         ($access[$in{'idx'}+1], $access[$in{'idx'}]) =
16                 ($access[$in{'idx'}], $access[$in{'idx'}+1]);
17         &save_directive($conf, "access", @access);
18         &flush_file_lines($config{'config_file'});
19         }
20 else {
21         # Move down in LDIF config
22         $defdb = &get_default_db();
23         $conf = &get_ldif_config();
24         @access = &find_ldif("olcAccess", $conf, $defdb);
25         ($access[$in{'idx'}+1], $access[$in{'idx'}]) =
26                 ($access[$in{'idx'}], $access[$in{'idx'}+1]);
27         if ($access[$in{'idx'}]->{'values'}->[0] =~ /^\{\d+\}to/ &&
28             $access[$in{'idx'}+1]->{'values'}->[0] =~ /^\{\d+\}to/) {
29                 # Swap indexes too
30                 ($access[$in{'idx'}]->{'values'}->[0],
31                  $access[$in{'idx'}+1]->{'values'}->[0]) = 
32                         ($access[$in{'idx'}+1]->{'values'}->[0],
33                          $access[$in{'idx'}]->{'values'}->[0]);
34                 }
35         &save_ldif_directive($conf, "olcAccess", $defdb, @access);
36         &flush_file_lines();
37         }
38
39 &unlock_slapd_files();
40
41 &webmin_log("down", "access", $p->{'what'});
42 &redirect("edit_acl.cgi");
43