From 9d9f8bb7bfee22a9748f8a23c204286391cd5b17 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Mon, 1 Oct 2007 21:26:03 +0000 Subject: [PATCH] * move to config-header similar to citserver. * configure the location of the key-files * some inacuarcies at fmt_date and sieve.c --- webcit/Makefile.in | 30 +++++++++------ webcit/config.h | 9 ----- webcit/configure.ac | 94 +++++++++++++++++++++++++++++++++++---------- webcit/crypto.c | 8 ++-- webcit/debian/rules | 3 +- webcit/fmt_date.c | 1 - webcit/setup.c | 6 +-- webcit/sieve.c | 4 +- webcit/webcit.h | 7 +++- webcit/webserver.c | 20 ++++++++++ 10 files changed, 128 insertions(+), 54 deletions(-) delete mode 100644 webcit/config.h diff --git a/webcit/Makefile.in b/webcit/Makefile.in index 06b66da5a..ef6465b1f 100644 --- a/webcit/Makefile.in +++ b/webcit/Makefile.in @@ -17,9 +17,9 @@ top_builddir=`pwd` LIB_SUBDIRS= PROG_SUBDIRS=@PROG_SUBDIRS@ SUBDIRS=$(LIB_SUBDIRS) $(PROG_SUBDIRS) -LOCALEDIR=@LOCALEDIR@ -WWWDIR=@WWWDIR@ -EDITORDIR=@EDITORDIR@ +#LOCALEDIR=@LOCALEDIR@ +#WWWDIR=@WWWDIR@ +#EDITORDIR=@EDITORDIR@ # End of configuration section @@ -68,17 +68,23 @@ webserver: webserver.o context_loop.o tools.o ical_dezonify.o \ $(LIBOBJS) $(LIBS) $(LDFLAGS) -o webserver .c.o: - $(CC) $(CFLAGS) $(DEFS) -c $(PTHREAD_DEFS) \ - -DWEBCITDIR=\"$(WWWDIR)\" \ - -DLOCALEDIR=\"$(LOCALEDIR)\" \ - -DEDITORDIR=\"$(EDITORDIR)\" $< + $(CC) $(CFLAGS) $(DEFS) -c $(PTHREAD_DEFS) $< .cpp.o: - $(CC) $(CFLAGS) $(DEFS) -c $(PTHREAD_DEFS) \ - -DWEBCITDIR=\"$(WWWDIR)\" \ - -DLOCALEDIR=\"$(LOCALEDIR)\" \ - -DEDITORDIR=\"$(EDITORDIR)\"$< - + $(CC) $(CFLAGS) $(DEFS) -c $(PTHREAD_DEFS) $< + +#.c.o: +# $(CC) $(CFLAGS) $(DEFS) -c $(PTHREAD_DEFS) \ +# -DWEBCITDIR=\"$(WWWDIR)\" \ +# -DLOCALEDIR=\"$(LOCALEDIR)\" \ +# -DEDITORDIR=\"$(EDITORDIR)\" $< +# +#.cpp.o: +# $(CC) $(CFLAGS) $(DEFS) -c $(PTHREAD_DEFS) \ +# -DWEBCITDIR=\"$(WWWDIR)\" \ +# -DLOCALEDIR=\"$(LOCALEDIR)\" \ +# -DEDITORDIR=\"$(EDITORDIR)\"$< +# Makefile: $(srcdir)/Makefile.in config.status CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/webcit/config.h b/webcit/config.h deleted file mode 100644 index 837193b13..000000000 --- a/webcit/config.h +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Ugly hack to make the non-automake build work without source changes - */ - -#define _GNU_SOURCE -#define RUNDIR WEBCITDIR -#define BASEDIR WEBCITDIR -#define DATADIR WEBCITDIR -#define PREFIX WEBCITDIR diff --git a/webcit/configure.ac b/webcit/configure.ac index 4efbb6412..d5335eb4d 100644 --- a/webcit/configure.ac +++ b/webcit/configure.ac @@ -5,19 +5,31 @@ AC_INIT(webserver.c) PACKAGE=webcit VERSION=7.13 -AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") -AC_DEFINE_UNQUOTED(VERSION, "$VERSION") +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [our package name]) +AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [our package version]) AC_SUBST(PACKAGE) AC_SUBST(VERSION) AC_SUBST(PROG_SUBDIRS) +AC_DEFINE(PROG_SUBDIRS, [], [Program dirs]) AC_CANONICAL_HOST AC_PROG_INSTALL missing_dir=`cd $ac_aux_dir && pwd` AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) + +dnl Make sure we see all GNU and Solaris extensions. +AC_GNU_SOURCE + AC_CHECK_PROG(SED, sed, sed, no) AC_PREFIX_DEFAULT(/usr/local/webcit) +if test "$prefix" = NONE; then + AC_DEFINE_UNQUOTED(WEBCITDIR, "$ac_default_prefix", [define this to the Citadel home directory]) + ssl_dir="$ac_default_prefix/keys" +else + AC_DEFINE_UNQUOTED(WEBCITDIR, "$prefix", [define this to the Citadel home directory]) + ssl_dir="$prefix/keys" +fi AC_ARG_WITH(with_libical, [ --with-libical use libical calendaring library]) AC_ARG_WITH(with_zlib, [ --with-zlib use zlib compression if present]) @@ -125,7 +137,7 @@ main() { ], [ LIBS="-lical $LIBS" - AC_DEFINE(HAVE_LIBICAL) + AC_DEFINE(HAVE_LIBICAL,[],[whether we have libical available]) ] ) fi @@ -142,7 +154,7 @@ fi if test "x$ok_zlib" = xyes ; then LIBS="-lz $LIBS" - AC_DEFINE(HAVE_ZLIB) + AC_DEFINE(HAVE_ZLIB,[],[whether we have zlib]) fi @@ -227,7 +239,7 @@ if test "$with_ssl" != "no"; then CFLAGS="$saved_CFLAGS" if test "x$ac_cv_openssldir" != "xno" ; then - AC_DEFINE(HAVE_OPENSSL) + AC_DEFINE(HAVE_OPENSSL,[],[whethe we have openssl]) LIBS="-lssl -lcrypto $LIBS" dnl Need to recover ssldir - test above runs in subshell ssldir=$ac_cv_openssldir @@ -255,6 +267,19 @@ if test "$with_ssl" != "no"; then fi fi fi +dnl Checks for the SSLdir +dnl this is a bit different than the rest, +dnl because of the citadel used to have a keys/ subdir. +AC_ARG_WITH(ssldir, + [ --with-ssldir directory to store the ssl certificates under], + [ if test "x$withval" != "xno" ; then + + ssl_dir="$withval" + fi + AC_SUBST(MAKE_SSL_DIR) + ] +) +AC_DEFINE_UNQUOTED(SSL_DIR, "$ssl_dir", [were should we put our keys?]) dnl Here is the check for a usable iconv @@ -280,7 +305,7 @@ fi if test "$ok_iconv" != "no"; then AC_MSG_RESULT(WebCit will be built with character set conversion.) - AC_DEFINE(HAVE_ICONV) + AC_DEFINE(HAVE_ICONV,[],[whether we have iconv for charset conversion]) else AC_MSG_RESULT(WebCit will be built without character set conversion.) fi @@ -335,7 +360,7 @@ fi if test "$ok_nls" != "no"; then AC_MSG_RESULT(WebCit will be built with national language support.) - AC_DEFINE(ENABLE_NLS) + AC_DEFINE(ENABLE_NLS, [], [whether we have NLS support]) PROG_SUBDIRS="$PROG_SUBDIRS po" else AC_MSG_RESULT(WebCit will be built without national language support.) @@ -365,46 +390,75 @@ AC_ARG_WITH(backtrace, ) if test "$prefix" = NONE; then - LOCALEDIR=$ac_default_prefix - WWWDIR=$ac_default_prefix - EDITORDIR=$ac_default_prefix/tiny_mce + datadir=$ac_default_prefix + localedir=$ac_default_prefix + wwwdir=$ac_default_prefix + rundir=$ac_default_prefix + editordir=$ac_default_prefix/tiny_mce else - LOCALEDIR=$prefix - WWWDIR=$prefix - EDITORDIR=$prefix/tiny_mce + localedir=$prefix + wwwdir=$prefix + datadir=$prefix + rundir=$prefix + editordir=$prefix/tiny_mce fi dnl where to put the locale files AC_ARG_WITH(localedir, [ --with-localedir directory to put the locale files to], [ if test "x$withval" != "xno" ; then - LOCALEDIR=$withval + localedir=$withval fi ] ) -AC_SUBST(LOCALEDIR) +AC_DEFINE_UNQUOTED(LOCALEDIR, "$localedir",[where to find our pot files]) dnl Checks where to put our templates AC_ARG_WITH(wwwdir, [ --with-wwwdir directory to put our templates], [ if test "x$withval" != "xno" ; then - WWWDIR=$withval + wwwdir=$withval + fi + ] +) +AC_DEFINE_UNQUOTED(WWWDIR, "$wwwdir", [where to find our templates and pics]) + + + +dnl Checks for the run-dir for the sockets +AC_ARG_WITH(rundir, + [ --with-rundir directory to place runtime files (UDS) to?], + [ if test "x$withval" != "xno" ; then + AC_DEFINE(HAVE_RUN_DIR, [], [should we put our non volatile files elsewhere?]) + + rundir=$withval + AC_SUBST(MAKE_RUN_DIR) fi ] ) -AC_SUBST(WWWDIR) +AC_DEFINE_UNQUOTED(RUNDIR, "$rundir", [define, where the config should go in unix style]) + +dnl Checks for the Datadir +AC_ARG_WITH(datadir, + [ --with-datadir directory to store the databases under], + [ if test "x$withval" != "xno" ; then + datadir=$withval + fi + ] +) +AC_DEFINE_UNQUOTED(DATADIR, "$datadir",[define, if the user suplied a data-directory to use.]) dnl Checks where to put our editor AC_ARG_WITH(editordir, [ --with-editordir directory to put our editor], [ if test "x$withval" != "xno" ; then - EDITORDIR=$withval + editordir=$withval fi ] ) -AC_SUBST(EDITORDIR) - +AC_DEFINE_UNQUOTED(EDITORDIR, "$editordir", [where to find our mail editor]) +AC_CONFIG_HEADER(sysdep.h) AC_OUTPUT(Makefile po/Makefile ) echo ------------------------------------------------------------------------ diff --git a/webcit/crypto.c b/webcit/crypto.c index c3d80e3ab..1515ff397 100644 --- a/webcit/crypto.c +++ b/webcit/crypto.c @@ -7,7 +7,7 @@ */ /*@{*/ -#include "config.h" +#include "sysdep.h" #ifdef HAVE_OPENSSL #include "webcit.h" @@ -15,9 +15,9 @@ /** \todo dirify */ /** where to find the keys */ #define CTDL_CRYPTO_DIR "./keys" -#define CTDL_KEY_PATH CTDL_CRYPTO_DIR "/citadel.key" /**< the key */ -#define CTDL_CSR_PATH CTDL_CRYPTO_DIR "/citadel.csr" /**< the csr file */ -#define CTDL_CER_PATH CTDL_CRYPTO_DIR "/citadel.cer" /**< the cer file */ +#define CTDL_KEY_PATH file_crpt_file_key /**< the key */ +#define CTDL_CSR_PATH file_crpt_file_csr /**< the csr file */ +#define CTDL_CER_PATH file_crpt_file_cer /**< the cer file */ #define SIGN_DAYS 365 /**< how long our certificate should live */ SSL_CTX *ssl_ctx; /**< SSL context */ diff --git a/webcit/debian/rules b/webcit/debian/rules index bbdd4152d..1c5c346ab 100755 --- a/webcit/debian/rules +++ b/webcit/debian/rules @@ -18,7 +18,7 @@ ifneq (,$(findstring profiling,$(DEB_BUILD_OPTIONS))) PROFILE_ARGS= --with-gprof endif ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) - CFLAGS += -O0 -ggdb -rdynamic -D_GNU_SOURCE -MD -MP + CFLAGS += -O0 -ggdb -rdynamic -MD -MP LDFLAGS += -pg EXTRA_ARGS = --with-backtrace else @@ -37,6 +37,7 @@ configure-stamp: --with-editordir=/usr/share/tinymce/www \ --with-rundir=/var/run/citadel \ --with-ical --with-db --with-ldap \ + --with-ssldir=/etc/ssl/webcit/ \ --with-zlib --with-ssl --with-libiconf \ --with-newt --with-included-gettext \ --enable-debug $(EXTRA_ARGS) $(PROFILE_ARGS) diff --git a/webcit/fmt_date.c b/webcit/fmt_date.c index ff0df01be..578ca9875 100644 --- a/webcit/fmt_date.c +++ b/webcit/fmt_date.c @@ -53,7 +53,6 @@ void fmt_date(char *buf, time_t thetime, int brief) int time_format; time_format = get_time_format_cached (); -/// TODO: what about the time format? today_timet = time(NULL); localtime_r(&today_timet, &today_tm); diff --git a/webcit/setup.c b/webcit/setup.c index 5bb7fec16..f1166e78c 100644 --- a/webcit/setup.c +++ b/webcit/setup.c @@ -7,7 +7,7 @@ * */ -#include "config.h" +#include "sysdep.h" #include "webcit.h" #include "webserver.h" @@ -373,7 +373,7 @@ void install_init_scripts(void) { if ((stat("/etc/rc.d/init.d/", &etcinitd) == -1) && (errno == ENOENT)) - initfile = PREFIX"/webcit.init"; + initfile = WEBCITDIR"/webcit.init"; else initfile = "/etc/rc.d/init.d/webcit"; } @@ -585,7 +585,7 @@ int main(int argc, char *argv[]) } /* Get started in a valid setup directory. */ - strcpy(setup_directory, PREFIX); + strcpy(setup_directory, WEBCITDIR); if ( (using_web_installer) && (getenv("WEBCIT") != NULL) ) { strcpy(setup_directory, getenv("WEBCIT")); } diff --git a/webcit/sieve.c b/webcit/sieve.c index d2adb28d4..3dde76a60 100644 --- a/webcit/sieve.c +++ b/webcit/sieve.c @@ -425,9 +425,9 @@ void parse_fields_from_rule_editor(void) { char buf[256]; char fname[256]; char rule[2048]; - char encoded_rule; + char *encoded_rule; char my_addresses[4096]; - long encoded_len; + size_t encoded_len; encoded_len = 4096; encoded_rule = (char*) malloc (encoded_len); diff --git a/webcit/webcit.h b/webcit/webcit.h index 0ae981222..5b7f2778e 100644 --- a/webcit/webcit.h +++ b/webcit/webcit.h @@ -1,7 +1,6 @@ /* $Id$ */ -#include "config.h" - +#include "sysdep.h" #include #include @@ -424,6 +423,10 @@ extern pthread_key_t MyConKey; #ifdef HAVE_OPENSSL #define THREADSSL ((SSL *)pthread_getspecific(ThreadSSL)) extern pthread_key_t ThreadSSL; +extern char ctdl_key_dir[PATH_MAX]; +extern char file_crpt_file_key[PATH_MAX]; +extern char file_crpt_file_csr[PATH_MAX]; +extern char file_crpt_file_cer[PATH_MAX]; #endif struct serv_info serv_info; diff --git a/webcit/webserver.c b/webcit/webserver.c index 07f8fad85..d280ac8fe 100644 --- a/webcit/webserver.c +++ b/webcit/webserver.c @@ -31,6 +31,12 @@ extern void *housekeeping_loop(void); extern pthread_mutex_t SessionListMutex; extern pthread_key_t MyConKey; + +char ctdl_key_dir[PATH_MAX]=SSL_DIR; +char file_crpt_file_key[PATH_MAX]=""; +char file_crpt_file_csr[PATH_MAX]=""; +char file_crpt_file_cer[PATH_MAX]=""; + char socket_dir[PATH_MAX]; /**< where to talk to our citadel server */ static const char editor_absolut_dir[PATH_MAX]=EDITORDIR; /**< nailed to what configure gives us. */ static char static_dir[PATH_MAX]; /**< calculated on startup */ @@ -770,6 +776,20 @@ int main(int argc, char **argv) COMPUTE_DIRECTORY(static_dir); basedir=DATADIR "/static.local"; COMPUTE_DIRECTORY(static_local_dir); + + snprintf(file_crpt_file_key, + sizeof file_crpt_file_key, + "%s/citadel.key", + ctdl_key_dir); + snprintf(file_crpt_file_csr, + sizeof file_crpt_file_csr, + "%s/citadel.csr", + ctdl_key_dir); + snprintf(file_crpt_file_cer, + sizeof file_crpt_file_cer, + "%s/citadel.cer", + ctdl_key_dir); + /** we should go somewhere we can leave our coredump, if enabled... */ lprintf(9, "Changing directory to %s\n", socket_dir); if (chdir(webcitdir) != 0) { -- 2.30.2