From 094ca96844842928810f14844413109fc6cdd890 Mon Sep 17 00:00:00 2001 From: Eduardo Chappa Date: Sun, 3 Feb 2013 00:59:38 -0700 Subject: Initial Alpine Version --- ldap/binaries/debug/ldap32.dll | Bin 0 -> 204800 bytes ldap/binaries/debug/ldap32.lib | Bin 0 -> 81202 bytes ldap/binaries/debug/libldap.dll | Bin 0 -> 279236 bytes ldap/binaries/debug/libldap.lib | Bin 0 -> 14336 bytes ldap/binaries/debug/ltest.exe | Bin 0 -> 64892 bytes ldap/binaries/debug/ltest32.exe | Bin 0 -> 92160 bytes ldap/binaries/release/ldap32.dll | Bin 0 -> 138752 bytes ldap/binaries/release/ldap32.lib | Bin 0 -> 79332 bytes ldap/binaries/release/libldap.dll | Bin 0 -> 106496 bytes ldap/binaries/release/libldap.lib | Bin 0 -> 14336 bytes ldap/disptmpl.cfg | 677 ++++++++++++++++++++++++++++++++++++++ ldap/inckit/disptmpl.h | 330 +++++++++++++++++++ ldap/inckit/lber.h | 184 +++++++++++ ldap/inckit/ldap.h | 592 +++++++++++++++++++++++++++++++++ ldap/inckit/msdos.h | 133 ++++++++ ldap/inckit/proto-lb.h | 102 ++++++ ldap/inckit/proto-ld.h | 276 ++++++++++++++++ ldap/inckit/srchpref.h | 106 ++++++ ldap/kbind.c | 368 +++++++++++++++++++++ ldap/ldap32.gid | Bin 0 -> 8628 bytes ldap/ldap32.hlp | Bin 0 -> 72697 bytes ldap/ldfilter.cfg | 105 ++++++ ldap/ldfriend.cfg | 242 ++++++++++++++ ldap/lib | 1 + ldap/libldap.hlp | Bin 0 -> 76104 bytes ldap/libldap.mak | 667 +++++++++++++++++++++++++++++++++++++ ldap/readme.txt | 218 ++++++++++++ ldap/srchpref.cfg | 153 +++++++++ 28 files changed, 4154 insertions(+) create mode 100755 ldap/binaries/debug/ldap32.dll create mode 100755 ldap/binaries/debug/ldap32.lib create mode 100755 ldap/binaries/debug/libldap.dll create mode 100755 ldap/binaries/debug/libldap.lib create mode 100755 ldap/binaries/debug/ltest.exe create mode 100755 ldap/binaries/debug/ltest32.exe create mode 100755 ldap/binaries/release/ldap32.dll create mode 100755 ldap/binaries/release/ldap32.lib create mode 100755 ldap/binaries/release/libldap.dll create mode 100755 ldap/binaries/release/libldap.lib create mode 100755 ldap/disptmpl.cfg create mode 100755 ldap/inckit/disptmpl.h create mode 100755 ldap/inckit/lber.h create mode 100755 ldap/inckit/ldap.h create mode 100755 ldap/inckit/msdos.h create mode 100755 ldap/inckit/proto-lb.h create mode 100755 ldap/inckit/proto-ld.h create mode 100755 ldap/inckit/srchpref.h create mode 100755 ldap/kbind.c create mode 100644 ldap/ldap32.gid create mode 100755 ldap/ldap32.hlp create mode 100755 ldap/ldfilter.cfg create mode 100755 ldap/ldfriend.cfg create mode 120000 ldap/lib create mode 100755 ldap/libldap.hlp create mode 100755 ldap/libldap.mak create mode 100755 ldap/readme.txt create mode 100755 ldap/srchpref.cfg (limited to 'ldap') diff --git a/ldap/binaries/debug/ldap32.dll b/ldap/binaries/debug/ldap32.dll new file mode 100755 index 00000000..e9a734b2 Binary files /dev/null and b/ldap/binaries/debug/ldap32.dll differ diff --git a/ldap/binaries/debug/ldap32.lib b/ldap/binaries/debug/ldap32.lib new file mode 100755 index 00000000..e5e1231e Binary files /dev/null and b/ldap/binaries/debug/ldap32.lib differ diff --git a/ldap/binaries/debug/libldap.dll b/ldap/binaries/debug/libldap.dll new file mode 100755 index 00000000..52688f37 Binary files /dev/null and b/ldap/binaries/debug/libldap.dll differ diff --git a/ldap/binaries/debug/libldap.lib b/ldap/binaries/debug/libldap.lib new file mode 100755 index 00000000..8ae6890a Binary files /dev/null and b/ldap/binaries/debug/libldap.lib differ diff --git a/ldap/binaries/debug/ltest.exe b/ldap/binaries/debug/ltest.exe new file mode 100755 index 00000000..1d7cd6ca Binary files /dev/null and b/ldap/binaries/debug/ltest.exe differ diff --git a/ldap/binaries/debug/ltest32.exe b/ldap/binaries/debug/ltest32.exe new file mode 100755 index 00000000..09a1ac72 Binary files /dev/null and b/ldap/binaries/debug/ltest32.exe differ diff --git a/ldap/binaries/release/ldap32.dll b/ldap/binaries/release/ldap32.dll new file mode 100755 index 00000000..2284f9f8 Binary files /dev/null and b/ldap/binaries/release/ldap32.dll differ diff --git a/ldap/binaries/release/ldap32.lib b/ldap/binaries/release/ldap32.lib new file mode 100755 index 00000000..506dedd3 Binary files /dev/null and b/ldap/binaries/release/ldap32.lib differ diff --git a/ldap/binaries/release/libldap.dll b/ldap/binaries/release/libldap.dll new file mode 100755 index 00000000..16cb6ade Binary files /dev/null and b/ldap/binaries/release/libldap.dll differ diff --git a/ldap/binaries/release/libldap.lib b/ldap/binaries/release/libldap.lib new file mode 100755 index 00000000..8ae6890a Binary files /dev/null and b/ldap/binaries/release/libldap.lib differ diff --git a/ldap/disptmpl.cfg b/ldap/disptmpl.cfg new file mode 100755 index 00000000..f08e3b27 --- /dev/null +++ b/ldap/disptmpl.cfg @@ -0,0 +1,677 @@ +########################################################################## +# LDAP display templates +########################################################################## + +# +# Version must be 1 +# +Version 1 + +########################################################################## +# U-M Person template +########################################################################## +# +# template name and plural name come first +"U-M Person" +"U-M People" + +# name of the icon that is associated with this template +"person icon" + +# blank-separated list of template options ("" for none) +# addable - end-user should be allowed to add these types of entries +# modrdn - end-user can change the name of these entries +# altview - this template is referred to in another template's +# "linkact" item +"addable" + +# +# objectclass list +umichPerson person +END + +# +# name of attribute to authenticate as ("" means auth as this entry) +"" + +# +# default attribute name to use when forming RDN of a new entry +# +cn + +# +# default location when adding new entries (DN; "" means no default) +"o=University of Michigan, c=US" + +# +# rules used to define default values for new entries +END + +# +# +# list of items for display +# each line is either: +# item (type) (attribute) (attr name) (extra args...) +# to define an item or +# samerow +# to keep the next item on the same row as the previous +# +# valid types are: +# cis - case ignore string +# mls - multiline string +# dn - +# mail - case ignore string that contains an RFC822 mail address +# bool - boolean value +# jpeg - inlined JPEG image +# jpegbtn - JPEG image button +# fax - inlined Fax image +# faxbtn - Fax image button +# audiobtn - audio button +# time - time value +# date - time value displayed as a date only +# url - labeled URL for links to items in WWW +# searchact - search action +# linkact - link to another template +# +# valid options (comma separated list appended to the type) are: +# ro - attribute is read only; don't let user edit it +# sort - order the values of this attribute +# 1val - disallow entry of multiple values +# required - this attribute should have at least one value +# hide - don't show this item if attribute has no values +# hideiffalse - hide item if value is FALSE (for type 'bool' only) +# +item jpegbtn "View Photo" jpegPhoto "Next Photo" +item audiobtn "Play Sound" audio +item cis,ro,sort "Also Known As" cn +item mail "E-Mail Address" mail +item cis "Work Phone" telephoneNumber +item cis "Fax Number" facsimileTelephoneNumber +item cis "Pager Number" pager +item mls "Work Address" postalAddress +item cis,sort "Title" title +item cis,ro "Uniqname" uid +item mls "Description" multiLineDescription +item cis "Home Phone" homePhone +item mls "Home Address" homePostalAddress +item url "More Info (URL)" labeledURL +item dn,sort "See Also" seeAlso +item cis "Favorite Beverage" drink +item cis "Notice" notice +item bool,hideiffalse "On Vacation" onVacation +item mls,1val "Vacation Message" vacationMessage +item bool,hideiffalse "Do Not Allow Updates" noBatchUpdates +item time,ro "Last Modified" lastModifiedTime +item dn,ro "Modified By" lastModifiedBy +item searchact "Find Groups Added To" "" "-dnt" "(&(objectclass=rfc822mailgroup)(member=%v))" "multiLineDescription" "Description" "" +item searchact "List Owned Groups" "" "-dnt" "(&(objectclass=rfc822mailgroup)(owner=%v))" "title" "Title" "" +item linkact "Other Addresses" "" "other addresses" +END + + +########################################################################## +# Person template +########################################################################## +"Person" +"People" +"person icon" + +# template options +addable +# +# objectclass list +person +END +# name of attribute to authenticate as +"" + +# default attribute name to use when forming RDN of a new entry +# +cn + +# default location when adding new entries +"" + +# +# rules used to define default values for new entries +END + +# +# list of items for display +item jpegbtn "View Photo" jpegPhoto "Next Photo" +item audiobtn "Play Sound" audio +item cis,sort "Also Known As" cn +item cis,sort "Title" title +item mls "Work Address" postalAddress +item cis "Work Phone" telephoneNumber +item cis "Fax Number" facsimileTelephoneNumber +item cis "Pager Number" pager +item mls "Home Address" homePostalAddress +item cis "Home Phone" homePhone +item cis "User ID" uid +item mail "E-Mail Address" mail +item cis "Description" description +item cis "Favorite Beverage" drink +item dn,sort "See Also" seeAlso +item time,ro "Last Modified" lastModifiedTime +item dn,ro "Modified By" lastModifiedBy +END + + +########################################################################## +# Group template +########################################################################## +"Group" +"Groups" +"group icon" + +# template options +addable modrdn + +# objectclass list +rfc822MailGroup +END + +# name of attribute to authenticate as +"owner" + +# default attribute name to use when forming RDN of a new entry +# +cn + +# default location when adding new entries +"ou=User Groups, ou=Groups, o=University of Michigan, c=US" + +# +# rules used to define default values for new entries +constant "associatedDomain" "umich.edu" +constant "joinable" "FALSE" +addersdn "owner" +addersdn "member" +addersdn "errorsTo" +addersdn "requestsTo" +END + +# +# +# list of items for display +# each line is either: +# item (type) (attribute) (attr name) (extra args...) +# to define an item or +# samerow +# +# list of items for display +item cis,sort "Also Known As" cn +item mls "Description" multiLineDescription +item cis "Phone Number" telephoneNumber +item cis "Fax Number" facsimileTelephoneNumber +item mls "Address" postalAddress +item dn,required,sort "Owner" owner +item url "More Info (URL)" labeledURL +item dn,sort "See Also" seeAlso +item dn,sort "Errors To" errorsTo +item dn,sort "Requests To" requestsTo +item cis "Associated Domain" associatedDomain +item cis "Moderator" moderator +item bool "Suppress 'No E-Mail Address' Errors" suppressNoEmailError +item bool "Others May Join" joinable +item dn,sort "X.500 Members" member +item mail,sort "E-Mail Errors To" rfc822ErrorsTo +item mail,sort "E-Mail Requests To" rfc822RequestsTo +item mail,sort "E-Mail Members" mail +item cis "Notice" notice +item time,ro "Last Modified" lastModifiedTime +item dn,ro "Modified By" lastModifiedBy +item searchact "Subscribers" "" "-dnt" "memberOfGroup=%v" "title" "Title" "joinable" +item verifyact "Verify Members" "member" "mail" "E-Mail Address" +END + +########################################################################## +# Organization template +########################################################################## +"Organization" +"Organizations" +"organization icon" + +# template options +"" + +# objectclass list +organization +END + +# name of attribute to authenticate as +"" + +# default attribute name to use when forming RDN of a new entry +o + +# default location when adding new entries +"" + +# rules used to define default values for new entries +constant "o" "foo" +END + +# +# +# list of items for display +# each line is either: +# item (type) (attribute) (attr name) (extra args...) +# to define an item or +# samerow +# +# list of items for display +item cis,sort "Name" o +item cis "Location" l +item mls "Address" postalAddress +item cis "Phone Number" telephoneNumber +item cis "Fax Number" facsimileTelephoneNumber +item cis "Description" description +item dn,sort "See Also" seeAlso +item time,ro "Last Modified" lastModifiedTime +item dn,ro "Modified By" lastModifiedBy +END + + +########################################################################## +# Service template +########################################################################## +"Service" +"Services" +"service icon" + +# template options +"addable" + +# objectclass list +service +END + +# name of attribute to authenticate as +"owner" + +# default attribute name to use when forming RDN of a new entry +cn + +# default location when adding new entries +"ou=Services, o=University of Michigan, c=US" + +# rules used to define default values for new entries +addersdn "owner" +END + +# +# +# list of items for display +# each line is either: +# item (type) (attribute) (attr name) (extra args...) +# to define an item or +# samerow +# +# list of items for display +item jpegbtn "View Photo" jpegPhoto +item cis,sort "Name" cn +item mls "Description" multilineDescription +item cis "Provider" provider +item cis,sort "Service Area" serviceArea +item mail "E-mail Address" mail +item cis "Phone" telephoneNumber +item cis "Fax Number" facsimileTelephoneNumber +item mls "Postal Address" postalAddress +item cis "Hours" hoursOfOperation +item url "More Info (URL)" labeledURL +item dn,sort "Depends On" dependentUpon +item dn,sort "See Also" seeAlso +item cis,sort "Platform" platform +item cis,sort "Product" product +item cis,sort "Keywords" keywords +item cis "FCE Rating" serviceRating +item date "Date Rated" ratingTime +item mls "Rating Description" ratingDescription +item time,ro "Last Modified" lastModifiedTime +item dn,ro "Modified By" lastModifiedBy +item dn,required,sort "Owner" owner +END + + +########################################################################## +# Organizational Role template +########################################################################## +"Organizational Role" +"Organizational Roles" +"person icon" + +# template options +"" + +# objectclass list +organizationalRole +END + +# name of attribute to authenticate as +"" + +# default attribute name to use when forming RDN of a new entry +cn + +# default location when adding new entries +"" + +# rules used to define default values for new entries +END + +# +# +# list of items for display +# each line is either: +# item (type) (attribute) (attr name) (extra args...) +# to define an item or +# samerow +# +# list of items for display +item cis,sort "Name" cn +item cis "Description" description +item dn "Role Occupant" roleOccupant +item dn,sort "See Also" seeAlso +item time,ro "Last Modified" lastModifiedTime +item dn,ro "Modified By" lastModifiedBy +END + + +########################################################################## +# Organizational Unit template +########################################################################## +"Organizational Unit" +"Organizational Units" +"organization icon" + +# template options +"" + +# objectclass list +organizationalUnit +END + +# name of attribute to authenticate as +"" + +# default attribute name to use when forming RDN of a new entry +cn + +# default location when adding new entries +"" + +# rules used to define default values for new entries +END + +# Item list +item cis "Organization Unit Name" ou +item cis "Title" title +item time,ro "Last Modified" lastModifiedTime +item dn,ro "Modified By" lastModifiedBy +END + + + +########################################################################## +# Application Entity template +########################################################################## +"Application Entity" +"Application Entities" +"application icon" + +# template options +"" + +# objectclass list +applicationEntity +END + +# name of attribute to authenticate as +"" + +# default attribute name to use when forming RDN of a new entry +cn + +# default location when adding new entries +"" + +# rules used to define default values for new entries +END + +# Item list +item cis,sort "Name" cn +item cis "Location" l +item cis "Description" description +item time,ro "Last Modified" lastModifiedTime +item dn,ro "Modified By" lastModifiedBy +END + +########################################################################## +# Document template +########################################################################## +"Document" +"Documents" +"document icon" + +# template options +"" + +# objectclass list +document +umichDocument +END + +# name of attribute to authenticate as +"" + +# default attribute name to use when forming RDN of a new entry +cn + +# default location when adding new entries +"" + +# rules used to define default values for new entries +END + +# +# Item list +item cis "Document ID" documentIdentifier +item cis "Title" documentTitle +item cis "Series Title" documentSeriesTitle +item cis "Version" documentVersion +item cis,sort "Service Area" serviceArea +item mls "Abstract" multiLineAbstract +item url "More Info (URL)" labeledURL +item dn,sort "Availability" documentAvailable +item dn,sort "See Also" seeAlso +item cis,sort "Platform" platform +item cis,sort "Product" product +item cis,sort "Keyword" keywords +item dn,sort "Author" documentAuthor +item time,ro "Last Modified" lastModifiedTime +item dn,ro "Modified By" lastModifiedBy +item dn,required "Owner" owner +END + +########################################################################## +# Document description template +########################################################################## +"DocumentDescription" +"DocumentDescriptions" +"document description icon" + +# template options +"" + +# objectclass list +documentDescription +END + +# name of attribute to authenticate as +"" + +# default attribute name to use when forming RDN of a new entry +cn + +# default location when adding new entries +"" + +# rules used to define default values for new entries +END + +# +# Item list +item mls "Description" multilineDescription +item url "More Info (URL)" labeledURL +item time,ro "Last Modified" lastModifiedTime +item dn,ro "Modified By" lastModifiedBy +item dn,required "Owner" owner +END + +########################################################################## +# Image template +########################################################################## +"Image" +"Images" +"image icon" + +# template options +"" + +# objectclass list +image +END + +# name of attribute to authenticate as +"" + +# default attribute name to use when forming RDN of a new entry +cn + +# default location when adding new entries +"" + +# rules used to define default values for new entries +END + +# +# Item list +item cis "Name" cn +item mls "Description" multilineDescription +item jpegbtn "View Photo(s)" jpegPhoto +item cis "Citation" citation +item cis "Copyright" copyright +item cis "Keywords" keywords +item time,ro "Last Modified" lastModifiedTime +item dn,ro "Modified By" lastModifiedBy +item dn,required "Owner" owner +END + + + +########################################################################## +# Country template +########################################################################## +"Country" +"Countries" +"country icon" + +# template options +"" + +# objectclass list +friendlyCountry +END + +# name of attribute to authenticate as +"" + +# default attribute name to use when forming RDN of a new entry +c + +# default location when adding new entries +"" + +# rules used to define default values for new entries +END + +# Item list +item cis "Country Name" co +item cis "Country Code" c +item cis "Description" description +item time,ro "Last Modified" lastModifiedTime +item dn,ro "Modified By" lastModifiedBy +END + +########################################################################## +# Locality template +########################################################################## +"Locality" +"Localities" +"locality icon" + +# template options +"" + +# objectclass list +locality +END + +# name of attribute to authenticate as +"" + +# default attribute name to use when forming RDN of a new entry +l + +# default location when adding new entries +"" + +# rules used to define default values for new entries +END + +# +# Item list +item cis "Name" l +item time,ro "Last Modified" lastModifiedTime +item dn,ro "Modified By" lastModifiedBy +END + + +########################################################################## +# "Other Addresses" template +########################################################################## +"Others Addresses" +"Other Addresses" +"other addr icon" + +# template options +"altview" + +# objectclass list +END + +# name of attribute to authenticate as +"" + +# default attribute name to use when forming RDN of a new entry +"" + +# default location when adding new entries +"" + +# rules used to define default values for new entries +END + +# Item list +item cis "Street Address" streetAddress +item cis "Locality" l +item cis "State or Province" st +item cis "Postal Code" postalCode +item cis,hide "X.400 Address" mhsORAddresses +item cis,hide "X.400 Address" textEncodedORAddress +Item cis "Other Mailbox" otherMailbox +item time,ro "Last Modified" lastModifiedTime +item dn,ro "Modified By" lastModifiedBy +END diff --git a/ldap/inckit/disptmpl.h b/ldap/inckit/disptmpl.h new file mode 100755 index 00000000..d6e0a359 --- /dev/null +++ b/ldap/inckit/disptmpl.h @@ -0,0 +1,330 @@ +/* + * Copyright (c) 1993, 1994 Regents of the University of Michigan. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that this notice is preserved and that due credit is given + * to the University of Michigan at Ann Arbor. The name of the University + * may not be used to endorse or promote products derived from this + * software without specific prior written permission. This software + * is provided ``as is'' without express or implied warranty. + * + * disptmpl.h: display template library defines + * 7 March 1994 by Mark C Smith + */ + +#ifndef _DISPTMPL_H +#define _DISPTMPL_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#define LDAP_TEMPLATE_VERSION 1 + +/* + * general types of items (confined to most significant byte) + */ +#define LDAP_SYN_TYPE_TEXT 0x01000000L +#define LDAP_SYN_TYPE_IMAGE 0x02000000L +#define LDAP_SYN_TYPE_BOOLEAN 0x04000000L +#define LDAP_SYN_TYPE_BUTTON 0x08000000L +#define LDAP_SYN_TYPE_ACTION 0x10000000L + + +/* + * syntax options (confined to second most significant byte) + */ +#define LDAP_SYN_OPT_DEFER 0x00010000L + + +/* + * display template item syntax ids (defined by common agreement) + * these are the valid values for the ti_syntaxid of the tmplitem + * struct (defined below). A general type is encoded in the + * most-significant 8 bits, and some options are encoded in the next + * 8 bits. The lower 16 bits are reserved for the distinct types. + */ +#define LDAP_SYN_CASEIGNORESTR ( 1 | LDAP_SYN_TYPE_TEXT ) +#define LDAP_SYN_MULTILINESTR ( 2 | LDAP_SYN_TYPE_TEXT ) +#define LDAP_SYN_DN ( 3 | LDAP_SYN_TYPE_TEXT ) +#define LDAP_SYN_BOOLEAN ( 4 | LDAP_SYN_TYPE_BOOLEAN ) +#define LDAP_SYN_JPEGIMAGE ( 5 | LDAP_SYN_TYPE_IMAGE ) +#define LDAP_SYN_JPEGBUTTON ( 6 | LDAP_SYN_TYPE_BUTTON | LDAP_SYN_OPT_DEFER ) +#define LDAP_SYN_FAXIMAGE ( 7 | LDAP_SYN_TYPE_IMAGE ) +#define LDAP_SYN_FAXBUTTON ( 8 | LDAP_SYN_TYPE_BUTTON | LDAP_SYN_OPT_DEFER ) +#define LDAP_SYN_AUDIOBUTTON ( 9 | LDAP_SYN_TYPE_BUTTON | LDAP_SYN_OPT_DEFER ) +#define LDAP_SYN_TIME ( 10 | LDAP_SYN_TYPE_TEXT ) +#define LDAP_SYN_DATE ( 11 | LDAP_SYN_TYPE_TEXT ) +#define LDAP_SYN_LABELEDURL ( 12 | LDAP_SYN_TYPE_TEXT ) +#define LDAP_SYN_SEARCHACTION ( 13 | LDAP_SYN_TYPE_ACTION ) +#define LDAP_SYN_LINKACTION ( 14 | LDAP_SYN_TYPE_ACTION ) +#define LDAP_SYN_ADDDNACTION ( 15 | LDAP_SYN_TYPE_ACTION ) +#define LDAP_SYN_VERIFYDNACTION ( 16 | LDAP_SYN_TYPE_ACTION ) +#define LDAP_SYN_RFC822ADDR ( 17 | LDAP_SYN_TYPE_TEXT ) + + +/* + * handy macros + */ +#define LDAP_GET_SYN_TYPE( syid ) ((syid) & 0xFF000000L ) +#define LDAP_GET_SYN_OPTIONS( syid ) ((syid) & 0x00FF0000L ) + + +/* + * display options for output routines (used by entry2text and friends) + */ +/* + * use calculated label width (based on length of longest label in + * template) instead of contant width + */ +#define LDAP_DISP_OPT_AUTOLABELWIDTH 0x00000001L +#define LDAP_DISP_OPT_HTMLBODYONLY 0x00000002L + +/* + * perform search actions (applies to ldap_entry2text_search only) + */ +#define LDAP_DISP_OPT_DOSEARCHACTIONS 0x00000002L + +/* + * include additional info. relevant to "non leaf" entries only + * used by ldap_entry2html and ldap_entry2html_search to include "Browse" + * and "Move Up" HREFs + */ +#define LDAP_DISP_OPT_NONLEAF 0x00000004L + + +/* + * display template item options (may not apply to all types) + * if this bit is set in ti_options, it applies. + */ +#define LDAP_DITEM_OPT_READONLY 0x00000001L +#define LDAP_DITEM_OPT_SORTVALUES 0x00000002L +#define LDAP_DITEM_OPT_SINGLEVALUED 0x00000004L +#define LDAP_DITEM_OPT_HIDEIFEMPTY 0x00000008L +#define LDAP_DITEM_OPT_VALUEREQUIRED 0x00000010L +#define LDAP_DITEM_OPT_HIDEIFFALSE 0x00000020L /* booleans only */ + + + +/* + * display template item structure + */ +struct ldap_tmplitem { + unsigned long ti_syntaxid; + unsigned long ti_options; + char *ti_attrname; + char *ti_label; + char **ti_args; + struct ldap_tmplitem *ti_next_in_row; + struct ldap_tmplitem *ti_next_in_col; + void *ti_appdata; +}; + + +#define NULLTMPLITEM ((struct ldap_tmplitem *)0) + +#define LDAP_SET_TMPLITEM_APPDATA( ti, datap ) \ + (ti)->ti_appdata = (void *)(datap) + +#define LDAP_GET_TMPLITEM_APPDATA( ti, type ) \ + (type)((ti)->ti_appdata) + +#define LDAP_IS_TMPLITEM_OPTION_SET( ti, option ) \ + (((ti)->ti_options & option ) != 0 ) + + +/* + * object class array structure + */ +struct ldap_oclist { + char **oc_objclasses; + struct ldap_oclist *oc_next; +}; + +#define NULLOCLIST ((struct ldap_oclist *)0) + + +/* + * add defaults list + */ +struct ldap_adddeflist { + int ad_source; +#define LDAP_ADSRC_CONSTANTVALUE 1 +#define LDAP_ADSRC_ADDERSDN 2 + char *ad_attrname; + char *ad_value; + struct ldap_adddeflist *ad_next; +}; + +#define NULLADLIST ((struct ldap_adddeflist *)0) + + +/* + * display template global options + * if this bit is set in dt_options, it applies. + */ +/* + * users should be allowed to try to add objects of these entries + */ +#define LDAP_DTMPL_OPT_ADDABLE 0x00000001L + +/* + * users should be allowed to do "modify RDN" operation of these entries + */ +#define LDAP_DTMPL_OPT_ALLOWMODRDN 0x00000002L + +/* + * this template is an alternate view, not a primary view + */ +#define LDAP_DTMPL_OPT_ALTVIEW 0x00000004L + + +/* + * display template structure + */ +struct ldap_disptmpl { + char *dt_name; + char *dt_pluralname; + char *dt_iconname; + unsigned long dt_options; + char *dt_authattrname; + char *dt_defrdnattrname; + char *dt_defaddlocation; + struct ldap_oclist *dt_oclist; + struct ldap_adddeflist *dt_adddeflist; + struct ldap_tmplitem *dt_items; + void *dt_appdata; + struct ldap_disptmpl *dt_next; +}; + +#define NULLDISPTMPL ((struct ldap_disptmpl *)0) + +#define LDAP_SET_DISPTMPL_APPDATA( dt, datap ) \ + (dt)->dt_appdata = (void *)(datap) + +#define LDAP_GET_DISPTMPL_APPDATA( dt, type ) \ + (type)((dt)->dt_appdata) + +#define LDAP_IS_DISPTMPL_OPTION_SET( dt, option ) \ + (((dt)->dt_options & option ) != 0 ) + +#define LDAP_TMPL_ERR_VERSION 1 +#define LDAP_TMPL_ERR_MEM 2 +#define LDAP_TMPL_ERR_SYNTAX 3 +#define LDAP_TMPL_ERR_FILE 4 + +/* + * buffer size needed for entry2text and vals2text + */ +#define LDAP_DTMPL_BUFSIZ 8192 + + +#ifndef NEEDPROTOS + +typedef int (*writeptype)(); + +int ldap_init_templates(); +int ldap_init_templates_buf(); +void ldap_free_templates(); +struct ldap_disptmpl *ldap_first_disptmpl(); +struct ldap_disptmpl *ldap_next_disptmpl(); +struct ldap_disptmpl *ldap_name2template(); +struct ldap_disptmpl *ldap_oc2template(); +char **ldap_tmplattrs(); +struct ldap_tmplitem *ldap_first_tmplrow(); +struct ldap_tmplitem *ldap_next_tmplrow(); +struct ldap_tmplitem *ldap_first_tmplcol(); +struct ldap_tmplitem *ldap_next_tmplcol(); +int ldap_entry2text_search(); +int ldap_entry2text(); +int ldap_vals2text(); +int ldap_entry2html_search(); +int ldap_entry2html(); +int ldap_vals2html(); + +#else /* !NEEDPROTOS */ + +typedef int (*writeptype)( void *writeparm, char *p, int len ); + +LDAPFUNCDECL int +ldap_init_templates( char *file, struct ldap_disptmpl **tmpllistp ); + +LDAPFUNCDECL int +ldap_init_templates_buf( char *buf, long buflen, + struct ldap_disptmpl **tmpllistp ); + +LDAPFUNCDECL void +ldap_free_templates( struct ldap_disptmpl *tmpllist ); + +LDAPFUNCDECL struct ldap_disptmpl * +ldap_first_disptmpl( struct ldap_disptmpl *tmpllist ); + +LDAPFUNCDECL struct ldap_disptmpl * +ldap_next_disptmpl( struct ldap_disptmpl *tmpllist, + struct ldap_disptmpl *tmpl ); + +LDAPFUNCDECL struct ldap_disptmpl * +ldap_name2template( char *name, struct ldap_disptmpl *tmpllist ); + +LDAPFUNCDECL struct ldap_disptmpl * +ldap_oc2template( char **oclist, struct ldap_disptmpl *tmpllist ); + +LDAPFUNCDECL char ** +ldap_tmplattrs( struct ldap_disptmpl *tmpl, char **includeattrs, int exclude, + unsigned long syntaxmask ); + +LDAPFUNCDECL struct ldap_tmplitem * +ldap_first_tmplrow( struct ldap_disptmpl *tmpl ); + +LDAPFUNCDECL struct ldap_tmplitem * +ldap_next_tmplrow( struct ldap_disptmpl *tmpl, struct ldap_tmplitem *row ); + +LDAPFUNCDECL struct ldap_tmplitem * +ldap_first_tmplcol( struct ldap_disptmpl *tmpl, struct ldap_tmplitem *row ); + +LDAPFUNCDECL struct ldap_tmplitem * +ldap_next_tmplcol( struct ldap_disptmpl *tmpl, struct ldap_tmplitem *row, + struct ldap_tmplitem *col ); + +LDAPFUNCDECL int +ldap_entry2text( LDAP *ld, char *buf, LDAPMessage *entry, + struct ldap_disptmpl *tmpl, char **defattrs, char ***defvals, + writeptype writeproc, void *writeparm, char *eol, int rdncount, + unsigned long opts ); + +LDAPFUNCDECL int +ldap_vals2text( LDAP *ld, char *buf, char **vals, char *label, int labelwidth, + unsigned long syntaxid, writeptype writeproc, void *writeparm, + char *eol, int rdncount ); + +LDAPFUNCDECL int +ldap_entry2text_search( LDAP *ld, char *dn, char *base, LDAPMessage *entry, + struct ldap_disptmpl *tmpllist, char **defattrs, char ***defvals, + writeptype writeproc, void *writeparm, char *eol, int rdncount, + unsigned long opts ); + +LDAPFUNCDECL int +ldap_entry2html( LDAP *ld, char *buf, LDAPMessage *entry, + struct ldap_disptmpl *tmpl, char **defattrs, char ***defvals, + writeptype writeproc, void *writeparm, char *eol, int rdncount, + unsigned long opts, char *urlprefix, char *base ); + +LDAPFUNCDECL int +ldap_vals2html( LDAP *ld, char *buf, char **vals, char *label, int labelwidth, + unsigned long syntaxid, writeptype writeproc, void *writeparm, + char *eol, int rdncount, char *urlprefix ); + +LDAPFUNCDECL int +ldap_entry2html_search( LDAP *ld, char *dn, char *base, LDAPMessage *entry, + struct ldap_disptmpl *tmpllist, char **defattrs, char ***defvals, + writeptype writeproc, void *writeparm, char *eol, int rdncount, + unsigned long opts, char *urlprefix ); +#endif /* !NEEDPROTOS */ + + +#ifdef __cplusplus +} +#endif +#endif /* _DISPTMPL_H */ diff --git a/ldap/inckit/lber.h b/ldap/inckit/lber.h new file mode 100755 index 00000000..9c5289f1 --- /dev/null +++ b/ldap/inckit/lber.h @@ -0,0 +1,184 @@ +/* + * Copyright (c) 1990 Regents of the University of Michigan. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that this notice is preserved and that due credit is given + * to the University of Michigan at Ann Arbor. The name of the University + * may not be used to endorse or promote products derived from this + * software without specific prior written permission. This software + * is provided ``as is'' without express or implied warranty. + */ + +#ifndef _LBER_H +#define _LBER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined( NEEDPROTOS ) && defined(__STDC__) +#define NEEDPROTOS 1 +#endif + +/* BER classes and mask */ +#define LBER_CLASS_UNIVERSAL 0x00 +#define LBER_CLASS_APPLICATION 0x40 +#define LBER_CLASS_CONTEXT 0x80 +#define LBER_CLASS_PRIVATE 0xc0 +#define LBER_CLASS_MASK 0xc0 + +/* BER encoding type and mask */ +#define LBER_PRIMITIVE 0x00 +#define LBER_CONSTRUCTED 0x20 +#define LBER_ENCODING_MASK 0x20 + +#define LBER_BIG_TAG_MASK 0x1f +#define LBER_MORE_TAG_MASK 0x80 + +/* + * Note that LBER_ERROR and LBER_DEFAULT are values that can never appear + * as valid BER tags, and so it is safe to use them to report errors. In + * fact, any tag for which the following is true is invalid: + * (( tag & 0x00000080 ) != 0 ) && (( tag & 0xFFFFFF00 ) != 0 ) + */ +#define LBER_ERROR 0xffffffffL +#define LBER_DEFAULT 0xffffffffL + +/* general BER types we know about */ +#define LBER_BOOLEAN 0x01L +#define LBER_INTEGER 0x02L +#define LBER_BITSTRING 0x03L +#define LBER_OCTETSTRING 0x04L +#define LBER_NULL 0x05L +#define LBER_ENUMERATED 0x0aL +#define LBER_SEQUENCE 0x30L /* constructed */ +#define LBER_SET 0x31L /* constructed */ + +#define OLD_LBER_SEQUENCE 0x10L /* w/o constructed bit - broken */ +#define OLD_LBER_SET 0x11L /* w/o constructed bit - broken */ + +#ifdef NEEDPROTOS +typedef int (*BERTranslateProc)( char **bufp, unsigned long *buflenp, + int free_input ); +#else /* NEEDPROTOS */ +typedef int (*BERTranslateProc)(); +#endif /* NEEDPROTOS */ + +typedef struct berelement { + char *ber_buf; + char *ber_ptr; + char *ber_end; + struct seqorset *ber_sos; + unsigned long ber_tag; + unsigned long ber_len; + int ber_usertag; + char ber_options; +#define LBER_USE_DER 0x01 +#define LBER_USE_INDEFINITE_LEN 0x02 +#define LBER_TRANSLATE_STRINGS 0x04 + char *ber_rwptr; + BERTranslateProc ber_encode_translate_proc; + BERTranslateProc ber_decode_translate_proc; +} BerElement; +#define NULLBER ((BerElement *) 0) + +typedef struct sockbuf { +#ifndef MACOS + int sb_sd; +#else /* MACOS */ + void *sb_sd; +#endif /* MACOS */ + BerElement sb_ber; + + int sb_naddr; /* > 0 implies using CLDAP (UDP) */ + void *sb_useaddr; /* pointer to sockaddr to use next */ + void *sb_fromaddr; /* pointer to message source sockaddr */ + void **sb_addrs; /* actually an array of pointers to + sockaddrs */ + + int sb_options; /* to support copying ber elements */ +#define LBER_TO_FILE 0x01 /* to a file referenced by sb_fd */ +#define LBER_TO_FILE_ONLY 0x02 /* only write to file, not network */ +#define LBER_MAX_INCOMING_SIZE 0x04 /* impose limit on incoming stuff */ +#define LBER_NO_READ_AHEAD 0x08 /* read only as much as requested */ + int sb_fd; + long sb_max_incoming; +} Sockbuf; +#define READBUFSIZ 8192 + +typedef struct seqorset { + BerElement *sos_ber; + unsigned long sos_clen; + unsigned long sos_tag; + char *sos_first; + char *sos_ptr; + struct seqorset *sos_next; +} Seqorset; +#define NULLSEQORSET ((Seqorset *) 0) + +/* structure for returning a sequence of octet strings + length */ +struct berval { + unsigned long bv_len; + char *bv_val; +}; + +#ifndef NEEDPROTOS +extern BerElement *ber_alloc(); +extern BerElement *der_alloc(); +extern BerElement *ber_alloc_t(); +extern BerElement *ber_dup(); +extern int lber_debug; +extern void ber_bvfree(); +extern void ber_bvecfree(); +extern struct berval *ber_bvdup(); +extern void ber_dump(); +extern void ber_sos_dump(); +extern void lber_bprint(); +extern void ber_reset(); +extern void ber_init(); +#else /* NEEDPROTOS */ +#if defined(WINSOCK) +#include "proto-lb.h" +#else +#include "proto-lber.h" +#endif +#endif /* NEEDPROTOS */ + +#if !defined(__alpha) || defined(VMS) + +#define LBER_HTONL( l ) htonl( l ) +#define LBER_NTOHL( l ) ntohl( l ) + +#else /* __alpha */ +/* + * htonl and ntohl on the DEC Alpha under OSF 1 seem to only swap the + * lower-order 32-bits of a (64-bit) long, so we define correct versions + * here. + */ +#define LBER_HTONL( l ) (((long)htonl( (l) & 0x00000000FFFFFFFF )) << 32 \ + | htonl( ( (l) & 0xFFFFFFFF00000000 ) >> 32 )) + +#define LBER_NTOHL( l ) (((long)ntohl( (l) & 0x00000000FFFFFFFF )) << 32 \ + | ntohl( ( (l) & 0xFFFFFFFF00000000 ) >> 32 )) +#endif /* __alpha */ + + +/* + * SAFEMEMCPY is an overlap-safe copy from s to d of n bytes + */ +#ifdef MACOS +#define SAFEMEMCPY( d, s, n ) BlockMoveData( (Ptr)s, (Ptr)d, n ) +#else /* MACOS */ +#ifdef sunos4 +#define SAFEMEMCPY( d, s, n ) bcopy( s, d, n ) +#else /* sunos4 */ +#define SAFEMEMCPY( d, s, n ) memmove( d, s, n ) +#endif /* sunos4 */ +#endif /* MACOS */ + + +#ifdef __cplusplus +} +#endif +#endif /* _LBER_H */ diff --git a/ldap/inckit/ldap.h b/ldap/inckit/ldap.h new file mode 100755 index 00000000..de3e217c --- /dev/null +++ b/ldap/inckit/ldap.h @@ -0,0 +1,592 @@ +/* + * Copyright (c) 1990 Regents of the University of Michigan. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that this notice is preserved and that due credit is given + * to the University of Michigan at Ann Arbor. The name of the University + * may not be used to endorse or promote products derived from this + * software without specific prior written permission. This software + * is provided ``as is'' without express or implied warranty. + */ + +#ifndef _LDAP_H +#define _LDAP_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#ifdef WINSOCK +#include "msdos.h" +#include +#endif + +#if !defined( NEEDPROTOS ) && defined(__STDC__) +#define NEEDPROTOS 1 +#endif + +#define LDAP_PORT 389 +#define LDAP_VERSION1 1 +#define LDAP_VERSION2 2 +#define LDAP_VERSION LDAP_VERSION2 + +#define COMPAT20 +#define COMPAT30 +#if defined(COMPAT20) || defined(COMPAT30) +#define COMPAT +#endif + +#define LDAP_MAX_ATTR_LEN 100 + +/* debugging stuff */ +#ifdef LDAP_DEBUG +extern int ldap_debug; +#ifdef LDAP_SYSLOG +extern int ldap_syslog; +extern int ldap_syslog_level; +#endif +#define LDAP_DEBUG_TRACE 0x001 +#define LDAP_DEBUG_PACKETS 0x002 +#define LDAP_DEBUG_ARGS 0x004 +#define LDAP_DEBUG_CONNS 0x008 +#define LDAP_DEBUG_BER 0x010 +#define LDAP_DEBUG_FILTER 0x020 +#define LDAP_DEBUG_CONFIG 0x040 +#define LDAP_DEBUG_ACL 0x080 +#define LDAP_DEBUG_STATS 0x100 +#define LDAP_DEBUG_STATS2 0x200 +#define LDAP_DEBUG_SHELL 0x400 +#define LDAP_DEBUG_PARSE 0x800 +#define LDAP_DEBUG_ANY 0xffff + +#ifdef LDAP_SYSLOG +#define Debug( level, fmt, arg1, arg2, arg3 ) \ + { \ + if ( ldap_debug & level ) \ + fprintf( stderr, fmt, arg1, arg2, arg3 ); \ + if ( ldap_syslog & level ) \ + syslog( ldap_syslog_level, fmt, arg1, arg2, arg3 ); \ + } +#else /* LDAP_SYSLOG */ +#ifndef WINSOCK +#define Debug( level, fmt, arg1, arg2, arg3 ) \ + if ( ldap_debug & level ) \ + fprintf( stderr, fmt, arg1, arg2, arg3 ); +#else /* !WINSOCK */ +extern void Debug( int level, char* fmt, ... ); +#endif /* !WINSOCK */ +#endif /* LDAP_SYSLOG */ +#else /* LDAP_DEBUG */ +#define Debug( level, fmt, arg1, arg2, arg3 ) +#endif /* LDAP_DEBUG */ + +/* + * specific LDAP instantiations of BER types we know about + */ + +/* general stuff */ +#define LDAP_TAG_MESSAGE 0x30L /* tag is 16 + constructed bit */ +#define OLD_LDAP_TAG_MESSAGE 0x10L /* forgot the constructed bit */ +#define LDAP_TAG_MSGID 0x02L + +/* possible operations a client can invoke */ +#define LDAP_REQ_BIND 0x60L /* application + constructed */ +#define LDAP_REQ_UNBIND 0x42L /* application + primitive */ +#define LDAP_REQ_SEARCH 0x63L /* application + constructed */ +#define LDAP_REQ_MODIFY 0x66L /* application + constructed */ +#define LDAP_REQ_ADD 0x68L /* application + constructed */ +#define LDAP_REQ_DELETE 0x4aL /* application + primitive */ +#define LDAP_REQ_MODRDN 0x6cL /* application + constructed */ +#define LDAP_REQ_COMPARE 0x6eL /* application + constructed */ +#define LDAP_REQ_ABANDON 0x50L /* application + primitive */ + +/* version 3.0 compatibility stuff */ +#define LDAP_REQ_UNBIND_30 0x62L +#define LDAP_REQ_DELETE_30 0x6aL +#define LDAP_REQ_ABANDON_30 0x70L + +/* + * old broken stuff for backwards compatibility - forgot application tag + * and constructed/primitive bit + */ +#define OLD_LDAP_REQ_BIND 0x00L +#define OLD_LDAP_REQ_UNBIND 0x02L +#define OLD_LDAP_REQ_SEARCH 0x03L +#define OLD_LDAP_REQ_MODIFY 0x06L +#define OLD_LDAP_REQ_ADD 0x08L +#define OLD_LDAP_REQ_DELETE 0x0aL +#define OLD_LDAP_REQ_MODRDN 0x0cL +#define OLD_LDAP_REQ_COMPARE 0x0eL +#define OLD_LDAP_REQ_ABANDON 0x10L + +/* possible result types a server can return */ +#define LDAP_RES_BIND 0x61L /* application + constructed */ +#define LDAP_RES_SEARCH_ENTRY 0x64L /* application + constructed */ +#define LDAP_RES_SEARCH_RESULT 0x65L /* application + constructed */ +#define LDAP_RES_MODIFY 0x67L /* application + constructed */ +#define LDAP_RES_ADD 0x69L /* application + constructed */ +#define LDAP_RES_DELETE 0x6bL /* application + constructed */ +#define LDAP_RES_MODRDN 0x6dL /* application + constructed */ +#define LDAP_RES_COMPARE 0x6fL /* application + constructed */ +#define LDAP_RES_ANY (-1L) + +/* old broken stuff for backwards compatibility */ +#define OLD_LDAP_RES_BIND 0x01L +#define OLD_LDAP_RES_SEARCH_ENTRY 0x04L +#define OLD_LDAP_RES_SEARCH_RESULT 0x05L +#define OLD_LDAP_RES_MODIFY 0x07L +#define OLD_LDAP_RES_ADD 0x09L +#define OLD_LDAP_RES_DELETE 0x0bL +#define OLD_LDAP_RES_MODRDN 0x0dL +#define OLD_LDAP_RES_COMPARE 0x0fL + +/* authentication methods available */ +#define LDAP_AUTH_NONE 0x00L /* no authentication */ +#define LDAP_AUTH_SIMPLE 0x80L /* context specific + primitive */ +#define LDAP_AUTH_KRBV4 0xffL /* means do both of the following */ +#define LDAP_AUTH_KRBV41 0x81L /* context specific + primitive */ +#define LDAP_AUTH_KRBV42 0x82L /* context specific + primitive */ + +/* 3.0 compatibility auth methods */ +#define LDAP_AUTH_SIMPLE_30 0xa0L /* context specific + constructed */ +#define LDAP_AUTH_KRBV41_30 0xa1L /* context specific + constructed */ +#define LDAP_AUTH_KRBV42_30 0xa2L /* context specific + constructed */ + +/* old broken stuff */ +#define OLD_LDAP_AUTH_SIMPLE 0x00L +#define OLD_LDAP_AUTH_KRBV4 0x01L +#define OLD_LDAP_AUTH_KRBV42 0x02L + +/* filter types */ +#define LDAP_FILTER_AND 0xa0L /* context specific + constructed */ +#define LDAP_FILTER_OR 0xa1L /* context specific + constructed */ +#define LDAP_FILTER_NOT 0xa2L /* context specific + constructed */ +#define LDAP_FILTER_EQUALITY 0xa3L /* context specific + constructed */ +#define LDAP_FILTER_SUBSTRINGS 0xa4L /* context specific + constructed */ +#define LDAP_FILTER_GE 0xa5L /* context specific + constructed */ +#define LDAP_FILTER_LE 0xa6L /* context specific + constructed */ +#define LDAP_FILTER_PRESENT 0x87L /* context specific + primitive */ +#define LDAP_FILTER_APPROX 0xa8L /* context specific + constructed */ + +/* 3.0 compatibility filter types */ +#define LDAP_FILTER_PRESENT_30 0xa7L /* context specific + constructed */ + +/* old broken stuff */ +#define OLD_LDAP_FILTER_AND 0x00L +#define OLD_LDAP_FILTER_OR 0x01L +#define OLD_LDAP_FILTER_NOT 0x02L +#define OLD_LDAP_FILTER_EQUALITY 0x03L +#define OLD_LDAP_FILTER_SUBSTRINGS 0x04L +#define OLD_LDAP_FILTER_GE 0x05L +#define OLD_LDAP_FILTER_LE 0x06L +#define OLD_LDAP_FILTER_PRESENT 0x07L +#define OLD_LDAP_FILTER_APPROX 0x08L + +/* substring filter component types */ +#define LDAP_SUBSTRING_INITIAL 0x80L /* context specific */ +#define LDAP_SUBSTRING_ANY 0x81L /* context specific */ +#define LDAP_SUBSTRING_FINAL 0x82L /* context specific */ + +/* 3.0 compatibility substring filter component types */ +#define LDAP_SUBSTRING_INITIAL_30 0xa0L /* context specific */ +#define LDAP_SUBSTRING_ANY_30 0xa1L /* context specific */ +#define LDAP_SUBSTRING_FINAL_30 0xa2L /* context specific */ + +/* old broken stuff */ +#define OLD_LDAP_SUBSTRING_INITIAL 0x00L +#define OLD_LDAP_SUBSTRING_ANY 0x01L +#define OLD_LDAP_SUBSTRING_FINAL 0x02L + +/* search scopes */ +#define LDAP_SCOPE_BASE 0x00 +#define LDAP_SCOPE_ONELEVEL 0x01 +#define LDAP_SCOPE_SUBTREE 0x02 + +/* for modifications */ +typedef struct ldapmod { + int mod_op; +#define LDAP_MOD_ADD 0x00 +#define LDAP_MOD_DELETE 0x01 +#define LDAP_MOD_REPLACE 0x02 +#define LDAP_MOD_BVALUES 0x80 + char *mod_type; + union { + char **modv_strvals; + struct berval **modv_bvals; + } mod_vals; +#define mod_values mod_vals.modv_strvals +#define mod_bvalues mod_vals.modv_bvals + struct ldapmod *mod_next; +} LDAPMod; + +/* + * possible error codes we can return + */ + +#define LDAP_SUCCESS 0x00 +#define LDAP_OPERATIONS_ERROR 0x01 +#define LDAP_PROTOCOL_ERROR 0x02 +#define LDAP_TIMELIMIT_EXCEEDED 0x03 +#define LDAP_SIZELIMIT_EXCEEDED 0x04 +#define LDAP_COMPARE_FALSE 0x05 +#define LDAP_COMPARE_TRUE 0x06 +#define LDAP_STRONG_AUTH_NOT_SUPPORTED 0x07 +#define LDAP_STRONG_AUTH_REQUIRED 0x08 +#define LDAP_PARTIAL_RESULTS 0x09 + +#define LDAP_NO_SUCH_ATTRIBUTE 0x10 +#define LDAP_UNDEFINED_TYPE 0x11 +#define LDAP_INAPPROPRIATE_MATCHING 0x12 +#define LDAP_CONSTRAINT_VIOLATION 0x13 +#define LDAP_TYPE_OR_VALUE_EXISTS 0x14 +#define LDAP_INVALID_SYNTAX 0x15 + +#define LDAP_NO_SUCH_OBJECT 0x20 +#define LDAP_ALIAS_PROBLEM 0x21 +#define LDAP_INVALID_DN_SYNTAX 0x22 +#define LDAP_IS_LEAF 0x23 +#define LDAP_ALIAS_DEREF_PROBLEM 0x24 + +#define NAME_ERROR(n) ((n & 0xf0) == 0x20) + +#define LDAP_INAPPROPRIATE_AUTH 0x30 +#define LDAP_INVALID_CREDENTIALS 0x31 +#define LDAP_INSUFFICIENT_ACCESS 0x32 +#define LDAP_BUSY 0x33 +#define LDAP_UNAVAILABLE 0x34 +#define LDAP_UNWILLING_TO_PERFORM 0x35 +#define LDAP_LOOP_DETECT 0x36 + +#define LDAP_NAMING_VIOLATION 0x40 +#define LDAP_OBJECT_CLASS_VIOLATION 0x41 +#define LDAP_NOT_ALLOWED_ON_NONLEAF 0x42 +#define LDAP_NOT_ALLOWED_ON_RDN 0x43 +#define LDAP_ALREADY_EXISTS 0x44 +#define LDAP_NO_OBJECT_CLASS_MODS 0x45 +#define LDAP_RESULTS_TOO_LARGE 0x46 + +#define LDAP_OTHER 0x50 +#define LDAP_SERVER_DOWN 0x51 +#define LDAP_LOCAL_ERROR 0x52 +#define LDAP_ENCODING_ERROR 0x53 +#define LDAP_DECODING_ERROR 0x54 +#define LDAP_TIMEOUT 0x55 +#define LDAP_AUTH_UNKNOWN 0x56 +#define LDAP_FILTER_ERROR 0x57 +#define LDAP_USER_CANCELLED 0x58 +#define LDAP_PARAM_ERROR 0x59 +#define LDAP_NO_MEMORY 0x5a + + +/* default limit on nesting of referrals */ +#define LDAP_DEFAULT_REFHOPLIMIT 5 + +/* + * This structure represents both ldap messages and ldap responses. + * These are really the same, except in the case of search responses, + * where a response has multiple messages. + */ + +typedef struct ldapmsg { + int lm_msgid; /* the message id */ + int lm_msgtype; /* the message type */ + BerElement *lm_ber; /* the ber encoded message contents */ + struct ldapmsg *lm_chain; /* for search - next msg in the resp */ + struct ldapmsg *lm_next; /* next response */ + unsigned long lm_time; /* used to maintain cache */ +} LDAPMessage; +#define NULLMSG ((LDAPMessage *) NULL) + + +#ifdef LDAP_REFERRALS +/* + * structure for tracking LDAP server host, ports, DNs, etc. + */ +typedef struct ldap_server { + char *lsrv_host; + char *lsrv_dn; /* if NULL, use default */ + int lsrv_port; + struct ldap_server *lsrv_next; +} LDAPServer; + + +/* + * structure for representing an LDAP server connection + */ +typedef struct ldap_conn { + Sockbuf *lconn_sb; + int lconn_refcnt; + unsigned long lconn_lastused; /* time */ + int lconn_status; +#define LDAP_CONNST_NEEDSOCKET 1 +#define LDAP_CONNST_CONNECTING 2 +#define LDAP_CONNST_CONNECTED 3 + LDAPServer *lconn_server; + char *lconn_krbinstance; + struct ldap_conn *lconn_next; +} LDAPConn; + + +/* + * structure used to track outstanding requests + */ +typedef struct ldapreq { + int lr_msgid; /* the message id */ + int lr_status; /* status of request */ +#define LDAP_REQST_INPROGRESS 1 +#define LDAP_REQST_CHASINGREFS 2 +#define LDAP_REQST_NOTCONNECTED 3 +#define LDAP_REQST_WRITING 4 + int lr_outrefcnt; /* count of outstanding referrals */ + int lr_origid; /* original request's message id */ + int lr_parentcnt; /* count of parent requests */ + int lr_res_msgtype; /* result message type */ + int lr_res_errno; /* result LDAP errno */ + char *lr_res_error; /* result error string */ + char *lr_res_matched;/* result matched DN string */ + BerElement *lr_ber; /* ber encoded request contents */ + LDAPConn *lr_conn; /* connection used to send request */ + struct ldapreq *lr_parent; /* request that spawned this referral */ + struct ldapreq *lr_refnext; /* next referral spawned */ + struct ldapreq *lr_prev; /* previous request */ + struct ldapreq *lr_next; /* next request */ +} LDAPRequest; +#endif /* LDAP_REFERRALS */ + + +/* + * structure for client cache + */ +#define LDAP_CACHE_BUCKETS 31 /* cache hash table size */ +typedef struct ldapcache { + LDAPMessage *lc_buckets[LDAP_CACHE_BUCKETS];/* hash table */ + LDAPMessage *lc_requests; /* unfulfilled reqs */ + long lc_timeout; /* request timeout */ + long lc_maxmem; /* memory to use */ + long lc_memused; /* memory in use */ + int lc_enabled; /* enabled? */ + unsigned long lc_options; /* options */ +#define LDAP_CACHE_OPT_CACHENOERRS 0x00000001 +#define LDAP_CACHE_OPT_CACHEALLERRS 0x00000002 +} LDAPCache; +#define NULLLDCACHE ((LDAPCache *)NULL) + +/* + * structures for ldap getfilter routines + */ + +typedef struct ldap_filt_info { + char *lfi_filter; + char *lfi_desc; + int lfi_scope; /* LDAP_SCOPE_BASE, etc */ + int lfi_isexact; /* exact match filter? */ + struct ldap_filt_info *lfi_next; +} LDAPFiltInfo; + +typedef struct ldap_filt_list { + char *lfl_tag; + char *lfl_pattern; + char *lfl_delims; + LDAPFiltInfo *lfl_ilist; + struct ldap_filt_list *lfl_next; +} LDAPFiltList; + + +#define LDAP_FILT_MAXSIZ 1024 + +typedef struct ldap_filt_desc { + LDAPFiltList *lfd_filtlist; + LDAPFiltInfo *lfd_curfip; + LDAPFiltInfo lfd_retfi; + char lfd_filter[ LDAP_FILT_MAXSIZ ]; + char *lfd_curval; + char *lfd_curvalcopy; + char **lfd_curvalwords; + char *lfd_filtprefix; + char *lfd_filtsuffix; +} LDAPFiltDesc; + + +/* + * structure representing an ldap connection + */ + +typedef struct ldap { + Sockbuf ld_sb; /* socket descriptor & buffer */ + char *ld_host; + int ld_version; + char ld_lberoptions; + int ld_deref; +#define LDAP_DEREF_NEVER 0 +#define LDAP_DEREF_SEARCHING 1 +#define LDAP_DEREF_FINDING 2 +#define LDAP_DEREF_ALWAYS 3 + + int ld_timelimit; + int ld_sizelimit; +#define LDAP_NO_LIMIT 0 + + LDAPFiltDesc *ld_filtd; /* from getfilter for ufn searches */ + char *ld_ufnprefix; /* for incomplete ufn's */ + + int ld_errno; + char *ld_error; + char *ld_matched; + int ld_msgid; + + /* do not mess with these */ +#ifdef LDAP_REFERRALS + LDAPRequest *ld_requests; /* list of outstanding requests */ +#else /* LDAP_REFERRALS */ + LDAPMessage *ld_requests; /* list of outstanding requests */ +#endif /* LDAP_REFERRALS */ + LDAPMessage *ld_responses; /* list of outstanding responses */ + int *ld_abandoned; /* array of abandoned requests */ + char ld_attrbuffer[LDAP_MAX_ATTR_LEN]; + LDAPCache *ld_cache; /* non-null if cache is initialized */ + char *ld_cldapdn; /* DN used in connectionless search */ + + /* it is OK to change these next four values directly */ + int ld_cldaptries; /* connectionless search retry count */ + int ld_cldaptimeout;/* time between retries */ + int ld_refhoplimit; /* limit on referral nesting */ + unsigned long ld_options; /* boolean options */ +#ifdef LDAP_DNS +#define LDAP_OPT_DNS 0x00000001 /* use DN & DNS */ +#endif /* LDAP_DNS */ +#ifdef LDAP_REFERRALS +#define LDAP_OPT_REFERRALS 0x00000002 /* chase referrals */ +#endif /* LDAP_REFERRALS */ +#define LDAP_OPT_RESTART 0x00000004 /* restart if EINTR occurs */ + + /* do not mess with the rest though */ + char *ld_defhost; /* full name of default server */ + int ld_defport; /* port of default server */ + BERTranslateProc ld_lber_encode_translate_proc; + BERTranslateProc ld_lber_decode_translate_proc; +#ifdef LDAP_REFERRALS + LDAPConn *ld_defconn; /* default connection */ + LDAPConn *ld_conns; /* list of server connections */ + void *ld_selectinfo; /* platform specifics for select */ + int (*ld_rebindproc)( struct ldap *ld, char **dnp, + char **passwdp, int *authmethodp, int freeit ); + /* routine to get info needed for re-bind */ +#endif /* LDAP_REFERRALS */ +} LDAP; + + +/* + * structure for ldap friendly mapping routines + */ + +typedef struct friendly { + char *f_unfriendly; + char *f_friendly; +} FriendlyMap; + + +/* + * handy macro to check whether LDAP struct is set up for CLDAP or not + */ +#define LDAP_IS_CLDAP( ld ) ( ld->ld_sb.sb_naddr > 0 ) + + +/* + * types for ldap URL handling + */ +typedef struct ldap_url_desc { + char *lud_host; + int lud_port; + char *lud_dn; + char **lud_attrs; + int lud_scope; + char *lud_filter; + char *lud_string; /* for internal use only */ +} LDAPURLDesc; +#define NULLLDAPURLDESC ((LDAPURLDesc *)NULL) + +#define LDAP_URL_ERR_NOTLDAP 1 /* URL doesn't begin with "ldap://" */ +#define LDAP_URL_ERR_NODN 2 /* URL has no DN (required) */ +#define LDAP_URL_ERR_BADSCOPE 3 /* URL scope string is invalid */ +#define LDAP_URL_ERR_MEM 4 /* can't allocate memory space */ + + +#ifndef NEEDPROTOS +extern LDAP *ldap_open(); +extern LDAP *ldap_init(); +#ifdef STR_TRANSLATION +extern void ldap_set_string_translators(); +#ifdef LDAP_CHARSET_8859 +extern int ldap_t61_to_8859(); +extern int ldap_8859_to_t61(); +#endif /* LDAP_CHARSET_8859 */ +#endif /* STR_TRANSLATION */ +extern LDAPMessage *ldap_first_entry(); +extern LDAPMessage *ldap_next_entry(); +extern char *ldap_get_dn(); +extern char *ldap_dn2ufn(); +extern char **ldap_explode_dn(); +extern char *ldap_first_attribute(); +extern char *ldap_next_attribute(); +extern char **ldap_get_values(); +extern struct berval **ldap_get_values_len(); +extern void ldap_value_free(); +extern void ldap_value_free_len(); +extern int ldap_count_values(); +extern int ldap_count_values_len(); +extern char *ldap_err2string(); +extern void ldap_getfilter_free(); +extern LDAPFiltDesc *ldap_init_getfilter(); +extern LDAPFiltDesc *ldap_init_getfilter_buf(); +extern LDAPFiltInfo *ldap_getfirstfilter(); +extern LDAPFiltInfo *ldap_getnextfilter(); +extern void ldap_setfilteraffixes(); +extern void ldap_build_filter(); +extern void ldap_flush_cache(); +extern void ldap_set_cache_options(); +extern void ldap_uncache_entry(); +extern void ldap_uncache_request(); +extern char *ldap_friendly_name(); +extern void ldap_free_friendlymap(); +extern LDAP *cldap_open(); +extern void cldap_setretryinfo(); +extern void cldap_close(); +extern LDAPFiltDesc *ldap_ufn_setfilter(); +extern int ldap_ufn_timeout(); +extern int ldap_sort_entries(); +extern int ldap_sort_values(); +extern int ldap_sort_strcasecmp(); +void ldap_free_urldesc(); +void ldap_set_rebind_proc(); +void ldap_enable_translation(); + + +#if defined(ultrix) || defined(VMS) || defined( nextstep ) +extern char *strdup(); +#endif + +#else /* NEEDPROTOS */ +#if !defined(MACOS) && !defined(DOS) && !defined(_WIN32) && !defined(WINSOCK) +#include +#endif +#if defined(WINSOCK) +#include "proto-ld.h" +#else +#include "proto-ldap.h" +#endif + +#ifdef VMS +extern char *strdup( const char *s ); +#endif +#if defined(ultrix) || defined( nextstep ) +extern char *strdup(); +#endif + +#endif /* NEEDPROTOS */ + +#ifdef __cplusplus +} +#endif +#endif /* _LDAP_H */ diff --git a/ldap/inckit/msdos.h b/ldap/inckit/msdos.h new file mode 100755 index 00000000..81a0de4d --- /dev/null +++ b/ldap/inckit/msdos.h @@ -0,0 +1,133 @@ +/* wsa.h */ +/* + * Copyright (c) 1993 Regents of the University of Michigan. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that this notice is preserved and that due credit is given + * to the University of Michigan at Ann Arbor. The name of the University + * may not be used to endorse or promote products derived from this + * software without specific prior written permission. This software + * is provided ``as is'' without express or implied warranty. + */ + +#ifndef _MSDOS_H +#define _MSDOS_H + +/* + * NOTE: This file should be included via ldap.h. Many symbols are + * defined here that are needed BEFORE anything else is included. + * Be careful !!! + */ +/* + * The following are defined within the Integrated Development Environment + * of Microsoft's Visual C++ Compiler (v1.52c) + * (Options/Project/Compiler/Preprocessor/Symbols and Macros to Define) + * But there's a (buffer length) limit to how long this list can be, so + * I'm doing the rest here in msdos.h + * WINSOCK, DOS, NEEDPROTOS, NO_USERINTERFACE + */ +/* + * MIT's krb.h doesn't use the symbols provided by Microsoft. + * It needs __MSDOS__ and WINDOWS. Normally _WINDOWS is provided by MS + * but it's based on having the prolog/epilog optimization switches set + * in a way that we don't set them. So define it manually. + * + * kbind.c needs __MSDOS__ for krb.h to include osconf.h + * which includes conf-pc.h which defines byte order and such + */ +#define __MSDOS__ +/* + * conf-pc.h wants WINDOWS rather than _WINDOWS which Microsoft provides + */ +#define WINDOWS + +/* + * Where two of the config files live in the windows environment + * There are two others also; ldfriend.cfg, & srchpref.cfg + * These names are different that the unix names due to 8.3 rule + */ +#define FILTERFILE "ldfilter.cfg" +#define TEMPLATEFILE "disptmpl.cfg" +/* + * These are not automatically defined for us even though we're a DLL. They + * are triggered by prolog/epilog configuration options that we don't use. + * But be careful not to redefine them for other apps that include this file. + */ +#ifndef _WINDLL +/* + * Needed by wshelper.h + */ +#define _WINDLL +#endif + +#ifndef _WINDOWS +/* + * Needed by authlib.h via kerberos.c via AUTHMAN + */ +#define _WINDOWS 1 +#endif + +/* + * KERBEROS must be defined as a preprocessor symbol in the compiler. + * It's too late to define it in this file. + */ + +/* + * AUTHMAN - Use Authlib.dll as a higher level interface to krbv4win.dll + * (kerberos). If defined, get_kerberosv4_credentials in kerberos.c is + * used and authlib.dll (and krbv4win.dll) are dynamically loaded and used. + * If AUTHMAN is not defined, the get_kerberosv4_credentials in + * kbind.c works just fine, but requires the presence of krbv4win.dll at + * load time. + */ +/* don't want to be dependent on authman + * #define AUTHMAN + */ + +/* + * define WSHELPER if you want wsockip.c to use rgethostbyaddr() (in + * WSHELPER.DLL) rather than gethostbyaddr(). You might want this if your + * gethostbyaddr() returns the WRONG host name and you want to use + * kerberos authentication (need host name to form service ticket + * request). Most won't want kerberos, and of those, there might actually + * be some vendors who really do the lookup rather than use cached info + * from gethostbyname() calls. + */ +#define WSHELPER +/* + * The new slapd stuff + */ +#define LDAP_REFERRALS +/* + * LDAP character string translation routines + * I compiled and tested these and they seemed to work. + * The thing to test with is: + * cn=Charset Test Entry, ou=SWITCHdirectory, o=SWITCH, c=CH + * + * I'm disabling it for release. +#define STR_TRANSLATION +#define LDAP_CHARSET_8859 88591 +#define LDAP_DEFAULT_CHARSET LDAP_CHARSET_8859 + */ + + +#ifdef _DEBUG +#define LDAP_DEBUG +#endif +#include + + +#include +#include +#ifndef _WIN32 +#define memcpy( a, b, n ) _fmemcpy( a, b, n ) +#define strcpy( a, b ) _fstrcpy( a, b ) +#define strchr( a, c ) _fstrchr( a, c ) +#endif /* !_WIN32 */ +#define strcasecmp(a,b) stricmp(a,b) +#define strncasecmp(a,b,len) strnicmp(a,b,len) + +#endif /* _MSDOS_H */ + + diff --git a/ldap/inckit/proto-lb.h b/ldap/inckit/proto-lb.h new file mode 100755 index 00000000..600328d5 --- /dev/null +++ b/ldap/inckit/proto-lb.h @@ -0,0 +1,102 @@ +/* + * lber-proto.h + * function prototypes for lber library + */ + +#ifdef LDAP_DEBUG +extern int lber_debug; +#endif + +#ifndef LDAPFUNCDECL +#ifdef _WIN32 +#define LDAPFUNCDECL __declspec( dllexport ) +#else /* _WIN32 */ +#define LDAPFUNCDECL +#endif /* _WIN32 */ +#endif /* LDAPFUNCDECL */ + +/* + * in bprint.c: + */ +LDAPFUNCDECL void lber_bprint( char *data, int len ); + +/* + * in decode.c: + */ +LDAPFUNCDECL unsigned long ber_get_tag( BerElement *ber ); +LDAPFUNCDECL unsigned long ber_skip_tag( BerElement *ber, unsigned long *len ); +LDAPFUNCDECL unsigned long ber_peek_tag( BerElement *ber, unsigned long *len ); +LDAPFUNCDECL unsigned long ber_get_int( BerElement *ber, long *num ); +LDAPFUNCDECL unsigned long ber_get_stringb( BerElement *ber, char *buf, + unsigned long *len ); +LDAPFUNCDECL unsigned long ber_get_stringa( BerElement *ber, char **buf ); +LDAPFUNCDECL unsigned long ber_get_stringal( BerElement *ber, struct berval **bv ); +LDAPFUNCDECL unsigned long ber_get_bitstringa( BerElement *ber, char **buf, + unsigned long *len ); +LDAPFUNCDECL unsigned long ber_get_null( BerElement *ber ); +LDAPFUNCDECL unsigned long ber_get_boolean( BerElement *ber, int *boolval ); +LDAPFUNCDECL unsigned long ber_first_element( BerElement *ber, unsigned long *len, + char **last ); +LDAPFUNCDECL unsigned long ber_next_element( BerElement *ber, unsigned long *len, + char *last ); +#if defined( MACOS ) || defined( BC31 ) || defined( _WIN32 ) +LDAPFUNCDECL unsigned long ber_scanf( BerElement *ber, char *fmt, ... ); +#else +LDAPFUNCDECL unsigned long ber_scanf(); +#endif +LDAPFUNCDECL void ber_bvfree( struct berval *bv ); +LDAPFUNCDECL void ber_bvecfree( struct berval **bv ); +LDAPFUNCDECL struct berval *ber_bvdup( struct berval *bv ); +#ifdef STR_TRANSLATION +LDAPFUNCDECL void ber_set_string_translators( BerElement *ber, + BERTranslateProc encode_proc, BERTranslateProc decode_proc ); +#endif /* STR_TRANSLATION */ + +/* + * in encode.c + */ +LDAPFUNCDECL int ber_put_enum( BerElement *ber, long num, unsigned long tag ); +LDAPFUNCDECL int ber_put_int( BerElement *ber, long num, unsigned long tag ); +LDAPFUNCDECL int ber_put_ostring( BerElement *ber, char *str, unsigned long len, + unsigned long tag ); +LDAPFUNCDECL int ber_put_string( BerElement *ber, char *str, unsigned long tag ); +LDAPFUNCDECL int ber_put_bitstring( BerElement *ber, char *str, + unsigned long bitlen, unsigned long tag ); +LDAPFUNCDECL int ber_put_null( BerElement *ber, unsigned long tag ); +LDAPFUNCDECL int ber_put_boolean( BerElement *ber, int boolval, + unsigned long tag ); +LDAPFUNCDECL int ber_start_seq( BerElement *ber, unsigned long tag ); +LDAPFUNCDECL int ber_start_set( BerElement *ber, unsigned long tag ); +LDAPFUNCDECL int ber_put_seq( BerElement *ber ); +LDAPFUNCDECL int ber_put_set( BerElement *ber ); +#if defined( MACOS ) || defined( BC31 ) || defined( _WIN32 ) +LDAPFUNCDECL int ber_printf( BerElement *ber, char *fmt, ... ); +#else +LDAPFUNCDECL int ber_printf(); +#endif + +/* + * in io.c: + */ +LDAPFUNCDECL long ber_read( BerElement *ber, char *buf, unsigned long len ); +LDAPFUNCDECL long ber_write( BerElement *ber, char *buf, unsigned long len, + int nosos ); +LDAPFUNCDECL void ber_free( BerElement *ber, int freebuf ); +LDAPFUNCDECL int ber_flush( Sockbuf *sb, BerElement *ber, int freeit ); +LDAPFUNCDECL BerElement *ber_alloc( void ); +LDAPFUNCDECL BerElement *der_alloc( void ); +LDAPFUNCDECL BerElement *ber_alloc_t( int options ); +LDAPFUNCDECL BerElement *ber_dup( BerElement *ber ); +LDAPFUNCDECL void ber_dump( BerElement *ber, int inout ); +LDAPFUNCDECL void ber_sos_dump( Seqorset *sos ); +LDAPFUNCDECL unsigned long ber_get_next( Sockbuf *sb, unsigned long *len, + BerElement *ber ); +LDAPFUNCDECL void ber_init( BerElement *ber, int options ); +LDAPFUNCDECL void ber_reset( BerElement *ber, int was_writing ); + +#ifdef NEEDGETOPT +/* + * in getopt.c + */ +int getopt( int nargc, char **nargv, char *ostr ); +#endif /* NEEDGETOPT */ diff --git a/ldap/inckit/proto-ld.h b/ldap/inckit/proto-ld.h new file mode 100755 index 00000000..1ccb8317 --- /dev/null +++ b/ldap/inckit/proto-ld.h @@ -0,0 +1,276 @@ +/* + * proto-ldap.h + * function prototypes for ldap library + */ + + +#ifndef LDAPFUNCDECL +#ifdef _WIN32 +#define LDAPFUNCDECL __declspec( dllexport ) +#else /* _WIN32 */ +#define LDAPFUNCDECL +#endif /* _WIN32 */ +#endif /* LDAPFUNCDECL */ + + +/* + * in abandon.c: + */ +LDAPFUNCDECL int ldap_abandon( LDAP *ld, int msgid ); + +/* + * in add.c: + */ +LDAPFUNCDECL int ldap_add( LDAP *ld, char *dn, LDAPMod **attrs ); +LDAPFUNCDECL int ldap_add_s( LDAP *ld, char *dn, LDAPMod **attrs ); + +/* + * in bind.c: + */ +LDAPFUNCDECL int ldap_bind( LDAP *ld, char *who, char *passwd, int authmethod ); +LDAPFUNCDECL int ldap_bind_s( LDAP *ld, char *who, char *cred, int method ); +#ifdef LDAP_REFERRALS +LDAPFUNCDECL void ldap_set_rebind_proc( LDAP *ld, int (*rebindproc)( LDAP *ld, + char **dnp, char **passwdp, int *authmethodp, int freeit )); +#endif /* LDAP_REFERRALS */ + +/* + * in sbind.c: + */ +LDAPFUNCDECL int ldap_simple_bind( LDAP *ld, char *who, char *passwd ); +LDAPFUNCDECL int ldap_simple_bind_s( LDAP *ld, char *who, char *passwd ); + +/* + * in kbind.c: + */ +LDAPFUNCDECL int ldap_kerberos_bind_s( LDAP *ld, char *who ); +LDAPFUNCDECL int ldap_kerberos_bind1( LDAP *ld, char *who ); +LDAPFUNCDECL int ldap_kerberos_bind1_s( LDAP *ld, char *who ); +LDAPFUNCDECL int ldap_kerberos_bind2( LDAP *ld, char *who ); +LDAPFUNCDECL int ldap_kerberos_bind2_s( LDAP *ld, char *who ); + + +#ifndef NO_CACHE +/* + * in cache.c + */ +LDAPFUNCDECL int ldap_enable_cache( LDAP *ld, long timeout, long maxmem ); +LDAPFUNCDECL void ldap_disable_cache( LDAP *ld ); +LDAPFUNCDECL void ldap_set_cache_options( LDAP *ld, unsigned long opts ); +LDAPFUNCDECL void ldap_destroy_cache( LDAP *ld ); +LDAPFUNCDECL void ldap_flush_cache( LDAP *ld ); +LDAPFUNCDECL void ldap_uncache_entry( LDAP *ld, char *dn ); +LDAPFUNCDECL void ldap_uncache_request( LDAP *ld, int msgid ); +#endif /* !NO_CACHE */ + +/* + * in compare.c: + */ +LDAPFUNCDECL int ldap_compare( LDAP *ld, char *dn, char *attr, char *value ); +LDAPFUNCDECL int ldap_compare_s( LDAP *ld, char *dn, char *attr, char *value ); + +/* + * in delete.c: + */ +LDAPFUNCDECL int ldap_delete( LDAP *ld, char *dn ); +LDAPFUNCDECL int ldap_delete_s( LDAP *ld, char *dn ); + +/* + * in error.c: + */ +LDAPFUNCDECL int ldap_result2error( LDAP *ld, LDAPMessage *r, int freeit ); +LDAPFUNCDECL char *ldap_err2string( int err ); +LDAPFUNCDECL void ldap_perror( LDAP *ld, char *s ); + +/* + * in modify.c: + */ +LDAPFUNCDECL int ldap_modify( LDAP *ld, char *dn, LDAPMod **mods ); +LDAPFUNCDECL int ldap_modify_s( LDAP *ld, char *dn, LDAPMod **mods ); + +/* + * in modrdn.c: + */ +LDAPFUNCDECL int ldap_modrdn( LDAP *ld, char *dn, char *newrdn ); +LDAPFUNCDECL int ldap_modrdn_s( LDAP *ld, char *dn, char *newrdn ); +LDAPFUNCDECL int ldap_modrdn2( LDAP *ld, char *dn, char *newrdn, + int deleteoldrdn ); +LDAPFUNCDECL int ldap_modrdn2_s( LDAP *ld, char *dn, char *newrdn, + int deleteoldrdn); + +/* + * in open.c: + */ +LDAPFUNCDECL LDAP *ldap_open( char *host, int port ); +LDAPFUNCDECL LDAP *ldap_init( char *defhost, int defport ); + +/* + * in getentry.c: + */ +LDAPFUNCDECL LDAPMessage *ldap_first_entry( LDAP *ld, LDAPMessage *chain ); +LDAPFUNCDECL LDAPMessage *ldap_next_entry( LDAP *ld, LDAPMessage *entry ); +LDAPFUNCDECL int ldap_count_entries( LDAP *ld, LDAPMessage *chain ); + +/* + * in addentry.c + */ +LDAPFUNCDECL LDAPMessage *ldap_delete_result_entry( LDAPMessage **list, + LDAPMessage *e ); +LDAPFUNCDECL void ldap_add_result_entry( LDAPMessage **list, LDAPMessage *e ); + +/* + * in getdn.c + */ +LDAPFUNCDECL char *ldap_get_dn( LDAP *ld, LDAPMessage *entry ); +LDAPFUNCDECL char *ldap_dn2ufn( char *dn ); +LDAPFUNCDECL char **ldap_explode_dn( char *dn, int notypes ); +LDAPFUNCDECL char **ldap_explode_dns( char *dn ); +LDAPFUNCDECL int ldap_is_dns_dn( char *dn ); + +/* + * in getattr.c + */ +LDAPFUNCDECL char *ldap_first_attribute( LDAP *ld, LDAPMessage *entry, + BerElement **ber ); +LDAPFUNCDECL char *ldap_next_attribute( LDAP *ld, LDAPMessage *entry, + BerElement *ber ); + +/* + * in getvalues.c + */ +LDAPFUNCDECL char **ldap_get_values( LDAP *ld, LDAPMessage *entry, char *target ); +LDAPFUNCDECL struct berval **ldap_get_values_len( LDAP *ld, LDAPMessage *entry, + char *target ); +LDAPFUNCDECL int ldap_count_values( char **vals ); +LDAPFUNCDECL int ldap_count_values_len( struct berval **vals ); +LDAPFUNCDECL void ldap_value_free( char **vals ); +LDAPFUNCDECL void ldap_value_free_len( struct berval **vals ); + +/* + * in result.c: + */ +LDAPFUNCDECL int ldap_result( LDAP *ld, int msgid, int all, + struct timeval *timeout, LDAPMessage **result ); +LDAPFUNCDECL int ldap_msgfree( LDAPMessage *lm ); +LDAPFUNCDECL int ldap_msgdelete( LDAP *ld, int msgid ); + +/* + * in search.c: + */ +LDAPFUNCDECL int ldap_search( LDAP *ld, char *base, int scope, char *filter, + char **attrs, int attrsonly ); +LDAPFUNCDECL int ldap_search_s( LDAP *ld, char *base, int scope, char *filter, + char **attrs, int attrsonly, LDAPMessage **res ); +LDAPFUNCDECL int ldap_search_st( LDAP *ld, char *base, int scope, char *filter, + char **attrs, int attrsonly, struct timeval *timeout, LDAPMessage **res ); + +/* + * in ufn.c + */ +LDAPFUNCDECL int ldap_ufn_search_c( LDAP *ld, char *ufn, char **attrs, + int attrsonly, LDAPMessage **res, int (*cancelproc)( void *cl ), + void *cancelparm ); +LDAPFUNCDECL int ldap_ufn_search_ct( LDAP *ld, char *ufn, char **attrs, + int attrsonly, LDAPMessage **res, int (*cancelproc)( void *cl ), + void *cancelparm, char *tag1, char *tag2, char *tag3 ); +LDAPFUNCDECL int ldap_ufn_search_s( LDAP *ld, char *ufn, char **attrs, + int attrsonly, LDAPMessage **res ); +LDAPFUNCDECL LDAPFiltDesc *ldap_ufn_setfilter( LDAP *ld, char *fname ); +LDAPFUNCDECL void ldap_ufn_setprefix( LDAP *ld, char *prefix ); +LDAPFUNCDECL int ldap_ufn_timeout( void *tvparam ); + + +/* + * in unbind.c + */ +LDAPFUNCDECL int ldap_unbind( LDAP *ld ); +LDAPFUNCDECL int ldap_unbind_s( LDAP *ld ); + + +/* + * in getfilter.c + */ +LDAPFUNCDECL LDAPFiltDesc *ldap_init_getfilter( char *fname ); +LDAPFUNCDECL LDAPFiltDesc *ldap_init_getfilter_buf( char *buf, long buflen ); +LDAPFUNCDECL LDAPFiltInfo *ldap_getfirstfilter( LDAPFiltDesc *lfdp, char *tagpat, + char *value ); +LDAPFUNCDECL LDAPFiltInfo *ldap_getnextfilter( LDAPFiltDesc *lfdp ); +LDAPFUNCDECL void ldap_setfilteraffixes( LDAPFiltDesc *lfdp, char *prefix, char *suffix ); +LDAPFUNCDECL void ldap_build_filter( char *buf, unsigned long buflen, + char *pattern, char *prefix, char *suffix, char *attr, + char *value, char **valwords ); + +/* + * in free.c + */ +LDAPFUNCDECL void ldap_getfilter_free( LDAPFiltDesc *lfdp ); +LDAPFUNCDECL void ldap_mods_free( LDAPMod **mods, int freemods ); + +/* + * in friendly.c + */ +LDAPFUNCDECL char *ldap_friendly_name( char *filename, char *uname, + FriendlyMap **map ); +LDAPFUNCDECL void ldap_free_friendlymap( FriendlyMap **map ); + + +/* + * in cldap.c + */ +LDAPFUNCDECL LDAP *cldap_open( char *host, int port ); +LDAPFUNCDECL void cldap_close( LDAP *ld ); +LDAPFUNCDECL int cldap_search_s( LDAP *ld, char *base, int scope, char *filter, + char **attrs, int attrsonly, LDAPMessage **res, char *logdn ); +LDAPFUNCDECL void cldap_setretryinfo( LDAP *ld, int tries, int timeout ); + + +/* + * in sort.c + */ +LDAPFUNCDECL int ldap_sort_entries( LDAP *ld, LDAPMessage **chain, char *attr, + int (*cmp)() ); +LDAPFUNCDECL int ldap_sort_values( LDAP *ld, char **vals, int (*cmp)() ); +LDAPFUNCDECL int ldap_sort_strcasecmp( char **a, char **b ); + + +/* + * in url.c + */ +LDAPFUNCDECL int ldap_is_ldap_url( char *url ); +LDAPFUNCDECL int ldap_url_parse( char *url, LDAPURLDesc **ludpp ); +LDAPFUNCDECL void ldap_free_urldesc( LDAPURLDesc *ludp ); +LDAPFUNCDECL int ldap_url_search( LDAP *ld, char *url, int attrsonly ); +LDAPFUNCDECL int ldap_url_search_s( LDAP *ld, char *url, int attrsonly, + LDAPMessage **res ); +LDAPFUNCDECL int ldap_url_search_st( LDAP *ld, char *url, int attrsonly, + struct timeval *timeout, LDAPMessage **res ); + + +/* + * in charset.c + */ +#ifdef STR_TRANSLATION +LDAPFUNCDECL void ldap_set_string_translators( LDAP *ld, + BERTranslateProc encode_proc, BERTranslateProc decode_proc ); +LDAPFUNCDECL int ldap_translate_from_t61( LDAP *ld, char **bufp, + unsigned long *lenp, int free_input ); +LDAPFUNCDECL int ldap_translate_to_t61( LDAP *ld, char **bufp, + unsigned long *lenp, int free_input ); +LDAPFUNCDECL void ldap_enable_translation( LDAP *ld, LDAPMessage *entry, + int enable ); + +#ifdef LDAP_CHARSET_8859 +LDAPFUNCDECL int ldap_t61_to_8859( char **bufp, unsigned long *buflenp, + int free_input ); +LDAPFUNCDECL int ldap_8859_to_t61( char **bufp, unsigned long *buflenp, + int free_input ); +#endif /* LDAP_CHARSET_8859 */ +#endif /* STR_TRANSLATION */ + + +#ifdef WINSOCK +/* + * in msdos/winsock/wsa.c + */ +LDAPFUNCDECL void ldap_memfree( void *p ); +#endif /* WINSOCK */ diff --git a/ldap/inckit/srchpref.h b/ldap/inckit/srchpref.h new file mode 100755 index 00000000..fe8a422c --- /dev/null +++ b/ldap/inckit/srchpref.h @@ -0,0 +1,106 @@ +/* + * Copyright (c) 1993, 1994 Regents of the University of Michigan. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that this notice is preserved and that due credit is given + * to the University of Michigan at Ann Arbor. The name of the University + * may not be used to endorse or promote products derived from this + * software without specific prior written permission. This software + * is provided ``as is'' without express or implied warranty. + * + * searchpref.h: display template library defines + * 16 May 1994 by Gordon Good + */ + + +#ifndef _SRCHPREF_H +#define _SRCHPREF_H + +#ifdef __cplusplus +extern "C" { +#endif + + +struct ldap_searchattr { + char *sa_attrlabel; + char *sa_attr; + /* max 32 matchtypes for now */ + unsigned long sa_matchtypebitmap; + char *sa_selectattr; + char *sa_selecttext; + struct ldap_searchattr *sa_next; +}; + +struct ldap_searchmatch { + char *sm_matchprompt; + char *sm_filter; + struct ldap_searchmatch *sm_next; +}; + +struct ldap_searchobj { + char *so_objtypeprompt; + unsigned long so_options; + char *so_prompt; + short so_defaultscope; + char *so_filterprefix; + char *so_filtertag; + char *so_defaultselectattr; + char *so_defaultselecttext; + struct ldap_searchattr *so_salist; + struct ldap_searchmatch *so_smlist; + struct ldap_searchobj *so_next; +}; + +#define NULLSEARCHOBJ ((struct ldap_searchobj *)0) + +/* + * global search object options + */ +#define LDAP_SEARCHOBJ_OPT_INTERNAL 0x00000001 + +#define LDAP_IS_SEARCHOBJ_OPTION_SET( so, option ) \ + (((so)->so_options & option ) != 0 ) + +#define LDAP_SEARCHPREF_VERSION_ZERO 0 +#define LDAP_SEARCHPREF_VERSION 1 + +#define LDAP_SEARCHPREF_ERR_VERSION 1 +#define LDAP_SEARCHPREF_ERR_MEM 2 +#define LDAP_SEARCHPREF_ERR_SYNTAX 3 +#define LDAP_SEARCHPREF_ERR_FILE 4 + + +#ifndef NEEDPROTOS +int ldap_init_searchprefs(); +int ldap_init_searchprefs_buf(); +void ldap_free_searchprefs(); +struct ldap_searchobj *ldap_first_searchobj(); +struct ldap_searchobj *ldap_next_searchobj(); + +#else /* !NEEDPROTOS */ + +LDAPFUNCDECL int +ldap_init_searchprefs( char *file, struct ldap_searchobj **solistp ); + +LDAPFUNCDECL int +ldap_init_searchprefs_buf( char *buf, long buflen, + struct ldap_searchobj **solistp ); + +LDAPFUNCDECL void +ldap_free_searchprefs( struct ldap_searchobj *solist ); + +LDAPFUNCDECL struct ldap_searchobj * +ldap_first_searchobj( struct ldap_searchobj *solist ); + +LDAPFUNCDECL struct ldap_searchobj * +ldap_next_searchobj( struct ldap_searchobj *sollist, + struct ldap_searchobj *so ); + +#endif /* !NEEDPROTOS */ + + +#ifdef __cplusplus +} +#endif +#endif /* _SRCHPREF_H */ diff --git a/ldap/kbind.c b/ldap/kbind.c new file mode 100755 index 00000000..ff6279c9 --- /dev/null +++ b/ldap/kbind.c @@ -0,0 +1,368 @@ +/* + * Copyright (c) 1993 Regents of the University of Michigan. + * All rights reserved. + * + * kbind.c + */ + +#ifndef lint +static char copyright[] = "@(#) Copyright (c) 1993 Regents of the University of Michigan.\nAll rights reserved.\n"; +#endif + +#ifdef KERBEROS + +#include +#include + +#ifdef MACOS +#include +#include "macos.h" +#else /* MACOS */ +#ifdef DOS +#include "msdos.h" +#endif /* DOS */ +#include +#include +#if !defined(DOS) && !defined( _WIN32 ) +#include +#endif /* !DOS && !_WIN32 */ +#include +#include +#endif /* MACOS */ + +#include "lber.h" +#include "ldap.h" +#include "ldap-int.h" + + + +/* + * ldap_kerberos_bind1 - initiate a bind to the ldap server using + * kerberos authentication. The dn is supplied. It is assumed the user + * already has a valid ticket granting ticket. The msgid of the + * request is returned on success (suitable for passing to ldap_result()), + * -1 is returned if there's trouble. + * + * Example: + * ldap_kerberos_bind1( ld, "cn=manager, o=university of michigan, c=us" ) + */ +int +ldap_kerberos_bind1( LDAP *ld, char *dn ) +{ + BerElement *ber; + char *cred; + int rc, credlen; + char *get_kerberosv4_credentials(); +#ifdef STR_TRANSLATION + int str_translation_on; +#endif /* STR_TRANSLATION */ + + /* + * The bind request looks like this: + * BindRequest ::= SEQUENCE { + * version INTEGER, + * name DistinguishedName, + * authentication CHOICE { + * krbv42ldap [1] OCTET STRING + * krbv42dsa [2] OCTET STRING + * } + * } + * all wrapped up in an LDAPMessage sequence. + */ + + Debug( LDAP_DEBUG_TRACE, "ldap_kerberos_bind1\n", 0, 0, 0 ); + + if ( dn == NULL ) + dn = ""; + + if ( (cred = get_kerberosv4_credentials( ld, dn, "ldapserver", + &credlen )) == NULL ) { + return( -1 ); /* ld_errno should already be set */ + } + + /* create a message to send */ + if ( (ber = alloc_ber_with_options( ld )) == NULLBER ) { + free( cred ); + return( -1 ); + } + +#ifdef STR_TRANSLATION + if (( str_translation_on = (( ber->ber_options & + LBER_TRANSLATE_STRINGS ) != 0 ))) { /* turn translation off */ + ber->ber_options &= ~LBER_TRANSLATE_STRINGS; + } +#endif /* STR_TRANSLATION */ + + /* fill it in */ + rc = ber_printf( ber, "{it{isto}}", ++ld->ld_msgid, LDAP_REQ_BIND, + ld->ld_version, dn, LDAP_AUTH_KRBV41, cred, credlen ); + +#ifdef STR_TRANSLATION + if ( str_translation_on ) { /* restore translation */ + ber->ber_options |= LBER_TRANSLATE_STRINGS; + } +#endif /* STR_TRANSLATION */ + + if ( rc == -1 ) { + free( cred ); + ber_free( ber, 1 ); + ld->ld_errno = LDAP_ENCODING_ERROR; + return( -1 ); + } + + free( cred ); + +#ifndef NO_CACHE + if ( ld->ld_cache != NULL ) { + ldap_flush_cache( ld ); + } +#endif /* !NO_CACHE */ + + /* send the message */ + return ( send_initial_request( ld, LDAP_REQ_BIND, dn, ber )); +} + +int +ldap_kerberos_bind1_s( LDAP *ld, char *dn ) +{ + int msgid; + LDAPMessage *res; + + Debug( LDAP_DEBUG_TRACE, "ldap_kerberos_bind1_s\n", 0, 0, 0 ); + + /* initiate the bind */ + if ( (msgid = ldap_kerberos_bind1( ld, dn )) == -1 ) + return( ld->ld_errno ); + + /* wait for a result */ + if ( ldap_result( ld, ld->ld_msgid, 1, (struct timeval *) 0, &res ) + == -1 ) { + return( ld->ld_errno ); /* ldap_result sets ld_errno */ + } + + return( ldap_result2error( ld, res, 1 ) ); +} + +/* + * ldap_kerberos_bind2 - initiate a bind to the X.500 server using + * kerberos authentication. The dn is supplied. It is assumed the user + * already has a valid ticket granting ticket. The msgid of the + * request is returned on success (suitable for passing to ldap_result()), + * -1 is returned if there's trouble. + * + * Example: + * ldap_kerberos_bind2( ld, "cn=manager, o=university of michigan, c=us" ) + */ +int +ldap_kerberos_bind2( LDAP *ld, char *dn ) +{ + BerElement *ber; + char *cred; + int rc, credlen; + char *get_kerberosv4_credentials(); +#ifdef STR_TRANSLATION + int str_translation_on; +#endif /* STR_TRANSLATION */ + + Debug( LDAP_DEBUG_TRACE, "ldap_kerberos_bind2\n", 0, 0, 0 ); + + if ( dn == NULL ) + dn = ""; + + if ( (cred = get_kerberosv4_credentials( ld, dn, "x500dsa", &credlen )) + == NULL ) { + return( -1 ); /* ld_errno should already be set */ + } + + /* create a message to send */ + if ( (ber = alloc_ber_with_options( ld )) == NULLBER ) { + free( cred ); + return( -1 ); + } + +#ifdef STR_TRANSLATION + if (( str_translation_on = (( ber->ber_options & + LBER_TRANSLATE_STRINGS ) != 0 ))) { /* turn translation off */ + ber->ber_options &= ~LBER_TRANSLATE_STRINGS; + } +#endif /* STR_TRANSLATION */ + + /* fill it in */ + rc = ber_printf( ber, "{it{isto}}", ++ld->ld_msgid, LDAP_REQ_BIND, + ld->ld_version, dn, LDAP_AUTH_KRBV42, cred, credlen ); + + +#ifdef STR_TRANSLATION + if ( str_translation_on ) { /* restore translation */ + ber->ber_options |= LBER_TRANSLATE_STRINGS; + } +#endif /* STR_TRANSLATION */ + + free( cred ); + + if ( rc == -1 ) { + ber_free( ber, 1 ); + ld->ld_errno = LDAP_ENCODING_ERROR; + return( -1 ); + } + + /* send the message */ + return ( send_initial_request( ld, LDAP_REQ_BIND, dn, ber )); +} + +/* synchronous bind to DSA using kerberos */ +int +ldap_kerberos_bind2_s( LDAP *ld, char *dn ) +{ + int msgid; + LDAPMessage *res; + + Debug( LDAP_DEBUG_TRACE, "ldap_kerberos_bind2_s\n", 0, 0, 0 ); + + /* initiate the bind */ + if ( (msgid = ldap_kerberos_bind2( ld, dn )) == -1 ) + return( ld->ld_errno ); + + /* wait for a result */ + if ( ldap_result( ld, ld->ld_msgid, 1, (struct timeval *) 0, &res ) + == -1 ) { + return( ld->ld_errno ); /* ldap_result sets ld_errno */ + } + + return( ldap_result2error( ld, res, 1 ) ); +} + +/* synchronous bind to ldap and DSA using kerberos */ +int +ldap_kerberos_bind_s( LDAP *ld, char *dn ) +{ + int err; + + Debug( LDAP_DEBUG_TRACE, "ldap_kerberos_bind_s\n", 0, 0, 0 ); + + if ( (err = ldap_kerberos_bind1_s( ld, dn )) != LDAP_SUCCESS ) + return( err ); + + return( ldap_kerberos_bind2_s( ld, dn ) ); +} + + +#ifndef AUTHMAN +#ifdef WINDOWS +#define FreeWindowsLibrary() FreeLibrary(instKrbv4DLL);instKrbv4DLL = (HINSTANCE)NULL; +#else /* WINDOWS */ +#define FreeWindowsLibrary() /* do nothing */ +#endif /* WINDOWS */ +/* + * get_kerberosv4_credentials - obtain kerberos v4 credentials for ldap. + * The dn of the entry to which to bind is supplied. It's assumed the + * user already has a tgt. + */ + +char * +get_kerberosv4_credentials( LDAP *ld, char *who, char *service, int *len ) +{ + KTEXT_ST ktxt; + int err; + char realm[REALM_SZ], *cred, *krbinstance; +#ifdef WINDOWS + typedef int (_cdecl* pfn_krb_get_tf_realm) (char FAR *,char FAR *); + typedef int (PASCAL* pfn_krb_mk_req) (KTEXT,LPSTR,LPSTR,LPSTR,long); + typedef char * (_cdecl* pfn_tkt_string) (); + + static HINSTANCE instKrbv4DLL = (HINSTANCE)NULL; + pfn_krb_get_tf_realm fptr_krb_get_tf_realm = NULL; + pfn_krb_mk_req fptr_krb_mk_req = NULL; + pfn_tkt_string fptr_tkt_string = NULL; + char* p_tkt_string = NULL; + KTEXT pKt = &ktxt; +#endif + + Debug( LDAP_DEBUG_TRACE, "get_kerberosv4_credentials\n", 0, 0, 0 ); + +#ifdef WINDOWS + /* + * The goal is to gracefully survive the absence of krbv4win.dll + * and thus wshelper.dll. User's won't be able to use kerberos, + * but they shouldn't see a message box everytime libldap.dll loads. + */ + if ( !instKrbv4DLL ) { + unsigned int prevMode = SetErrorMode( SEM_NOOPENFILEERRORBOX ); // don't whine at user if you can't find it + instKrbv4DLL = LoadLibrary("Krbv4win.DLL"); + SetErrorMode( prevMode ); + + if ( instKrbv4DLL < HINSTANCE_ERROR ) { // can't find authlib + ld->ld_errno = LDAP_AUTH_UNKNOWN; + return( NULL ); + } + + fptr_krb_get_tf_realm = (pfn_krb_get_tf_realm)GetProcAddress( instKrbv4DLL, "_krb_get_tf_realm" ); + fptr_krb_mk_req = (pfn_krb_mk_req)GetProcAddress( instKrbv4DLL, "krb_mk_req" ); + fptr_tkt_string = (pfn_tkt_string)GetProcAddress( instKrbv4DLL, "_tkt_string" ); + + // verify that we found all the routines we need + if (!(fptr_krb_mk_req && fptr_krb_get_tf_realm && fptr_tkt_string)) { + FreeWindowsLibrary(); + ld->ld_errno = LDAP_AUTH_UNKNOWN; + return( NULL ); + } + + } + p_tkt_string = (fptr_tkt_string)( ); + if ( (err = (fptr_krb_get_tf_realm)( p_tkt_string, realm )) != KSUCCESS ) { +#else /* WINDOWS */ + if ( (err = krb_get_tf_realm( tkt_string(), realm )) != KSUCCESS ) { +#endif /* WINDOWS */ +#ifndef NO_USERINTERFACE + fprintf( stderr, "krb_get_tf_realm failed (%s)\n", + krb_err_txt[err] ); +#endif /* NO_USERINTERFACE */ + ld->ld_errno = LDAP_INVALID_CREDENTIALS; + FreeWindowsLibrary(); + return( NULL ); + } + +#ifdef LDAP_REFERRALS + krbinstance = ld->ld_defconn->lconn_krbinstance; +#else /* LDAP_REFERRALS */ + krbinstance = ld->ld_host; +#endif /* LDAP_REFERRALS */ + +#ifdef WINDOWS + if ( !krbinstance ) { // if we don't know name of service host, no chance for service tickets + FreeWindowsLibrary(); + ld->ld_errno = LDAP_LOCAL_ERROR; + WSASetLastError(WSANO_ADDRESS); + return( NULL ); + } +#endif /* WINDOWS */ + +#ifdef WINDOWS + if ( (err = (fptr_krb_mk_req)( pKt, service, krbinstance, realm, 0 )) +#else /* WINDOWS */ + if ( (err = krb_mk_req( &ktxt, service, krbinstance, realm, 0 )) +#endif /* WINDOWS */ + != KSUCCESS ) { +#ifndef NO_USERINTERFACE + fprintf( stderr, "krb_mk_req failed (%s)\n", krb_err_txt[err] ); +#endif /* NO_USERINTERFACE */ + ld->ld_errno = LDAP_INVALID_CREDENTIALS; + FreeWindowsLibrary(); + return( NULL ); + } + + if ( ( cred = malloc( ktxt.length )) == NULL ) { + ld->ld_errno = LDAP_NO_MEMORY; + FreeWindowsLibrary(); + return( NULL ); + } + + *len = ktxt.length; + memcpy( cred, ktxt.dat, ktxt.length ); + + FreeWindowsLibrary(); + return( cred ); +} + +#endif /* !AUTHMAN */ +#endif /* KERBEROS */ diff --git a/ldap/ldap32.gid b/ldap/ldap32.gid new file mode 100644 index 00000000..8f35a869 Binary files /dev/null and b/ldap/ldap32.gid differ diff --git a/ldap/ldap32.hlp b/ldap/ldap32.hlp new file mode 100755 index 00000000..f9de5446 Binary files /dev/null and b/ldap/ldap32.hlp differ diff --git a/ldap/ldfilter.cfg b/ldap/ldfilter.cfg new file mode 100755 index 00000000..c602f7d2 --- /dev/null +++ b/ldap/ldfilter.cfg @@ -0,0 +1,105 @@ +# ldap filter file +# +# lines like this that start with # or empty lines are ignored +# +# syntax: +# +# +# [] +# [] +# +# [] ... +# +# The "desc" should describe the filter and it should correctly complete +# both of the following phrases: +# +# One match was found for... +# Three matches were found for... +# +# The scope is optional, and should be one of: +# "base" +# "onelevel" +# "subtree" +# if it is included. +# + +"finger and ud and go500 and go500gw subtree and web500gw subtree and rp500 and rcpt500 and ufn last" + "=" " " "%v" "arbitrary filter" + + "^[0-9][0-9-]*$" " " "(telephoneNumber=*%v)" "phone number" + + "@" " " "(mail=%v)" "email address" + "(mail=%v*)" "start of email address" + + "^.[. _].*" ". _" "(cn=%v1* %v2-)" "first initial" + + ".*[. _].$" ". _" "(cn=%v1-*)" "last initial" + + "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-))" "exact" + "(|(sn~=%v1-)(cn~=%v1-))" "approximate" + + ".*" ". " "(|(cn=%v1)(sn=%v1)(uid=%v1))" "exact" + "(|(cn~=%v1)(sn~=%v1))" "approximate" + +"go500gw onelevel and web500gw onelevel and ufn first and ufn intermediate" + "=" " " "%v" "arbitrary filter" + + "^..$" " " "(|(o=%v)(c=%v)(l=%v)(co=%v))" "exact" + "(|(o~=%v)(c~=%v)(l~=%v)(co~=%v))" "approximate" + + " " " " "(|(o=%v)(l=%v)(co=%v)(ou=%v))" "exact" + "(|(o~=%v)(l~=%v)(co~=%v)(ou~=%v))" "approximate" + + "\." " " "(associatedDomain=%v)" "exact" + + ".*" " " "(|(o=%v)(l=%v)(co=%v)(ou=%v))" "exact" + "(|(o~=%v)(l~=%v)(co~=%v)(ou~=%v))" "approximate" + + +# +# xax500 +# + +"xax500" + "=" " " "(%v)" "arbitrary filter" + + "^[0-9][0-9-]*$" " " "(telephoneNumber=*%v)" "phone number" + + "@" " " "(mail=%v)" "email address" + "(mail=%v*)" "start of email address" + + "^.[. _].*" ". _" "(cn=%v1* %v2-)" "first initial" + + ".*[. _].$" ". _" "(cn=%v1-*)" "last initial" + + "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-))" "exact" + "(|(sn~=%v1-)(cn~=%v1-))" "approximate" + + ".*" ". " "(|(cn=%v1)(sn=%v1)(uid=%v1))" "exact" + "(|(cn=%v1)(sn~=%v1))" "approximate" + + +"xax500-auth" + "=" " " "(%v)" "arbitrary filter" + + "^[0-9][0-9-]*$" " " "(telephoneNumber=*%v)" "phone number" + + "@" " " "(mail=%v)" "email address" + "(mail=%v*)" "start of email address" + + "^.[. _].*" ". _" "(cn=%v1* %v2-)" "first initial" + + ".*[. _].$" ". _" "(cn=%v1-*)" "last initial" + + "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-))" "exact" + "(|(sn~=%v1-)(cn~=%v1-))" "approximate" + + ".*" ". " "(|(cn=%v1)(sn=%v1)(uid=%v1))" "exact" + "(|(cn=%v1)(sn~=%v1))" "approximate" + +"list500" + "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-))" "exact" + "(|(sn~=%v1-)(cn~=%v1-))" "approximate" + + ".*" ". " "(|(cn=%v1)(sn=%v1)(uid=%v1))" "exact" + "(|(cn~=%v1)(sn~=%v1))" "approximate" diff --git a/ldap/ldfriend.cfg b/ldap/ldfriend.cfg new file mode 100755 index 00000000..3605090c --- /dev/null +++ b/ldap/ldfriend.cfg @@ -0,0 +1,242 @@ +AD Andorra +AE United Arab Emirates +AF Afghanistan +AG Antigua and Barbuda +AI Anguilla +AL Albania +AM Armenia +AN Netherlands Antilles +AO Angola +AQ Antarctica +AR Argentina +AS American Samoa +AT Austria +AU Australia +AW Aruba +AZ Azerbaijan +BA Bosnia and Herzegowina +BB Barbados +BD Bangladesh +BE Belgium +BF Burkina Faso +BG Bulgaria +BH Bahrain +BI Burundi +BJ Benin +BM Bermuda +BN Brunei Darussalam +BO Bolivia +BR Brazil +BS Bahamas +BT Bhutan +BV Bouvet Island +BW Botswana +BY Belarus +BZ Belize +CA Canada +CC Cocos (Keeling) Islands +CF Central African Republic +CG Congo +CH Switzerland +CI Cote d'Ivoire +CK Cook Islands +CL Chile +CM Cameroon +CN China +CO Colombia +CR Costa Rica +CS Former Czechoslovakia +CU Cuba +CV Cape Verde +CX Christmas Island +CY Cyprus +CZ Czech Republic +DE Germany +DJ Djibouti +DK Denmark +DM Dominica +DO Dominican Republic +DZ Algeria +EC Ecuador +EE Estonia +EG Egypt +EH Western Sahara +ER Eritrea +ES Spain +ET Ethiopia +FI Finland +FJ Fiji +FK Falkland Islands (Malvinas) +FM Micronesia +FO Faroe Islands +FR France +FX France, Metropolitan +GA Gabon +GB United Kingdom +GD Grenada +GE Georgia +GF French Guiana +GH Ghana +GI Gibraltar +GL Greenland +GM Gambia +GN Guinea +GP Guadeloupe +GQ Equatorial Guinea +GR Greece +GS South Georgia and the South Sandwich Islands +GT Guatemala +GU Guam +GW Guinea-Bissau +GY Guyana +HK Hong Kong +HM Heard and McDonald Islands +HN Honduras +HR Croatia +HT Haiti +HU Hungary +ID Indonesia +IE Ireland +IL Israel +IN India +IO British Indian Ocean Territory +IQ Iraq +IR Iran +IS Iceland +IT Italy +JM Jamaica +JO Jordan +JP Japan +KE Kenya +KG Kyrgyzstan +KH Cambodia +KI Kiribati +KM Comoros +KN Saint Kitts and Nevis +KP Korea, Democratic People's Republic of +KR Korea, Republic of +KW Kuwait +KY Cayman Islands +KZ Kazakhstan +LA Laos +LB Lebanon +LC Saint Lucia +LI Liechtenstein +LK Sri Lanka +LR Liberia +LS Lesotho +LT Lithuania +LU Luxembourg +LV Latvia +LY Libya +MA Morocco +MC Monaco +MD Moldova +MG Madagascar +MH Marshall Islands +MK Macedonia +ML Mali +MM Myanmar +MN Mongolia +MO Macau +MP Northern Mariana Islands +MQ Martinique +MR Mauritania +MS Montserrat +MT Malta +MU Mauritius +MV Maldives +MW Malawi +MX Mexico +MY Malaysia +MZ Mozambique +NA Namibia +NC New Caledonia +NE Niger +NF Norfolk Island +NG Nigeria +NI Nicaragua +NL Netherlands +NO Norway +NP Nepal +NR Nauru +NU Niue +NZ New Zealand +OM Oman +PA Panama +PE Peru +PF French Polynesia +PG Papua New Guinea +PH Philippines +PK Pakistan +PL Poland +PM St. Pierre and Miquelon +PN Pitcairn +PR Puerto Rico +PT Portugal +PW Palau +PY Paraguay +QA Qatar +RE Reunion +RO Romania +RU Russian Federation +RW Rwanda +SA Saudi Arabia +SB Solomon Islands +SC Seychelles +SD Sudan +SE Sweden +SG Singapore +SH St. Helena +SI Slovenia +SJ Svalbard and Jan Mayen Islands +SK Slovakia (Slovak Republic) +SL Sierra Leone +SM San Marino +SN Senegal +SO Somalia +SR Suriname +ST Sao Tome and Principe +SU Former Soviet Union +SV El Salvador +SY Syria +SZ Swaziland +TC Turks and Caicos Islands +TD Chad +TF French Southern Territories +TG Togo +TH Thailand +TJ Tajikistan +TK Tokelau +TM Turkmenistan +TN Tunisia +TO Tonga +TP East Timor +TR Turkey +TT Trinidad and Tobago +TV Tuvalu +TW Taiwan +TZ Tanzania +UA Ukraine +UG Uganda +UK United Kingdom +UM United States Minor Outlying Islands +US United States of America +UY Uruguay +UZ Uzbekistan +VA Vatican City State (Holy See) +VC Saint Vincent and the Grenadines +VE Venezuela +VG Virgin Islands (British) +VI Virgin Islands (U.S.) +VN Viet Nam +VU Vanuatu +WF Wallis and Futuna Islands +WS Samoa +YE Yemen +YT Mayotte +YU Yugoslavia +ZA South Africa +ZM Zambia +ZR Zaire +ZW Zimbabwe diff --git a/ldap/lib b/ldap/lib new file mode 120000 index 00000000..b545aebb --- /dev/null +++ b/ldap/lib @@ -0,0 +1 @@ +binaries/release \ No newline at end of file diff --git a/ldap/libldap.hlp b/ldap/libldap.hlp new file mode 100755 index 00000000..981ef717 Binary files /dev/null and b/ldap/libldap.hlp differ diff --git a/ldap/libldap.mak b/ldap/libldap.mak new file mode 100755 index 00000000..6e9a2b98 --- /dev/null +++ b/ldap/libldap.mak @@ -0,0 +1,667 @@ +# Microsoft Visual C++ generated build script - Do not modify + +PROJ = LIBLDAP +DEBUG = 0 +PROGTYPE = 1 +CALLER = c:\tmp\ltest.exe +ARGS = +DLLS = +D_RCDEFINES = /d_DEBUG +R_RCDEFINES = /dNDEBUG +ORIGIN = MSVC +ORIGIN_VER = 1.00 +PROJPATH = C:\SRC\LDAP\LIBRAR~1\LIBLDAP\ +USEMFC = 0 +CC = cl +CPP = cl +CXX = cl +CCREATEPCHFLAG = +CPPCREATEPCHFLAG = +CUSEPCHFLAG = +CPPUSEPCHFLAG = +FIRSTC = ABANDON.C +FIRSTCPP = +RC = rc +CFLAGS_D_WDLL = /nologo /G2 /W3 /Gf /Zi /ALu /Od /D "_DEBUG" /D "WINSOCK" /D "DOS" /D "NEEDPROTOS" /D "NO_USERINTERFACE" /D "KERBEROS" /FR /Fd"LIBLDAP.PDB" +CFLAGS_R_WDLL = /nologo /f- /G3 /W3 /Gf /ALu /Od /D "NDEBUG" /D "WINSOCK" /D "DOS" /D "NEEDPROTOS" /D "NO_USERINTERFACE" /D "KERBEROS" +LFLAGS_D_WDLL = /NOLOGO /NOD /NOE /PACKC:61440 /ALIGN:16 /ONERROR:NOEXE /CO /MAP:FULL +LFLAGS_R_WDLL = /NOLOGO /NOD /NOE /PACKC:61440 /ALIGN:16 /ONERROR:NOEXE /MAP:FULL +LIBS_D_WDLL = oldnames libw ldllcew commdlg.lib olecli.lib olesvr.lib shell.lib +LIBS_R_WDLL = oldnames libw ldllcew commdlg.lib olecli.lib olesvr.lib shell.lib +RCFLAGS = /nologo +RESFLAGS = /nologo +RUNFLAGS = +DEFFILE = LIBLDAP.DEF +OBJS_EXT = +LIBS_EXT = WINSOCK.LIB +!if "$(DEBUG)" == "1" +CFLAGS = $(CFLAGS_D_WDLL) +LFLAGS = $(LFLAGS_D_WDLL) +LIBS = $(LIBS_D_WDLL) +MAPFILE = nul +RCDEFINES = $(D_RCDEFINES) +!else +CFLAGS = $(CFLAGS_R_WDLL) +LFLAGS = $(LFLAGS_R_WDLL) +LIBS = $(LIBS_R_WDLL) +MAPFILE = nul +RCDEFINES = $(R_RCDEFINES) +!endif +!if [if exist MSVC.BND del MSVC.BND] +!endif +SBRS = ABANDON.SBR \ + ADD.SBR \ + BIND.SBR \ + CACHE.SBR \ + COMPARE.SBR \ + DELETE.SBR \ + ERROR.SBR \ + GETFILTE.SBR \ + REGEX.SBR \ + MODIFY.SBR \ + MODRDN.SBR \ + GETDN.SBR \ + GETENTRY.SBR \ + GETATTR.SBR \ + GETVALUE.SBR \ + ADDENTRY.SBR \ + RESULT.SBR \ + SEARCH.SBR \ + UFN.SBR \ + DECODE.SBR \ + ENCODE.SBR \ + IO.SBR \ + MSDOS.SBR \ + SBIND.SBR \ + UNBIND.SBR \ + KBIND.SBR \ + FRIENDLY.SBR \ + DISPTMPL.SBR \ + DSPARSE.SBR \ + FREE.SBR \ + SORT.SBR \ + SRCHPREF.SBR \ + TMPLOUT.SBR \ + REQUEST.SBR \ + WSOCKIP.SBR \ + OPEN.SBR \ + CHARSET.SBR \ + URL.SBR + + +WINSOCK_DEP = + +ABANDON_DEP = c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +ADD_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +BIND_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h + + +CACHE_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +COMPARE_DEP = c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +DELETE_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +ERROR_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h + + +GETFILTE_DEP = c:\src\ldap\include\regex.h \ + c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/file.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h + + +REGEX_DEP = c:\src\ldap\include\portable.h \ + c:\src\ldap\include\regex.h + + +MODIFY_DEP = c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +MODRDN_DEP = c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +GETDN_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h + + +GETENTRY_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h + + +GETATTR_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +GETVALUE_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h + + +ADDENTRY_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h + + +RESULT_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\sys/select.h \ + c:\src\ldap\include\portable.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +SEARCH_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +UFN_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h + + +DECODE_DEP = c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\netinet/in.h \ + c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h + + +ENCODE_DEP = c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\netinet/in.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h + + +IO_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\netinet/in.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h + + +MSDOS_DEP = c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\proto-ld.h + + +SBIND_DEP = c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +UNBIND_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +KBIND_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\krb.h \ + c:\src\ldap\include\mit_copy.h \ + c:\src\ldap\include\conf.h \ + c:\src\ldap\include\osconf.h \ + c:\src\ldap\include\conf-pc.h \ + c:\src\ldap\include\des.h \ + c:\src\ldap\include\lsh_pwd.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +FRIENDLY_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h + + +DISPTMPL_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/file.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\include\disptmpl.h + + +DSPARSE_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/file.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h + + +FREE_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h + + +SORT_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h + + +SRCHPREF_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/file.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\include\srchpref.h + + +TMPLOUT_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/file.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\include\disptmpl.h + + +LIBLDAP_RCDEP = + +REQUEST_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\sys/select.h \ + c:\src\ldap\include\portable.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +WSOCKIP_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\wshelper.h \ + c:\src\ldap\include\resolv.h \ + c:\src\ldap\include\arpa/nameser.h \ + c:\src\ldap\include\hesiod.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\netinet/in.h \ + c:\src\ldap\include\netdb.h \ + c:\src\ldap\include\sys\socket.h \ + c:\src\ldap\include\sys/select.h \ + c:\src\ldap\include\portable.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\include\_sys/filio.h \ + c:\src\ldap\include\sys/filio.h \ + c:\src\ldap\include\_sys/ioctl.h \ + c:\src\ldap\include\sys/ioctl.h + + +OPEN_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\sys/param.h \ + c:\src\ldap\include\netinet/in.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +CHARSET_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\sys/param.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +URL_DEP = c:\src\ldap\include\msdos.h \ + c:\msvc\include\winsock.h \ + c:\src\ldap\include\sys/socket.h \ + c:\src\ldap\include\lber.h \ + c:\src\ldap\include\proto-lb.h \ + c:\src\ldap\include\ldap.h \ + c:\src\ldap\include\proto-ld.h \ + c:\src\ldap\librar~1\libldap\ldap-int.h + + +all: $(PROJ).DLL + +ABANDON.OBJ: ABANDON.C $(ABANDON_DEP) + $(CC) $(CFLAGS) $(CCREATEPCHFLAG) /c ABANDON.C + +ADD.OBJ: ADD.C $(ADD_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c ADD.C + +BIND.OBJ: BIND.C $(BIND_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c BIND.C + +CACHE.OBJ: CACHE.C $(CACHE_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c CACHE.C + +COMPARE.OBJ: COMPARE.C $(COMPARE_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c COMPARE.C + +DELETE.OBJ: DELETE.C $(DELETE_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c DELETE.C + +ERROR.OBJ: ERROR.C $(ERROR_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c ERROR.C + +GETFILTE.OBJ: GETFILTE.C $(GETFILTE_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c GETFILTE.C + +REGEX.OBJ: REGEX.C $(REGEX_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c REGEX.C + +MODIFY.OBJ: MODIFY.C $(MODIFY_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c MODIFY.C + +MODRDN.OBJ: MODRDN.C $(MODRDN_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c MODRDN.C + +GETDN.OBJ: GETDN.C $(GETDN_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c GETDN.C + +GETENTRY.OBJ: GETENTRY.C $(GETENTRY_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c GETENTRY.C + +GETATTR.OBJ: GETATTR.C $(GETATTR_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c GETATTR.C + +GETVALUE.OBJ: GETVALUE.C $(GETVALUE_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c GETVALUE.C + +ADDENTRY.OBJ: ADDENTRY.C $(ADDENTRY_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c ADDENTRY.C + +RESULT.OBJ: RESULT.C $(RESULT_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c RESULT.C + +SEARCH.OBJ: SEARCH.C $(SEARCH_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c SEARCH.C + +UFN.OBJ: UFN.C $(UFN_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c UFN.C + +DECODE.OBJ: ..\LIBLBER\DECODE.C $(DECODE_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c ..\LIBLBER\DECODE.C + +ENCODE.OBJ: ..\LIBLBER\ENCODE.C $(ENCODE_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c ..\LIBLBER\ENCODE.C + +IO.OBJ: ..\LIBLBER\IO.C $(IO_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c ..\LIBLBER\IO.C + +MSDOS.OBJ: MSDOS.C $(MSDOS_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c MSDOS.C + +SBIND.OBJ: SBIND.C $(SBIND_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c SBIND.C + +UNBIND.OBJ: UNBIND.C $(UNBIND_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c UNBIND.C + +KBIND.OBJ: KBIND.C $(KBIND_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c KBIND.C + +FRIENDLY.OBJ: FRIENDLY.C $(FRIENDLY_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c FRIENDLY.C + +DISPTMPL.OBJ: DISPTMPL.C $(DISPTMPL_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c DISPTMPL.C + +DSPARSE.OBJ: DSPARSE.C $(DSPARSE_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c DSPARSE.C + +FREE.OBJ: FREE.C $(FREE_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c FREE.C + +SORT.OBJ: SORT.C $(SORT_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c SORT.C + +SRCHPREF.OBJ: SRCHPREF.C $(SRCHPREF_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c SRCHPREF.C + +TMPLOUT.OBJ: TMPLOUT.C $(TMPLOUT_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c TMPLOUT.C + +LIBLDAP.RES: LIBLDAP.RC $(LIBLDAP_RCDEP) + $(RC) $(RCFLAGS) $(RCDEFINES) -r LIBLDAP.RC + +REQUEST.OBJ: REQUEST.C $(REQUEST_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c REQUEST.C + +WSOCKIP.OBJ: WSOCKIP.C $(WSOCKIP_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c WSOCKIP.C + +OPEN.OBJ: OPEN.C $(OPEN_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c OPEN.C + +CHARSET.OBJ: CHARSET.C $(CHARSET_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c CHARSET.C + +URL.OBJ: URL.C $(URL_DEP) + $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c URL.C + + +$(PROJ).DLL:: LIBLDAP.RES + +$(PROJ).DLL:: ABANDON.OBJ ADD.OBJ BIND.OBJ CACHE.OBJ COMPARE.OBJ DELETE.OBJ ERROR.OBJ \ + GETFILTE.OBJ REGEX.OBJ MODIFY.OBJ MODRDN.OBJ GETDN.OBJ GETENTRY.OBJ GETATTR.OBJ GETVALUE.OBJ \ + ADDENTRY.OBJ RESULT.OBJ SEARCH.OBJ UFN.OBJ DECODE.OBJ ENCODE.OBJ IO.OBJ MSDOS.OBJ \ + SBIND.OBJ UNBIND.OBJ KBIND.OBJ FRIENDLY.OBJ DISPTMPL.OBJ DSPARSE.OBJ FREE.OBJ SORT.OBJ \ + SRCHPREF.OBJ TMPLOUT.OBJ REQUEST.OBJ WSOCKIP.OBJ OPEN.OBJ CHARSET.OBJ URL.OBJ $(OBJS_EXT) $(DEFFILE) + echo >NUL @<<$(PROJ).CRF +ABANDON.OBJ + +ADD.OBJ + +BIND.OBJ + +CACHE.OBJ + +COMPARE.OBJ + +DELETE.OBJ + +ERROR.OBJ + +GETFILTE.OBJ + +REGEX.OBJ + +MODIFY.OBJ + +MODRDN.OBJ + +GETDN.OBJ + +GETENTRY.OBJ + +GETATTR.OBJ + +GETVALUE.OBJ + +ADDENTRY.OBJ + +RESULT.OBJ + +SEARCH.OBJ + +UFN.OBJ + +DECODE.OBJ + +ENCODE.OBJ + +IO.OBJ + +MSDOS.OBJ + +SBIND.OBJ + +UNBIND.OBJ + +KBIND.OBJ + +FRIENDLY.OBJ + +DISPTMPL.OBJ + +DSPARSE.OBJ + +FREE.OBJ + +SORT.OBJ + +SRCHPREF.OBJ + +TMPLOUT.OBJ + +REQUEST.OBJ + +WSOCKIP.OBJ + +OPEN.OBJ + +CHARSET.OBJ + +URL.OBJ + +$(OBJS_EXT) +$(PROJ).DLL +$(MAPFILE) +c:\msvc\lib\+ +c:\msvc\mfc\lib\+ +c:\src\lib\+ +WINSOCK.LIB+ +$(LIBS) +$(DEFFILE); +<< + link $(LFLAGS) @$(PROJ).CRF + $(RC) $(RESFLAGS) LIBLDAP.RES $@ + @copy $(PROJ).CRF MSVC.BND + implib /nowep $(PROJ).LIB $(PROJ).DLL + +$(PROJ).DLL:: LIBLDAP.RES + if not exist MSVC.BND $(RC) $(RESFLAGS) LIBLDAP.RES $@ + +run: $(PROJ).DLL + $(PROJ) $(RUNFLAGS) + + +$(PROJ).BSC: $(SBRS) + bscmake @<< +/o$@ $(SBRS) +<< diff --git a/ldap/readme.txt b/ldap/readme.txt new file mode 100755 index 00000000..c504f4f0 --- /dev/null +++ b/ldap/readme.txt @@ -0,0 +1,218 @@ + +LDAP (Lightweight Directory Access Protocol) API for Windows/Winsock + +(Change history is at the bottom of this file.) + +The lber and ldap client libraries have been ported to Microsoft Windows +in the form of Windows Dynamic Link libraries called LIBLDAP.DLL (16Bit) +and Ldap32.dll (32Bit). The LTest program is also provided in both +formats. + +A Windows Sockets API (version 1.1 conformant) TCP/IP WINSOCK.DLL or +WSOCK32.DLL is required for the DLL to run. + +Our intent is that this "kit" include everything you'll need to make use +of the ldap client API from your 16Bit or 32Bit application. If you +find something missing or have a suggestion for improvement, send email +to the "bug reporting" address at the bottom of this file. + +To use this "kit" + + 1) Get to a DOS prompt + + 2) Create the directory you want this to live in (e.g. \ldap) + and cd into it. We will refer to that directory simply as + "\ldap" from now on, but it could be anywhere and have any name + you desire. + + 3) Use "pkunzip -d" to extract the files. The "-d" is NECESSARY to + preserve the subdirectories and avoid file name collisions. + + 4) We have included only the files you need to use and test + libldap.dll and ldap32.dll. If you want the entire distribution, + with source, you can get it from: + + ftp://terminator.rs.itd.umich.edu/ldap/ldap-3.3.tar.Z + +The following files are included in this distribution: + + 16Bit binaries and libs + BINARIES/DEBUG/LIBLDAP.DLL + BINARIES/DEBUG/LIBLDAP.LIB + BINARIES/RELEASE/LIBLDAP.DLL + BINARIES/RELEASE/LIBLDAP.LIB + + BINARIES/DEBUG/LTEST.EXE + + 32Bit binaries and libs + BINARIES/DEBUG/LDAP32.DLL + BINARIES/DEBUG/LDAP32.LIB + BINARIES/RELEASE/LDAP32.DLL + BINARIES/RELEASE/LDAP32.LIB + + BINARIES/DEBUG/LTEST32.EXE + + Include files + INCKIT/MSDOS.H + INCKIT/LBER.H + INCKIT/LDAP.H + INCKIT/PROTO-LD.H + INCKIT/PROTO-LB.H + INCKIT/SRCHPREF.H + INCKIT/DISPTMPL.H + + Sample Configuration files + SRCHPREF.CFG + DISPTMPL.CFG + LDFRIEND.CFG + LDFILTER.CFG + + Man pages in the form of Windows HLP files + LIBLDAP.HLP - old format hlp file + LDAP32.HLP - new format hlp file, both have same content + +16Bit versions + + Libldap.dll was compiled with KERBEROS, AUTHMAN, WSHELPER, WIN32, + _WINDOWS,& LDAP_REFERRALS defined. Even if you do not need kerberos + authentication, (see below for more information on kerberos) this + dll should work correctly for you. + + LDAP_REFERRALS makes libldap.dll capable of handling referrals + returned by a slapd server. + +32Bit versions + + The 32Bit version is NOT SAFE for MULTIPLE THREADS at this time. + Not more than one thread per application may make use of the + ldap routines. + + Ldap32.dll was compiled with LDAP_REFERRALS defined and is capable + of handling referrals returned by a slapd server. + + +WRITING APPLICATIONS THAT USE LIBLDAP.DLL or LDAP32.DLL + + All of the normal LDAP and LBER calls documented in the help file + should work, except for ldap_perror (this is not supported under + Windows since you will want to use an application-defined dialog; + you can use ldap_err2string to obtain an error string to display in + a message box or dialog). + + The man pages are included in this kit in the form of windows HLP files. + The official source man pages are available via the web at: + + http://www.umich.edu/ldap/doc/man/ + + Any memory that you obtain as the result of a call to an LIBLDAP.DLL + routine should NOT be freed by calling the free() routine in your C + library. Instead, use the the new utility routine ldap_memfree or + the appropriate ldap ...free routine. This is so the malloc/calloc + and free routines all come from the same library (the one in + libldap) rather than using libldap's malloc/calloc and the calling + program's free. Microsoft's VC++ 4.0 compiler (in debug mode) + FORCED me to be compulsive about this for the application I used to + test. + + To be friendly under Windows, you should use the asynchronous LDAP + calls whenever possible. + + One limitation of the current LIBLDAP.DLL is that each X.500 LDAP + result message has to be smaller than 64K bytes. Ldap32.dll does + NOT have this limitation. + + To compile the ldap dlls we define the following preprocessor variables. + + WINSOCK, DOS, NEEDPROTOS, NO_USERINTERFACE, KERBEROS + + Presumably you don't need KERBEROS. You may need some/all the others + to take the right path through the include files. Also note that a + few more preprocessor variables are defined in msdos.h. This means that + msdos.h must be included before ldap.h or lber.h. + + +LTest and LTtest32 + + The LTest.exe and LTest32.exe programs are test interfaces to libldap + and ldap32 respectively. By default they connect to the host + "truelies". This host name is contained in a string resource in the + exe file. You may easily "customize" this to be the name of whatever + server you're using with AppStudio or any Windows resource editor. + +Kerberos Information + + Libldap.dll was compiled with KERBEROS, AUTHMAN, WSHELPER, & + LDAP_REFERRALS defined. If you do not need kerberos authentication, + this dll should still work correctly for you. Libldap.dll + dynamically loads and uses the dlls needed for kerberos + authentication (Authlib.dll, Krbv4win.dll, & WSHelper.dll). If + Libldap.dll is unable to load the needed dlls, execution continues + without error, but without kerberos authentication capability. + + AUTHMAN allows libldap.dll to make use of Authlib.dll (which + requires KrbV4Win.dll & WSHelper.dll) if they are ALL in the "PATH". + If these are not available, kerberos authentication can not succede, + but libldap.dll will execute without error. + + WSHELPER means that if WSHelper.dll is in the "PATH", it will be + dynamically loaded and used to do the gethostbyaddr() call required + for kerberos authentication to work. (This is used because so many + vendor implementations of gethostbyaddr return WRONG results. We + are working with all vendors we can get to listen to get these + implementations fixed.) If WSHelper.dll is not in the "PATH" + libldap.dll does not fail to execute correctly. + + Ldap32.dll does NOT have the ability to do kerberos authentication + because none of Authlib.dll, krbv4win.dll or wshelper.dll have been + ported to 32Bits at this time. + + For further information on using kerberos with the ldap DLLs send + email to ldap-support@umich.edu. + +BUG REPORTING + + Bug reports should be sent to bug-ldap@umich.edu. + + +Miscellaneous + + Build testing was done on Windows NT workstation 3.51 (build 1057 + service pack 2) on an NTFS file system (which supports long + filenames) using Microsoft Visual C++ 1.52c (16 bit) and Visual C++ + 4.0 (32 bit). + +Change History: + + 2 May 1996 + o based on LDAP 3.3 source + o correct bug that caused error message box about problems + wshelper.dll. Made use of krbv4win and thus wshelper + dynamic. They will be used if present, if not + get_kerberosv4_credentials will set ld->ld_errno = + LDAP_AUTH_UNKNOWN and return a NULL pointer. + o this required changes to libldap.mak and kbind.c. + Since these changed files did not make it into the + official tar file, I've included them here. + + 2 Aug 1996 + o WSAStartup() was not being called before htons was used. + WSAStartup() call was moved to correct this problem. This may + change the number of calls to WSAStartup() and the pairing of + these with WSACleanup(); + o 32 bit Release binaries of ldap were not built using the DEF file. + This caused the ordinals (and the LIB files) to be different. + Both 32 bit binaries now use same DEF, same ordinals, LIBs compare. + + 23 Sep 1996 : sgr + o libldap.dll uses OutputDebugString to emit debug messages. This + was not getting disabled in the Release version. Simple change to + msdos.h made LDAP_DEBUG depend on _DEBUG which fixed this problem. + + 17 Oct 1996 : sgr + o 4 of the .h files were missing the ^M at EOL that DOS/WIN requires + These have been fixed and replaced in the zip file. They were + disptmpl.h, ldap.h, proto-ld.h, & proto-lb.h + +------------------------------------------------------------------------ + +README Last updated 17 Oct 1996 by Steve Rothwell diff --git a/ldap/srchpref.cfg b/ldap/srchpref.cfg new file mode 100755 index 00000000..74be091d --- /dev/null +++ b/ldap/srchpref.cfg @@ -0,0 +1,153 @@ +# Version should be 1 now +Version 1 +# +# +# Name for this search object +People +# options (the only one supported right now is "internal" which means that +# this search object should not be presented directly to the user) +# use "" for none +"" +# Label to place before text box user types in +"Search For:" +# Filter prefix to append to all "More Choices" searches +"(&(objectClass=person)" +# Tag to use for "Fewer Choices" searches - from ldapfilter.conf file +"xax500" +# If a search results in > 1 match, retrieve this attribute to help +# user disambiguate the entries... +title +# ...and label it with this string: +"Title" +# Search scope to use when searching +subtree +# Follows a list of "More Choices" search options. Format is: +# Label, attribute, select-bitmap, extra attr display name, extra attr ldap name +# If last two are null, "Fewer Choices" name/attributes used +"Common Name" cn 11111 "" "" +"Surname" sn 11111 "" "" +"Business Phone" "telephoneNumber" 11101 "" "" +"E-Mail Address" "mail" 11111 "" "" +"Uniqname" "uid" 11111 "" "" +"Title" title 11111 "" "" +END +# Match types +"exactly matches" "(%a=%v))" +"approximately matches" "(%a~=%v))" +"starts with" "(%a=%v*))" +"ends with" "(%a=*%v))" +"contains" "(%a=*%v*))" +END +# +# +# +Groups +"" +"Search For:" +"(&(objectClass=rfc822MailGroup)" +"xax500" +multilineDescription +"Description" +subtree +"Common Name" cn 11111 "" "" +"Description" multilineDescription 11101 "" "" +"Owner" "owner" 00001 "owner" "Owner" +"X.500 Member" "member" 00001 "" "" +"E-Mail Member" "mail" 00101 "" "" +END +"exactly matches" "(%a=%v))" +"approximately matches" "(%a~=%v))" +"starts with" "(%a=%v*))" +"ends with" "(%a=*%v))" +"contains" "(%a=*%v*))" +END +# +# +# +"Joinable Groups" +"" +"Search For:" +"(&(&(objectClass=rfc822MailGroup)(joinable=TRUE))" +"xax500" +multilineDescription +"Description" +subtree +"Common Name" cn 11111 "" "" +"Description" multilineDescription 11101 "" "" +"Owner" "owner" 00001 "owner" "Owner" +"X.500 Member" "member" 00001 "" "" +"E-Mail Member" "mail" 00101 "" "" +END +"exactly matches" "(%a=%v))" +"approximately matches" "(%a~=%v))" +"starts with" "(%a=%v*))" +"ends with" "(%a=*%v))" +"contains" "(%a=*%v*))" +END +# +# +# +Services +"" +"Search For:" +"(&(objectClass=service)" +"xax500" +multilineDescription +"Description" +subtree +"Common Name" cn 11111 "" "" +"Description" multilineDescription 11101 "" "" +"Owner" "owner" 00001 "owner" "Owner" +"Keywords" "keywords" 11111 "" "" +"Hours" "hoursOfOperation" 11111 "" "" +END +"exactly matches" "(%a=%v))" +"approximately matches" "(%a~=%v))" +"starts with" "(%a=%v*))" +"ends with" "(%a=*%v))" +"contains" "(%a=*%v*))" +END +# +# +# +Organizations +"" +"Search For:" +"(&(objectClass=organization)" +"xax500" +multilineDescription +"Description" +subtree +"Name" organizationName 01111 "" "" +"Location" localityName 11111 "" "" +"Phone Number" "telephoneNumber" 10111 "" "" +"Description" description 10111 "" "" +END +"exactly matches" "(%a=%v))" +"approximately matches" "(%a~=%v))" +"starts with" "(%a=%v*))" +"ends with" "(%a=*%v))" +"contains" "(%a=*%v*))" +END +# +# +# +Documents +"" +"Search For:" +"(&(objectClass=document)" +"xax500" +multilineDescription +"Description" +subtree +"Document Title" cn 11111 "" "" +"Keyword" "keywords" 11111 "" "" +"Category" "category" 11111 "" "" +"Document Number" "documentIdentifier" 11111 "" "" +END +"exactly matches" "(%a=%v))" +"approximately matches" "(%a~=%v))" +"starts with" "(%a=%v*))" +"ends with" "(%a=*%v))" +"contains" "(%a=*%v*))" +END -- cgit v1.2.3-54-g00ecf