From c14a4bbf13d467a509232928efe83a5fbeacffab Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Wed, 21 Mar 2007 19:43:56 +0000 Subject: [PATCH] * fixed setup.c to accept our environment variables * removed double code we and debhelber had * some more advanced debconfg capabilities --- citadel/debian/changelog | 12 ++++ citadel/debian/citadel-server.config | 52 ++++++++++++--- citadel/debian/citadel-server.postinst | 8 ++- citadel/debian/citadel-server.postrm | 3 - citadel/debian/citadel-server.prerm | 5 -- citadel/setup.c | 88 +++++++++++++++++--------- 6 files changed, 118 insertions(+), 50 deletions(-) diff --git a/citadel/debian/changelog b/citadel/debian/changelog index f6b9c8c48..fbcdfe8c6 100644 --- a/citadel/debian/changelog +++ b/citadel/debian/changelog @@ -1,3 +1,15 @@ +citadel (7.06-11) unstable; urgency=low + + * fixes to the configure script. + + -- Wilfried Goesgens Mon, 19 Mar 2007 12:12:00 +0000 + +citadel (7.06-10) unstable; urgency=low + + * update to actual Citadel SVN. many new features. see Packages changelog. + + -- Wilfried Goesgens Wed, 07 Mar 2007 12:12:00 +0000 + citadel (7.05-9) stable; urgency=high * maintainance release, ical upgrade diff --git a/citadel/debian/citadel-server.config b/citadel/debian/citadel-server.config index caa3cb81c..80dbb9d91 100755 --- a/citadel/debian/citadel-server.config +++ b/citadel/debian/citadel-server.config @@ -5,22 +5,54 @@ set -e . /usr/share/debconf/confmodule db_version 2.0 +db_capb backup + +DO_CONFIGURE=no + if test -n "$2"; then +# do we want to reconfigure? if test "`echo $2 | sed -e 's/[.-]//g'`" -lt 127 \ - -o $1 = reconfigure - then - db_input high citadel/ServerIPAddress || true - db_input high citadel/Administrator || true - db_input high citadel/LoginType || true - db_go + -o "$1" = reconfigure + then + DO_CONFIGURE=yes fi else +# are we in first install? + if test "$1" = "configure"; then + DO_CONFIGURE=yes + fi +fi + + +if test "$DO_CONFIGURE" = "yes"; then + STATE=1 + LASTSTATE=4 + while [ "$STATE" != 0 -a "$STATE" -le "$LASTSTATE" ]; do + + case "$STATE" in + 1) + db_input high citadel/ServerIPAddress || true + ;; + 2) + db_input high citadel/Administrator || true + ;; + 3) + db_input high citadel/LoginType || true + ;; + + + esac + if db_go; then + STATE=$(($STATE + 1)) + else + STATE=$(($STATE - 1)) + fi + + done + + if test "$1" = "configure"; then - db_input high citadel/ServerIPAddress || true - db_input high citadel/Administrator || true - db_input high citadel/LoginType || true db_input high citadel/Installnote || true - db_go fi fi diff --git a/citadel/debian/citadel-server.postinst b/citadel/debian/citadel-server.postinst index 17bbfa4e4..213431413 100644 --- a/citadel/debian/citadel-server.postinst +++ b/citadel/debian/citadel-server.postinst @@ -19,9 +19,9 @@ case "$1" in db_get citadel/Administrator && admin="$RET" db_get citadel/ServerIPAddress && ip_addr="$RET" - db_get citadel/LoginType && enable_unix_auth="$RET" + db_get citadel/LoginType && deb_enable_unix_auth="$RET" - if test "$enable_unix_auth" = "true"; then + if test "$deb_enable_unix_auth" = "true"; then export ENABLE_UNIX_AUTH=yes else export ENABLE_UNIX_AUTH=no @@ -29,13 +29,15 @@ case "$1" in export IP_ADDR=$ip_addr export CITADEL='' + export CITADEL_PORT=504 export CITADEL_INSTALLER=yes + export CITADEL_UID=`grep citadel /etc/passwd | cut -d : -f 3` export ACT_AS_MTA=no export SYSADMIN_NAME=$admin export CREATE_XINETD_ENTRY=no export CREATE_INITTAB_ENTRY=no export NO_INIT_SCRIPTS=yes - +set >/tmp/citsetup echo "applying your settings." /usr/lib/citadel-server/setup -q diff --git a/citadel/debian/citadel-server.postrm b/citadel/debian/citadel-server.postrm index 24663be6f..5ea63e5cb 100644 --- a/citadel/debian/citadel-server.postrm +++ b/citadel/debian/citadel-server.postrm @@ -10,9 +10,6 @@ db_version 2.0 case "$1" in purge) echo "/var/lib/citadel/data not removed, as it may contain your personal data." - - db_purge - db_go ;; remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) diff --git a/citadel/debian/citadel-server.prerm b/citadel/debian/citadel-server.prerm index 5feb88b68..ef7056e6c 100644 --- a/citadel/debian/citadel-server.prerm +++ b/citadel/debian/citadel-server.prerm @@ -5,11 +5,6 @@ set -e case "$1" in remove|upgrade|deconfigure) - if which invoke-rc.d >/dev/null 2>&1; then - invoke-rc.d citadel stop - else - /etc/init.d/citadel stop - fi ;; failed-upgrade) diff --git a/citadel/setup.c b/citadel/setup.c index cbeb61685..9f4bf5dc7 100644 --- a/citadel/setup.c +++ b/citadel/setup.c @@ -702,8 +702,11 @@ void edit_value(int curr) switch (curr) { case 1: - if (getenv("SYSADMIN_NAME")) { - strcpy(config.c_sysadm, getenv("SYSADMIN_NAME")); + if (setup_type == UI_SILENT) + { + if (getenv("SYSADMIN_NAME")) { + strcpy(config.c_sysadm, getenv("SYSADMIN_NAME")); + } } else { set_str_val(curr, config.c_sysadm); @@ -711,44 +714,73 @@ void edit_value(int curr) break; case 2: + if (setup_type == UI_SILENT) + { + if (getenv("CITADEL_UID")) { + config.c_ctdluid = atoi(getenv("CITADEL_UID")); + } + } + else + { #ifdef __CYGWIN__ - config.c_ctdluid = 0; /* XXX Windows hack, prob. insecure */ + config.c_ctdluid = 0; /* XXX Windows hack, prob. insecure */ #else - i = config.c_ctdluid; - pw = getpwuid(i); - if (pw == NULL) { - set_int_val(curr, &i); - config.c_ctdluid = i; - } - else { - strcpy(ctdluidname, pw->pw_name); - set_str_val(curr, ctdluidname); - pw = getpwnam(ctdluidname); - if (pw != NULL) { - config.c_ctdluid = pw->pw_uid; + i = config.c_ctdluid; + pw = getpwuid(i); + if (pw == NULL) { + set_int_val(curr, &i); + config.c_ctdluid = i; } - else if (atoi(ctdluidname) > 0) { - config.c_ctdluid = atoi(ctdluidname); + else { + strcpy(ctdluidname, pw->pw_name); + set_str_val(curr, ctdluidname); + pw = getpwnam(ctdluidname); + if (pw != NULL) { + config.c_ctdluid = pw->pw_uid; + } + else if (atoi(ctdluidname) > 0) { + config.c_ctdluid = atoi(ctdluidname); + } } } #endif break; case 3: - set_str_val(curr, config.c_ip_addr); + if (setup_type == UI_SILENT) + { + if (getenv("IP_ADDR")) { + strcpy(config.c_ip_addr, getenv("IP_ADDR")); + } + } + else { + set_str_val(curr, config.c_ip_addr); + } break; case 4: - set_int_val(curr, &config.c_port_number); + if (setup_type == UI_SILENT) + { + if (getenv("CITADEL_PORT")) { + config.c_port_number = atoi(getenv("CITADEL_PORT")); + } + } + else + { + set_int_val(curr, &config.c_port_number); + } break; case 5: - if (getenv("ENABLE_UNIX_AUTH")) { - if (!strcasecmp(getenv("ENABLE_UNIX_AUTH"), "yes")) { - config.c_auth_mode = 1; - } - else { - config.c_auth_mode = 0; + if (setup_type == UI_SILENT) + { + if (getenv("ENABLE_UNIX_AUTH")) { + if (!strcasecmp(getenv("ENABLE_UNIX_AUTH"), "yes")) { + config.c_auth_mode = 1; + } + else { + config.c_auth_mode = 0; + } } } else { @@ -1117,10 +1149,8 @@ int main(int argc, char *argv[]) if (config.c_managesieve_port == 0) config.c_managesieve_port = 2020; /* Go through a series of dialogs prompting for config info */ - if (setup_type != UI_SILENT) { - for (curr = 1; curr <= MAXSETUP; ++curr) { - edit_value(curr); - } + for (curr = 1; curr <= MAXSETUP; ++curr) { + edit_value(curr); } /***** begin version update section ***** */ -- 2.30.2