diff options
Diffstat (limited to 'ldap')
28 files changed, 4154 insertions, 0 deletions
diff --git a/ldap/binaries/debug/ldap32.dll b/ldap/binaries/debug/ldap32.dll Binary files differnew file mode 100755 index 00000000..e9a734b2 --- /dev/null +++ b/ldap/binaries/debug/ldap32.dll diff --git a/ldap/binaries/debug/ldap32.lib b/ldap/binaries/debug/ldap32.lib Binary files differnew file mode 100755 index 00000000..e5e1231e --- /dev/null +++ b/ldap/binaries/debug/ldap32.lib diff --git a/ldap/binaries/debug/libldap.dll b/ldap/binaries/debug/libldap.dll Binary files differnew file mode 100755 index 00000000..52688f37 --- /dev/null +++ b/ldap/binaries/debug/libldap.dll diff --git a/ldap/binaries/debug/libldap.lib b/ldap/binaries/debug/libldap.lib Binary files differnew file mode 100755 index 00000000..8ae6890a --- /dev/null +++ b/ldap/binaries/debug/libldap.lib diff --git a/ldap/binaries/debug/ltest.exe b/ldap/binaries/debug/ltest.exe Binary files differnew file mode 100755 index 00000000..1d7cd6ca --- /dev/null +++ b/ldap/binaries/debug/ltest.exe diff --git a/ldap/binaries/debug/ltest32.exe b/ldap/binaries/debug/ltest32.exe Binary files differnew file mode 100755 index 00000000..09a1ac72 --- /dev/null +++ b/ldap/binaries/debug/ltest32.exe diff --git a/ldap/binaries/release/ldap32.dll b/ldap/binaries/release/ldap32.dll Binary files differnew file mode 100755 index 00000000..2284f9f8 --- /dev/null +++ b/ldap/binaries/release/ldap32.dll diff --git a/ldap/binaries/release/ldap32.lib b/ldap/binaries/release/ldap32.lib Binary files differnew file mode 100755 index 00000000..506dedd3 --- /dev/null +++ b/ldap/binaries/release/ldap32.lib diff --git a/ldap/binaries/release/libldap.dll b/ldap/binaries/release/libldap.dll Binary files differnew file mode 100755 index 00000000..16cb6ade --- /dev/null +++ b/ldap/binaries/release/libldap.dll diff --git a/ldap/binaries/release/libldap.lib b/ldap/binaries/release/libldap.lib Binary files differnew file mode 100755 index 00000000..8ae6890a --- /dev/null +++ b/ldap/binaries/release/libldap.lib 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 <winsock.h>
+#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 <sys/time.h>
+#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 <winsock.h>
+
+
+#include <string.h>
+#include <malloc.h>
+#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 <stdio.h> +#include <string.h> + +#ifdef MACOS +#include <stdlib.h> +#include "macos.h" +#else /* MACOS */ +#ifdef DOS +#include "msdos.h" +#endif /* DOS */ +#include <krb.h> +#include <stdlib.h> +#if !defined(DOS) && !defined( _WIN32 ) +#include <sys/types.h> +#endif /* !DOS && !_WIN32 */ +#include <sys/time.h> +#include <sys/socket.h> +#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 Binary files differnew file mode 100644 index 00000000..8f35a869 --- /dev/null +++ b/ldap/ldap32.gid diff --git a/ldap/ldap32.hlp b/ldap/ldap32.hlp Binary files differnew file mode 100755 index 00000000..f9de5446 --- /dev/null +++ b/ldap/ldap32.hlp 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: +# +# <tag> +# <pattern1> <delimiters> <filter1-1> <desc1-1> [<scope>] +# <filter1-2> <desc1-2> [<scope>] +# +# <pattern2> <delimiters> <filter2-1> <desc2-1> [<scope>] ... +# +# The "desc" should describe the filter and it should correctly complete +# both of the following phrases: +# +# One <desc> match was found for... +# Three <desc> 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 Binary files differnew file mode 100755 index 00000000..981ef717 --- /dev/null +++ b/ldap/libldap.hlp 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 |