mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-30 13:30:57 +08:00
overlays reworking
This commit is contained in:
parent
ea14637a0d
commit
fa3baaeae9
51
configure.in
51
configure.in
@ -244,6 +244,10 @@ dnl ----------------------------------------------------------------
|
||||
dnl SLAPD Overlay Options
|
||||
AC_ARG_WITH(xxslapoverlays,[
|
||||
SLAPD Overlay Options:])
|
||||
OL_ARG_WITH(chain,[ --with-chain LDAP Chain Response no|yes|mod], no,
|
||||
[no yes mod])
|
||||
OL_ARG_WITH(denyop,[ --with-denyop Deny Operation overlay no|yes|mod], no,
|
||||
[no yes mod])
|
||||
OL_ARG_WITH(dyngroup,[ --with-dyngroup Dynamic Group overlay no|yes|mod], no,
|
||||
[no yes mod])
|
||||
OL_ARG_WITH(proxycache,[ --with-proxycache Proxy Cache overlay no|yes|mod], no,
|
||||
@ -377,6 +381,13 @@ if test $ol_enable_slapd = no ; then
|
||||
if test $ol_enable_rewrite = yes ; then
|
||||
AC_MSG_WARN([slapd disabled, ignoring --enable-rewrite argument])
|
||||
fi
|
||||
dnl overlays
|
||||
if test $ol_with_chain != no ; then
|
||||
AC_MSG_WARN([slapd disabled, ignoring --with-chain argument])
|
||||
fi
|
||||
if test $ol_with_denyop != no ; then
|
||||
AC_MSG_WARN([slapd disabled, ignoring --with-denyop argument])
|
||||
fi
|
||||
if test $ol_with_dyngroup != no ; then
|
||||
AC_MSG_WARN([slapd disabled, ignoring --with-dyngroup argument])
|
||||
fi
|
||||
@ -430,6 +441,8 @@ if test $ol_enable_slapd = no ; then
|
||||
|
||||
ol_enable_rewrite=no
|
||||
|
||||
ol_with_chain=no
|
||||
ol_with_denyop=no
|
||||
ol_with_dyngroup=no
|
||||
ol_with_proxycache=no
|
||||
ol_with_rwm=no
|
||||
@ -594,6 +607,8 @@ BUILD_RELAY_DYNAMIC=static
|
||||
BUILD_SHELL_DYNAMIC=static
|
||||
BUILD_SQL_DYNAMIC=static
|
||||
|
||||
BUILD_CHAIN=no
|
||||
BUILD_DENYOP=no
|
||||
BUILD_DYNGROUP=no
|
||||
BUILD_PROXYCACHE=no
|
||||
BUILD_RWM=no
|
||||
@ -826,6 +841,14 @@ else
|
||||
ol_with_relay_module=static
|
||||
ol_with_shell_module=static
|
||||
ol_with_sql_module=static
|
||||
if test $ol_with_chain = mod ; then
|
||||
AC_MSG_WARN([building static chain overlay])
|
||||
ol_with_chain=yes
|
||||
fi
|
||||
if test $ol_with_denyop = mod ; then
|
||||
AC_MSG_WARN([building static denyop overlay])
|
||||
ol_with_denyop=yes
|
||||
fi
|
||||
if test $ol_with_dyngroup = mod ; then
|
||||
AC_MSG_WARN([building static dyngroup overlay])
|
||||
ol_with_dyngroup=yes
|
||||
@ -2767,6 +2790,28 @@ if test "$ol_link_sql" != no ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$ol_with_chain" != no ; then
|
||||
BUILD_CHAIN=$ol_with_chain
|
||||
if test "$ol_with_chain" = mod ; then
|
||||
MFLAG=SLAPD_MOD_DYNAMIC
|
||||
SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS chain.la"
|
||||
else
|
||||
MFLAG=SLAPD_MOD_STATIC
|
||||
fi
|
||||
AC_DEFINE_UNQUOTED(SLAPD_OVER_CHAIN,$MFLAG,[define for Dynamic Group overlay])
|
||||
fi
|
||||
|
||||
if test "$ol_with_denyop" != no ; then
|
||||
BUILD_DENYOP=$ol_with_denyop
|
||||
if test "$ol_with_denyop" = mod ; then
|
||||
MFLAG=SLAPD_MOD_DYNAMIC
|
||||
SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS denyop.la"
|
||||
else
|
||||
MFLAG=SLAPD_MOD_STATIC
|
||||
fi
|
||||
AC_DEFINE_UNQUOTED(SLAPD_OVER_DENYOP,$MFLAG,[define for Dynamic Group overlay])
|
||||
fi
|
||||
|
||||
if test "$ol_with_dyngroup" != no ; then
|
||||
BUILD_DYNGROUP=$ol_with_dyngroup
|
||||
if test "$ol_with_dyngroup" = mod ; then
|
||||
@ -2843,8 +2888,10 @@ AC_SUBST(WITH_TLS)
|
||||
AC_SUBST(BUILD_LIBS_DYNAMIC)
|
||||
|
||||
AC_SUBST(BUILD_SLAPD)
|
||||
dnl slapi
|
||||
AC_SUBST(BUILD_SLAPI)
|
||||
AC_SUBST(SLAPD_SLAPI_DEPEND)
|
||||
dnl backends
|
||||
AC_SUBST(BUILD_BDB)
|
||||
AC_SUBST(BUILD_DNSSRV)
|
||||
AC_SUBST(BUILD_HDB)
|
||||
@ -2858,6 +2905,7 @@ AC_SUBST(BUILD_SLAPD)
|
||||
AC_SUBST(BUILD_PERL)
|
||||
AC_SUBST(BUILD_SHELL)
|
||||
AC_SUBST(BUILD_SQL)
|
||||
dnl backend modules
|
||||
AC_SUBST(BUILD_BDB_DYNAMIC)
|
||||
AC_SUBST(BUILD_DNSSRV_DYNAMIC)
|
||||
AC_SUBST(BUILD_HDB_DYNAMIC)
|
||||
@ -2871,6 +2919,9 @@ AC_SUBST(BUILD_SLAPD)
|
||||
AC_SUBST(BUILD_RELAY_DYNAMIC)
|
||||
AC_SUBST(BUILD_SHELL_DYNAMIC)
|
||||
AC_SUBST(BUILD_SQL_DYNAMIC)
|
||||
dnl overlays
|
||||
AC_SUBST(BUILD_CHAIN)
|
||||
AC_SUBST(BUILD_DENYOP)
|
||||
AC_SUBST(BUILD_DYNGROUP)
|
||||
AC_SUBST(BUILD_PROXYCACHE)
|
||||
AC_SUBST(BUILD_RWM)
|
||||
|
@ -12,7 +12,7 @@ running in the same
|
||||
instance into a virtual naming context, with attributeType
|
||||
and objectClass manipulation, if required.
|
||||
It requires the
|
||||
.B rewrite-remap
|
||||
.B rwm
|
||||
.BR overlay .
|
||||
.LP
|
||||
This backend and the above mentioned overlay are experimental.
|
||||
@ -32,7 +32,7 @@ under a virtual naming context.
|
||||
The presence of the directive implies that one single database
|
||||
will be presented under a virtual naming context.
|
||||
This directive automatically instantiates the
|
||||
.B rewrite-remap
|
||||
.B rwm
|
||||
.BR overlay .
|
||||
If the optional
|
||||
.B massage
|
||||
@ -60,7 +60,7 @@ e.g. groups on one database and persons on another.
|
||||
.LP
|
||||
.SH Caveats
|
||||
The
|
||||
.B rewrite-remap overlay
|
||||
.B rwm overlay
|
||||
is far from complete.
|
||||
.LP
|
||||
.SH EXAMPLES
|
||||
@ -79,7 +79,7 @@ that looks up the real naming context for each operation, use
|
||||
.nf
|
||||
database relay
|
||||
suffix "dc=virtual,dc=naming,dc=context"
|
||||
overlay rewrite-remap
|
||||
overlay rwm
|
||||
suffixmassage "dc=virtual,dc=naming,dc=context"
|
||||
"dc=real,dc=naming,dc=context"
|
||||
.fi
|
||||
@ -104,7 +104,7 @@ back from the real to the virtual naming context, use
|
||||
.LP
|
||||
Note that the virtual database is bound to a single real database,
|
||||
so the
|
||||
.B rewrite-remap overlay
|
||||
.B rwm overlay
|
||||
is automatically instantiated, but the rewrite rules
|
||||
are written explicitly to map all the virtual to real
|
||||
naming context data flow, but none of the real to virtual.
|
||||
|
@ -15,10 +15,10 @@
|
||||
|
||||
SRCS = init.c config.c search.c bind.c unbind.c add.c compare.c \
|
||||
delete.c modify.c modrdn.c \
|
||||
suffixmassage.c map.c extended.c chain.c
|
||||
suffixmassage.c map.c extended.c
|
||||
OBJS = init.lo config.lo search.lo bind.lo unbind.lo add.lo compare.lo \
|
||||
delete.lo modify.lo modrdn.lo \
|
||||
suffixmassage.lo map.lo extended.lo chain.lo
|
||||
suffixmassage.lo map.lo extended.lo
|
||||
|
||||
LDAP_INCDIR= ../../../include
|
||||
LDAP_LIBDIR= ../../../libraries
|
||||
|
@ -184,8 +184,6 @@ extern int suffix_massage_config( struct rewrite_info *info,
|
||||
extern int ldap_dnattr_rewrite( dncookie *dc, BerVarray a_vals );
|
||||
extern int ldap_dnattr_result_rewrite( dncookie *dc, BerVarray a_vals );
|
||||
|
||||
extern int ldap_chain_setup();
|
||||
|
||||
#ifdef LDAP_BACK_PROXY_AUTHZ
|
||||
extern int
|
||||
ldap_back_proxy_authz_ctrl(
|
||||
|
@ -82,8 +82,6 @@ ldap_back_initialize(
|
||||
bi->bi_connection_init = 0;
|
||||
bi->bi_connection_destroy = ldap_back_conn_destroy;
|
||||
|
||||
ldap_chain_setup();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -91,10 +91,9 @@ relay_back_db_config(
|
||||
|
||||
ri->ri_realsuffix = ndn;
|
||||
|
||||
if ( overlay_config( be, "rewrite-remap" ) ) {
|
||||
if ( overlay_config( be, "rwm" ) ) {
|
||||
fprintf( stderr, "%s: line %d: unable to install "
|
||||
"rewrite-remap overlay "
|
||||
"in back-relay "
|
||||
"rwm overlay "
|
||||
"in \"relay <dn> [massage]\" line\n",
|
||||
fname, lineno );
|
||||
return 1;
|
||||
|
@ -13,10 +13,18 @@
|
||||
## top-level directory of the distribution or, alternatively, at
|
||||
## <http://www.OpenLDAP.org/license.html>.
|
||||
|
||||
SRCS = overlays.c dyngroup.c pcache.c \
|
||||
rwm.c rwmconf.c rwmdn.c rwmmap.c denyop.c
|
||||
OBJS = overlays.lo dyngroup.lo pcache.lo \
|
||||
rwm.lo rwmconf.lo rwmdn.lo rwmmap.lo denyop.lo
|
||||
SRCS = overlays.c \
|
||||
chain.c \
|
||||
denyop.c \
|
||||
dyngroup.c \
|
||||
pcache.c \
|
||||
rwm.c rwmconf.c rwmdn.c rwmmap.c
|
||||
OBJS = overlays.lo \
|
||||
chain.c \
|
||||
denyop.lo \
|
||||
dyngroup.lo \
|
||||
pcache.lo \
|
||||
rwm.lo rwmconf.lo rwmdn.lo rwmmap.lo
|
||||
|
||||
LDAP_INCDIR= ../../../include
|
||||
LDAP_LIBDIR= ../../../libraries
|
||||
@ -33,6 +41,12 @@ PROGRAMS = @SLAPD_DYNAMIC_OVERLAYS@
|
||||
XINCPATH = -I.. -I$(srcdir)/..
|
||||
XDEFS = $(MODULES_CPPFLAGS)
|
||||
|
||||
chain.la : chain.lo $(@PLAT@_LINK_LIBS)
|
||||
$(LTLINK_MOD) -module -o $@ chain.lo version.lo $(LINK_LIBS)
|
||||
|
||||
denyop.la : denyop.lo $(@PLAT@_LINK_LIBS)
|
||||
$(LTLINK_MOD) -module -o $@ denyop.lo version.lo $(LINK_LIBS)
|
||||
|
||||
dyngroup.la : dyngroup.lo $(@PLAT@_LINK_LIBS)
|
||||
$(LTLINK_MOD) -module -o $@ dyngroup.lo version.lo $(LINK_LIBS)
|
||||
|
||||
@ -42,9 +56,6 @@ pcache.la : pcache.lo $(@PLAT@_LINK_LIBS)
|
||||
rwm.la : rwm.lo $(@PLAT@_LINK_LIBS)
|
||||
$(LTLINK_MOD) -module -o $@ rwm.lo rwmconf.lo rwmdn.lo rwmmap.lo version.lo $(LINK_LIBS)
|
||||
|
||||
denyop.la : denyop.lo $(@PLAT@_LINK_LIBS)
|
||||
$(LTLINK_MOD) -module -o $@ denyop.lo version.lo $(LINK_LIBS)
|
||||
|
||||
install-local: $(PROGRAMS)
|
||||
@if test -n "$?" ; then \
|
||||
$(MKDIR) $(DESTDIR)$(moduledir); \
|
||||
|
@ -21,13 +21,17 @@
|
||||
|
||||
#include "portable.h"
|
||||
|
||||
#if defined(SLAPD_LDAP)
|
||||
|
||||
#ifdef SLAPD_OVER_CHAIN
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <ac/string.h>
|
||||
#include <ac/socket.h>
|
||||
|
||||
#include "slap.h"
|
||||
#include "back-ldap.h"
|
||||
#include "../back-ldap/back-ldap.h"
|
||||
|
||||
static int
|
||||
ldap_chain_response( Operation *op, SlapReply *rs )
|
||||
@ -143,12 +147,21 @@ static int ldap_chain_config(
|
||||
char **argv
|
||||
)
|
||||
{
|
||||
slap_overinst *on = (slap_overinst *) be->bd_info;
|
||||
void *private = be->be_private;
|
||||
int rc;
|
||||
slap_overinst *on = (slap_overinst *) be->bd_info;
|
||||
void *private = be->be_private;
|
||||
char *argv0 = NULL;
|
||||
int rc;
|
||||
|
||||
be->be_private = on->on_bi.bi_private;
|
||||
if ( strncasecmp( argv[ 0 ], "chain-", sizeof( "chain-" ) - 1 ) == 0 ) {
|
||||
argv0 = argv[ 0 ];
|
||||
argv[ 0 ] = &argv[ 0 ][ sizeof( "chain-" ) - 1 ];
|
||||
}
|
||||
rc = ldap_back_db_config( be, fname, lineno, argc, argv );
|
||||
if ( argv0 ) {
|
||||
argv[ 0 ] = argv0;
|
||||
}
|
||||
|
||||
be->be_private = private;
|
||||
return rc;
|
||||
}
|
||||
@ -185,7 +198,7 @@ static int ldap_chain_destroy(
|
||||
|
||||
static slap_overinst ldapchain;
|
||||
|
||||
int ldap_chain_setup()
|
||||
int chain_init()
|
||||
{
|
||||
ldapchain.on_bi.bi_type = "chain";
|
||||
ldapchain.on_bi.bi_db_init = ldap_chain_init;
|
||||
@ -195,3 +208,13 @@ int ldap_chain_setup()
|
||||
|
||||
return overlay_register( &ldapchain );
|
||||
}
|
||||
|
||||
#if SLAPD_OVER_CHAIN == SLAPD_MOD_DYNAMIC
|
||||
int init_module(int argc, char *argv[]) {
|
||||
return chain_init();
|
||||
}
|
||||
#endif /* SLAPD_OVER_CHAIN == SLAPD_MOD_DYNAMIC */
|
||||
|
||||
#endif /* SLAPD_OVER_CHAIN */
|
||||
|
||||
#endif /* ! defined(SLAPD_LDAP) */
|
@ -223,7 +223,8 @@ denyop_destroy(
|
||||
|
||||
static slap_overinst denyop;
|
||||
|
||||
int denyop_init() {
|
||||
int
|
||||
denyop_init() {
|
||||
memset( &denyop, 0, sizeof( slap_overinst ) );
|
||||
denyop.on_bi.bi_type = "denyop";
|
||||
denyop.on_bi.bi_db_init = denyop_over_init;
|
||||
@ -246,7 +247,8 @@ int denyop_init() {
|
||||
}
|
||||
|
||||
#if SLAPD_OVER_DENYOP == SLAPD_MOD_DYNAMIC
|
||||
int init_module(int argc, char *argv[]) {
|
||||
int
|
||||
init_module(int argc, char *argv[]) {
|
||||
return denyop_init();
|
||||
}
|
||||
#endif
|
||||
|
@ -24,6 +24,12 @@
|
||||
#include "slap.h"
|
||||
|
||||
|
||||
#if SLAPD_OVER_CHAIN == SLAPD_MOD_STATIC
|
||||
extern int chain_init();
|
||||
#endif
|
||||
#if SLAPD_OVER_DENYOP == SLAPD_MOD_STATIC
|
||||
extern int denyop_init();
|
||||
#endif
|
||||
#if SLAPD_OVER_DYNGROUP == SLAPD_MOD_STATIC
|
||||
extern int dyngroup_init();
|
||||
#endif
|
||||
@ -38,6 +44,12 @@ static struct {
|
||||
char *name;
|
||||
int (*func)();
|
||||
} funcs[] = {
|
||||
#if SLAPD_OVER_CHAIN == SLAPD_MOD_STATIC
|
||||
{ "LDAP Chain Response", chain_init },
|
||||
#endif
|
||||
#if SLAPD_OVER_DENYOP == SLAPD_MOD_STATIC
|
||||
{ "Deny Operation", denyop_init },
|
||||
#endif
|
||||
#if SLAPD_OVER_DYNGROUP == SLAPD_MOD_STATIC
|
||||
{ "Dynamic Group", dyngroup_init },
|
||||
#endif
|
||||
|
@ -738,7 +738,7 @@ rwm_init(void)
|
||||
{
|
||||
memset( &rwm, 0, sizeof(slap_overinst) );
|
||||
|
||||
rwm.on_bi.bi_type = "rewrite-remap";
|
||||
rwm.on_bi.bi_type = "rwm";
|
||||
rwm.on_bi.bi_db_init = rwm_over_init;
|
||||
rwm.on_bi.bi_db_config = rwm_config;
|
||||
rwm.on_bi.bi_db_destroy = rwm_destroy;
|
||||
|
Loading…
Reference in New Issue
Block a user