4fa9972
From dc6de005ec4b5488ca4a8db8203b3ce582b62e00 Mon Sep 17 00:00:00 2001
4fa9972
From: Tomas Hozza <thozza@redhat.com>
4fa9972
Date: Mon, 24 Nov 2014 13:44:55 +0100
4fa9972
Subject: [PATCH] distribute SDB
4fa9972
4fa9972
Signed-off-by: Tomas Hozza <thozza@redhat.com>
4fa9972
---
4fa9972
 bin/Makefile.in           |  4 +--
4fa9972
 bin/named-sdb/Makefile.in | 22 +++++--------
4fa9972
 bin/named-sdb/main.c      | 83 +++++++++++++++++++++++++++++++++++++++++++++++
4fa9972
 bin/named/Makefile.in     | 16 ++++-----
4fa9972
 bin/sdb_tools/Makefile.in | 10 ++++--
4fa9972
 configure.in              |  3 ++
4fa9972
 6 files changed, 109 insertions(+), 29 deletions(-)
4fa9972
4fa9972
diff --git a/bin/Makefile.in b/bin/Makefile.in
4fa9972
index 7654169..b4c9c03 100644
4fa9972
--- a/bin/Makefile.in
4fa9972
+++ b/bin/Makefile.in
Adam Tkac 2fc1c6e
@@ -19,8 +19,8 @@ srcdir =	@srcdir@
Adam Tkac f12e46d
 VPATH =		@srcdir@
Adam Tkac f12e46d
 top_srcdir =	@top_srcdir@
Adam Tkac f12e46d
 
4fa9972
-SUBDIRS =	named named-pkcs11 rndc dig delv dnssec dnssec-pkcs11 tools tests nsupdate \
Adam Tkac d6323c1
-		check confgen @PYTHON_TOOLS@ @PKCS11_TOOLS@
4fa9972
+SUBDIRS =	named named-sdb named-pkcs11 rndc dig delv dnssec dnssec-pkcs11 tools tests nsupdate \
Adam Tkac d6323c1
+		check confgen @PYTHON_TOOLS@ @PKCS11_TOOLS@ sdb_tools
Adam Tkac f12e46d
 TARGETS =
Adam Tkac f12e46d
 
Adam Tkac f12e46d
 @BIND9_MAKE_RULES@
4fa9972
diff --git a/bin/named-sdb/Makefile.in b/bin/named-sdb/Makefile.in
4fa9972
index ba5ec3c..d7ac259 100644
4fa9972
--- a/bin/named-sdb/Makefile.in
4fa9972
+++ b/bin/named-sdb/Makefile.in
4fa9972
@@ -34,10 +34,10 @@ top_srcdir =	@top_srcdir@
4fa9972
 #
4fa9972
 # Add database drivers here.
4fa9972
 #
4fa9972
-DBDRIVER_OBJS =
4fa9972
-DBDRIVER_SRCS =
4fa9972
+DBDRIVER_OBJS =	ldapdb.@O@ pgsqldb.@O@ sqlitedb.@O@ dirdb.@O@
4fa9972
+DBDRIVER_SRCS =	ldapdb.c pgsqldb.c sqlitedb.c dirdb.c
4fa9972
 DBDRIVER_INCLUDES =
4fa9972
-DBDRIVER_LIBS =
4fa9972
+DBDRIVER_LIBS =	-lldap -llber -lsqlite3 -lpq
Adam Tkac f12e46d
 
4fa9972
 DLZ_DRIVER_DIR =	${top_srcdir}/contrib/dlz/drivers
Adam Tkac f12e46d
 
4fa9972
@@ -83,7 +83,7 @@ NOSYMLIBS =	${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
Adam Tkac e99cc34
 
Adam Tkac f12e46d
 SUBDIRS =	unix
Adam Tkac f12e46d
 
4fa9972
-TARGETS =	named@EXEEXT@ lwresd@EXEEXT@
4fa9972
+TARGETS =	named-sdb@EXEEXT@
Adam Tkac f12e46d
 
4fa9972
 GEOIPLINKOBJS = geoip.@O@
Adam Tkac f12e46d
 
4fa9972
@@ -144,7 +144,7 @@ config.@O@: config.c
4fa9972
 		-DNS_SYSCONFDIR=\"${sysconfdir}\" \
4fa9972
 		-c ${srcdir}/config.c
Adam Tkac f12e46d
 
4fa9972
-named@EXEEXT@: ${OBJS} ${UOBJS} ${DEPLIBS}
4fa9972
+named-sdb@EXEEXT@: ${OBJS} ${UOBJS} ${DEPLIBS}
4fa9972
 	export MAKE_SYMTABLE="yes"; \
4fa9972
 	export BASEOBJS="${OBJS} ${UOBJS}"; \
4fa9972
 	${FINALBUILDCMD}
4fa9972
@@ -171,15 +171,9 @@ statschannel.@O@: bind9.xsl.h
Adam Tkac c9b9417
 
4fa9972
 installdirs:
4fa9972
 	$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${sbindir}
4fa9972
-	$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man5
4fa9972
-	$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
Adam Tkac c9b9417
-
4fa9972
-install:: named@EXEEXT@ lwresd@EXEEXT@ installdirs
4fa9972
-	${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named@EXEEXT@ ${DESTDIR}${sbindir}
4fa9972
-	(cd ${DESTDIR}${sbindir}; rm -f lwresd@EXEEXT@; @LN@ named@EXEEXT@ lwresd@EXEEXT@)
4fa9972
-	${INSTALL_DATA} ${srcdir}/named.8 ${DESTDIR}${mandir}/man8
4fa9972
-	${INSTALL_DATA} ${srcdir}/lwresd.8 ${DESTDIR}${mandir}/man8
4fa9972
-	${INSTALL_DATA} ${srcdir}/named.conf.5 ${DESTDIR}${mandir}/man5
4fa9972
+
4fa9972
+install:: named-sdb@EXEEXT@ installdirs
4fa9972
+	${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named-sdb@EXEEXT@ ${DESTDIR}${sbindir}
4fa9972
 
4fa9972
 @DLZ_DRIVER_RULES@
4fa9972
 
4fa9972
diff --git a/bin/named-sdb/main.c b/bin/named-sdb/main.c
4fa9972
index 8f7c7ee..d603506 100644
4fa9972
--- a/bin/named-sdb/main.c
4fa9972
+++ b/bin/named-sdb/main.c
4fa9972
@@ -86,6 +86,10 @@
Adam Tkac 15c5cd7
  * Include header files for database drivers here.
Adam Tkac 15c5cd7
  */
Adam Tkac 15c5cd7
 /* #include "xxdb.h" */
Adam Tkac 15c5cd7
+#include "ldapdb.h"
Adam Tkac 15c5cd7
+#include "pgsqldb.h"
4fa9972
+#include "sqlitedb.h"
Adam Tkac 15c5cd7
+#include "dirdb.h"
Adam Tkac 15c5cd7
 
Adam Tkac 86c080f
 #ifdef CONTRIB_DLZ
Adam Tkac 15c5cd7
 /*
4fa9972
@@ -926,6 +930,11 @@ setup(void) {
Adam Tkac 15c5cd7
 		ns_main_earlyfatal("isc_app_start() failed: %s",
Adam Tkac 15c5cd7
 				   isc_result_totext(result));
Adam Tkac 15c5cd7
 
Adam Tkac 15c5cd7
+	ldapdb_clear();
Adam Tkac 15c5cd7
+	pgsqldb_clear();
Adam Tkac 15c5cd7
+	dirdb_clear();
4fa9972
+	sqlitedb_clear();
Adam Tkac 15c5cd7
+
Adam Tkac 15c5cd7
 	isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
Adam Tkac c9b9417
 		      ISC_LOG_NOTICE, "starting %s %s%s", ns_g_product,
Adam Tkac c9b9417
 		      ns_g_version, saved_command_line);
4fa9972
@@ -1038,6 +1047,75 @@ setup(void) {
Adam Tkac 15c5cd7
 				   isc_result_totext(result));
Adam Tkac 15c5cd7
 #endif
Adam Tkac 15c5cd7
 
Adam Tkac 15c5cd7
+        result = ldapdb_init();
Adam Tkac 15c5cd7
+        if (result != ISC_R_SUCCESS)
Adam Tkac 15c5cd7
+        {
Adam Tkac 15c5cd7
+            isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
Adam Tkac 15c5cd7
+                          ISC_LOG_ERROR, 
Adam Tkac 15c5cd7
+                          "SDB ldap module initialisation failed: %s.",
Adam Tkac 15c5cd7
+                          isc_result_totext(result)
Adam Tkac 15c5cd7
+                );
Adam Tkac 15c5cd7
+            isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
Adam Tkac 15c5cd7
+                          ISC_LOG_ERROR, 
Adam Tkac 15c5cd7
+                          "SDB ldap zone database will be unavailable."
Adam Tkac 15c5cd7
+                );
Adam Tkac 15c5cd7
+        }else
Adam Tkac 15c5cd7
+            isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
Adam Tkac 15c5cd7
+                          ISC_LOG_NOTICE, "SDB ldap zone database module loaded."
Adam Tkac 15c5cd7
+                         );
Adam Tkac 15c5cd7
+
Adam Tkac 15c5cd7
+        result = pgsqldb_init();
Adam Tkac 15c5cd7
+        if (result != ISC_R_SUCCESS)
Adam Tkac 15c5cd7
+        {
Adam Tkac 15c5cd7
+            isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
Adam Tkac 15c5cd7
+                          ISC_LOG_ERROR, 
Adam Tkac 15c5cd7
+                          "SDB pgsql module initialisation failed: %s.",
Adam Tkac 15c5cd7
+                          isc_result_totext(result)
Adam Tkac 15c5cd7
+                );
Adam Tkac 15c5cd7
+            isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
Adam Tkac 15c5cd7
+                          ISC_LOG_ERROR, 
Adam Tkac 15c5cd7
+                          "SDB pgsql zone database will be unavailable."
Adam Tkac 15c5cd7
+                );
Adam Tkac 15c5cd7
+        }else
Adam Tkac 15c5cd7
+            isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
Adam Tkac 15c5cd7
+                          ISC_LOG_NOTICE, "SDB postgreSQL DB zone database module loaded."
Adam Tkac 15c5cd7
+                         );
Adam Tkac 15c5cd7
+
4fa9972
+        result = sqlitedb_init();
4fa9972
+        if (result != ISC_R_SUCCESS)
4fa9972
+        {
4fa9972
+             isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
4fa9972
+                          ISC_LOG_ERROR, 
4fa9972
+                          "SDB sqlite3 module initialisation failed: %s.",
4fa9972
+                          isc_result_totext(result)
4fa9972
+                );
4fa9972
+            isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
4fa9972
+                          ISC_LOG_ERROR, 
4fa9972
+                          "SDB sqlite3 zone database will be unavailable."
4fa9972
+                );
4fa9972
+        }else
4fa9972
+            isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
4fa9972
+                          ISC_LOG_NOTICE, "SDB sqlite3 DB zone database module loaded."
4fa9972
+                         );
4fa9972
+
Adam Tkac 15c5cd7
+        result = dirdb_init();
Adam Tkac 15c5cd7
+        if (result != ISC_R_SUCCESS)
Adam Tkac 15c5cd7
+        {
Adam Tkac 15c5cd7
+            isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
Adam Tkac 15c5cd7
+                          ISC_LOG_ERROR, 
Adam Tkac 15c5cd7
+                          "SDB directory DB module initialisation failed: %s.",
Adam Tkac 15c5cd7
+                          isc_result_totext(result)
Adam Tkac 15c5cd7
+                );
Adam Tkac 15c5cd7
+            isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
Adam Tkac 15c5cd7
+                          ISC_LOG_ERROR, 
Adam Tkac 15c5cd7
+                          "SDB directory DB zone database will be unavailable."
Adam Tkac 15c5cd7
+                );
Adam Tkac 15c5cd7
+        }else
Adam Tkac 15c5cd7
+            isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
Adam Tkac 15c5cd7
+                          ISC_LOG_NOTICE, "SDB directory DB zone database module loaded."
Adam Tkac 15c5cd7
+                         );
Adam Tkac 15c5cd7
+
4fa9972
+
Adam Tkac 15c5cd7
 	ns_server_create(ns_g_mctx, &ns_g_server);
Adam Tkac 15c5cd7
 
4fa9972
 #ifdef HAVE_LIBSECCOMP
4fa9972
@@ -1073,6 +1151,11 @@ cleanup(void) {
Adam Tkac 15c5cd7
 
Adam Tkac 15c5cd7
 	dns_name_destroy();
Adam Tkac 15c5cd7
 
4fa9972
+	ldapdb_clear();
4fa9972
+	pgsqldb_clear();
4fa9972
+	sqlitedb_clear();
4fa9972
+	dirdb_clear();
Adam Tkac 15c5cd7
+
Adam Tkac 15c5cd7
 	isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
Adam Tkac 15c5cd7
 		      ISC_LOG_NOTICE, "exiting");
Adam Tkac 15c5cd7
 	ns_log_shutdown();
4fa9972
diff --git a/bin/named/Makefile.in b/bin/named/Makefile.in
4fa9972
index ba5ec3c..2c88f46 100644
4fa9972
--- a/bin/named/Makefile.in
4fa9972
+++ b/bin/named/Makefile.in
4fa9972
@@ -49,9 +49,9 @@ DLZDRIVER_LIBS =	@DLZ_DRIVER_LIBS@
4fa9972
 CINCLUDES =	-I${srcdir}/include -I${srcdir}/unix/include -I. \
4fa9972
 		${LWRES_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES} \
4fa9972
 		${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} ${ISC_INCLUDES} \
4fa9972
-		${DLZDRIVER_INCLUDES} ${DBDRIVER_INCLUDES} @DST_OPENSSL_INC@
4fa9972
+		@DST_OPENSSL_INC@
Adam Tkac 300cfcf
 
4fa9972
-CDEFINES =      @CONTRIB_DLZ@ @CRYPTO@
4fa9972
+CDEFINES =      @CRYPTO@
4fa9972
 
4fa9972
 CWARNINGS =
4fa9972
 
4fa9972
@@ -75,11 +75,11 @@ DEPLIBS =	${LWRESDEPLIBS} ${DNSDEPLIBS} ${BIND9DEPLIBS} \
4fa9972
 
4fa9972
 LIBS =		${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
4fa9972
 		${ISCCFGLIBS} ${ISCCCLIBS} ${ISCLIBS} \
4fa9972
-		${DLZDRIVER_LIBS} ${DBDRIVER_LIBS} @LIBS@
4fa9972
+		@LIBS@
Adam Tkac 300cfcf
 
4fa9972
 NOSYMLIBS =	${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
4fa9972
 		${ISCCFGLIBS} ${ISCCCLIBS} ${ISCNOSYMLIBS} \
4fa9972
-		${DLZDRIVER_LIBS} ${DBDRIVER_LIBS} @LIBS@
4fa9972
+		@LIBS@
Adam Tkac 300cfcf
 
Adam Tkac 300cfcf
 SUBDIRS =	unix
Adam Tkac 300cfcf
 
4fa9972
@@ -94,8 +94,7 @@ OBJS =		builtin.@O@ client.@O@ config.@O@ control.@O@ \
4fa9972
 		tkeyconf.@O@ tsigconf.@O@ update.@O@ xfrout.@O@ \
4fa9972
 		zoneconf.@O@ \
4fa9972
 		lwaddr.@O@ lwresd.@O@ lwdclient.@O@ lwderror.@O@ lwdgabn.@O@ \
4fa9972
-		lwdgnba.@O@ lwdgrbn.@O@ lwdnoop.@O@ lwsearch.@O@ \
4fa9972
-		${DLZDRIVER_OBJS} ${DBDRIVER_OBJS}
4fa9972
+		lwdgnba.@O@ lwdgrbn.@O@ lwdnoop.@O@ lwsearch.@O@
Adam Tkac 300cfcf
 
4fa9972
 UOBJS =		unix/os.@O@ unix/dlz_dlopen_driver.@O@
Adam Tkac 300cfcf
 
4fa9972
@@ -110,8 +109,7 @@ SRCS =		builtin.c client.c config.c control.c \
4fa9972
 		tkeyconf.c tsigconf.c update.c xfrout.c \
4fa9972
 		zoneconf.c \
4fa9972
 		lwaddr.c lwresd.c lwdclient.c lwderror.c lwdgabn.c \
4fa9972
-		lwdgnba.c lwdgrbn.c lwdnoop.c lwsearch.c \
4fa9972
-		${DLZDRIVER_SRCS} ${DBDRIVER_SRCS}
4fa9972
+		lwdgnba.c lwdgrbn.c lwdnoop.c lwsearch.c
Adam Tkac 300cfcf
 
4fa9972
 MANPAGES =	named.8 lwresd.8 named.conf.5
Adam Tkac 300cfcf
 
4fa9972
@@ -181,7 +179,5 @@ install:: named@EXEEXT@ lwresd@EXEEXT@ installdirs
4fa9972
 	${INSTALL_DATA} ${srcdir}/lwresd.8 ${DESTDIR}${mandir}/man8
4fa9972
 	${INSTALL_DATA} ${srcdir}/named.conf.5 ${DESTDIR}${mandir}/man5
Adam Tkac 300cfcf
 
4fa9972
-@DLZ_DRIVER_RULES@
4fa9972
-
4fa9972
 named-symtbl.@O@: named-symtbl.c
4fa9972
 	${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -c named-symtbl.c
4fa9972
diff --git a/bin/sdb_tools/Makefile.in b/bin/sdb_tools/Makefile.in
4fa9972
index 7f3c5e2..b1bca66 100644
4fa9972
--- a/bin/sdb_tools/Makefile.in
4fa9972
+++ b/bin/sdb_tools/Makefile.in
4fa9972
@@ -32,11 +32,11 @@ DEPLIBS =	${LWRESDEPLIBS} ${DNSDEPLIBS} ${BIND9DEPLIBS} \
4fa9972
 LIBS =		${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
4fa9972
 		${ISCCFGLIBS} ${ISCCCLIBS} ${ISCLIBS} ${DBDRIVER_LIBS} @LIBS@
4fa9972
 
4fa9972
-TARGETS =	zone2ldap@EXEEXT@ zonetodb@EXEEXT@
4fa9972
+TARGETS =	zone2ldap@EXEEXT@ zonetodb@EXEEXT@ zone2sqlite@EXEEXT@
4fa9972
 
4fa9972
-OBJS	=	zone2ldap.@O@ zonetodb.@O@
4fa9972
+OBJS	=	zone2ldap.@O@ zonetodb.@O@ zone2sqlite.@O@
4fa9972
 
4fa9972
-SRCS    =       zone2ldap.c zonetodb.c
4fa9972
+SRCS    =       zone2ldap.c zonetodb.c zone2sqlite.c
4fa9972
 
4fa9972
 MANPAGES =      zone2ldap.1
Adam Tkac c9b9417
 
4fa9972
@@ -50,6 +50,9 @@ zone2ldap@EXEEXT@: zone2ldap.@O@ ${DEPLIBS}
4fa9972
 zonetodb@EXEEXT@: zonetodb.@O@  ${DEPLIBS}
4fa9972
 	${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ zonetodb.@O@ -lpq ${LIBS}
4fa9972
 
4fa9972
+zone2sqlite@EXEEXT@: zone2sqlite.@O@  ${DEPLIBS}
4fa9972
+	${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ zone2sqlite.@O@ -lsqlite3 -lssl ${LIBS}
4fa9972
+
4fa9972
 clean distclean manclean maintainer-clean::
4fa9972
 	rm -f ${TARGETS} ${OBJS}
4fa9972
 
4fa9972
@@ -60,4 +63,5 @@ installdirs:
4fa9972
 install:: ${TARGETS} installdirs
4fa9972
 	${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} zone2ldap@EXEEXT@ ${DESTDIR}${sbindir}
4fa9972
 	${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} zonetodb@EXEEXT@  ${DESTDIR}${sbindir}
4fa9972
+	${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} zone2sqlite@EXEEXT@ ${DESTDIR}${sbindir}
4fa9972
 	${INSTALL_DATA} ${srcdir}/zone2ldap.1 ${DESTDIR}${mandir}/man1/zone2ldap.1
4fa9972
diff --git a/configure.in b/configure.in
4fa9972
index 8f3b8f4..b50aa00 100644
4fa9972
--- a/configure.in
4fa9972
+++ b/configure.in
4fa9972
@@ -4477,12 +4477,15 @@ AC_CONFIG_FILES([
4fa9972
 	bin/named/unix/Makefile
dce2d1b
 	bin/named-pkcs11/Makefile
dce2d1b
 	bin/named-pkcs11/unix/Makefile
Adam Tkac f12e46d
+	bin/named-sdb/Makefile
Adam Tkac f12e46d
+	bin/named-sdb/unix/Makefile
Adam Tkac f12e46d
 	bin/nsupdate/Makefile
Adam Tkac 2fc1c6e
 	bin/pkcs11/Makefile
Adam Tkac d6323c1
 	bin/python/Makefile
Adam Tkac d6323c1
 	bin/python/dnssec-checkds.py
Adam Tkac c9b9417
 	bin/python/dnssec-coverage.py
Adam Tkac 5bc2b4b
 	bin/rndc/Makefile
Adam Tkac 5bc2b4b
+	bin/sdb_tools/Makefile
Adam Tkac 5bc2b4b
 	bin/tests/Makefile
Adam Tkac 5bc2b4b
 	bin/tests/atomic/Makefile
Adam Tkac 5bc2b4b
 	bin/tests/db/Makefile
4fa9972
-- 
4fa9972
1.9.3
4fa9972