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