Revision 8821
Added by Jing Tao over 10 years ago
src/perl/ldapweb.cgi | ||
---|---|---|
1638 | 1638 |
} else { |
1639 | 1639 |
debug("Remove the attribute successfully and write a new increased value back"); |
1640 | 1640 |
if($existingHighUid) { |
1641 |
debug("exiting high uid exists ======================================="); |
|
1641 | 1642 |
if($uidNumber <= $existingHighUid ) { |
1642 | 1643 |
debug("The stored uidNumber $uidNumber is less than or equals the used uidNumber $existingHighUid, so we will use the new number which is $existingHighUid+1"); |
1643 | 1644 |
$uidNumber = $existingHighUid +1; |
... | ... | |
1667 | 1668 |
|
1668 | 1669 |
my $high; |
1669 | 1670 |
my $ldap; |
1671 |
my $storedUidNumber; |
|
1670 | 1672 |
|
1671 | 1673 |
|
1672 | 1674 |
#if main ldap server is down, a html file containing warning message will be returned |
... | ... | |
1675 | 1677 |
$ldap->start_tls( verify => 'require', |
1676 | 1678 |
cafile => $ldapServerCACertFile); |
1677 | 1679 |
my $bindresult = $ldap->bind( version => 3, dn => $ldapUsername, password => $ldapPassword); |
1680 |
my $mesg = $ldap->search(base => $dn_store_next_uid, filter => '(objectClass=*)'); |
|
1681 |
if ($mesg->count() > 0) { |
|
1682 |
debug("Find the cn - $dn_store_next_uid"); |
|
1683 |
my $entry = $mesg->pop_entry; |
|
1684 |
$storedUidNumber = $entry->get_value($attribute_name_store_next_uid); |
|
1685 |
} |
|
1678 | 1686 |
my $uids = $ldap->search( |
1679 | 1687 |
base => "dc=ecoinformatics,dc=org", |
1680 | 1688 |
scope => "sub", |
... | ... | |
1685 | 1693 |
my @uids; |
1686 | 1694 |
if ($uids->count > 0) { |
1687 | 1695 |
foreach my $uid ($uids->all_entries) { |
1688 |
push @uids, $uid->get_value('uidNumber'); |
|
1696 |
if($storedUidNumber) { |
|
1697 |
if( $uid->get_value('uidNumber') >= $storedUidNumber) { |
|
1698 |
push @uids, $uid->get_value('uidNumber'); |
|
1699 |
} |
|
1700 |
} else { |
|
1701 |
push @uids, $uid->get_value('uidNumber'); |
|
1702 |
} |
|
1689 | 1703 |
} |
1690 | 1704 |
} |
1691 | 1705 |
|
1692 |
@uids = sort { $b <=> $a } @uids; |
|
1693 |
$high = $uids[0]; |
|
1706 |
if(@uids) { |
|
1707 |
@uids = sort { $b <=> $a } @uids; |
|
1708 |
$high = $uids[0]; |
|
1709 |
} |
|
1694 | 1710 |
debug("the highest exiting uidnumber is $high"); |
1695 | 1711 |
$ldap->unbind; # take down session |
1696 | 1712 |
} |
Also available in: Unified diff
For the existing uidnumber, we decrease the size of vector for sorting.