From: Richard Kettlewell Date: Mon, 31 Dec 2007 18:24:22 +0000 (+0000) Subject: Updates to Debian scripts: X-Git-Tag: 3.0~109 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/commitdiff_plain/f2c185d6f2428dc45f84c9d186543693fae752dd Updates to Debian scripts: - debconf for smtp_server and mail_sender - cgi is now .../cgi-bin/disorder rather than .../cgi-bin/disorder/disorder - auto setup guest login if possible - auto remove obsolete trust/allow after first server start (specifically, they are commented out so the user can put them back if things went awry.) Things are still rather broken but they're getting there... --- diff --git a/debian/conffiles.disorder-server b/debian/conffiles.disorder-server index 7d1aa67..41df91d 100644 --- a/debian/conffiles.disorder-server +++ b/debian/conffiles.disorder-server @@ -1,4 +1,3 @@ /etc/disorder/config /etc/disorder/options /etc/init.d/disorder -/usr/lib/cgi-bin/disorder/.htaccess diff --git a/debian/config.disorder-server b/debian/config.disorder-server index 11bec83..83ffd80 100755 --- a/debian/config.disorder-server +++ b/debian/config.disorder-server @@ -26,6 +26,8 @@ db_input high disorder/roots || true db_input high disorder/encoding || true db_input high disorder/port || true db_input medium disorder/scratches || true +db_input medium disorder/smtp_server || true +db_input high disorder/mail_sender || true db_go || true db_get disorder/roots || true @@ -36,6 +38,10 @@ db_get disorder/encoding || true encoding="$RET" db_get disorder/port || true port="$RET" +db_get disorder/smtp_server || true +smtp_server="$RET" +db_get disorder/mail_sender || true +mail_sender="$RET" mkdir -p /etc/disorder cat > /etc/disorder/conf.debconf.new < /etc/disorder/conf.debconf.new <> /etc/disorder/conf.debconf.new echo "# Collection roots" >> /etc/disorder/conf.debconf.new for r in $roots; do echo "collection fs $encoding $r" >> /etc/disorder/conf.debconf.new done + echo >> /etc/disorder/conf.debconf.new echo "# Scratches" >> /etc/disorder/conf.debconf.new for s in $scratches; do echo "scratch $s" >> /etc/disorder/conf.debconf.new done + +if test "$mail_sender" != ""; then + echo "" >> /etc/disorder/conf.debconf.new + echo "# SMTP server" >> /etc/disorder/conf.debconf.new + echo "smtp_server $smtp_server" >> /etc/disorder/conf.debconf.new +fi + +if test "$mail_sender" != ""; then + echo "" >> /etc/disorder/conf.debconf.new + echo "# Source mail address" >> /etc/disorder/conf.debconf.new + echo "mail_sender $mail_sender" >> /etc/disorder/conf.debconf.new +fi + if test "$port" != none && test "$port" != ""; then echo >> /etc/disorder/conf.debconf.new echo "# Listen for remote clients" >> /etc/disorder/conf.debconf.new diff --git a/debian/postinst.disorder-server b/debian/postinst.disorder-server index 4ee3e0a..bc4a938 100755 --- a/debian/postinst.disorder-server +++ b/debian/postinst.disorder-server @@ -34,6 +34,56 @@ configure_init_d() { restart_server() { /etc/init.d/disorder restart + # Wait for the server to get going. This is a horrid bodge and ought + # to be done away with, but is required for the time being. Sorry. + sleep 5 +} + +setup_guest() { + echo "Checking whether guest user exists..." + TMPFILE="$(mktemp -t)" + if disorder users > "$TMPFILE"; then + if grep -q '^guest$' "$TMPFILE"; then + echo "Guest user has already been set up." + else + echo "Attempting to set up guest user..." + if disorder setup-guest; then + echo "Created guest user." + else + echo "Failed to create guest user." + echo "You can use 'disorder setup-guest' to do this step manually." + echo + fi + fi + else + echo "Cannot determine whether guest user has been set up." + echo + fi + rm -f "$TMPFILE" +} + +fix_configuration() { + # Once the server has started up, we can remove some of the obsolete + # directives from the config file. + if grep -q ^trust /etc/disorder/config; then + echo "Removing obsolete 'trust' directive from /etc/disorder/config" + sed < /etc/disorder/config > /etc/disorder/config.new \ + 's/^trust/#trust/' + chmod 644 /etc/disorder/config.new + mv /etc/disorder/config.new /etc/disorder/config + fi + if test -e /etc/disorder/config.private \ + && grep -q ^allow /etc/disorder/config.private; then + echo "Removing obsolete 'allow' directive(s) from /etc/disorder/config.private" + u=$(umask) + umask 077 + sed < /etc/disorder/config.private > /etc/disorder/config.private.new \ + 's/^allow/#allow/' + umask $u + chmod 640 /etc/disorder/config.private.new + chown root:jukebox /etc/disorder/config.private.new + mv /etc/disorder/config.private.new /etc/disorder/config.private + fi } case "$1" in @@ -46,6 +96,8 @@ configure ) chown jukebox:jukebox /var/lib/disorder configure_init_d restart_server + fix_configuration + setup_guest db_stop ;; abort-upgrade ) diff --git a/debian/rules b/debian/rules index 9eb4d19..e9f8d9f 100755 --- a/debian/rules +++ b/debian/rules @@ -150,7 +150,7 @@ pkg-disorder-server: build rm -rf debian/disorder-server/usr/share/man/man5 $(MKDIR) debian/disorder-server/etc/disorder $(MKDIR) debian/disorder-server/etc/init.d - $(MKDIR) debian/disorder-server/usr/lib/cgi-bin/disorder + $(MKDIR) debian/disorder-server/usr/lib/cgi-bin $(MKDIR) debian/disorder-server/var/lib/disorder $(INSTALL_SCRIPT) examples/disorder.init \ debian/disorder-server/etc/init.d/disorder @@ -159,13 +159,11 @@ pkg-disorder-server: build $(INSTALL_DATA) debian/etc.disorder.options \ debian/disorder-server/etc/disorder/options $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) server/disorder.cgi \ - $(shell pwd)/debian/disorder-server/usr/lib/cgi-bin/disorder/disorder + $(shell pwd)/debian/disorder-server/usr/lib/cgi-bin/disorder dpkg-shlibdeps -Tdebian/substvars.disorder-server \ - debian/disorder-server/usr/lib/cgi-bin/disorder/* \ + debian/disorder-server/usr/lib/cgi-bin/disorder \ debian/disorder-server/usr/sbin/* \ debian/disorder-server/usr/lib/disorder/*.so* - $(INSTALL_DATA) debian/htaccess \ - debian/disorder-server/usr/lib/cgi-bin/disorder/.htaccess rm -rf debian/disorder-server/usr/share/doc/disorder-server ln -s disorder debian/disorder-server/usr/share/doc/disorder-server dpkg-gencontrol -isp -pdisorder-server -Pdebian/disorder-server -Tdebian/substvars.disorder-server diff --git a/debian/templates.disorder-server b/debian/templates.disorder-server index b1a14c4..f2ad1e0 100644 --- a/debian/templates.disorder-server +++ b/debian/templates.disorder-server @@ -27,3 +27,19 @@ Description: Port number for clients to connect to Enter the port number that the server should listen on for clients. This can be set to 'none' to permit only local clients or a port number for remote clients to connect to, e.g. using Disobedience. + +Template: disorder/smtp_server +Type: string +Default: localhost +Description: SMTP server for web interface + The web interface requires an SMTP server in order to send messages to + newly registered users, and to send password reminders. Enter the hostname + or IP address to use. + +Template: disorder/mail_sender +Type: string +Default: +Description: Sender address for email from web interface + The web interface needs to know what email address it should send messages + from. It is possible that users will reply to this address if they are + unsure what to do.