In the last episode (Aug 12), Dominik Niehus said:
> i have a strange problem with LDAP module in Pike 7.8.316
>
> my simple test program ldap_test.pike :
> void main () {
> object ldap = Protocols.LDAP.client("ldap://127.0.0.1");
> write("Ldap %O\n", ldap);
> ldap->bind("cn=admin,dc=test,dc=de","save",3);
> write("i =" + " " + "Error Strings: " + ldap ->error_string() +
"\n");
> ldap->set_basedn("ou=org,dc=test,dc=de");
> ldap->set_scope(2);
> object test = ldap->search("(&(uid=test01)(objectclass=person))");
> write("Search: %O\n", test);
> write("Error Strings: " + ldap ->error_string() + "\n");
> write("count:" + test->count_entries() + "\n");
> write("Result: %O\n", test->fetch(1));
> }
The index argument to fetch() seems to start at 1 in 7.6, and 0 in 7.8. If
your search returns only one entry, fetch(1) is out of range and returns
zero.
There seems to be other issues with 7.8's ldap module. Trying to fetch
always throws an error parsing the schema. I tried against Novell
eDirectory, Lotus Domino, and IBM Tivoli Directory Server implementations
and failed each time:
(<dan[at]dan.16>) /usr/tmp/pike/build/freebsd-7.2-stable-i386> ./test-pike
Pike v7.8 release 337 running Hilfe v3.5 (Incremental Pike Frontend)
> Protocols.LDAP.client("ldap://domino/??sub")->search("(cn=*nelson*)")->fetch();
Error in attributeTypes when querying schema: Invalid chars in quoted descr
after term "NAME" at pos 19: "( id-at-Domino.123 NAME '.123' SYNTAX
1.3.6.1.4.1.1466.115.121.1.15 )"
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:2226:
Protocols.LDAP.client()->parse_qdescr("quoted descr")
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:2245:
Protocols.LDAP.client()->parse_schema_terms("'.123' SYNTAX 1.3.6.1.4.1.146
6.115.121.1.15 )",mapping[13],"Error in attributeTypes when querying schem
a: ")
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:2422:
Protocols.LDAP.client()->get_attr_type_descr("maildomain",UNDEFINED)
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:123:
Protocols.LDAP.client()->get_attr_decoder("maildomain")
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:327:
Protocols.LDAP.client()->result()->decode_entry(mapping[9])
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:511:
Protocols.LDAP.client()->result()->fetch(UNDEFINED)
>
Protocols.LDAP.client("ldap://ibmtds/??sub")->search("(cn=*nelson*)")->fetch();
Invalid backslash escape "\) " in string "Identifies the entrys home mailing
address. This field is intended to include multiple lines, but each line within
the entry should be separated by a dollar sign (). To represent an actual
dollar sign () or backslash (\) within this text, use the escaped hex
values and c respectively.".
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/module.pmod:239:
Protocols.LDAP->ldap_decode_string("Identifies the entrys home mailing add
ress. This field is intended to include multiple lines, but each line wit
hin the entry should be separated by a dollar sign (). To represent
an actual d"+[106])
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:2197:
Protocols.LDAP.client()->parse_schema_terms("SYNTAX 1.3.6.1.4.1.1466.115.1
21.1.15 )",mapping[13],"Error in attributeTypes when querying schema: ")
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:2422:
Protocols.LDAP.client()->get_attr_type_descr("uid",UNDEFINED)
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:123:
Protocols.LDAP.client()->get_attr_decoder("uid")
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:327:
Protocols.LDAP.client()->result()->decode_entry(mapping[7])
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:511:
Protocols.LDAP.client()->result()->fetch(UNDEFINED)
>
Protocols.LDAP.client("ldap://edirectory/??sub")->search("(cn=*nelson*)")->fetch();
Error in attributeTypes when querying schema: Expected quoted string after term
"X-NDS" at pos 77: "( 2.16.840.1.113719.1.1.4.1.2 NAME 'ACL' SYNTAX
2.16.840.1.113719.1.1.5.1.17 X-NDS_NONREMOVABLE '1' X-NDS_FILTERED_REQUIRED '1'
)"
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:2187:
Protocols.LDAP.client()->parse_qdstring("quoted string")
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:2212:
Protocols.LDAP.client()->parse_schema_terms("_NONREMOVABLE '1' X-NDS_FILTE
RED_REQUIRED '1' )",mapping[13],"Error in attributeTypes when querying sch
ema: ")
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:2422:
Protocols.LDAP.client()->get_attr_type_descr("groupmembership",UNDEFINED)
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:123:
Protocols.LDAP.client()->get_attr_decoder("groupMembership")
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:327:
Protocols.LDAP.client()->result()->decode_entry(mapping[19])
test-install/pike/7.8.337/lib/modules/Protocols.pmod/LDAP.pmod/client.pike:511:
Protocols.LDAP.client()->result()->fetch(UNDEFINED)
>
--
Dan Nelson
<dnelson[at]allantgroup.com>
|