Thread Net::LDAP::Intermediate::SynchInfo (2 answers)
Opened by dkluenter at 2009-06-28 19:32

dkluenter
 2009-06-28 19:32
#122711 #122711
User since
2009-06-28
3 Artikel
BenutzerIn
[default_avatar]
Ich versuche gerade einen einen externen Trigger zu konstruieren um beim Eintritt definierter Ereignisse, z.B. Modify definierter Attribute, einen Alarm auszulösen, hierzu bietet sich ja Net::LDAP::Intermediate an, sofern der LDAP-Server RFC 4533 fähig ist. Nun habe ich perldoc Net::LDAP::Intermediate::SynchInfo eins zu eins übernommen, mit Ausnahme des Hosts, der Base und ich habe einen Bind hinzugefügt. Perl-5.10 macht aber Ärger:

:~> perl rfc4533-test.pl
Can't call method "isa" on an undefined value at rfc4533-test.pl line 26, <DATA>
line 872.
Das vollständige Script sieht wie folgt aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use Net::LDAP;
use Net::LDAP::Control::SyncRequest;
use Net::LDAP::Constant qw(
LDAP_SYNC_REFRESH_ONLY
LDAP_SYNC_REFRESH_AND_PERSIST
LDAP_SUCCESS );

$ldap = Net::LDAP->new( "localhost" );
$ldap->bind ( "cn=replicator,o=avci,c=de",
password => 'xxx' );

$req = Net::LDAP::Control::SyncRequest->new( mode => LDAP_SYNC_REFRESH_ONLY );
my $mesg = $ldap->search(base=> 'o=avci,c=de',
scope => 'sub',
control => [ $req ],
callback => \&searchCallback, # call for each entry
filter => "(objectClass=*)",
attrs => [ '*']);
sub searchCallback {
my $message = shift;
my $entry = shift;
my @controls = $message->control;

if($controls[0]->isa('Net::LDAP::Control::SyncState')) {
print "Received Sync State Control\n";
print $entry->dn()."\n";
print 'State: '.$controls[0]->state."\n".', entryUUID: '.$controls[0]->entryUUID.', cookie: '.$controls[0]->cookie;
}
elsif($controls[0]->isa('Net::LDAP::Control::SyncDone')) {
print "Received Sync Done Control\n";
print 'Cookie: '.$controls[0]->cookie.', refreshDeletes: '.$controls[0]->refreshDeletes;
}
}


Die Quelle des Fehlers ist klar, if $controls[0] ist undefined, dementsprechend wird auch $message->control nicht herangezogen, Warum aber nicht? Wo liegt der Fehler, kann mir da jemand auf die Sprünge helfen, bevor ich einen Bug-Report einsende?

-D.

View full thread Net::LDAP::Intermediate::SynchInfo