Server IP : 103.119.228.120 / Your IP : 3.133.117.107 Web Server : Apache System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64 User : nobody ( 99) PHP Version : 5.6.40 Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/local/share/perl5/Net/LDAP/ |
Upload File : |
# Copyright (c) 1997-2004 Graham Barr <gbarr@pobox.com>. All rights reserved. # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. package Net::LDAP::Search; use strict; use Net::LDAP::Message; use Net::LDAP::Entry; use Net::LDAP::Intermediate; use Net::LDAP::Filter; use Net::LDAP::Constant qw(LDAP_SUCCESS LDAP_DECODING_ERROR); our @ISA = qw(Net::LDAP::Message); our $VERSION = '0.14'; sub first_entry { # compat my $self = shift; $self->entry(0); } sub next_entry { # compat my $self = shift; $self->entry( defined $self->{CurrentEntry} ? $self->{CurrentEntry} + 1 : 0); } sub decode { my $self = shift; my $result = shift; return $self->SUPER::decode($result) if exists $result->{protocolOp}{searchResDone}; return $self->SUPER::decode($result) if exists $result->{protocolOp}{intermediateResponse}; my $data; @{$self}{qw(controls ctrl_hash)} = ($result->{controls}, undef); if ($data = delete $result->{protocolOp}{searchResEntry}) { my $entry = Net::LDAP::Entry->new; $entry->decode($data, raw => $self->{raw}) or $self->set_error(LDAP_DECODING_ERROR, 'LDAP decode error') and return; push(@{$self->{entries} ||= []}, $entry); $self->{callback}->($self, $entry) if (defined $self->{callback}); return $self; } elsif ($data = delete $result->{protocolOp}{searchResRef}) { push(@{$self->{reference} ||= []}, @$data); $self->{callback}->($self, bless $data, 'Net::LDAP::Reference') if (defined $self->{callback}); return $self; } $self->set_error(LDAP_DECODING_ERROR, 'LDAP decode error'); return; } sub entry { my $self = shift; my $index = shift || 0; # avoid undef warning and default to first entry my $entries = $self->{entries} ||= []; my $ldap = $self->parent; # There could be multiple response to a search request # but only the last will set {resultCode} until (exists $self->{resultCode} || (@{$entries} > $index)) { return unless $ldap->_recvresp($self->mesg_id) == LDAP_SUCCESS; } return unless (@{$entries} > $index); $self->{current_entry} = $index; # compat return $entries->[$index]; } sub all_entries { goto &entries } # compat sub count { my $self = shift; scalar entries($self); } sub shift_entry { my $self = shift; entry($self, 0) ? shift @{$self->{entries}} : undef; } sub pop_entry { my $self = shift; entry($self, 0) ? pop @{$self->{entries}} : undef; } sub sorted { my $self = shift; $self->sync unless exists $self->{resultCode}; return unless exists $self->{entries} && ref($self->{entries}); return @{$self->{entries}} unless @{$self->{entries}} > 1; require Net::LDAP::Util; map { $_->[0] } sort { my $v; my $i = 2; foreach my $attr (@_) { $v = ($a->[$i] ||= join("\000", @{$a->[0]->get_value($attr, asref => 1) || []})) cmp ($b->[$i] ||= join("\000", @{$b->[0]->get_value($attr, asref => 1) || []})) and last; $i++; } $v ||= ($a->[1] ||= Net::LDAP::Util::canonical_dn( $a->[0]->dn, reverse => 1, separator => "\0")) cmp ($b->[1] ||= Net::LDAP::Util::canonical_dn( $b->[0]->dn, reverse => 1, separator => "\0")); } map { [ $_ ] } @{$self->{entries}}; } sub references { my $self = shift; $self->sync unless exists $self->{resultCode}; return unless exists $self->{reference} && ref($self->{reference}); @{$self->{reference} || []} } sub as_struct { my $self = shift; my %result = map { ( $_->dn, ($_->{attrs} || $_->_build_attrs) ) } entries($self); return \%result; } sub entries { my $self = shift; $self->sync unless exists $self->{resultCode}; @{$self->{entries} || []} } package Net::LDAP::Reference; sub references { my $self = shift; @{$self} } 1;