[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/site_perl/5.10.0/Net/LDAP/Intermediate/ -> SyncInfo.pm (source)

   1  # Copyright (c) 2008 Mathieu Parent <math.parent@gmail.com>. All rights reserved.
   2  # This program is free software; you can redistribute it and/or
   3  # modify it under the same terms as Perl itself.
   4  
   5  package Net::LDAP::Intermediate::SyncInfo;
   6  
   7  use vars qw(@ISA $VERSION);
   8  use Net::LDAP::Intermediate;
   9  
  10  @ISA = qw(Net::LDAP::Intermediate);
  11  $VERSION = "0.02";
  12  
  13  use Net::LDAP::ASN qw(syncInfoValue);
  14  use strict;
  15  
  16  sub init {
  17    my($self) = @_;
  18  
  19    if (exists $self->{responseValue}) {
  20      $self->{asn} = $syncInfoValue->decode(delete $self->{responseValue});
  21    } else {
  22      $self->{asn} = {};
  23      $self->{asn}{newcookie} =
  24        delete $self->{newcookie} if exists $self->{newcookie};
  25      $self->{asn}{refreshDelete} =
  26        delete $self->{refreshDelete} if exists $self->{refreshDelete};
  27      $self->{asn}{refreshPresent} =
  28        delete $self->{refreshPresent} if exists $self->{refreshPresent};
  29      $self->{asn}{syncIdSet} =
  30        delete $self->{syncIdSet} if exists $self->{syncIdSet};
  31    }
  32    #$self->{asn}{refreshDelete}{refreshDone} defaults to TRUE
  33    if(defined($self->{asn}{refreshDelete})) {
  34      $self->{asn}{refreshDelete}{refreshDone} =
  35        defined($self->{asn}{refreshDelete}{refreshDone})
  36        ? $self->{asn}{refreshDelete}{refreshDone}
  37        : 1;
  38    }
  39    #$self->{asn}{refreshPresent}{refreshDone} defaults to TRUE
  40    if(defined($self->{asn}{refreshPresent})) {
  41      $self->{asn}{refreshPresent}{refreshDone} =
  42        defined($self->{asn}{refreshPresent}{refreshDone})
  43        ? $self->{asn}{refreshPresent}{refreshDone}
  44        : 1;
  45    }
  46    #$self->{asn}{syncIdSet}{refreshDeletes} defaults to FALSE
  47    if(defined($self->{asn}{syncIdSet})) {
  48      $self->{asn}{syncIdSet}{refreshDeletes} =
  49        defined($self->{asn}{syncIdSet}{refreshDeletes})
  50        ? $self->{asn}{syncIdSet}{refreshDeletes}
  51        : 0;
  52    }
  53  
  54    $self;
  55  }
  56  
  57  sub newcookie {
  58    my $self = shift;
  59    @_ ? ($self->{asn}{newcookie}=shift)
  60       : $self->{asn}{newcookie};
  61    $self->{asn}{cookie};
  62  }
  63  
  64  sub responseValue {
  65    my $self = shift;
  66  
  67    exists $self->{responseValue}
  68      ? $self->{responseValue}
  69      : $self->{responseValue} = $syncInfoValue->encode($self->{asn});
  70  }
  71  
  72  1;
  73  
  74  
  75  __END__
  76  
  77  =head1 NAME
  78  
  79  Net::LDAP::Intermediate::SyncInfo - LDAPv3 Sync Info Message object
  80  
  81  =head1 SYNOPSIS
  82  
  83   use Net::LDAP;
  84   use Net::LDAP::Control::SyncRequest;
  85   use Net::LDAP::Constant qw(
  86    LDAP_SYNC_REFRESH_ONLY
  87    LDAP_SYNC_REFRESH_AND_PERSIST
  88    LDAP_SUCCESS );
  89  
  90   $ldap = Net::LDAP->new( "ldap.mydomain.eg" );
  91  
  92   $req = Net::LDAP::Control::SyncRequest->new( mode => LDAP_SYNC_REFRESH_ONLY );
  93   my $mesg = $ldap->search(base=> 'dc=mydomain,dc='eg',
  94                            scope    => 'sub',
  95                            control  => [ $req ],
  96                            callback => \&searchCallback, # call for each entry
  97                            filter   => "(objectClass=*)",
  98                            attrs    => [ '*']);
  99   sub searchCallback {
 100     my $message = shift;
 101     my $entry = shift;
 102     my @controls = $message->control;
 103  
 104     if($controls[0]->isa('Net::LDAP::Control::SyncState')) {
 105       print "Received Sync State Control\n";
 106       print $entry->dn()."\n";
 107       print 'State: '.$controls[0]->state."\n".', entryUUID: '.$controls[0]->entryUUID.', cookie: '.$controls[0]->cookie;
 108     } elsif($controls[0]->isa('Net::LDAP::Control::SyncDone')) {
 109       print "Received Sync Done Control\n";
 110       print 'Cookie: '.$controls[0]->cookie.', refreshDeletes: '.$controls[0]->refreshDeletes;
 111     }
 112   }
 113  
 114  =head1 DESCRIPTION
 115  
 116  C<Net::LDAP::Intermediate::SyncInfo> provides an interface for the creation and
 117  manipulation of objects that represent the C<Sync Info Message> as described
 118  by RFC 4533.
 119  
 120  =head1 CONSTRUCTOR ARGUMENTS
 121  
 122  In addition to the constructor arguments described in
 123  L<Net::LDAP::Intermediate> the following are provided.
 124  
 125  =over 4
 126  
 127  =item TODO
 128  
 129  =back
 130  
 131  =head1 METHODS
 132  
 133  As with L<Net::LDAP::Intermediate> each constructor argument
 134  described above is also avaliable as a method on the object which will
 135  return the current value for the attribute if called without an argument,
 136  and set a new value for the attribute if called with an argument.
 137  
 138  =head1 SEE ALSO
 139  
 140  L<Net::LDAP>,
 141  L<Net::LDAP::Intermediate>,
 142  L<Net::LDAP::Control>,
 143  L<Net::LDAP::Control::SyncRequest>,
 144  L<Net::LDAP::Control::SyncState>,
 145  http://www.ietf.org/rfc/rfc4533.txt
 146  
 147  =head1 AUTHOR
 148  
 149  Mathieu Parent E<lt>math.parent@gmail.comE<gt>
 150  
 151  Please report any bugs, or post any suggestions, to the perl-ldap mailing list
 152  E<lt>perl-ldap@perl.orgE<gt>
 153  
 154  =head1 COPYRIGHT
 155  
 156  Copyright (c) 2008 Mathieu Parent. All rights reserved. This program is
 157  free software; you can redistribute it and/or modify it under the same
 158  terms as Perl itself.
 159  
 160  =cut
 161  


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1