From: Chris R. <chr...@me...> - 2001-06-19 08:29:57
|
Graham Barr <gb...@po...> wrote: > ----- Forwarded message from "R. Reucher" <ren...@cp...> ----- > > Date: Tue, 19 Jun 2001 08:45:11 +0200 > To: gb...@po... > From: "R. Reucher" <ren...@cp...> > Subject: perl-ldap on OS/390 ?! > X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.4.3 i686) > > Hello Graham, > > I don't know who is the right person to contact (within the project), so > I'm contacting you... > > I'm trying to get your Perl LDAP module (0.23) working under OS/390 (the > "UNIX" side), but am having some serious trouble. I suspect it's caused > due to missing EBCDIC <-> ASCII conversion (as OS/390 is a pure EBCDIC > platform). I've written a short perl script to test perl-ldap (taken > from the Net::LDAP man page); it works fine under Linux (i386), but > fails with "No such object" on line 9 under OS/390: > > 1: #!/usr/local/bin/perl > 2: use Net::LDAP; > 3: $ldap = Net::LDAP->new('ldapsrv.ourdomain.com') or die "$@"; > 4: $ldap->bind(dn => 'cn=Directory Manager, o=OurCustomer', > 5: password => 'xxxxxxxx'); > 6: $mesg = $ldap->search(base => "o=OurCustomer", > 7: filter => "(uid=*)"); > 8: $ldap->unbind; > 9: $mesg->code && die $mesg->error; > 10: foreach $entry ($mesg->all_entries) { $entry->dump; } > > Note that I have to use perl 5.005p03, because that's the latest stable > version with EBCDIC support (5.6.x doesn't support it, 5.7.x is beta - > as I need the LDAP support for a serious project for one of our > customers, I decided to use the "stable" version). > > I already tried several things to convert the ASCII data to EBCDIC > (using the iconv utility) without success. What do you think: which data > needs to be converted at which point(s) ? > > Or is there any experience using perl-ldap under OS/390 already ? > > Would perl 5.7.x help in some way ? > > Sorry for all these questions, but I definitely need some help here. I'd > appreciate any hints or advises, thanks in advance ! > > Regards, > > Rene > -- > R. Reucher voice: +49/621/4803-174 > COMPAREX GmbH, VL40 fax: +49/621/4803-141 > Mannheimerstr. 105 e-mail: ren...@cp... > D-68535 Edingen-Neckarhausen > > > ----- End forwarded message ----- > One point you might need to consider is that many of the underlying string types used in BER (which is the ISO standard that describes how to encode the LDAP protocol for network transmission) are fundamentally ASCII-based. If you mess with that, you've broken LDAP and won't be able to talk to any LDAP servers :-( (Graham, Convert::ASN1's 'make test' should test that strings are being encoded using the correct character sets. Testing "PrintableString" would be a good start.) So basically everything that you pass into Net::LDAP objects *must* be ASCII or UTF-8 (if you are using LDAPv3.) I really don't know anything at all about perl on the 390, so this might be a stupid question: what character set is used in the variables in your program? If they're EBCDIC, you *need* to ASCII-ify (or UTF-8-ify) them first. Similarly, you *need* to EBCDIC-ify all values that come back from the LDAP server, as they are either ASCII-based or UTF-8 (if you are using LDAPv3) Cheers, Chris |