Server IP : 195.201.23.43 / Your IP : 52.14.94.195 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/webmin/ldap-server/ |
Upload File : |
#!/usr/bin/perl # Create, update or delete one access control rule require './ldap-server-lib.pl'; &error_setup($text{'eacl_err'}); &local_ldap_server() == 1 || &error($text{'slapd_elocal'}); $access{'acl'} || &error($text{'acl_ecannot'}); &ReadParse(); # Get the current rule &lock_slapd_files(); if (&get_config_type() == 1) { $conf = &get_config(); @access = &find("access", $conf); $hasorder = 0; } else { $defdb = &get_default_db(); $conf = &get_ldif_config(); @access = &find_ldif("olcAccess", $conf, $defdb); $hasorder = 1; } # Get the ACL object if (!$in{'new'}) { $acl = $access[$in{'idx'}]; $p = &parse_ldap_access($acl); } else { $p = { }; } if ($in{'delete'}) { # Just take out of access list @access = grep { $_ ne $acl } @access; } else { # Validate and store inputs, starting with object if ($in{'what'} == 1) { $p->{'what'} = '*'; } elsif ($in{'what'} == 2) { $p->{'what'} = 'dn'.($in{'what_style'} ? '.'.$in{'what_style'} : ''). '=""'; } else { $in{'what_dn'} =~ /^\S+=\S.*$/ || &error($text{'eacl_edn'}); $p->{'what'} = 'dn'.($in{'what_style'} ? '.'.$in{'what_style'} : ''). '='.$in{'what_dn'}; } # Object filter and attribute list delete($p->{'filter'}); if ($in{'filter_on'}) { $in{'filter'} =~ /^\S+$/ || &error($text{'eacl_efilter'}); $p->{'filter'} = $in{'filter'}; } delete($p->{'attrs'}); if ($in{'attrs_on'}) { $in{'attrs'} =~ /^\S+$/ || &error($text{'eacl_eattrs'}); $p->{'attrs'} = $in{'attrs'}; } # Each granted user @by = ( ); for($i=0; defined($in{"wmode_$i"}); $i++) { next if ($in{"wmode_$i"} eq ""); local $by = { }; # Who are we granting if ($in{"wmode_$i"} eq "other") { # Other DN $in{"who_$i"} =~ /^\S+=\S.*$/ || &error(&text('eacl_ewho', $i+1)); $by->{'who'} = $in{"who_$i"}; } else { # Just selected $by->{'who'} = $in{"wmode_$i"}; } # Access level $in{"access_$i"} =~ /^\S+$/ || &error(&text('eacl_eaccess', $i+1)); $by->{'access'} = $in{"access_$i"}; # Additional attributes $by->{'control'} = [ &split_quoted_string($in{"control_$i"}) ]; push(@by, $by); } $p->{'by'} = \@by; # Set order to end of list, if we are using orders if ($hasorder && $in{'new'}) { $maxorder = -1; foreach $oa (@access) { $op = &parse_ldap_access($oa); if ($op->{'order'} > $maxorder) { $maxorder = $op->{'order'}; } } $p->{'order'} = $maxorder + 1; } # Add to access directive list if ($in{'new'}) { $acl = { 'name' => 'access', 'values' => [ ] }; push(@access, $acl); } &store_ldap_access($acl, $p); } # Write out access directives if (&get_config_type() == 1) { &save_directive($conf, "access", @access); } else { &save_ldif_directive($conf, "olcAccess", $defdb, @access); } &flush_file_lines(); &unlock_slapd_files(); # Log and return &webmin_log($in{'delete'} ? "delete" : $in{'new'} ? "create" : "modify", "access", $p->{'what'}); &redirect("edit_acl.cgi");Private