HEX
Server: Apache/2.4.65 (Debian)
System: Linux kubikelcreative 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User: www-data (33)
PHP: 8.4.13
Disabled: NONE
Upload Files
File: //usr/share/webmin/ldap-server/down_acl.cgi
#!/usr/bin/perl
# Move an access control rule down (later)

require './ldap-server-lib.pl';
&local_ldap_server() == 1 || &error($text{'slapd_elocal'});
$access{'acl'} || &error($text{'acl_ecannot'});
&ReadParse();

&lock_slapd_files();

if (&get_config_type() == 1) {
	# Move down in old-style config
	$conf = &get_config();
	@access = &find("access", $conf);
	($access[$in{'idx'}+1], $access[$in{'idx'}]) =
		($access[$in{'idx'}], $access[$in{'idx'}+1]);
	&save_directive($conf, "access", @access);
	&flush_file_lines($config{'config_file'});
	}
else {
	# Move down in LDIF config
	$defdb = &get_default_db();
	$conf = &get_ldif_config();
	@access = &find_ldif("olcAccess", $conf, $defdb);
	($access[$in{'idx'}+1], $access[$in{'idx'}]) =
		($access[$in{'idx'}], $access[$in{'idx'}+1]);
	if ($access[$in{'idx'}]->{'values'}->[0] =~ /^\{\d+\}to/ &&
	    $access[$in{'idx'}+1]->{'values'}->[0] =~ /^\{\d+\}to/) {
		# Swap indexes too
		($access[$in{'idx'}]->{'values'}->[0],
		 $access[$in{'idx'}+1]->{'values'}->[0]) = 
			($access[$in{'idx'}+1]->{'values'}->[0],
			 $access[$in{'idx'}]->{'values'}->[0]);
		}
	&save_ldif_directive($conf, "olcAccess", $defdb, @access);
	&flush_file_lines();
	}

&unlock_slapd_files();

&webmin_log("down", "access", $p->{'what'});
&redirect("edit_acl.cgi");