roxen.lists.pike.general

Subject Author Date
Re: Protocol.LDAP not working in 7.8? Dan Nelson <dnelson[at]allantgroup[dot]com> 13-08-2009
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>