Permalink
Browse files

Initial commit, from original 0.92 distribution

  • Loading branch information...
0 parents commit f5b88ed43513a378f8c34ace3482a867becbd8db @rwiker committed Sep 19, 2011
Showing with 2,120 additions and 0 deletions.
  1. +136 −0 LICENSE.txt
  2. +6 −0 build.xcvb
  3. +131 −0 example.lisp
  4. +8 −0 trivial-ldap.asd
  5. +556 −0 trivial-ldap.html
  6. +1,283 −0 trivial-ldap.lisp
@@ -0,0 +1,136 @@
+ The Clarified Artistic License
+
+ Preamble
+
+The intent of this document is to state the conditions under which a
+Package may be copied, such that the Copyright Holder maintains some
+semblance of artistic control over the development of the package,
+while giving the users of the package the right to use and distribute
+the Package in a more-or-less customary fashion, plus the right to make
+reasonable modifications.
+
+Definitions:
+
+ "Package" refers to the collection of files distributed by the
+ Copyright Holder, and derivatives of that collection of files
+ created through textual modification.
+
+ "Standard Version" refers to such a Package if it has not been
+ modified, or has been modified in accordance with the wishes
+ of the Copyright Holder as specified below.
+
+ "Copyright Holder" is whoever is named in the copyright or
+ copyrights for the package.
+
+ "You" is you, if you're thinking about copying or distributing
+ this Package.
+
+ "Distribution fee" is a fee you charge for providing a copy
+ of this Package to another party.
+
+ "Freely Available" means that no fee is charged for the right to
+ use the item, though there may be fees involved in handling the
+ item. It also means that recipients of the item may redistribute
+ it under the same conditions they received it.
+
+1. You may make and give away verbatim copies of the source form of the
+Standard Version of this Package without restriction, provided that you
+duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications
+derived from the Public Domain, or those made Freely Available, or from
+the Copyright Holder. A Package modified in such a way shall still be
+considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided
+that you insert a prominent notice in each changed file stating how and
+when you changed that file, and provided that you do at least ONE of the
+following:
+
+ a) place your modifications in the Public Domain or otherwise make them
+ Freely Available, such as by posting said modifications to Usenet or an
+ equivalent medium, or placing the modifications on a major network
+ archive site allowing unrestricted access to them, or by allowing the
+ Copyright Holder to include your modifications in the Standard Version
+ of the Package.
+
+ b) use the modified Package only within your corporation or organization.
+
+ c) rename any non-standard executables so the names do not conflict
+ with standard executables, which must also be provided, and provide
+ a separate manual page for each non-standard executable that clearly
+ documents how it differs from the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+ e) permit and encourge anyone who receives a copy of the modified Package
+ permission to make your modifications Freely Available
+ in some specific way.
+
+
+4. You may distribute the programs of this Package in object code or
+executable form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files,
+ together with instructions (in the manual page or equivalent) on where
+ to get the Standard Version.
+
+ b) accompany the distribution with the machine-readable source of
+ the Package with your modifications.
+
+ c) give non-standard executables non-standard names, and clearly
+ document the differences in manual pages (or equivalent), together
+ with instructions on where to get the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+ e) offer the machine-readable source of the Package, with your
+ modifications, by mail order.
+
+5. You may charge a distribution fee for any distribution of this Package.
+If you offer support for this Package, you may charge any fee you choose
+for that support. You may not charge a license fee for the right to use
+this Package itself. You may distribute this Package in aggregate with
+other (possibly commercial and possibly nonfree) programs as part of a
+larger (possibly commercial and possibly nonfree) software distribution,
+and charge license fees for other parts of that software distribution,
+provided that you do not advertise this Package as a product of your own.
+If the Package includes an interpreter, You may embed this Package's
+interpreter within an executable of yours (by linking); this shall be
+construed as a mere form of aggregation, provided that the complete
+Standard Version of the interpreter is so embedded.
+
+6. The scripts and library files supplied as input to or produced as
+output from the programs of this Package do not automatically fall
+under the copyright of this Package, but belong to whoever generated
+them, and may be sold commercially, and may be aggregated with this
+Package. If such scripts or library files are aggregated with this
+Package via the so-called "undump" or "unexec" methods of producing a
+binary executable image, then distribution of such an image shall
+neither be construed as a distribution of this Package nor shall it
+fall under the restrictions of Paragraphs 3 and 4, provided that you do
+not represent such an executable image as a Standard Version of this
+Package.
+
+7. C subroutines (or comparably compiled subroutines in other
+languages) supplied by you and linked into this Package in order to
+emulate subroutines and variables of the language defined by this
+Package shall not be considered part of this Package, but are the
+equivalent of input as in Paragraph 6, provided these subroutines do
+not change the language in any way that would cause it to fail the
+regression tests for the language.
+
+8. Aggregation of the Standard Version of the Package with a commercial
+distribution is always permitted provided that the use of this Package
+is embedded; that is, when no overt attempt is made to make this Package's
+interfaces visible to the end user of the commercial distribution.
+Such use shall not be construed as a distribution of this Package.
+
+9. The name of the Copyright Holder may not be used to endorse or promote
+products derived from this software without specific prior written permission.
+
+10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+ The End
@@ -0,0 +1,6 @@
+#+xcvb
+(module
+ (:fullname "trivial-ldap"
+ :depends-on ("trivial-ldap")
+ :build-depends-on ("cl+ssl" "usocket")
+ :supersedes-asdf ("trivial-ldap")))
@@ -0,0 +1,131 @@
+(require 'trivial-ldap)
+
+; see http://www.openldap.org/doc/admin23/quickstart.html for some
+; openldap quickstart documentation.
+
+;; create a new ldap object. the port number is the default 389 here.
+(defparameter l
+ (ldap:new-ldap :host "redbaron.local"
+ :user "cn=directory manager, dc=example, dc=com"
+ :sslflag t
+ :debug t
+ :pass "secret"
+ :base "dc=example,dc=com"
+ :reuse-connection 'ldap:rebind))
+
+
+;; create some entry objects.
+(defparameter entry-one
+ (ldap:new-entry "dc=example,dc=com"
+ :attrs '((objectclass . (dcobject organization))
+ (o . "example organization"))))
+
+(defparameter entry-two
+ (ldap:new-entry "cn=manager,dc=example,dc=com"
+ :attrs '((objectclass . organizationalrole))))
+
+(defparameter entry-three
+ (ldap:new-entry "cn=test user,dc=example,dc=com"
+ :attrs '((objectclass . organizationalrole))))
+
+(defparameter entry-four
+ (ldap:new-entry "cn=quuxor,dc=example,dc=com"
+ :attrs '((objectclass . (organizationalrole))
+ (description . "another test entry")
+ (l . ("Boston" "Cambridge" "Jamaica Plain"))
+ (st . "Massachusetts")
+ (postalcode . "02115")
+ (street . "Commonwealth Avenue"))))
+
+
+; a printed representation:
+(format t "~A" (ldap:ldif entry-four))
+
+; turn on debugging.
+(setf (ldap:debugflag l) t)
+
+; bind to the server.
+(when (ldap:bind l)
+ (write-line "bound to ldap."))
+
+; turn off debugging.
+(setf (ldap:debugflag l) nil)
+
+; add a couple entries.
+(ldap:add entry-one l)
+
+; or use the lower-level add specified on ldap first:
+(multiple-value-bind (res code msg) (ldap:add l entry-two)
+ (format t "res: ~A~%code: ~A~%msg: ~A" res code msg))
+
+; search (and print results in ldif)
+(ldap:ldif-search l "(cn=*)")
+
+; add another entry.
+(ldap:add entry-three l)
+
+; search for that.
+(if (ldap:search l (ldap:rdn entry-three))
+ (describe (ldap:next-search-result l))
+ (format t "Search Failed."))
+
+; delete an entry.
+(ldap:delete entry-three l)
+
+; ldap:search will return nil.
+(ldap:search l (ldap:rdn entry-three))
+
+; a fourth entry.
+(ldap:add entry-four l)
+
+; this should be true.
+(ldap:compare entry-four l 'st "Massachusetts")
+
+; as should this, because the st attribute
+; compares case insensitively.
+(ldap:compare entry-four l 'st 'massachusetts)
+
+; this is false, so it returns nil.
+(ldap:compare entry-four l 'st 'foobarbaz)
+
+; compare (and delete) take strings as well as entry objects.
+(ldap:compare (ldap:dn entry-four) l 'l 'boston)
+(ldap:delete (ldap:dn entry-four) l)
+
+; put entry four back:
+(ldap:add entry-four l)
+
+(ldap:attr-value entry-four 'st)
+(ldap:attr-list entry-four)
+(ldap:attrs entry-four)
+
+(ldap:modify entry-four l '((ldap:delete l "Boston")
+ (ldap:replace st "Vermont")
+ (ldap:add st "New Hampshire")
+ (ldap:add street ("Massachusetts Avenue"
+ "Newbury Street"
+ "Boylston Street"))))
+
+(format t "~A~%" (ldap:ldif entry-four))
+
+
+(ldap:moddn entry-four l "cn=buzzer")
+
+; simple ldap filters work more or less as expected. extended filters
+; however have not been implemented yet.
+(ldap:search l "(cn=buzz*)")
+(ldap:search l "(| (cn=baz*) (cn=*ager))")
+
+; the outside parens are optional:
+(ldap:search l "| (cn=baz*) (cn=*ager)")
+
+; clean up. with one ldap object fetching the results of the search,
+; a second LDAP object is required for the delete.
+
+(defparameter j (ldap:new-ldap :host "great-pumpkin.local"
+ :base "dc=example,dc=com"))
+
+; (ldap:dosearch (ent (ldap:search j "cn=*"))
+; (ldap:delete ent l))
+;
+; (ldap:delete entry-one l)
@@ -0,0 +1,8 @@
+(defpackage :trivial-ldap-system (:use #:cl #:asdf))
+(in-package :trivial-ldap-system)
+
+
+(defsystem :trivial-ldap
+ :version "0.92"
+ :components ((:file "trivial-ldap"))
+ :depends-on (usocket cl+ssl))
Oops, something went wrong.

0 comments on commit f5b88ed

Please sign in to comment.