*** empty log message ***
This commit is contained in:
commit
a25a3daae0
|
@ -0,0 +1,28 @@
|
||||||
|
# CVS default ignores begin
|
||||||
|
tags
|
||||||
|
TAGS
|
||||||
|
.make.state
|
||||||
|
.nse_depinfo
|
||||||
|
*~
|
||||||
|
\#*
|
||||||
|
.#*
|
||||||
|
,*
|
||||||
|
_$*
|
||||||
|
*$
|
||||||
|
*.old
|
||||||
|
*.bak
|
||||||
|
*.BAK
|
||||||
|
*.orig
|
||||||
|
*.rej
|
||||||
|
.del-*
|
||||||
|
*.a
|
||||||
|
*.olb
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
*.so
|
||||||
|
*.exe
|
||||||
|
*.Z
|
||||||
|
*.elc
|
||||||
|
*.ln
|
||||||
|
core
|
||||||
|
# CVS default ignores end
|
|
@ -0,0 +1,126 @@
|
||||||
|
#include "scsh-ldap.h"
|
||||||
|
|
||||||
|
s48_value scsh_enter_ldap(LDAP *ldap)
|
||||||
|
{
|
||||||
|
s48_value rec = S48_FALSE;
|
||||||
|
S48_DECLARE_GC_PROTECT(1);
|
||||||
|
|
||||||
|
S48_GC_PROTECT_1(rec);
|
||||||
|
rec = s48_make_record(scsh_ldap_record_type);
|
||||||
|
S48_RECORD_SET(rec, 0, s48_enter_integer((long) ldap));
|
||||||
|
S48_GC_UNPROTECT();
|
||||||
|
return rec;
|
||||||
|
}
|
||||||
|
|
||||||
|
s48_value scsh_enter_ldapmessage(LDAPMessage *lm)
|
||||||
|
{
|
||||||
|
s48_value rec = S48_FALSE;
|
||||||
|
S48_DECLARE_GC_PROTECT(1);
|
||||||
|
|
||||||
|
S48_GC_PROTECT_1(rec);
|
||||||
|
rec = s48_make_record(scsh_ldapmessage_record_type);
|
||||||
|
S48_RECORD_SET(rec, 0, s48_enter_integer((long) lm));
|
||||||
|
S48_GC_UNPROTECT();
|
||||||
|
return rec;
|
||||||
|
}
|
||||||
|
|
||||||
|
s48_value scsh_ldap_open(s48_value host, s48_value port)
|
||||||
|
{
|
||||||
|
LDAP *ldap;
|
||||||
|
S48_DECLARE_GC_PROTECT(2);
|
||||||
|
|
||||||
|
S48_GC_PROTECT_2(host, port);
|
||||||
|
ldap = ldap_open(s48_extract_string(host), s48_extract_integer(port));
|
||||||
|
S48_GC_UNPROTECT();
|
||||||
|
return ldap == NULL ? S48_FALSE : scsh_enter_ldap(ldap);
|
||||||
|
}
|
||||||
|
|
||||||
|
s48_value scsh_ldap_init(s48_value host, s48_value port)
|
||||||
|
{
|
||||||
|
LDAP *ldap;
|
||||||
|
S48_DECLARE_GC_PROTECT(2);
|
||||||
|
|
||||||
|
S48_GC_PROTECT_2(host, port);
|
||||||
|
ldap = ldap_init(s48_extract_string(host), s48_extract_integer(port));
|
||||||
|
S48_GC_UNPROTECT();
|
||||||
|
return ldap == NULL ? S48_FALSE : scsh_enter_ldap(ldap);
|
||||||
|
}
|
||||||
|
|
||||||
|
s48_value scsh_ldap_bind_s(s48_value ldap, s48_value user,
|
||||||
|
s48_value cred, s48_value method)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
S48_DECLARE_GC_PROTECT(4);
|
||||||
|
|
||||||
|
S48_GC_PROTECT_4(ldap, user, cred, method);
|
||||||
|
r = ldap_bind_s(scsh_extract_ldap(ldap), s48_extract_string(user),
|
||||||
|
s48_extract_string(cred), s48_extract_integer(method));
|
||||||
|
S48_GC_UNPROTECT();
|
||||||
|
return s48_enter_integer(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
s48_value scsh_ldap_simple_bind_s(s48_value ldap, s48_value user, s48_value cred)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
S48_DECLARE_GC_PROTECT(3);
|
||||||
|
|
||||||
|
S48_GC_PROTECT_3(ldap, user, cred);
|
||||||
|
r = ldap_simple_bind_s(scsh_extract_ldap(ldap), s48_extract_string(user),
|
||||||
|
s48_extract_string(cred));
|
||||||
|
S48_GC_UNPROTECT();
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
s48_value scsh_ldap_unbind_s(s48_value ldap)
|
||||||
|
{
|
||||||
|
return s48_enter_integer(ldap_unbind_s(scsh_extract_ldap(ldap)));
|
||||||
|
}
|
||||||
|
|
||||||
|
s48_value scsh_ldap_error_string(s48_value errcode)
|
||||||
|
{
|
||||||
|
return s48_enter_string(ldap_err2string(s48_extract_integer(errcode)));
|
||||||
|
}
|
||||||
|
|
||||||
|
s48_value scsh_ldap_result_error(s48_value ldap, s48_value res)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
S48_DECLARE_GC_PROTECT(2);
|
||||||
|
|
||||||
|
S48_GC_PROTECT_2(ldap, res);
|
||||||
|
r = s48_enter_integer(ldap_result2error(scsh_extract_ldap(ldap),
|
||||||
|
scsh_extract_ldapmessage(res), 0));
|
||||||
|
S48_GC_UNPROTECT();
|
||||||
|
return s48_enter_integer(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
s48_value scsh_ldap_memfree(s48_value ldap)
|
||||||
|
{
|
||||||
|
ldap_memfree(scsh_extract_ldap(ldap));
|
||||||
|
return S48_UNSPECIFIC;
|
||||||
|
}
|
||||||
|
|
||||||
|
s48_value scsh_ldap_msgfree(s48_value ldapmsg)
|
||||||
|
{
|
||||||
|
ldap_msgfree(scsh_extract_ldapmessage(ldapmsg));
|
||||||
|
return S48_UNSPECIFIC;
|
||||||
|
}
|
||||||
|
|
||||||
|
void scsh_ldap_main(void)
|
||||||
|
{
|
||||||
|
S48_GC_PROTECT_GLOBAL(scsh_ldap_record_type);
|
||||||
|
scsh_ldap_record_type = s48_get_imported_binding("ldap");
|
||||||
|
|
||||||
|
S48_GC_PROTECT_GLOBAL(scsh_ldapmessage_record_type);
|
||||||
|
scsh_ldapmessage_record_type = s48_get_imported_binding("ldap-message");
|
||||||
|
|
||||||
|
S48_EXPORT_FUNCTION(scsh_ldap_open);
|
||||||
|
S48_EXPORT_FUNCTION(scsh_ldap_init);
|
||||||
|
S48_EXPORT_FUNCTION(scsh_ldap_bind_s);
|
||||||
|
S48_EXPORT_FUNCTION(scsh_ldap_simple_bind_s);
|
||||||
|
S48_EXPORT_FUNCTION(scsh_ldap_unbind_s);
|
||||||
|
S48_EXPORT_FUNCTION(scsh_ldap_error_string);
|
||||||
|
S48_EXPORT_FUNCTION(scsh_ldap_result_error);
|
||||||
|
S48_EXPORT_FUNCTION(scsh_ldap_memfree);
|
||||||
|
S48_EXPORT_FUNCTION(scsh_ldap_msgfree);
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
#include "scheme48.h"
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <ldap.h>
|
||||||
|
|
||||||
|
static s48_value scsh_ldap_record_type = S48_FALSE;
|
||||||
|
static s48_value scsh_ldapmessage_record_type = S48_FALSE;
|
||||||
|
|
||||||
|
s48_value scsh_enter_ldap(LDAP *ldap);
|
||||||
|
#define scsh_extract_ldap(x) \
|
||||||
|
((LDAP *) \
|
||||||
|
s48_extract_integer(S48_RECORD_REF(x, 0)))
|
||||||
|
|
||||||
|
s48_value scsh_enter_ldapmessage(LDAPMessage *lm);
|
||||||
|
#define scsh_extract_ldapmessage(x) \
|
||||||
|
((LDAPMessage *) \
|
||||||
|
s48_extract_integer(S48_RECORD_REF(x, 0)))
|
||||||
|
|
||||||
|
void scsh_ldap_main(void);
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
(define-record-type ldap :ldap
|
||||||
|
(make-ldap c-pointer)
|
||||||
|
ldap?
|
||||||
|
(c-pointer ldap-c-pointer))
|
||||||
|
|
||||||
|
(define-exported-binding "ldap" :ldap)
|
||||||
|
|
||||||
|
(define-record-type ldap-message :ldap-message
|
||||||
|
(make-ldap-message c-pointer)
|
||||||
|
ldap-message?
|
||||||
|
(c-pointer ldap-message-c-pointer))
|
||||||
|
|
||||||
|
(define-exported-binding "ldap-message" :ldap-message)
|
||||||
|
|
||||||
|
(define (ldap-open host port)
|
||||||
|
(let ((ldap (ldap-open-internal host port)))
|
||||||
|
(if ldap (add-finalizer! ldap ldap-memfree))
|
||||||
|
ldap))
|
||||||
|
|
||||||
|
(define (ldap-init host port)
|
||||||
|
(let ((ldap (ldap-init-internal host port)))
|
||||||
|
(if ldap (add-finalizer! ldap ldap-memfree))
|
||||||
|
ldap))
|
||||||
|
|
||||||
|
(import-lambda-definition ldap-open-internal
|
||||||
|
(host port)
|
||||||
|
"scsh_ldap_open")
|
||||||
|
|
||||||
|
(import-lambda-definition ldap-init-internal
|
||||||
|
(host port)
|
||||||
|
"scsh_ldap_init")
|
||||||
|
|
||||||
|
(import-lambda-definition ldap-bind-sync
|
||||||
|
(ldap user password method)
|
||||||
|
"scsh_ldap_bind_s")
|
||||||
|
|
||||||
|
(import-lambda-definition ldap-simple-bind-sync
|
||||||
|
(ldap user password)
|
||||||
|
"scsh_ldap_simple_bind_s")
|
||||||
|
|
||||||
|
(import-lambda-definition ldap-unbind-sync
|
||||||
|
(ldap)
|
||||||
|
"scsh_ldap_unbind_s")
|
||||||
|
|
||||||
|
(import-lambda-definition ldap-error-string
|
||||||
|
(error-code)
|
||||||
|
"scsh_ldap_error_string")
|
||||||
|
|
||||||
|
(import-lambda-definition ldap-result-error
|
||||||
|
(ldap result)
|
||||||
|
"scsh_ldap_result_error")
|
||||||
|
|
||||||
|
(import-lambda-definition ldap-memfree
|
||||||
|
(ldap)
|
||||||
|
"scsh_ldap_memfree")
|
||||||
|
|
||||||
|
(import-lambda-definition ldap-msgfree
|
||||||
|
(ldap)
|
||||||
|
"scsh_ldap_msgfree")
|
Loading…
Reference in New Issue