ports/147869: [PATCH] net/isc-dhcp41-server add LDAP configuration storage support
Alexander V. Ribchansky
triosoft at triosoft.com.ua
Tue Jun 15 09:30:02 UTC 2010
>Number: 147869
>Category: ports
>Synopsis: [PATCH] net/isc-dhcp41-server add LDAP configuration storage support
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: update
>Submitter-Id: current-users
>Arrival-Date: Tue Jun 15 09:30:01 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator: Alexander V. Ribchansky
>Release: FreeBSD 8.1-PRERELEASE
>Organization:
TrioSoft
>Environment:
FreeBSD monstro.zk.informjust.ua 8.1-PRERELEASE FreeBSD 8.1-PRERELEASE #0: Wed Jun 2 13:45:37 EEST 2010 shurik at jeltz.zk.informjust.ua:/usr/obj/usr/src/sys/TSKERNEL i386
>Description:
Add support of storing dhcpd configuration in LDAP. This already was in net/isc-dhcp30-server but not in more recent -41 version.
>How-To-Repeat:
>Fix:
Patch attached with submission follows:
diff -ruN isc-dhcp41-server.orig/Makefile isc-dhcp41-server/Makefile
--- isc-dhcp41-server.orig/Makefile 2010-06-14 14:48:40.042224000 +0300
+++ isc-dhcp41-server/Makefile 2010-06-15 11:43:32.487840787 +0300
@@ -18,7 +18,7 @@
MAINTAINER= wxs at FreeBSD.org
COMMENT?= The ISC Dynamic Host Configuration Protocol server
-PORTREVISION_SERVER= 1
+PORTREVISION_SERVER= 2
PORTREVISION_CLIENT= 1
PORTREVISION_RELAY= 0
@@ -27,7 +27,13 @@
UNIQUENAME= ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}
.if ${SUBSYS} == server
-OPTIONS= DHCP_PARANOIA "Enable support for chroot" on
+OPTIONS= DHCP_PARANOIA "add -user, -group and -chroot options" on \
+ DHCP_LDAP "add experimental LDAP backend support" off \
+ DHCP_LDAP_SSL "support LDAP connection over SSL/TLS" on \
+ DHCP_LDAP_DBG "turns debugging from LDAP configurator" off \
+ OPENSSL_BASE "use the base system OpenSSL (required by TLS)" on \
+ OPENSSL_PORT "use OpenSSL from ports (required by TLS)" off \
+
.endif
# PORTREVISION and CONFLICTS handling
@@ -86,10 +92,21 @@
MSG_FILE= ${.CURDIR}/pkg-message
PKGMESSAGE= ${WRKDIR}/pkg-message
+PLIST_SUB+= SCHEMA_DIR="${SCHEMA_DIR:S,^${PREFIX}/,,}"
+.if defined(WITH_DHCP_LDAP)
+PLIST_SUB+= LDAP=""
+.else
+PLIST_SUB+= LDAP="@comment "
+.endif
+
REINPLACE_SUB= PREFIX="${PREFIX}"
PKGMESSAGE_SUB= PREFIX="${PREFIX}" MAN1PREFIX="${MAN1PREFIX}" \
DOCSDIR="${DOCSDIR}" SCHEMA_DIR="${SCHEMA_DIR}"
+.if ${SUBSYS} == server
+USE_AUTOTOOLS= aclocal:110 automake:110
+.endif
+
.if defined(WITH_DHCP_PARANOIA)
CONFIGURE_ARGS+= --enable-paranoia --enable-early-chroot
SUB_LIST+= PARANOIA=yes
@@ -97,8 +114,71 @@
SUB_LIST+= PARANOIA=no
.endif
+.if defined(WITH_DHCP_LDAP_DBG)
+CFLAGS+= -DDEBUG_LDAP
+.endif
+
+.if defined(WITH_DHCP_LDAP)
+
+PORTDOCS+= README.ldap LICENSE.ldap
+LDAP_SCRIPT= ${WRKDIR}/${LDAPPATCHARCH}/dhcpd-conf-to-ldap
+LDAP_SCHEMA= ${WRKDIR}/${LDAPPATCHARCH}/dhcp.schema
+
+LDAPPATCHRELEASE= 2
+LDAPPATCHARCH= ldap-for-dhcp-${PORTVERSION}-${LDAPPATCHRELEASE}
+LDAPPATCHFILE= dhcp-${PORTVERSION}-ldap.patch
+
+MASTER_SITES+= http://cloud.github.com/downloads/dcantrell/ldap-for-dhcp/:ldap
+DISTFILES+= ${LDAPPATCHARCH}.tar.gz:ldap
+
+USE_PERL5_RUN=yes
+USE_OPENLDAP=yes
+
+USE_AUTOTOOLS= aclocal:110 libtoolize:226 autoconf:262 autoheader:262 automake:110
+LIBTOOLIZE_ARG= --copy --force
+AUTOMAKE_ARGS= --foreign --add-missing --copy
+
+CFLAGS+= -I${PREFIX}/include -L${PREFIX}/lib
+
+CONFIGURE_ARGS+= --with-ldap
+
+.if !defined(WITHOUT_DHCP_LDAP_SSL)
+. if !defined(WITHOUT_OPENSSL_BASE)
+. if defined(WITH_OPENSSL_PORT)
+BROKEN= Multiple OpenSSL versions selected. Run 'make config' again!
+. endif
+. else
+. if !defined(WITH_OPENSSL_PORT)
+BROKEN= No OpenSSL versions selected. Run 'make config' again!
+. endif
+. endif
+USE_OPENSSL= yes
+CONFIGURE_ARGS+= --with-ldapcrypto
+# hack to get bsd.openssl.mk included at this late state
+.include "${PORTSDIR}/Mk/bsd.openssl.mk"
+.endif
+.endif
+
post-extract:
@${CP} ${FILESDIR}/client::scripts::freebsd ${WRKSRC}/client/scripts/freebsd
+ @${MV} ${WRKSRC}/server/dhcpd.conf ${WRKSRC}/server/dhcpd.conf.sample
+
+pre-patch:
+.if ${SUBSYS} == server && defined(WITH_DHCP_LDAP)
+ @cd ${WRKSRC} && \
+ ${PATCH} -p1 < ${WRKDIR}/${LDAPPATCHARCH}/${LDAPPATCHFILE}
+.endif
+
+patch-pkgmessage:
+.if ${SUBSYS} != devel
+ @${SED} ${PKGMESSAGE_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
+ ${MSG_FILE} > ${PKGMESSAGE}
+.if defined(WITH_DHCP_LDAP)
+ @${REINPLACE_CMD} -e 's|^%%LDAP%%||g' ${PKGMESSAGE}
+.else
+ @${REINPLACE_CMD} -e '/^%%LDAP%%/d' ${PKGMESSAGE}
+.endif
+.endif
post-patch:
@${SED} ${PKGMESSAGE_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
@@ -116,8 +196,19 @@
${MAKE} -C ${WRKSRC}/includes install
${INSTALL_DATA} ${WRKSRC}/dhcpctl/dhcpctl.h ${PREFIX}/include
.endif
+.if defined(WITH_DHCP_LDAP)
+ @${MKDIR} ${SCHEMA_DIR}
+ ${INSTALL_DATA} ${LDAP_SCHEMA} ${SCHEMA_DIR}
+ ${INSTALL_SCRIPT} ${LDAP_SCRIPT} ${PREFIX}/bin
+.endif
post-install:
+.if defined(WITH_DHCP_LDAP) && !defined(NOPORTDOCS)
+ ${MKDIR} ${DOCSDIR}
+ ${INSTALL_MAN} ${WRKDIR}/${LDAPPATCHARCH}/README.ldap ${DOCSDIR}
+ ${INSTALL_MAN} ${WRKDIR}/${LDAPPATCHARCH}/LICENSE.ldap ${DOCSDIR}
+.endif
+
.if defined(CONF_FILE)
if [ ! -f ${PREFIX}/etc/${CONF_FILE} ]; then \
${CP} -p ${PREFIX}/etc/${CONF_FILE}.sample ${PREFIX}/etc/${CONF_FILE} ; \
@@ -126,6 +217,16 @@
.if ${SUBSYS} == client
${INSTALL_SCRIPT} ${WRKSRC}/client/scripts/freebsd ${PREFIX}/sbin/dhclient-script
.endif
+
+.if ${SUBSYS} != devel
+ @${SED} ${PKGMESSAGE_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
+ ${MSG_FILE} > ${PKGMESSAGE}
+.if defined(WITH_DHCP_LDAP)
+ @${REINPLACE_CMD} -e 's|^%%LDAP%%||g' ${PKGMESSAGE}
+.else
+ @${REINPLACE_CMD} -e '/^%%LDAP%%/d' ${PKGMESSAGE}
+.endif
+.endif
@${ECHO_MSG}
@${CAT} ${PKGMESSAGE}
@${ECHO_MSG}
diff -ruN isc-dhcp41-server.orig/distinfo isc-dhcp41-server/distinfo
--- isc-dhcp41-server.orig/distinfo 2010-05-06 23:24:01.000000000 +0300
+++ isc-dhcp41-server/distinfo 2010-06-11 12:36:04.787527215 +0300
@@ -1,3 +1,6 @@
MD5 (dhcp-4.1.1.tar.gz) = 38a74c89d8913b9b5f33737047623c18
SHA256 (dhcp-4.1.1.tar.gz) = 37058685bffbfeb793cfb0867f0b1911f8d238ea69fbaa6cbb165455ab803618
SIZE (dhcp-4.1.1.tar.gz) = 1084368
+MD5 (ldap-for-dhcp-4.1.1-2.tar.gz) = 9fa2f64826c969a55fd28263e4b6cad6
+SHA256 (ldap-for-dhcp-4.1.1-2.tar.gz) = 566b7be2ebefdc583d0bf0095c804ba69807b67e5cc29a2b64b1b39202b37d0d
+SIZE (ldap-for-dhcp-4.1.1-2.tar.gz) = 39004
diff -ruN isc-dhcp41-server.orig/files/patch-server-Makefile.am isc-dhcp41-server/files/patch-server-Makefile.am
--- isc-dhcp41-server.orig/files/patch-server-Makefile.am 1970-01-01 03:00:00.000000000 +0300
+++ isc-dhcp41-server/files/patch-server-Makefile.am 2010-06-14 14:34:37.343481661 +0300
@@ -0,0 +1,10 @@
+--- ./server/Makefile.am.orig 2010-06-14 14:25:49.151718742 +0300
++++ ./server/Makefile.am 2010-06-14 14:26:03.561069930 +0300
+@@ -1,6 +1,6 @@
+ AM_CPPFLAGS = -I.. -DLOCALSTATEDIR='"@localstatedir@"'
+
+-dist_sysconf_DATA = dhcpd.conf
++dist_sysconf_DATA = dhcpd.conf.sample
+ sbin_PROGRAMS = dhcpd
+ dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c confpars.c db.c class.c failover.c \
+ omapi.c mdb.c stables.c salloc.c ddns.c dhcpleasequery.c \
diff -ruN isc-dhcp41-server.orig/files/patch-server__Makefile.in isc-dhcp41-server/files/patch-server__Makefile.in
--- isc-dhcp41-server.orig/files/patch-server__Makefile.in 2010-05-06 23:24:01.000000000 +0300
+++ isc-dhcp41-server/files/patch-server__Makefile.in 1970-01-01 03:00:00.000000000 +0300
@@ -1,13 +0,0 @@
---- ./server/Makefile.in.orig 2010-01-07 19:47:06.000000000 -0500
-+++ ./server/Makefile.in 2010-05-02 20:38:26.000000000 -0400
-@@ -370,8 +370,8 @@
- @list='$(dist_sysconf_DATA)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
-- echo " $(dist_sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f'"; \
-- $(dist_sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f"; \
-+ echo " $(dist_sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f.sample'"; \
-+ $(dist_sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f.sample"; \
- done
-
- uninstall-dist_sysconfDATA:
diff -ruN isc-dhcp41-server.orig/pkg-message isc-dhcp41-server/pkg-message
--- isc-dhcp41-server.orig/pkg-message 2010-05-06 23:24:01.000000000 +0300
+++ isc-dhcp41-server/pkg-message 2010-06-11 14:19:01.040184466 +0300
@@ -28,3 +28,7 @@
**** WARNING: %%PREFIX%%/etc/rc.isc-dhcpd.conf is obsolete. rc.conf like
variables are no longer read from there. Also, the dhcpd_options
variable is obsolete. Use dhcpd_flags instead.
+%%LDAP%%
+%%LDAP%%**** You have requested support for the LDAP configuration backend.
+%%LDAP%% The OpenLDAP schema file is installed as %%SCHEMA_DIR%%/dhcp.schema.
+%%LDAP%% See %%DOCSDIR%%/README.ldap for further LDAP configuration details.
diff -ruN isc-dhcp41-server.orig/pkg-plist isc-dhcp41-server/pkg-plist
--- isc-dhcp41-server.orig/pkg-plist 2010-05-15 05:58:48.000000000 +0300
+++ isc-dhcp41-server/pkg-plist 2010-06-14 14:44:39.843228976 +0300
@@ -5,6 +5,7 @@
@exec if [ ! -f %D/etc/dhcpd.conf ] ; then cp -p %D/%F %B/dhcpd.conf; fi
sbin/dhcpd
bin/omshell
+%%LDAP%%bin/dhcpd-conf-to-ldap
include/dhcpctl.h
include/isc-dhcp/boolean.h
include/isc-dhcp/dst.h
@@ -28,5 +29,7 @@
lib/libdhcpctl.a
lib/libomapi.a
lib/libdst.a
+%%LDAP%%%%SCHEMA_DIR%%/dhcp.schema
+%%LDAP%%@dirrm %%SCHEMA_DIR%%
@dirrm include/omapip
@dirrm include/isc-dhcp
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list