Subversion Repositories prayer-err

Compare Revisions

Ignore whitespace Rev 1 → Rev HEAD

/tags/1.2.0-1/debian/patches/accountd_makefile_typo.patch
0,0 → 1,11
--- a/accountd/Makefile
+++ b/accountd/Makefile
@@ -60,7 +60,7 @@ accountd.o: accountd.c *.h Makefile
$(CC) $(CFLAGS) -c \
-DACCOUNTD_CONFIG_FILE=\"$(ACCOUNTD_CONFIG_FILE)\" $<
-authenicate.o: authenicate.c *.h Makefile
+authenticate.o: authenticate.c *.h Makefile
$(CC) $(CFLAGS) -c $(ACCOUNTD_PAM_DEFS) $<
clean:
/tags/1.2.0-1/debian/patches/series
0,0 → 1,3
makefile_install_config.patch
repair_ssl_session_db_on_version_mismatch.patch
accountd_makefile_typo.patch
/tags/1.2.0-1/debian/patches/repair_ssl_session_db_on_version_mismatch.patch
0,0 → 1,20
--- a/lib/mydb_db3.c
+++ b/lib/mydb_db3.c
@@ -208,7 +208,7 @@ static int init(const char *dbdir, int m
if (!(r = myinit(dbdir, myflags)))
return(0);
- if (r != ENOENT) {
+ if (r != ENOENT && r != DB_VERSION_MISMATCH) {
log_panic("DBERROR: dbenv->open '%s' failed: %s", dbdir, db_strerror(r));
return MYDB_IOERROR;
}
@@ -217,7 +217,7 @@ static int init(const char *dbdir, int m
/* DPC 24/03/2002. DB_CREATE leaks 12 MBytes into dbenv.
* Workaround: close down dbenv, reopen after backing files created */
- r = myinit(dbdir, myflags|MYDB_CREATE);
+ r = myinit(dbdir, myflags|MYDB_CREATE|MYDB_RECOVER);
if (r) {
log_panic("DBERROR: dbenv->open '%s' failed: %s", dbdir, db_strerror(r));
return MYDB_IOERROR;
/tags/1.2.0-1/debian/patches/makefile_install_config.patch
0,0 → 1,186
--- a/files/etc/prayer-accountd.cf
+++ b/files/etc/prayer-accountd.cf
@@ -8,6 +8,10 @@
# Default accountd.cf file suitable for RedHat Linux only.
# See distribution for some sample files for FreeBSD and Solaris
+accountd_port = 145
+
+authtype = pam
+
msforward_name = ".MSforward"
forward_name = ".forward"
aliases_name = "vacation.aliases"
--- a/files/Makefile
+++ b/files/Makefile
@@ -65,26 +65,29 @@ install-aconfig:
install-motd:
$(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_FILE) \
- etc/motd.html ${BROOT}${PREFIX}/etc
+ etc/motd.html ${BROOT}/etc/prayer
install-welcome:
$(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_FILE) \
- etc/welcome.html ${BROOT}${PREFIX}/etc
+ etc/welcome.html ${BROOT}/etc/prayer
install:
+ ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${BROOT}${PREFIX}
+ ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${BROOT}/etc/prayer
+
PREFIX=$(BROOT)$(PREFIX) VAR_PREFIX=$(BROOT)$(VAR_PREFIX) \
RO_USER=$(RO_USER) RO_GROUP=$(RO_GROUP) \
RW_USER=$(RW_USER) RW_GROUP=$(RW_GROUP) \
PUBLIC_DIR=$(PUBLIC_DIR) PRIVATE_DIR=$(PRIVATE_DIR) \
PUBLIC_FILE=$(PUBLIC_FILE) PRIVATE_FILE=$(PRIVATE_FILE) \
PUBLIC_EXEC=$(PUBLIC_FILE) PRIVATE_EXEC=$(PRIVATE_EXEC) \
- BIN_DIR=$(BIN_DIR) INSTALL=$(INSTALL) \
+ BIN_DIR=$(BROOT)$(BIN_DIR) INSTALL=$(INSTALL) \
./install.sh
- if [ ! -f $(BROOT)$(PREFIX)/certs/prayer.pem ]; then $(MAKE) install-cert; fi
+# if [ ! -f $(BROOT)$(PREFIX)/certs/prayer.pem ]; then $(MAKE) install-cert; fi
if [ ! -f $(BROOT)$(PRAYER_CONFIG_FILE) ]; then $(MAKE) install-config; fi
if [ ! -f $(BROOT)$(ACCOUNTD_CONFIG_FILE) ]; then $(MAKE) install-aconfig; fi
- if [ ! -f $(BROOT)$(PREFIX)/etc/motd.html ]; then $(MAKE) install-motd; fi
- if [ ! -f $(BROOT)$(PREFIX)/etc/welcome.html ]; then $(MAKE) install-welcome; fi
+ if [ ! -f $(BROOT)/etc/prayer/motd.html ]; then $(MAKE) install-motd; fi
+ if [ ! -f $(BROOT)/etc/prayer/welcome.html ]; then $(MAKE) install-welcome; fi
redhat-install-init.d:
install -D -o root -g root -m 755 \
--- a/files/install.sh
+++ b/files/install.sh
@@ -4,77 +4,6 @@
PATH=/bin:/sbin/:/usr/bin:/usr/sbin
-error=0
-
-if [ "x$PREFIX" = "x" ]; then
- echo 'PREFIX not defined'
- error=1
-fi
-
-if [ "x$VAR_PREFIX" = "x" ]; then
- echo 'VAR_PREFIX not defined'
- error=1
-fi
-
-if [ "x$RO_USER" = "x" ]; then
- echo 'RO_USER not defined'
- error=1
-fi
-
-if [ "x$RO_GROUP" = "x" ]; then
- echo 'RO_GROUP not defined'
- error=1
-fi
-
-if [ "x$RW_USER" = "x" ]; then
- echo 'RW_USER not defined'
- error=1
-fi
-
-if [ "x$RW_GROUP" = "x" ]; then
- echo 'RW_GROUP not defined'
- error=1
-fi
-
-if [ "x$PUBLIC_DIR" = "x" ]; then
- echo 'PUBLIC_DIR not defined'
- error=1
-fi
-
-if [ "x$PRIVATE_DIR" = "x" ]; then
- echo 'PRIVATE_DIR not defined'
- error=1
-fi
-
-if [ "x$BIN_DIR" = "x" ]; then
- echo 'BIN_DIR not defined'
- error=1
-fi
-
-if [ $error != 0 ]; then
- exit 1
-fi
-
-if [ ! -d ${VAR_PREFIX} -a `whoami` = "root" ]; then
- ${INSTALL} -d -o ${RW_USER} -g ${RW_GROUP} -m ${PRIVATE_DIR} ${VAR_PREFIX}
-fi
-
-if [ ! -d ${PREFIX} ]; then
- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${PREFIX}
-fi
-
-if [ ! -d ${PREFIX}/etc ]; then
- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${PREFIX}/etc
-fi
-
-if [ ! -d ${PREFIX}/certs ]; then
- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PRIVATE_DIR} ${PREFIX}/certs
-fi
-
-if [ ! -d ${BIN_DIR} ]; then
- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${BIN_DIR}
-fi
-
for i in icons
do
if [ -d "${PREFIX}/${i}" ]; then
--- a/files/etc/prayer.cf.SRC
+++ b/files/etc/prayer.cf.SRC
@@ -20,7 +20,7 @@ var_prefix = "__VAR_PREFIX__"
# User ID to run as if we start off as root
prayer_user = "prayer"
# Group ID to run as if we start off as root
-prayer_group = "prayer"
+prayer_group = "nogroup"
# Run prayer as background process.
# TRUE => will return as soon as valid configuration is found.
@@ -428,10 +428,10 @@ bin_dir = "__BIN_DIR__"
# Various directories used by the running system
# Logs stored in $log_dir
-log_dir = "$var_prefix/logs"
+log_dir = "/var/log/prayer"
# $lock_dir used for interlocking between prayer processes
-lock_dir = "$var_prefix/locks"
+lock_dir = "/var/lock"
# $socket_dir is location for unix domain sockets which connect frontend
# to backend in proxy mode of operation.
@@ -439,7 +439,7 @@ socket_dir = "$var_prefix/socke
# Split socket directory into 64 subdirs keyed on first letter of sessionID
# Code provides compatibility in both directions: can switch back and forward
-socket_split_dir = TRUE
+socket_split_dir = FALSE
# Name of Unix domain socket (in $socket_dir) used for initial handshake
# between prayer and prayer-session processes when a user logs in
@@ -450,10 +450,10 @@ ssl_session_dir = "$var_prefix/ssl_s
# Location for temporary files e.g; attachments and folders in transist
# during upload and download operation. Core files also end up here
-tmp_dir = "$var_prefix/tmp"
+tmp_dir = "/tmp"
# Location for PID files for prayer and prayer-session master processes.
-pid_dir = "$var_prefix/pid"
+pid_dir = "$var_prefix"
# Interface to Hermes finger database
#lookup_rpasswd = "/data/finger/rpasswd.cdb"
@@ -621,7 +621,7 @@ sent_mail_folder = "sent-mail"
# default_domain = "<valid mail domain>"
# Language for ispell.
-ispell_language = "british"
+ispell_language = "american"
# Size of small and large compose windows
small_cols = 80
/tags/1.2.0-1/debian/patches/sighandling.patch
0,0 → 1,75
Index: prayer-1.0.18/prayer/os.h
===================================================================
--- prayer-1.0.18.orig/prayer/os.h 2007-03-10 19:56:40.357114747 +0100
+++ prayer-1.0.18/prayer/os.h 2007-03-10 19:57:56.266959171 +0100
@@ -44,6 +44,8 @@ BOOL os_signal_alarm_clear(void);
BOOL os_signal_init();
+BOOL os_signal_hup_term_init(void (*hup_fn) (), void (*term_fn) ());
+
BOOL os_lock_exclusive(int fd);
BOOL os_lock_shared(int fd);
Index: prayer-1.0.18/prayer/session_server.c
===================================================================
--- prayer-1.0.18.orig/prayer/session_server.c 2007-03-10 19:56:40.647152355 +0100
+++ prayer-1.0.18/prayer/session_server.c 2007-03-10 19:57:56.326966954 +0100
@@ -355,6 +355,7 @@ BOOL session_server(struct config *confi
fd_set readfds;
pid_t child;
unsigned long timeout = 0L;
+ BOOL sighup_seen = NIL;
if (config->direct_enable) {
ssl_portlist
@@ -420,6 +421,18 @@ BOOL session_server(struct config *confi
} else {
rc = select(maxfd + 1, &readfds, NIL, NIL, NIL);
}
+ if (sighup_seen) {
+ log_misc("SIGHUP received - reexec daemon");
+ close(sockfd);
+ if (config->direct_enable) {
+ /* Find some way to pass this information along
+ to the new invocation somehow later. */
+ portlist_close_all(ssl_portlist);
+ portlist_close_all(plain_portlist);
+ }
+ log_misc_free();
+ return (T);
+ }
}
while ((rc < 0) && (errno == EINTR));
Index: prayer-1.0.18/prayer/log.c
===================================================================
--- prayer-1.0.18.orig/prayer/log.c 2007-03-10 19:58:03.667919109 +0100
+++ prayer-1.0.18/prayer/log.c 2007-03-10 19:58:11.688959503 +0100
@@ -502,6 +502,13 @@ BOOL log_misc_init(struct config *config
return (log_open(log_misc_ptr, log_name));
}
+void log_misc_free()
+{
+ if ((log_misc_ptr == NIL) || (log_misc_ptr->fd < 0))
+ return;
+ log_free(log_misc_ptr);
+}
+
/* log_misc_ping() *******************************************************
*
* Reopen misc log file if required
Index: prayer-1.0.18/prayer/log.h
===================================================================
--- prayer-1.0.18.orig/prayer/log.h 2007-03-10 19:58:04.067970999 +0100
+++ prayer-1.0.18/prayer/log.h 2007-03-10 19:58:11.648954314 +0100
@@ -45,6 +45,8 @@ void log_record_peer_pid(struct log *log
BOOL
log_misc_init(struct config *config, char *progname, char *misc_log_name);
+void log_misc_free();
+
BOOL log_misc_ping();
void log_misc(char *fmt, ...);
/tags/1.2.0-1/debian/changelog
0,0 → 1,76
prayer (1.2.0-1) unstable; urgency=low
 
* New upstream release featuring a major code reorganisation and a new
template system.
- Drop obsolete folder_list_cosmetics.patch and includes.patch.
- Note: SSL support has been removed from prayer-accountd for now.
* Changed defaults (manual intervention may be needed):
- Let prayer-accountd.pid reside in /var/run; letting the two packages
share /var/run/prayer caused too much trouble.
- prayer.cf (makefile_install_config.patch and debian/Config):
var_prefix set to /var/run/prayer and referred to in other
settings. socket_split_dir disabled by default and default sockets
directory changed to /var/run/prayer/sockets.
* debian/control:
+ Build-depend on latest Berkley DB library (libdb-dev).
+ Add Homepage field.
* repair_ssl_session_db_on_version_mismatch.patch: Recreate session DB
environment when upgrading from a version of Prayer that used an older
BDB library.
* prayer.postinst: Set HOME of prayer user to /var/run/prayer.
* prayer.postrm: Simply remove /var/run/prayer (since accountd doesn't use it)
on remove or disappear and correctly remove statoverrides (Closes: #483176).
Also check that deluser exists; it may be gone at purge time.
* Package build details:
- Reduce makefile_install_config.patch by not changing BROOT into DESTDIR.
- Override CDBS overriding CFLAGS.
* debian/patches/accountd_makefile_typo.patch: Fix typo that caused PAM
not to be used.
 
-- Magnus Holmgren <holmgren@debian.org> Sat, 31 May 2008 19:28:21 +0200
 
prayer (1.1.0-2) unstable; urgency=low
 
* Define LDAP_DEPRECATED so that the deprecated LDAP interfaces can be
used.
* makefile_install_config.patch: Modify prayer/Makefile so that the
above definition isn't lost if CFLAGS is overridden.
* Improve prayer.postrm to clean /var/run/prayer on removal and
disappearence.
* Use dpkg-override to allow the administrator to change mode of
/var/run/prayer and /var/log/prayer.
* Add postinst and postrm scripts for prayer-accountd.
* makefile_install_config.patch: Set authtype = pam in accountd.cf so
that accountd will start.
* Bump Standards-Version to 3.7.3. No changes necessary.
* Override Lintian warnings about GPL code linked with OpenSSL. Special
exception has been granted.
* Don't require cdbs 0.4.27-1. Oldstable has 0.4.28-1.
 
-- Magnus Holmgren <holmgren@debian.org> Thu, 15 May 2008 22:47:14 +0200
 
prayer (1.1.0-1) unstable; urgency=low
 
* First upload to unstable.
* New upstream release.
+ Requires development version of the c-client library (libc-client2007-dev).
- Drop pidfiles_extension.patch, session_unix_bugs.patch,
session_server_bugs.patch; all incorporated upstream.
- Drop ipv6.patch; incorporated upstream.
- Drop utf8.patch; incorporated and improved upstream.
- Drop hasnochildren_means_noinferiors.patch since upstream now
handles dual-use mailboxes.
* New maintainer email address.
* Update README.Debian, removing lies about TLS not being possible to
disable (Closes: #440462).
* folder_list_cosmetics.patch: Remove space between expand/collapse
arrow and folder icon in the folder list and change the alt texts so
that the tree looks nicer in text browsers.
 
-- Magnus Holmgren <holmgren@debian.org> Tue, 13 May 2008 22:31:36 +0200
 
prayer (1.0.18-1) experimental; urgency=low
 
* Initial release (Closes: #392823)
 
-- Magnus Holmgren <magnus@kibibyte.se> Sat, 10 Mar 2007 14:24:21 +0100
/tags/1.2.0-1/debian/Config
0,0 → 1,153
# $Cambridge: hermes/src/prayer/defaults/Config,v 1.12 2008/05/21 13:25:13 dpc22 Exp $
#
# Prayer - a Webmail Interface
#
# Copyright (c) University of Cambridge 2000 - 2002
# See the file NOTICE for conditions of use and distribution.
#
# Conventional Configure file.
 
SSL_ENABLE = true # SSL requires OpenSSL
SESSION_CACHE_ENABLE = true # SSL session cache Requires Berkeley DB 3 or 4
GZIP_ENABLE = true # Enable on the fly compression of pages
LDAP_ENABLE = true # Add LDAP interface
FENCE_ENABLE = false # Use Electric Fence to catch malloc problems
MUTEX_SEMAPHORE = true # Use SYSV mutexes rather than file locking
 
# Following depend on the way that you have configured c-client
CCLIENT_SSL_ENABLE = false # C-client was built with SSL support
CCLIENT_PAM_ENABLE = false # C-client was built with PAM support
CCLIENT_KERB_ENABLE = false # C-client was built with Kerberos support
 
# Probably don't need the following
ACCOUNTD_ENABLE = true # Only of use in Cambridge at the moment.
ACCOUNTD_SSL_ENABLE = true # Enable SSL support in account management daemon
ACCOUNTD_PAM_ENABLE = true # Enable PAM support in account management daemon
ACCOUNTD_USE_BSD_PTY = false # Use Berkeley PTYs rather than Sys V PTYs
 
############################################################################
# Location of compiler
CC = gcc
# Location of make program (GNU make required)
MAKE = make
# Location of install program (GNU install or compatible required)
INSTALL = install
 
# Base Compiler options for GCC (use CPPFLAGS and LDFLAGS if passed in)
ifdef CPPFLAGS
BASECFLAGS = $(CPPFLAGS)
else
BASECFLAGS = -Wall -g -O2
endif
ifdef INCLUDES
BASECFLAGS += $(INCLUDES)
endif
ifdef LDFLAGS
BASELDFLAGS = $(LDFLAGS)
else
BASELDFLAGS = -g
endif
 
# Minimal libraries needed by Linux
BASE_LIBS = -lcrypt
# FreeBSD needs some extra libraries:
# BASE_LIBS = -lcrypt -liconv -lutil
# Solaris needs even more libararies:
# BASE_LIBS = -lcrypt -lxnet -lnsl -lsocket
 
# Base Compiler options for Sun SUNWspro compiler
#CC = /opt/SUNWspro/bin/cc
#BASECFLAGS = -fast
#BASELDFLAGS = -s
 
############################################################################
# Location of various include files and libraries.
############################################################################
 
# Location of c-client library.
CCLIENT_DIR=/usr/include/c-client
CCLIENT_INCLUDE=-I$(CCLIENT_DIR)
CCLIENT_LIBS=-lc-client
 
# Electric fence (required if FENCE_ENABLE set)
FENCE_INCLUDE=
FENCE_LIBS=-lmcheck
 
# Zlib (required if GZIP_ENABLE set)
Z_INCLUDE =
Z_LIBS = -lz
 
# LDAP (required if LDAP_ENABLE set)
LDAP_INCLUDE = -DLDAP_DEPRECATED
LDAP_LIBS = -lldap
 
# Pam (required if CCLIENT_PAM_ENABLE set)
PAM_INCLUDE =
PAM_LIBS = -lpam
 
# Kerberos (required if CCLIENT_KERB_ENABLE set)
KERB_INCLUDE =
KERB_LIBS = -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err
 
# SSL definitions (required if SSL_ENABLE or CCLIENT_SSL_ENABLE set)
#
# Following suitable for Linux and FreeBSD which have SSL preinstalled
# (Header files from OpenSSL 0.9.7 want to include various Kerboros stuff)
#
SSL_INCLUDE=
SSL_LIBS=-lssl -lcrypto
OPENSSL=openssl
 
# Following definitions suitable for our Sun systems.
#SSL_BASE=/opt/local/ssl/current
#SSL_INCLUDE=-I ${SSL_BASE}/include
#SSL_LIBS=-L ${SSL_BASE}/lib -lssl -lcrypto
#OPENSSL=${SSL_BASE}/bin/openssl
 
# DB definitions (required if SESSION_CACHE_ENABLE set)
#
# Following suitable for Redhat Linux which has DB 3 preinstalled
DB_INCLUDE=
DB_LIBS=-ldb
 
# Following suitable for FreeBSD with DB 4 package installed
#DB_INCLUDE=-I/usr/local/include/db4
#DB_LIBS=-L/usr/local/lib -ldb4
 
############################################################################
 
# Install location of prayer configuration and support files. The initial
# config file runs prayer processes as user "prayer" and group "prayer".
# If you are using SSL, the certificate file must be readable by RW_USER or
# RW_GROUP. It is important that nothing else can read the certificate file.
 
# Build root (used by Redhat RPM system)
BROOT=$(CURDIR)/../debian/tmp
 
# Directory, User and group for read-write files: log files, sockets etc
VAR_PREFIX = /var/run/prayer
RW_USER = root
RW_GROUP = root
 
# Root Directory, User and group for read-only configuration files.
# Default configuration and permissions does not allow prayer user to
# update prayer configuration file.
 
PREFIX = /usr/share/prayer
RO_USER = root
RO_GROUP = root
 
# Access permissions for general objects (wrt above users and groups)
PUBLIC_EXEC = 0755
PUBLIC_DIR = 0755
PUBLIC_FILE = 0644
 
# Access permissions for private objects (wrt above users and groups)
PRIVATE_EXEC = 0750
PRIVATE_DIR = 0750
PRIVATE_FILE = 0640
 
# Location of configuration files and binaries
PRAYER_CONFIG_FILE = /etc/prayer/prayer.cf
BIN_DIR = /usr/sbin
ACCOUNTD_CONFIG_FILE = /etc/prayer/accountd.cf
/tags/1.2.0-1/debian/copyright
0,0 → 1,83
This package was debianized by Magnus Holmgren <magnus@kibibyte.se> on
Tue, 24 Oct 2006 21:08:34 +0200.
 
It was downloaded from ftp://ftp.csx.cam.ac.uk/pub/software/email/prayer
 
Upstream author/maintainer: David Carter <dpc22@cam.ac.uk> et al.
 
The Debian packaging is © 2006-2008 Magnus Holmgren <holmgren@debian.org>
and is licensed under the GPL.
 
The original licence is as follows (from the file NOTICE in the upstream
distribution); the GPL should be in /usr/share/common-licenses/GPL on a debian
system.
 
 
The Prayer Webmail Interface
----------------------------
 
Copyright (c) 2002 University of Cambridge
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
In addition, for the avoidance of any doubt, permission is granted to
link this program with OpenSSL or any other library package.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
USA
 
INCORPORATED CODE
-----------------
 
Code implementing the SSL session cache has been adapted from code used by
the Cyrus IMAP server, which is distributed under the following copyright:
 
/* Copyright (c) 2000 Carnegie Mellon University. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The name "Carnegie Mellon University" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For permission or any other legal
* details, please contact
* Office of Technology Transfer
* Carnegie Mellon University
* 5000 Forbes Avenue
* Pittsburgh, PA 15213-3890
* (412) 268-4387, fax: (412) 268-7395
* tech-transfer@andrew.cmu.edu
*
* 4. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by Computing Services
* at Carnegie Mellon University (http://www.cmu.edu/computing/)."
*
* CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
* THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
* FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
 
/tags/1.2.0-1/debian/prayer.docs
0,0 → 1,11
docs/CMD_LINE
docs/DESIGN
docs/DONE-OLD
docs/FEATURES
docs/ICONLIST
docs/LOGS
docs/NOTICE
docs/README
docs/SECURITY
docs/TODO
docs/TEMPLATES
/tags/1.2.0-1/debian/prayer.postrm
0,0 → 1,53
#!/bin/sh
# postrm script for prayer
#
# see: dh_installdeb(1)
 
set -e
 
# summary of how this script can be called:
# * <postrm> `remove'
# * <postrm> `purge'
# * <old-postrm> `upgrade' <new-version>
# * <new-postrm> `failed-upgrade' <old-version>
# * <new-postrm> `abort-install'
# * <new-postrm> `abort-install' <old-version>
# * <new-postrm> `abort-upgrade' <old-version>
# * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
 
 
case "$1" in
upgrade|abort-install|failed-upgrade|abort-upgrade)
;;
 
remove|disappear)
rm -rf /var/run/prayer
;;
 
purge)
rm -rf /var/log/prayer
if dpkg-statoverride --list /var/log/prayer >/dev/null 2>&1; then
dpkg-statoverride --remove /var/log/prayer
fi
if dpkg-statoverride --list /var/run/prayer >/dev/null 2>&1; then
dpkg-statoverride --remove /var/run/prayer
fi
if [ -x /usr/sbin/deluser ]; then
deluser --system --quiet prayer || true
fi
;;
 
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 1
 
esac
 
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
 
#DEBHELPER#
 
exit 0
/tags/1.2.0-1/debian/prayer.postinst
0,0 → 1,49
#!/bin/sh
# postinst script for prayer
#
# see: dh_installdeb(1)
 
set -e
 
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
#
 
case "$1" in
configure)
adduser --quiet --system --no-create-home --home /var/run/prayer prayer
 
dpkg-statoverride --list /var/run/prayer >/dev/null 2>&1 \
|| dpkg-statoverride --update --add prayer root 2750 /var/run/prayer
 
dpkg-statoverride --list /var/log/prayer >/dev/null 2>&1 \
|| dpkg-statoverride --update --add prayer adm 2750 /var/log/prayer
 
;;
 
abort-upgrade|abort-remove|abort-deconfigure)
 
;;
 
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
 
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
 
#DEBHELPER#
 
exit 0
 
 
/tags/1.2.0-1/debian/control
0,0 → 1,53
Source: prayer
Section: mail
Priority: optional
Maintainer: Magnus Holmgren <holmgren@debian.org>
Build-Depends: cdbs, debhelper (>= 5), quilt,
libc-client2007-dev, libldap2-dev,
zlib1g-dev, libssl-dev (>= 0.9.6), libdb-dev,
Standards-Version: 3.7.3
Vcs-Svn: svn://svn.kibibyte.se/prayer/trunk
Vcs-Browser: http://svn.kibibyte.se/prayer
Homepage: http://www-uxsup.csx.cam.ac.uk/~dpc22/prayer/
 
Package: prayer
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, adduser
Suggests: prayer-accountd, imap-server, aspell | ispell
Description: Standalone IMAP-based webmail server
Prayer is yet another Webmail interface.
.
It is unusual in that it is a complete, standalone, HTTP server and proxy
rather a Apache/mod_php plugin. Prayer maintains persistent connections to
the IMAP server and is written entirely in C. Consequently it is much
faster than most open source Webmail interfaces and puts very little load
on either the machines running the Web server or the backend IMAP servers
(even if traditional Unix format mailfolders are in use).
.
Prayer has very few external dependencies as user preferences are stored on
the IMAP server rather than in a SQL database. It does however implement a
full range of features and user preference settings.
 
Package: prayer-accountd
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Suggests: prayer
Recommends: exim4
Description: account management daemon for Prayer
Prayer is yet another Webmail interface.
.
It is unusual in that it is a complete, standalone, HTTP server and proxy
rather a Apache/mod_php plugin. Prayer maintains persistent connections to
the IMAP server and is written entirely in C. Consequently it is much
faster than most open source Webmail interfaces and puts very little load
on either the machines running the Web server or the backend IMAP servers
(even if traditional Unix format mailfolders are in use).
.
This package contains a daemon that can do the following for users:
.
* Change passwords
* Change their full name
* Manage mail filtering (requires Exim) and forwarding
* Manage vacation messages and logs
.
NOTE: This package is currently not very useful.
/tags/1.2.0-1/debian/rules
0,0 → 1,17
#!/usr/bin/make -f
# Sample debian/rules that uses cdbs. Originaly written by Robert Millan.
# This file is public domain.
 
# Add here any variable or target overrides you need
 
makebuilddir/prayer::
cp debian/Config .
 
include /usr/share/cdbs/1/class/makefile.mk
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/rules/patchsys-quilt.mk
 
DEB_MAKE_INVOKE = $(DEB_MAKE_ENVVARS) $(MAKE)
DEB_MAKE_INSTALL_TARGET = install BROOT=$(CURDIR)/debian/tmp
DEB_INSTALL_CHANGELOGS_ALL = docs/DONE
DEB_DH_INSTALL_SOURCEDIR = debian/tmp
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: 1.2.0-1/debian/prayer-accountd.init
===================================================================
--- 1.2.0-1/debian/prayer-accountd.init (nonexistent)
+++ 1.2.0-1/debian/prayer-accountd.init (revision 37)
@@ -0,0 +1,71 @@
+#!/bin/sh
+#
+### BEGIN INIT INFO
+# Provides: prayer-accountd
+# Required-Start:
+# Required-Stop:
+# Should-Start: $local_fs
+# Should-Stop: $local_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Prayer account helper daemon
+# Description: Lets users change passwords, manage filters and other things not supported by IMAP itself
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/prayer-accountd
+PIDFILE=/var/run/prayer-accountd.pid
+DESC="Prayer account helper server"
+
+test -x $DAEMON || exit 0
+
+egrep -iq "^[[:space:]]*accountd_port[[:space:]]*=[[:space:]]*[[:digit:]]+[[:space:]]*$" /etc/prayer/accountd.cf || exit 0
+
+. /lib/lsb/init-functions
+
+# Include prayer defaults if available
+if [ -f /etc/default/prayer-accountd ] ; then
+ . /etc/default/prayer-accountd
+fi
+
+set +e
+
+start() {
+ log_daemon_msg "Starting $DESC" "accountd"
+ start-stop-daemon --start --background --make-pidfile --pidfile $PIDFILE \
+ --exec $DAEMON -- $DAEMON_OPTS
+ log_end_msg $?
+}
+
+stop() {
+ log_daemon_msg "Stopping $DESC"
+ if [ -f "$PIDFILE" ]; then
+ start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
+ log_progress_msg "accountd"
+ fi
+ rm -f "$PIDFILE"
+ log_end_msg 0
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+
+ stop)
+ stop
+ ;;
+
+ restart|force-reload)
+ stop
+ start
+ ;;
+ *)
+ N=/etc/init.d/prayer-accountd
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ log_failure_msg "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
Index: 1.2.0-1/debian/prayer-accountd.lintian-overrides
===================================================================
--- 1.2.0-1/debian/prayer-accountd.lintian-overrides (nonexistent)
+++ 1.2.0-1/debian/prayer-accountd.lintian-overrides (revision 37)
@@ -0,0 +1 @@
+prayer-accountd: possible-gpl-code-linked-with-openssl
Index: 1.2.0-1/debian/prayer.lintian-overrides
===================================================================
--- 1.2.0-1/debian/prayer.lintian-overrides (nonexistent)
+++ 1.2.0-1/debian/prayer.lintian-overrides (revision 37)
@@ -0,0 +1 @@
+prayer: possible-gpl-code-linked-with-openssl
Index: 1.2.0-1/debian/README.Debian
===================================================================
--- 1.2.0-1/debian/README.Debian (nonexistent)
+++ 1.2.0-1/debian/README.Debian (revision 37)
@@ -0,0 +1,31 @@
+prayer for Debian
+-----------------
+
+The Debian version of Prayer is built with SSL support with session
+cache using libdb4.3, gzip Content-Transfer-Encoding, LDAP, and System
+V mutex support. The previous version, which was only uloaded to the
+experimental distribution, was heavily patched to add UTF-8 and IPv6
+support among other things. All that has been incorporated and
+improved by upstream in 1.1.0. The remaining patches concern changes
+to default configuration regarding directory structure, and minor
+cosmetic changes to the folder list.
+
+Quirks:
+
+ * If your IMAP server supports STARTTLS, then Prayer (actually the
+ libc-client IMAP client library) will use it automatically. To
+ disable, append "/notls" to the IMAP server name(s) specified with
+ imapd_server. To force TLS, append "/tls". Make sure that the
+ server name you specify for imapd_server in prayer.cf matches the
+ Common Name in the SSL certificate; otherwise libc-client will
+ refuse to accept it. To disable that check, use "/novalidate-cert".
+ Other switches you can append are listed in the file naming.txt.gz
+ in the documentation directory of the C-client library.
+
+ * If your IMAP server is Dovecot (or any of a number of others,
+ probably), then you must change prefs_folder_name to something not
+ containing a dot. Unfortunately this means that the preference
+ folder will be fully visible.
+
+ -- Magnus Holmgren <holmgren@debian.org>, Tue, 13 May 2008 22:27:11 +0200
+
Index: 1.2.0-1/debian/compat
===================================================================
--- 1.2.0-1/debian/compat (nonexistent)
+++ 1.2.0-1/debian/compat (revision 37)
@@ -0,0 +1 @@
+5
Index: 1.2.0-1/debian/prayer.default
===================================================================
--- 1.2.0-1/debian/prayer.default (nonexistent)
+++ 1.2.0-1/debian/prayer.default (revision 37)
@@ -0,0 +1,11 @@
+# Defaults for prayer initscript
+# sourced by /etc/init.d/prayer
+# installed at /etc/default/prayer by the maintainer scripts
+
+# This is a POSIX shell fragment
+
+# Change to one to enable prayer after editing /etc/prayer/prayer.cf
+ENABLED=0
+
+# Options. You probably won't need any.
+DAEMON_OPTS=""
Index: 1.2.0-1/debian/prayer-accountd.docs
===================================================================
--- 1.2.0-1/debian/prayer-accountd.docs (nonexistent)
+++ 1.2.0-1/debian/prayer-accountd.docs (revision 37)
@@ -0,0 +1,8 @@
+docs/ACCOUNTD
+docs/DESIGN
+docs/DONE-OLD
+docs/FEATURES
+docs/NOTICE
+docs/README
+docs/SECURITY
+docs/TODO
Index: 1.2.0-1/debian/prayer-session.8.dbk
===================================================================
--- 1.2.0-1/debian/prayer-session.8.dbk (nonexistent)
+++ 1.2.0-1/debian/prayer-session.8.dbk (revision 37)
@@ -0,0 +1,158 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+<!--
+
+Process this file with an XSLT processor: `xsltproc \
+-''-nonet /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xslb manpage.dbk'. A manual page
+<package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A
+typical entry in a Makefile or Makefile.am is:
+
+DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xsl
+XP=xsltproc -''-nonet
+
+manpage.1: manpage.dbk
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The
+XSL files are in docbook-xsl. Please remember that if you
+create the nroff version in one of the debian/rules file
+targets (such as build), you will need to include xsltproc
+and docbook-xsl in your Build-Depends control field.
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>Magnus</firstname>">
+ <!ENTITY dhsurname "<surname>Holmgren</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>oktober 24, 2006</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>8</manvolnum>">
+ <!ENTITY dhemail "<email>magnus@kibibyte.se</email>">
+ <!ENTITY dhusername "Magnus Holmgren">
+ <!ENTITY dhucpackage "<refentrytitle>PRAYER</refentrytitle>">
+ <!ENTITY dhpackage "prayer-session">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2006</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>a fast stand-alone webmail server</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option><replaceable>OPTION</replaceable></option></arg>...</cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> command.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>--config-file <replaceable>filename</replaceable></option>
+ </term>
+ <listitem>
+ <para>Define prayer config file (Overrides compilation default and PRAYER_CONFIG_FILE environment variable).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--config-option <replaceable>option</replaceable>=<replaceable>value</replaceable></option>
+ </term>
+ <listitem>
+ <para>Override single configuration option.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--foreground</option>
+ </term>
+ <listitem>
+ <para>Run single threaded server in foreground.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--debug</option>
+ </term>
+ <listitem>
+ <para>Enable debugging.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show option summary.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>prayer(8), prayer.cf(5).</para>
+
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
Index: 1.2.0-1/debian/prayer.logrotate
===================================================================
--- 1.2.0-1/debian/prayer.logrotate (nonexistent)
+++ 1.2.0-1/debian/prayer.logrotate (revision 37)
@@ -0,0 +1,8 @@
+/var/log/prayer/prayer /var/log/prayer/prayer_session /var/log/prayer/access_log /var/log/prayer/session_log {
+ rotate 28
+ daily
+ compress
+ delaycompress
+ missingok
+ notifempty
+}
Index: 1.2.0-1/debian/prayer.dirs
===================================================================
--- 1.2.0-1/debian/prayer.dirs (nonexistent)
+++ 1.2.0-1/debian/prayer.dirs (revision 37)
@@ -0,0 +1,2 @@
+var/run/prayer
+var/log/prayer
Index: 1.2.0-1/debian/prayer.init
===================================================================
--- 1.2.0-1/debian/prayer.init (nonexistent)
+++ 1.2.0-1/debian/prayer.init (revision 37)
@@ -0,0 +1,89 @@
+#!/bin/sh
+#
+### BEGIN INIT INFO
+# Provides: prayer
+# Required-Start:
+# Required-Stop:
+# Should-Start: $local_fs
+# Should-Stop: $local_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Prayer init script
+# Description: Init script for prayer services
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+FRONTEND_DAEMON=/usr/sbin/prayer
+SESSION_DAEMON=/usr/sbin/prayer-session
+FRONTEND_PIDFILE=/var/run/prayer/prayer.pid
+SESSION_PIDFILE=/var/run/prayer/prayer-session.pid
+DESC="webmail server"
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+ENABLED=0
+
+# Include prayer defaults if available
+if [ -f /etc/default/prayer ] ; then
+ . /etc/default/prayer
+fi
+
+set +e
+
+start() {
+ if [ "$ENABLED" = "0" ]; then
+ echo "Prayer is disabled. Please set ENABLED=1 in /etc/default/prayer"
+ echo "after adapting /etc/prayer/prayer.cf to your needs."
+ exit 0
+ fi
+
+ log_daemon_msg "Starting $DESC" "prayer"
+ start-stop-daemon --start --pidfile $FRONTEND_PIDFILE \
+ --exec $FRONTEND_DAEMON -- $DAEMON_OPTS
+ log_end_msg $?
+}
+
+stop() {
+ log_daemon_msg "Stopping $DESC"
+ if [ -f "$SESSION_PIDFILE" ]; then
+ start-stop-daemon --stop --quiet --oknodo --pidfile $SESSION_PIDFILE
+ log_progress_msg "prayer-session"
+ fi
+ if [ -f "$FRONTEND_PIDFILE" ]; then
+ start-stop-daemon --stop --quiet --oknodo --pidfile $FRONTEND_PIDFILE
+ start-stop-daemon --stop --quiet --oknodo --exec $FRONTEND_DAEMON
+ log_progress_msg "prayer"
+ fi
+ rm -f "$FRONTEND_PIDFILE" "$SESSION_PIDFILE"
+ log_end_msg 0
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+
+ stop)
+ stop
+ ;;
+
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart".
+ #
+ stop
+ start
+ ;;
+ *)
+ N=/etc/init.d/prayer
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ log_failure_msg "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
Index: 1.2.0-1/debian/prayer-accountd.install
===================================================================
--- 1.2.0-1/debian/prayer-accountd.install (nonexistent)
+++ 1.2.0-1/debian/prayer-accountd.install (revision 37)
@@ -0,0 +1,2 @@
+usr/sbin/prayer-accountd
+etc/prayer/accountd.cf
Index: 1.2.0-1/debian/watch
===================================================================
--- 1.2.0-1/debian/watch (nonexistent)
+++ 1.2.0-1/debian/watch (revision 37)
@@ -0,0 +1,9 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+ftp://ftp.csx.cam.ac.uk/pub/software/email/prayer/prayer-(.*)\.tar\.gz debian uupdate
Index: 1.2.0-1/debian/prayer.8.dbk
===================================================================
--- 1.2.0-1/debian/prayer.8.dbk (nonexistent)
+++ 1.2.0-1/debian/prayer.8.dbk (revision 37)
@@ -0,0 +1,178 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+<!--
+
+Process this file with an XSLT processor: `xsltproc \
+-''-nonet /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xslb manpage.dbk'. A manual page
+<package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A
+typical entry in a Makefile or Makefile.am is:
+
+DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xsl
+XP=xsltproc -''-nonet
+
+manpage.1: manpage.dbk
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The
+XSL files are in docbook-xsl. Please remember that if you
+create the nroff version in one of the debian/rules file
+targets (such as build), you will need to include xsltproc
+and docbook-xsl in your Build-Depends control field.
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>Magnus</firstname>">
+ <!ENTITY dhsurname "<surname>Holmgren</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>oktober 24, 2006</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>8</manvolnum>">
+ <!ENTITY dhemail "<email>magnus@kibibyte.se</email>">
+ <!ENTITY dhusername "Magnus Holmgren">
+ <!ENTITY dhucpackage "<refentrytitle>PRAYER</refentrytitle>">
+ <!ENTITY dhpackage "prayer">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2006</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>a fast stand-alone webmail server</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option><replaceable>OPTION</replaceable></option></arg>... -- <arg><option><replaceable>PRAYER-SESSION-OPTION</replaceable></option></arg> ...
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ <application>Info</application> format; see below.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>--config-file <replaceable>filename</replaceable></option>
+ </term>
+ <listitem>
+ <para>Define prayer config file (Overrides compilation default and PRAYER_CONFIG_FILE environment variable).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--config-option <replaceable>option</replaceable>=<replaceable>value</replaceable></option>
+ </term>
+ <listitem>
+ <para>Override single configuration option.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--foreground</option>
+ </term>
+ <listitem>
+ <para>Run single threaded server in foreground.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--disable-prefork</option>
+ </term>
+ <listitem>
+ <para>Run as simple fork()/exec() daemon.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--disable-session</option>
+ </term>
+ <listitem>
+ <para>Don't start up prayer-session server.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--</option>
+ </term>
+ <listitem>
+ <para>End of prayer options: remaining options will be passed to prayer-session server process.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show option summary.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>prayer-session(8), prayer.cf(5).</para>
+
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
Index: 1.2.0-1/debian/prayer.install
===================================================================
--- 1.2.0-1/debian/prayer.install (nonexistent)
+++ 1.2.0-1/debian/prayer.install (revision 37)
@@ -0,0 +1,10 @@
+usr/sbin/prayer
+usr/sbin/prayer-session
+usr/sbin/prayer-chroot
+usr/sbin/prayer-db-prune
+usr/sbin/prayer-sem-prune
+usr/sbin/prayer-ssl-prune
+usr/share/prayer
+etc/prayer/prayer.cf
+etc/prayer/motd.html
+etc/prayer/welcome.html
Index: 1.2.0-1/debian
===================================================================
--- 1.2.0-1/debian (nonexistent)
+++ 1.2.0-1/debian (revision 37)
/1.2.0-1/debian
Property changes:
Added: mergeWithUpstream
## -0,0 +1 ##
+1
\ No newline at end of property
Index: 1.1.0-2/debian/control
===================================================================
--- 1.1.0-2/debian/control (nonexistent)
+++ 1.1.0-2/debian/control (revision 37)
@@ -0,0 +1,52 @@
+Source: prayer
+Section: mail
+Priority: optional
+Maintainer: Magnus Holmgren <holmgren@debian.org>
+Build-Depends: cdbs, debhelper (>= 5), quilt,
+ libc-client2007-dev, libldap2-dev,
+ zlib1g-dev, libssl-dev (>= 0.9.6), libdb4.3-dev | libdb-dev,
+Standards-Version: 3.7.3
+Vcs-Svn: svn://svn.kibibyte.se/prayer/trunk
+Vcs-Browser: http://svn.kibibyte.se/prayer
+
+Package: prayer
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, adduser
+Suggests: prayer-accountd, imap-server, aspell | ispell
+Description: Standalone IMAP-based webmail server
+ Prayer is yet another Webmail interface.
+ .
+ It is unusual in that it is a complete, standalone, HTTP server and proxy
+ rather a Apache/mod_php plugin. Prayer maintains persistent connections to
+ the IMAP server and is written entirely in C. Consequently it is much
+ faster than most open source Webmail interfaces and puts very little load
+ on either the machines running the Web server or the backend IMAP servers
+ (even if traditional Unix format mailfolders are in use).
+ .
+ Prayer has very few external dependencies as user preferences are stored on
+ the IMAP server rather than in a SQL database. It does however implement a
+ full range of features and user preference settings.
+
+Package: prayer-accountd
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Suggests: prayer
+Recommends: exim4
+Description: account management daemon for Prayer
+ Prayer is yet another Webmail interface.
+ .
+ It is unusual in that it is a complete, standalone, HTTP server and proxy
+ rather a Apache/mod_php plugin. Prayer maintains persistent connections to
+ the IMAP server and is written entirely in C. Consequently it is much
+ faster than most open source Webmail interfaces and puts very little load
+ on either the machines running the Web server or the backend IMAP servers
+ (even if traditional Unix format mailfolders are in use).
+ .
+ This package contains a daemon that can do the following for users:
+ .
+ * Change passwords
+ * Change their full name
+ * Manage mail filtering (requires Exim) and forwarding
+ * Manage vacation messages and logs
+ .
+ NOTE: This package is currently not very useful.
Index: 1.1.0-2/debian/changelog
===================================================================
--- 1.1.0-2/debian/changelog (nonexistent)
+++ 1.1.0-2/debian/changelog (revision 37)
@@ -0,0 +1,45 @@
+prayer (1.1.0-2) unstable; urgency=low
+
+ * Define LDAP_DEPRECATED so that the deprecated LDAP interfaces can be
+ used.
+ * makefile_install_config.patch: Modify prayer/Makefile so that the
+ above definition isn't lost if CFLAGS is overridden.
+ * Improve prayer.postrm to clean /var/run/prayer on removal and
+ disappearence.
+ * Use dpkg-override to allow the administrator to change mode of
+ /var/run/prayer and /var/log/prayer.
+ * Add postinst and postrm scripts for prayer-accountd.
+ * makefile_install_config.patch: Set authtype = pam in accountd.cf so
+ that accountd will start.
+ * Bump Standards-Version to 3.7.3. No changes necessary.
+ * Override Lintian warnings about GPL code linked with OpenSSL. Special
+ exception has been granted.
+ * Don't require cdbs 0.4.27-1. Oldstable has 0.4.28-1.
+
+ -- Magnus Holmgren <holmgren@debian.org> Thu, 15 May 2008 22:47:14 +0200
+
+prayer (1.1.0-1) unstable; urgency=low
+
+ * First upload to unstable.
+ * New upstream release.
+ + Requires development version of the c-client library (libc-client2007-dev).
+ - Drop pidfiles_extension.patch, session_unix_bugs.patch,
+ session_server_bugs.patch; all incorporated upstream.
+ - Drop ipv6.patch; incorporated upstream.
+ - Drop utf8.patch; incorporated and improved upstream.
+ - Drop hasnochildren_means_noinferiors.patch since upstream now
+ handles dual-use mailboxes.
+ * New maintainer email address.
+ * Update README.Debian, removing lies about TLS not being possible to
+ disable (Closes: #440462).
+ * folder_list_cosmetics.patch: Remove space between expand/collapse
+ arrow and folder icon in the folder list and change the alt texts so
+ that the tree looks nicer in text browsers.
+
+ -- Magnus Holmgren <holmgren@debian.org> Tue, 13 May 2008 22:31:36 +0200
+
+prayer (1.0.18-1) experimental; urgency=low
+
+ * Initial release (Closes: #392823)
+
+ -- Magnus Holmgren <magnus@kibibyte.se> Sat, 10 Mar 2007 14:24:21 +0100
Index: 1.1.0-2/debian/prayer-accountd.lintian-overrides
===================================================================
--- 1.1.0-2/debian/prayer-accountd.lintian-overrides (nonexistent)
+++ 1.1.0-2/debian/prayer-accountd.lintian-overrides (revision 37)
@@ -0,0 +1 @@
+prayer-accountd: possible-gpl-code-linked-with-openssl
Index: 1.1.0-2/debian/prayer.lintian-overrides
===================================================================
--- 1.1.0-2/debian/prayer.lintian-overrides (nonexistent)
+++ 1.1.0-2/debian/prayer.lintian-overrides (revision 37)
@@ -0,0 +1 @@
+prayer: possible-gpl-code-linked-with-openssl
Index: 1.1.0-2/debian/prayer.postrm
===================================================================
--- 1.1.0-2/debian/prayer.postrm (nonexistent)
+++ 1.1.0-2/debian/prayer.postrm (revision 37)
@@ -0,0 +1,49 @@
+#!/bin/sh
+# postrm script for prayer
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge)
+ deluser --system --quiet prayer || true
+ rm -rf /var/log/prayer
+ dpkg-statoverride --remove /var/log/prayer
+ [ -e /var/run/prayer/ ] || dpkg-statoverride --remove /var/run/prayer
+ ;;
+
+ remove|disappear)
+ find /var/run/prayer/ -mindepth 1 \( -type s -o -name ssl_scache -o -empty \) -delete
+
+ ;;
+
+ upgrade|abort-install|failed-upgrade|abort-upgrade)
+
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
Index: 1.1.0-2/debian/patches/makefile_install_config.patch
===================================================================
--- 1.1.0-2/debian/patches/makefile_install_config.patch (nonexistent)
+++ 1.1.0-2/debian/patches/makefile_install_config.patch (revision 37)
@@ -0,0 +1,253 @@
+--- a/files/etc/prayer-accountd.cf
++++ b/files/etc/prayer-accountd.cf
+@@ -8,6 +8,10 @@
+ # Default accountd.cf file suitable for RedHat Linux only.
+ # See distribution for some sample files for FreeBSD and Solaris
+
++accountd_port = 145
++
++authtype = pam
++
+ msforward_name = ".MSforward"
+ forward_name = ".forward"
+ aliases_name = "vacation.aliases"
+--- a/files/Makefile
++++ b/files/Makefile
+@@ -53,41 +53,44 @@ distclean:
+ install-cert:
+ if [ -f certs/prayer.pem ]; then \
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) \
+- -m $(PRIVATE_FILE) certs/prayer.pem ${BROOT}${PREFIX}/certs; \
++ -m $(PRIVATE_FILE) certs/prayer.pem ${DESTDIR}${PREFIX}/certs; \
+ fi
+
+ install-config: etc/prayer.cf
+ $(INSTALL) -D -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_FILE) \
+- etc/prayer.cf ${BROOT}${PRAYER_CONFIG_FILE}
++ etc/prayer.cf ${DESTDIR}${PRAYER_CONFIG_FILE}
+
+ install-aconfig:
+ $(INSTALL) -D -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_FILE) \
+- etc/prayer-accountd.cf ${BROOT}${ACCOUNTD_CONFIG_FILE}
++ etc/prayer-accountd.cf ${DESTDIR}${ACCOUNTD_CONFIG_FILE}
+
+ install-motd:
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_FILE) \
+- etc/motd.html ${BROOT}${PREFIX}/etc
++ etc/motd.html ${DESTDIR}/etc/prayer
+
+ install-welcome:
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_FILE) \
+- etc/welcome.html ${BROOT}${PREFIX}/etc
++ etc/welcome.html ${DESTDIR}/etc/prayer
+
+ install:
+- PREFIX=$(BROOT)$(PREFIX) VAR_PREFIX=$(BROOT)$(VAR_PREFIX) \
++ ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${DESTDIR}${PREFIX}
++ ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${DESTDIR}/etc/prayer
++
++ PREFIX=$(DESTDIR)$(PREFIX) VAR_PREFIX=$(DESTDIR)$(VAR_PREFIX) \
+ RO_USER=$(RO_USER) RO_GROUP=$(RO_GROUP) \
+ RW_USER=$(RW_USER) RW_GROUP=$(RW_GROUP) \
+ PUBLIC_DIR=$(PUBLIC_DIR) PRIVATE_DIR=$(PRIVATE_DIR) \
+ PUBLIC_FILE=$(PUBLIC_FILE) PRIVATE_FILE=$(PRIVATE_FILE) \
+ PUBLIC_EXEC=$(PUBLIC_FILE) PRIVATE_EXEC=$(PRIVATE_EXEC) \
+- BIN_DIR=$(BIN_DIR) INSTALL=$(INSTALL) \
++ BIN_DIR=$(DESTDIR)$(BIN_DIR) INSTALL=$(INSTALL) \
+ ./install.sh
+- if [ ! -f $(BROOT)$(PREFIX)/certs/prayer.pem ]; then $(MAKE) install-cert; fi
+- if [ ! -f $(BROOT)$(PRAYER_CONFIG_FILE) ]; then $(MAKE) install-config; fi
+- if [ ! -f $(BROOT)$(ACCOUNTD_CONFIG_FILE) ]; then $(MAKE) install-aconfig; fi
+- if [ ! -f $(BROOT)$(PREFIX)/etc/motd.html ]; then $(MAKE) install-motd; fi
+- if [ ! -f $(BROOT)$(PREFIX)/etc/welcome.html ]; then $(MAKE) install-welcome; fi
++# if [ ! -f $(DESTDIR)$(PREFIX)/certs/prayer.pem ]; then $(MAKE) install-cert; fi
++ if [ ! -f $(DESTDIR)$(PRAYER_CONFIG_FILE) ]; then $(MAKE) install-config; fi
++ if [ ! -f $(DESTDIR)$(ACCOUNTD_CONFIG_FILE) ]; then $(MAKE) install-aconfig; fi
++ if [ ! -f $(DESTDIR)/etc/prayer/motd.html ]; then $(MAKE) install-motd; fi
++ if [ ! -f $(DESTDIR)/etc/prayer/welcome.html ]; then $(MAKE) install-welcome; fi
+
+ redhat-install-init.d:
+ install -D -o root -g root -m 755 \
+- ./init.d/prayer $(BROOT)/etc/rc.d/init.d/prayer
++ ./init.d/prayer $(DESTDIR)/etc/rc.d/init.d/prayer
+ #chkconfig prayer --level 2345 on
+--- a/files/install.sh
++++ b/files/install.sh
+@@ -4,77 +4,6 @@
+
+ PATH=/bin:/sbin/:/usr/bin:/usr/sbin
+
+-error=0
+-
+-if [ "x$PREFIX" = "x" ]; then
+- echo 'PREFIX not defined'
+- error=1
+-fi
+-
+-if [ "x$VAR_PREFIX" = "x" ]; then
+- echo 'VAR_PREFIX not defined'
+- error=1
+-fi
+-
+-if [ "x$RO_USER" = "x" ]; then
+- echo 'RO_USER not defined'
+- error=1
+-fi
+-
+-if [ "x$RO_GROUP" = "x" ]; then
+- echo 'RO_GROUP not defined'
+- error=1
+-fi
+-
+-if [ "x$RW_USER" = "x" ]; then
+- echo 'RW_USER not defined'
+- error=1
+-fi
+-
+-if [ "x$RW_GROUP" = "x" ]; then
+- echo 'RW_GROUP not defined'
+- error=1
+-fi
+-
+-if [ "x$PUBLIC_DIR" = "x" ]; then
+- echo 'PUBLIC_DIR not defined'
+- error=1
+-fi
+-
+-if [ "x$PRIVATE_DIR" = "x" ]; then
+- echo 'PRIVATE_DIR not defined'
+- error=1
+-fi
+-
+-if [ "x$BIN_DIR" = "x" ]; then
+- echo 'BIN_DIR not defined'
+- error=1
+-fi
+-
+-if [ $error != 0 ]; then
+- exit 1
+-fi
+-
+-if [ ! -d ${VAR_PREFIX} -a `whoami` = "root" ]; then
+- ${INSTALL} -d -o ${RW_USER} -g ${RW_GROUP} -m ${PRIVATE_DIR} ${VAR_PREFIX}
+-fi
+-
+-if [ ! -d ${PREFIX} ]; then
+- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${PREFIX}
+-fi
+-
+-if [ ! -d ${PREFIX}/etc ]; then
+- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${PREFIX}/etc
+-fi
+-
+-if [ ! -d ${PREFIX}/certs ]; then
+- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PRIVATE_DIR} ${PREFIX}/certs
+-fi
+-
+-if [ ! -d ${BIN_DIR} ]; then
+- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${BIN_DIR}
+-fi
+-
+ for i in help icons
+ do
+ if [ -d "${PREFIX}/${i}" ]; then
+--- a/files/etc/prayer.cf.SRC
++++ b/files/etc/prayer.cf.SRC
+@@ -20,7 +20,7 @@ var_prefix = "__VAR_PREFIX__"
+ # User ID to run as if we start off as root
+ prayer_user = "prayer"
+ # Group ID to run as if we start off as root
+-prayer_group = "prayer"
++prayer_group = "nogroup"
+
+ # Run prayer as background process.
+ # TRUE => will return as soon as valid configuration is found.
+@@ -428,14 +428,14 @@ bin_dir = "__BIN_DIR__"
+
+ # Various directories used by the running system
+ # Logs stored in $log_dir
+-log_dir = "$var_prefix/logs"
++log_dir = "/var/log/prayer"
+
+ # $lock_dir used for interlocking between prayer processes
+-lock_dir = "$var_prefix/locks"
++lock_dir = "/var/lock"
+
+ # $socket_dir is location for unix domain sockets which connect frontend
+ # to backend in proxy mode of operation.
+-socket_dir = "$var_prefix/sockets"
++socket_dir = "/var/run/prayer"
+
+ # Split socket directory into 64 subdirs keyed on first letter of sessionID
+ # Code provides compatibility in both directions: can switch back and forward
+@@ -446,14 +446,14 @@ socket_split_dir = TRUE
+ init_socket_name = init
+
+ # $ssl_session_dir is location for SSL session cache
+-ssl_session_dir = "$var_prefix/ssl_scache"
++ssl_session_dir = "/var/run/prayer/ssl_scache"
+
+ # Location for temporary files e.g; attachments and folders in transist
+ # during upload and download operation. Core files also end up here
+-tmp_dir = "$var_prefix/tmp"
++tmp_dir = "/tmp"
+
+ # Location for PID files for prayer and prayer-session master processes.
+-pid_dir = "$var_prefix/pid"
++pid_dir = "/var/run/prayer"
+
+ # Interface to Hermes finger database
+ #lookup_rpasswd = "/data/finger/rpasswd.cdb"
+@@ -614,7 +614,7 @@ sent_mail_folder = "sent-mail"
+ # default_domain = "<valid mail domain>"
+
+ # Language for ispell.
+-ispell_language = "british"
++ispell_language = "american"
+
+ # Size of small and large compose windows
+ small_cols = 80
+--- a/prayer/Makefile
++++ b/prayer/Makefile
+@@ -102,8 +102,9 @@ ifeq ($(strip $(CCLIENT_KERB_ENABLE)), t
+ SESSION_LIBS += $(KERB_LIBS)
+ endif
+
+-CFLAGS = $(BASECFLAGS) $(COMMON_SSL_INCLUDE) $(CCLIENT_INCLUDE)
+-LDFLAGS = $(BASELDFLAGS)
++CFLAGS =
++override CFLAGS += $(BASECFLAGS) $(COMMON_SSL_INCLUDE) $(CCLIENT_INCLUDE)
++LDFLAGS = $(BASELDFLAGS) -Wl,--as-needed
+
+ SHARED_OBJS = \
+ pool.o list.o assoc.o memblock.o buffer.o string.o config.o user_agent.o \
+@@ -175,21 +176,21 @@ clean:
+
+ install: all
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_DIR) -d \
+- $(BROOT)$(BIN_DIR)
++ $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer $(BROOT)$(BIN_DIR)
++ prayer $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-chroot $(BROOT)$(BIN_DIR)
++ prayer-chroot $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-session $(BROOT)$(BIN_DIR)
++ prayer-session $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-ssl-prune $(BROOT)$(BIN_DIR)
++ prayer-ssl-prune $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-sem-prune $(BROOT)$(BIN_DIR)
++ prayer-sem-prune $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-db-prune $(BROOT)$(BIN_DIR)
++ prayer-db-prune $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-cyclog $(BROOT)$(BIN_DIR)
++ prayer-cyclog $(DESTDIR)$(BIN_DIR)
+
+ prayer: $(PRAYER_OBJS) prayer_main.o
+ $(CC) $(LDFLAGS) -o prayer $(PRAYER_OBJS) prayer_main.o $(PRAYER_LIBS)
Index: 1.1.0-2/debian/patches/series
===================================================================
--- 1.1.0-2/debian/patches/series (nonexistent)
+++ 1.1.0-2/debian/patches/series (revision 37)
@@ -0,0 +1,3 @@
+folder_list_cosmetics.patch
+includes.patch
+makefile_install_config.patch
Index: 1.1.0-2/debian/patches/folder_list_cosmetics.patch
===================================================================
--- 1.1.0-2/debian/patches/folder_list_cosmetics.patch (nonexistent)
+++ 1.1.0-2/debian/patches/folder_list_cosmetics.patch (revision 37)
@@ -0,0 +1,30 @@
+--- a/prayer/cmd_folders.c
++++ b/prayer/cmd_folders.c
+@@ -45,10 +45,10 @@ generate_folder_line(struct session *ses
+ html_session_bprintf(session, b, "<a href=\"", "\">",
+ "folders/toggle/%s", name);
+ if (fi->expanded)
+- html_icon(session, b, "down.gif", "[Collapse]");
++ html_icon(session, b, "down.gif", "[-]&nbsp;");
+ else
+- html_icon(session, b, "right.gif", "[Expand]");
+- bputs(b, "</a>&nbsp;");
++ html_icon(session, b, "right.gif", "[+]&nbsp;");
++ bputs(b, "</a>");
+ } else
+ html_icon(session, b, "blank.gif", "&nbsp;&nbsp;&nbsp;&nbsp;");
+
+--- a/prayer/cmd_favourites.c
++++ b/prayer/cmd_favourites.c
+@@ -77,9 +77,9 @@ generate_folder_line(struct session *ses
+ html_session_bprintf(session, b, "<a href=\"", "\">",
+ "favourites/toggle/%s", name);
+ if (fi->expanded)
+- html_icon(session, b, "down.gif", "[Collapse]");
++ html_icon(session, b, "down.gif", "[-]&nbsp;");
+ else
+- html_icon(session, b, "right.gif", "[Expand]");
++ html_icon(session, b, "right.gif", "[+]&nbsp;");
+ bputs(b, "</a>");
+ } else
+ html_icon(session, b, "blank.gif", "&nbsp;&nbsp;&nbsp;&nbsp;");
Index: 1.1.0-2/debian/patches/includes.patch
===================================================================
--- 1.1.0-2/debian/patches/includes.patch (nonexistent)
+++ 1.1.0-2/debian/patches/includes.patch (revision 37)
@@ -0,0 +1,22 @@
+--- prayer-1.1.0.orig/prayer/prayer_session.h
++++ prayer-1.1.0/prayer/prayer_session.h
+@@ -27,7 +27,7 @@
+
+ extern int errno; /* just in case */
+
+-#include "c-client.h"
++#include <c-client.h>
+
+ #define PRAYER_FULL_HDRS
+ #include "prayer_shared.h"
+--- prayer-1.1.0.orig/prayer/cdb.c
++++ prayer-1.1.0/prayer/cdb.c
+@@ -63,7 +63,7 @@
+ #include <unistd.h>
+ #include <sys/stat.h>
+
+-#include "mail.h"
++#include "common.h"
+ #include "cdb.h"
+
+ #define CDB_HASH_SPLIT 256 /* num pieces the hash table is split into */
Index: 1.1.0-2/debian/patches/sighandling.patch
===================================================================
--- 1.1.0-2/debian/patches/sighandling.patch (nonexistent)
+++ 1.1.0-2/debian/patches/sighandling.patch (revision 37)
@@ -0,0 +1,75 @@
+Index: prayer-1.0.18/prayer/os.h
+===================================================================
+--- prayer-1.0.18.orig/prayer/os.h 2007-03-10 19:56:40.357114747 +0100
++++ prayer-1.0.18/prayer/os.h 2007-03-10 19:57:56.266959171 +0100
+@@ -44,6 +44,8 @@ BOOL os_signal_alarm_clear(void);
+
+ BOOL os_signal_init();
+
++BOOL os_signal_hup_term_init(void (*hup_fn) (), void (*term_fn) ());
++
+ BOOL os_lock_exclusive(int fd);
+
+ BOOL os_lock_shared(int fd);
+Index: prayer-1.0.18/prayer/session_server.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/session_server.c 2007-03-10 19:56:40.647152355 +0100
++++ prayer-1.0.18/prayer/session_server.c 2007-03-10 19:57:56.326966954 +0100
+@@ -355,6 +355,7 @@ BOOL session_server(struct config *confi
+ fd_set readfds;
+ pid_t child;
+ unsigned long timeout = 0L;
++ BOOL sighup_seen = NIL;
+
+ if (config->direct_enable) {
+ ssl_portlist
+@@ -420,6 +421,18 @@ BOOL session_server(struct config *confi
+ } else {
+ rc = select(maxfd + 1, &readfds, NIL, NIL, NIL);
+ }
++ if (sighup_seen) {
++ log_misc("SIGHUP received - reexec daemon");
++ close(sockfd);
++ if (config->direct_enable) {
++ /* Find some way to pass this information along
++ to the new invocation somehow later. */
++ portlist_close_all(ssl_portlist);
++ portlist_close_all(plain_portlist);
++ }
++ log_misc_free();
++ return (T);
++ }
+ }
+ while ((rc < 0) && (errno == EINTR));
+
+Index: prayer-1.0.18/prayer/log.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/log.c 2007-03-10 19:58:03.667919109 +0100
++++ prayer-1.0.18/prayer/log.c 2007-03-10 19:58:11.688959503 +0100
+@@ -502,6 +502,13 @@ BOOL log_misc_init(struct config *config
+ return (log_open(log_misc_ptr, log_name));
+ }
+
++void log_misc_free()
++{
++ if ((log_misc_ptr == NIL) || (log_misc_ptr->fd < 0))
++ return;
++ log_free(log_misc_ptr);
++}
++
+ /* log_misc_ping() *******************************************************
+ *
+ * Reopen misc log file if required
+Index: prayer-1.0.18/prayer/log.h
+===================================================================
+--- prayer-1.0.18.orig/prayer/log.h 2007-03-10 19:58:04.067970999 +0100
++++ prayer-1.0.18/prayer/log.h 2007-03-10 19:58:11.648954314 +0100
+@@ -45,6 +45,8 @@ void log_record_peer_pid(struct log *log
+ BOOL
+ log_misc_init(struct config *config, char *progname, char *misc_log_name);
+
++void log_misc_free();
++
+ BOOL log_misc_ping();
+
+ void log_misc(char *fmt, ...);
Index: 1.1.0-2/debian/prayer-accountd.postinst
===================================================================
--- 1.1.0-2/debian/prayer-accountd.postinst (nonexistent)
+++ 1.1.0-2/debian/prayer-accountd.postinst (revision 37)
@@ -0,0 +1,44 @@
+#!/bin/sh
+# postinst script for prayer
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+#
+
+case "$1" in
+ configure)
+ dpkg-statoverride --list /var/run/prayer >/dev/null 2>&1 \
+ || dpkg-statoverride --update --add prayer root 2750 /var/run/prayer
+
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
Index: 1.1.0-2/debian/prayer-accountd.postrm
===================================================================
--- 1.1.0-2/debian/prayer-accountd.postrm (nonexistent)
+++ 1.1.0-2/debian/prayer-accountd.postrm (revision 37)
@@ -0,0 +1,41 @@
+#!/bin/sh
+# postrm script for prayer
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge)
+ [ -e /var/run/prayer/ ] || dpkg-statoverride --remove /var/run/prayer
+ ;;
+
+ remove|disappear|upgrade|abort-install|failed-upgrade|abort-upgrade)
+
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
Index: 1.1.0-2/debian/prayer.postinst
===================================================================
--- 1.1.0-2/debian/prayer.postinst (nonexistent)
+++ 1.1.0-2/debian/prayer.postinst (revision 37)
@@ -0,0 +1,49 @@
+#!/bin/sh
+# postinst script for prayer
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+#
+
+case "$1" in
+ configure)
+ adduser --quiet --system --no-create-home prayer
+
+ dpkg-statoverride --list /var/run/prayer >/dev/null 2>&1 \
+ || dpkg-statoverride --update --add prayer root 2750 /var/run/prayer
+
+ dpkg-statoverride --list /var/log/prayer >/dev/null 2>&1 \
+ || dpkg-statoverride --update --add prayer adm 2750 /var/log/prayer
+
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
Index: 1.1.0-2/debian/Config
===================================================================
--- 1.1.0-2/debian/Config (nonexistent)
+++ 1.1.0-2/debian/Config (revision 37)
@@ -0,0 +1,160 @@
+# $Cambridge: hermes/src/prayer/defaults/Config,v 1.5 2006/04/05 12:35:35 fanf2 Exp $
+#
+# Prayer - a Webmail Interface
+#
+# Copyright (c) University of Cambridge 2000 - 2002
+# See the file NOTICE for conditions of use and distribution.
+#
+# Conventional Configure file.
+
+SSL_ENABLE = true # SSL requires OpenSSL
+SESSION_CACHE_ENABLE = true # SSL session cache Requires Berkeley DB 3 or 4
+GZIP_ENABLE = true # Enable on the fly compression of pages
+LDAP_ENABLE = true # Add LDAP interface
+FENCE_ENABLE = false # Use Electric Fence to catch malloc problems
+DIRECT_ENABLE = false # Experimental. Leave this switched off...
+MUTEX_SEMAPHORE = true # Use SYSV mutexes rather than file locking
+
+# Following depend on the way that you have configured c-client
+CCLIENT_SSL_ENABLE = false # C-client was built with SSL support
+CCLIENT_PAM_ENABLE = false # C-client was built with PAM support
+CCLIENT_KERB_ENABLE = false # C-client was built with Kerberos support
+
+# Probably don't need the following
+ACCOUNTD_ENABLE = true # Only of use in Cambridge at the moment.
+ACCOUNTD_SSL_ENABLE = true # Enable SSL support in account management daemon
+ACCOUNTD_PAM_ENABLE = true # Enable PAM support in account management daemon
+ACCOUNTD_USE_BSD_PTY = true # Use Berkeley PTYs rather than Sys V PTYs
+
+############################################################################
+# Location of compiler
+CC = gcc
+# Location of make program (GNU make required)
+MAKE = make
+# Location of install program (GNU install or compatible required)
+INSTALL = install
+
+# Base Compiler options for GCC.
+#BASECFLAGS = -Wall -g
+#BASELDFLAGS = -g
+CFLAGS = -Wall -g -O2
+LDFLAGS = -g -O2
+BASE_LIBS = -lcrypt
+
+# Base Compiler options for Sun SUNWspro compiler
+#CC = /opt/SUNWspro/bin/cc
+#BASECFLAGS = -fast
+#BASELDFLAGS = -s
+#BASE_LIBS = -lcrypt -lxnet
+
+############################################################################
+# Location of various include files and libraries.
+############################################################################
+
+# Location of c-client library.
+#
+# Following works if we have a vanilla c-client installation at same level
+# as the prayer installation. Relies on a symbolic link ./prayer/c-client
+# which points to ../../imap/c-client. This just reduces the amount of
+# noise output on each line when building the package.
+#
+CCLIENT_DIR=/usr/include/c-client
+CCLIENT_INCLUDE=-I$(CCLIENT_DIR)
+CCLIENT_LIBS=-lc-client
+
+#
+# Following works with the mail/cclient port from FreeBSD
+#
+#CCLIENT_INCLUDE = -I/usr/local/include/c-client
+#CCLIENT_LIBS = -L/usr/local/lib -lc-client4
+#
+# Complication:
+# The FreeBSD port uses PAM and optionally SSL if built WITH_SSL=yes.
+#
+#CCLIENT_SSL_ENABLE = true
+#CCLIENT_KERB_ENABLE = true
+
+############################################################################
+
+# Electric fence (required if FENCE_ENABLE set)
+FENCE_INCLUDE=
+FENCE_LIBS=-lmcheck
+
+# Zlib (required if GZIP_ENABLE set)
+Z_INCLUDE =
+Z_LIBS = -lz
+
+# LDAP (required if LDAP_ENABLE set)
+LDAP_INCLUDE = -DLDAP_DEPRECATED
+LDAP_LIBS = -lldap
+
+# Pam (required if CCLIENT_PAM_ENABLE set)
+PAM_INCLUDE =
+PAM_LIBS = -lpam
+
+# Kerberos (required if CCLIENT_KERB_ENABLE set)
+KERB_INCLUDE =
+KERB_LIBS = -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err
+
+# SSL definitions (required if SSL_ENABLE or CCLIENT_SSL_ENABLE set)
+#
+# Following suitable for Linux and FreeBSD which have SSL preinstalled
+# (Header files from OpenSSL 0.9.7 want to include various Kerboros stuff)
+#
+SSL_INCLUDE=
+SSL_LIBS=-lssl -lcrypto
+OPENSSL=openssl
+
+# Following definitions suitable for our Sun systems.
+#SSL_BASE=/opt/local/ssl/current
+#SSL_INCLUDE=-I ${SSL_BASE}/include
+#SSL_LIBS=-L ${SSL_BASE}/lib -lssl -lcrypto
+#OPENSSL=${SSL_BASE}/bin/openssl
+
+# DB definitions (required if SESSION_CACHE_ENABLE set)
+#
+# Following suitable for Redhat Linux which has DB 3 preinstalled
+DB_INCLUDE=
+DB_LIBS=-ldb
+
+# Following suitable for FreeBSD with DB 4 package installed
+#DB_INCLUDE=-I/usr/local/include/db4
+#DB_LIBS=-L/usr/local/lib -ldb4
+
+############################################################################
+
+# Install location of prayer configuration and support files. The initial
+# config file runs prayer processes as user "prayer" and group "prayer".
+# If you are using SSL, the certificate file must be readable by RW_USER or
+# RW_GROUP. It is important that nothing else can read the certificate file.
+
+# Build root (used by Redhat RPM system)
+BROOT=$(CURDIR)/../debian/tmp
+
+# Directory, User and group for read-write files: log files, sockets etc
+VAR_PREFIX = /var/lib/prayer
+RW_USER = root
+RW_GROUP = root
+
+# Root Directory, User and group for read-only configuration files.
+# Default configuration and permissions does not allow prayer user to
+# update prayer configuration file.
+
+PREFIX = /usr/share/prayer
+RO_USER = root
+RO_GROUP = root
+
+# Access permissions for general objects (wrt above users and groups)
+PUBLIC_EXEC = 0755
+PUBLIC_DIR = 0755
+PUBLIC_FILE = 0644
+
+# Access permissions for private objects (wrt above users and groups)
+PRIVATE_EXEC = 0750
+PRIVATE_DIR = 0750
+PRIVATE_FILE = 0640
+
+# Location of configuration files and binaries
+PRAYER_CONFIG_FILE = /etc/prayer/prayer.cf
+BIN_DIR = /usr/sbin
+ACCOUNTD_CONFIG_FILE = /etc/prayer/accountd.cf
Index: 1.1.0-2/debian/copyright
===================================================================
--- 1.1.0-2/debian/copyright (nonexistent)
+++ 1.1.0-2/debian/copyright (revision 37)
@@ -0,0 +1,83 @@
+This package was debianized by Magnus Holmgren <magnus@kibibyte.se> on
+Tue, 24 Oct 2006 21:08:34 +0200.
+
+It was downloaded from http://www-uxsup.csx.cam.ac.uk/~dpc22/prayer/
+
+Upstream author/maintainer: David Carter <dpc22@cam.ac.uk> et al.
+
+The Debian packaging is © 2006-2008 Magnus Holmgren <holmgren@debian.org>
+and is licensed under the GPL.
+
+The original licence is as follows (from the file NOTICE in the upstream
+distribution); the GPL should be in /usr/share/common-licenses/GPL on a debian
+system.
+
+
+The Prayer Webmail Interface
+----------------------------
+
+Copyright (c) 2002 University of Cambridge
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+In addition, for the avoidance of any doubt, permission is granted to
+link this program with OpenSSL or any other library package.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
+USA
+
+INCORPORATED CODE
+-----------------
+
+Code implementing the SSL session cache has been adapted from code used by
+the Cyrus IMAP server, which is distributed under the following copyright:
+
+/* Copyright (c) 2000 Carnegie Mellon University. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The name "Carnegie Mellon University" must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission. For permission or any other legal
+ * details, please contact
+ * Office of Technology Transfer
+ * Carnegie Mellon University
+ * 5000 Forbes Avenue
+ * Pittsburgh, PA 15213-3890
+ * (412) 268-4387, fax: (412) 268-7395
+ * tech-transfer@andrew.cmu.edu
+ *
+ * 4. Redistributions of any form whatsoever must retain the following
+ * acknowledgment:
+ * "This product includes software developed by Computing Services
+ * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
+ *
+ * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
+ * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
Index: 1.1.0-2/debian/README.Debian
===================================================================
--- 1.1.0-2/debian/README.Debian (nonexistent)
+++ 1.1.0-2/debian/README.Debian (revision 37)
@@ -0,0 +1,31 @@
+prayer for Debian
+-----------------
+
+The Debian version of Prayer is built with SSL support with session
+cache using libdb4.3, gzip Content-Transfer-Encoding, LDAP, and System
+V mutex support. The previous version, which was only uloaded to the
+experimental distribution, was heavily patched to add UTF-8 and IPv6
+support among other things. All that has been incorporated and
+improved by upstream in 1.1.0. The remaining patches concern changes
+to default configuration regarding directory structure, and minor
+cosmetic changes to the folder list.
+
+Quirks:
+
+ * If your IMAP server supports STARTTLS, then Prayer (actually the
+ libc-client IMAP client library) will use it automatically. To
+ disable, append "/notls" to the IMAP server name(s) specified with
+ imapd_server. To force TLS, append "/tls". Make sure that the
+ server name you specify for imapd_server in prayer.cf matches the
+ Common Name in the SSL certificate; otherwise libc-client will
+ refuse to accept it. To disable that check, use "/novalidate-cert".
+ Other switches you can append are listed in the file naming.txt.gz
+ in the documentation directory of the C-client library.
+
+ * If your IMAP server is Dovecot (or any of a number of others,
+ probably), then you must change prefs_folder_name to something not
+ containing a dot. Unfortunately this means that the preference
+ folder will be fully visible.
+
+ -- Magnus Holmgren <holmgren@debian.org>, Tue, 13 May 2008 22:27:11 +0200
+
Index: 1.1.0-2/debian/compat
===================================================================
--- 1.1.0-2/debian/compat (nonexistent)
+++ 1.1.0-2/debian/compat (revision 37)
@@ -0,0 +1 @@
+5
Index: 1.1.0-2/debian/prayer.default
===================================================================
--- 1.1.0-2/debian/prayer.default (nonexistent)
+++ 1.1.0-2/debian/prayer.default (revision 37)
@@ -0,0 +1,11 @@
+# Defaults for prayer initscript
+# sourced by /etc/init.d/prayer
+# installed at /etc/default/prayer by the maintainer scripts
+
+# This is a POSIX shell fragment
+
+# Change to one to enable prayer after editing /etc/prayer/prayer.cf
+ENABLED=0
+
+# Options. You probably won't need any.
+DAEMON_OPTS=""
Index: 1.1.0-2/debian/prayer-accountd.docs
===================================================================
--- 1.1.0-2/debian/prayer-accountd.docs (nonexistent)
+++ 1.1.0-2/debian/prayer-accountd.docs (revision 37)
@@ -0,0 +1,8 @@
+docs/ACCOUNTD
+docs/DESIGN
+docs/DONE-OLD
+docs/FEATURES
+docs/NOTICE
+docs/README
+docs/SECURITY
+docs/TODO
Index: 1.1.0-2/debian/prayer-session.8.dbk
===================================================================
--- 1.1.0-2/debian/prayer-session.8.dbk (nonexistent)
+++ 1.1.0-2/debian/prayer-session.8.dbk (revision 37)
@@ -0,0 +1,158 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+<!--
+
+Process this file with an XSLT processor: `xsltproc \
+-''-nonet /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xslb manpage.dbk'. A manual page
+<package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A
+typical entry in a Makefile or Makefile.am is:
+
+DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xsl
+XP=xsltproc -''-nonet
+
+manpage.1: manpage.dbk
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The
+XSL files are in docbook-xsl. Please remember that if you
+create the nroff version in one of the debian/rules file
+targets (such as build), you will need to include xsltproc
+and docbook-xsl in your Build-Depends control field.
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>Magnus</firstname>">
+ <!ENTITY dhsurname "<surname>Holmgren</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>oktober 24, 2006</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>8</manvolnum>">
+ <!ENTITY dhemail "<email>magnus@kibibyte.se</email>">
+ <!ENTITY dhusername "Magnus Holmgren">
+ <!ENTITY dhucpackage "<refentrytitle>PRAYER</refentrytitle>">
+ <!ENTITY dhpackage "prayer-session">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2006</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>a fast stand-alone webmail server</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option><replaceable>OPTION</replaceable></option></arg>...</cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> command.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>--config-file <replaceable>filename</replaceable></option>
+ </term>
+ <listitem>
+ <para>Define prayer config file (Overrides compilation default and PRAYER_CONFIG_FILE environment variable).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--config-option <replaceable>option</replaceable>=<replaceable>value</replaceable></option>
+ </term>
+ <listitem>
+ <para>Override single configuration option.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--foreground</option>
+ </term>
+ <listitem>
+ <para>Run single threaded server in foreground.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--debug</option>
+ </term>
+ <listitem>
+ <para>Enable debugging.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show option summary.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>prayer(8), prayer.cf(5).</para>
+
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
Index: 1.1.0-2/debian/prayer.docs
===================================================================
--- 1.1.0-2/debian/prayer.docs (nonexistent)
+++ 1.1.0-2/debian/prayer.docs (revision 37)
@@ -0,0 +1,11 @@
+docs/CMD_LINE
+docs/DESIGN
+docs/DONE-OLD
+docs/FEATURES
+docs/ICONLIST
+docs/LOGS
+docs/NOTICE
+docs/README
+docs/SECURITY
+docs/TODO
+docs/URL_OPTIONS
Index: 1.1.0-2/debian/rules
===================================================================
--- 1.1.0-2/debian/rules (nonexistent)
+++ 1.1.0-2/debian/rules (revision 37)
@@ -0,0 +1,24 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses cdbs. Originaly written by Robert Millan.
+# This file is public domain.
+
+DEB_AUTO_CLEANUP_RCS := yes
+
+# Add here any variable or target overrides you need
+
+makebuilddir/prayer::
+ cp debian/Config .
+
+include /usr/share/cdbs/1/class/makefile.mk
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/rules/patchsys-quilt.mk
+
+#DEB_MAKE_INVOKE = $(DEB_MAKE_ENVVARS) make
+DEB_MAKE_INSTALL_TARGET = install DESTDIR=$(CURDIR)/debian/tmp
+DEB_INSTALL_CHANGELOGS_ALL = docs/DONE
+DEB_INSTALL_DOCS_ALL = -XCVS
+DEB_DH_INSTALL_ARGS = -XCVS
+DEB_DH_INSTALL_SOURCEDIR = debian/tmp
+
+clean::
+ rm -f Config
/1.1.0-2/debian/rules
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: 1.1.0-2/debian/prayer-accountd.dirs
===================================================================
--- 1.1.0-2/debian/prayer-accountd.dirs (nonexistent)
+++ 1.1.0-2/debian/prayer-accountd.dirs (revision 37)
@@ -0,0 +1 @@
+/var/run/prayer
Index: 1.1.0-2/debian/prayer.logrotate
===================================================================
--- 1.1.0-2/debian/prayer.logrotate (nonexistent)
+++ 1.1.0-2/debian/prayer.logrotate (revision 37)
@@ -0,0 +1,8 @@
+/var/log/prayer/prayer /var/log/prayer/prayer_session /var/log/prayer/access_log /var/log/prayer/session_log {
+ rotate 28
+ daily
+ compress
+ delaycompress
+ missingok
+ notifempty
+}
Index: 1.1.0-2/debian/prayer.dirs
===================================================================
--- 1.1.0-2/debian/prayer.dirs (nonexistent)
+++ 1.1.0-2/debian/prayer.dirs (revision 37)
@@ -0,0 +1,2 @@
+var/run/prayer
+var/log/prayer
Index: 1.1.0-2/debian/prayer-accountd.init
===================================================================
--- 1.1.0-2/debian/prayer-accountd.init (nonexistent)
+++ 1.1.0-2/debian/prayer-accountd.init (revision 37)
@@ -0,0 +1,71 @@
+#!/bin/sh
+#
+### BEGIN INIT INFO
+# Provides: prayer-accountd
+# Required-Start:
+# Required-Stop:
+# Should-Start: $local_fs
+# Should-Stop: $local_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Prayer account helper daemon
+# Description: Lets users change passwords, manage filters and other things not supported by IMAP itself
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/prayer-accountd
+PIDFILE=/var/run/prayer/accountd.pid
+DESC="Prayer account helper server"
+
+test -x $DAEMON || exit 0
+
+egrep -iq "^[[:space:]]*accountd_port[[:space:]]*=[[:space:]]*[[:digit:]]+[[:space:]]*$" /etc/prayer/accountd.cf || exit 0
+
+. /lib/lsb/init-functions
+
+# Include prayer defaults if available
+if [ -f /etc/default/prayer-accountd ] ; then
+ . /etc/default/prayer-accountd
+fi
+
+set +e
+
+start() {
+ log_daemon_msg "Starting $DESC" "accountd"
+ start-stop-daemon --start --background --make-pidfile --pidfile $PIDFILE \
+ --exec $DAEMON -- $DAEMON_OPTS
+ log_end_msg $?
+}
+
+stop() {
+ log_daemon_msg "Stopping $DESC"
+ if [ -f "$PIDFILE" ]; then
+ start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
+ log_progress_msg "accountd"
+ fi
+ rm -f "$PIDFILE"
+ log_end_msg 0
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+
+ stop)
+ stop
+ ;;
+
+ restart|force-reload)
+ stop
+ start
+ ;;
+ *)
+ N=/etc/init.d/prayer-accountd
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ log_failure_msg "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
Index: 1.1.0-2/debian/prayer.init
===================================================================
--- 1.1.0-2/debian/prayer.init (nonexistent)
+++ 1.1.0-2/debian/prayer.init (revision 37)
@@ -0,0 +1,89 @@
+#!/bin/sh
+#
+### BEGIN INIT INFO
+# Provides: prayer
+# Required-Start:
+# Required-Stop:
+# Should-Start: $local_fs
+# Should-Stop: $local_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Prayer init script
+# Description: Init script for prayer services
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+FRONTEND_DAEMON=/usr/sbin/prayer
+SESSION_DAEMON=/usr/sbin/prayer-session
+FRONTEND_PIDFILE=/var/run/prayer/prayer.pid
+SESSION_PIDFILE=/var/run/prayer/prayer-session.pid
+DESC="webmail server"
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+ENABLED=0
+
+# Include prayer defaults if available
+if [ -f /etc/default/prayer ] ; then
+ . /etc/default/prayer
+fi
+
+set +e
+
+start() {
+ if [ "$ENABLED" = "0" ]; then
+ echo "Prayer is disabled. Please set ENABLED=1 in /etc/default/prayer"
+ echo "after adapting /etc/prayer/prayer.cf to your needs."
+ exit 0
+ fi
+
+ log_daemon_msg "Starting $DESC" "prayer"
+ start-stop-daemon --start --pidfile $FRONTEND_PIDFILE \
+ --exec $FRONTEND_DAEMON -- $DAEMON_OPTS
+ log_end_msg $?
+}
+
+stop() {
+ log_daemon_msg "Stopping $DESC"
+ if [ -f "$SESSION_PIDFILE" ]; then
+ start-stop-daemon --stop --quiet --oknodo --pidfile $SESSION_PIDFILE
+ log_progress_msg "prayer-session"
+ fi
+ if [ -f "$FRONTEND_PIDFILE" ]; then
+ start-stop-daemon --stop --quiet --oknodo --pidfile $FRONTEND_PIDFILE
+ start-stop-daemon --stop --quiet --oknodo --exec $FRONTEND_DAEMON
+ log_progress_msg "prayer"
+ fi
+ rm -f "$FRONTEND_PIDFILE" "$SESSION_PIDFILE"
+ log_end_msg 0
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+
+ stop)
+ stop
+ ;;
+
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart".
+ #
+ stop
+ start
+ ;;
+ *)
+ N=/etc/init.d/prayer
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ log_failure_msg "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
Index: 1.1.0-2/debian/prayer-accountd.install
===================================================================
--- 1.1.0-2/debian/prayer-accountd.install (nonexistent)
+++ 1.1.0-2/debian/prayer-accountd.install (revision 37)
@@ -0,0 +1,2 @@
+usr/sbin/prayer-accountd
+etc/prayer/accountd.cf
Index: 1.1.0-2/debian/watch
===================================================================
--- 1.1.0-2/debian/watch (nonexistent)
+++ 1.1.0-2/debian/watch (revision 37)
@@ -0,0 +1,9 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+ftp://ftp.csx.cam.ac.uk/pub/software/email/prayer/prayer-(.*)\.tar\.gz debian uupdate
Index: 1.1.0-2/debian/prayer.8.dbk
===================================================================
--- 1.1.0-2/debian/prayer.8.dbk (nonexistent)
+++ 1.1.0-2/debian/prayer.8.dbk (revision 37)
@@ -0,0 +1,178 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+<!--
+
+Process this file with an XSLT processor: `xsltproc \
+-''-nonet /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xslb manpage.dbk'. A manual page
+<package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A
+typical entry in a Makefile or Makefile.am is:
+
+DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xsl
+XP=xsltproc -''-nonet
+
+manpage.1: manpage.dbk
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The
+XSL files are in docbook-xsl. Please remember that if you
+create the nroff version in one of the debian/rules file
+targets (such as build), you will need to include xsltproc
+and docbook-xsl in your Build-Depends control field.
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>Magnus</firstname>">
+ <!ENTITY dhsurname "<surname>Holmgren</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>oktober 24, 2006</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>8</manvolnum>">
+ <!ENTITY dhemail "<email>magnus@kibibyte.se</email>">
+ <!ENTITY dhusername "Magnus Holmgren">
+ <!ENTITY dhucpackage "<refentrytitle>PRAYER</refentrytitle>">
+ <!ENTITY dhpackage "prayer">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2006</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>a fast stand-alone webmail server</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option><replaceable>OPTION</replaceable></option></arg>... -- <arg><option><replaceable>PRAYER-SESSION-OPTION</replaceable></option></arg> ...
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ <application>Info</application> format; see below.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>--config-file <replaceable>filename</replaceable></option>
+ </term>
+ <listitem>
+ <para>Define prayer config file (Overrides compilation default and PRAYER_CONFIG_FILE environment variable).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--config-option <replaceable>option</replaceable>=<replaceable>value</replaceable></option>
+ </term>
+ <listitem>
+ <para>Override single configuration option.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--foreground</option>
+ </term>
+ <listitem>
+ <para>Run single threaded server in foreground.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--disable-prefork</option>
+ </term>
+ <listitem>
+ <para>Run as simple fork()/exec() daemon.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--disable-session</option>
+ </term>
+ <listitem>
+ <para>Don't start up prayer-session server.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--</option>
+ </term>
+ <listitem>
+ <para>End of prayer options: remaining options will be passed to prayer-session server process.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show option summary.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>prayer-session(8), prayer.cf(5).</para>
+
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
Index: 1.1.0-2/debian/prayer.install
===================================================================
--- 1.1.0-2/debian/prayer.install (nonexistent)
+++ 1.1.0-2/debian/prayer.install (revision 37)
@@ -0,0 +1,10 @@
+usr/sbin/prayer
+usr/sbin/prayer-session
+usr/sbin/prayer-chroot
+usr/sbin/prayer-db-prune
+usr/sbin/prayer-sem-prune
+usr/sbin/prayer-ssl-prune
+usr/share/prayer
+etc/prayer/prayer.cf
+etc/prayer/motd.html
+etc/prayer/welcome.html
Index: 1.1.0-2/debian
===================================================================
--- 1.1.0-2/debian (nonexistent)
+++ 1.1.0-2/debian (revision 37)
/1.1.0-2/debian
Property changes:
Added: mergeWithUpstream
## -0,0 +1 ##
+1
\ No newline at end of property
Index: 1.1.0-1/debian/copyright
===================================================================
--- 1.1.0-1/debian/copyright (nonexistent)
+++ 1.1.0-1/debian/copyright (revision 37)
@@ -0,0 +1,83 @@
+This package was debianized by Magnus Holmgren <magnus@kibibyte.se> on
+Tue, 24 Oct 2006 21:08:34 +0200.
+
+It was downloaded from http://www-uxsup.csx.cam.ac.uk/~dpc22/prayer/
+
+Upstream author/maintainer: David Carter <dpc22@cam.ac.uk> et al.
+
+The Debian packaging is © 2006-2008 Magnus Holmgren <holmgren@debian.org>
+and is licensed under the GPL.
+
+The original licence is as follows (from the file NOTICE in the upstream
+distribution); the GPL should be in /usr/share/common-licenses/GPL on a debian
+system.
+
+
+The Prayer Webmail Interface
+----------------------------
+
+Copyright (c) 2002 University of Cambridge
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+In addition, for the avoidance of any doubt, permission is granted to
+link this program with OpenSSL or any other library package.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
+USA
+
+INCORPORATED CODE
+-----------------
+
+Code implementing the SSL session cache has been adapted from code used by
+the Cyrus IMAP server, which is distributed under the following copyright:
+
+/* Copyright (c) 2000 Carnegie Mellon University. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The name "Carnegie Mellon University" must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission. For permission or any other legal
+ * details, please contact
+ * Office of Technology Transfer
+ * Carnegie Mellon University
+ * 5000 Forbes Avenue
+ * Pittsburgh, PA 15213-3890
+ * (412) 268-4387, fax: (412) 268-7395
+ * tech-transfer@andrew.cmu.edu
+ *
+ * 4. Redistributions of any form whatsoever must retain the following
+ * acknowledgment:
+ * "This product includes software developed by Computing Services
+ * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
+ *
+ * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
+ * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
Index: 1.1.0-1/debian/patches/series
===================================================================
--- 1.1.0-1/debian/patches/series (nonexistent)
+++ 1.1.0-1/debian/patches/series (revision 37)
@@ -0,0 +1,3 @@
+folder_list_cosmetics.patch
+includes.patch
+makefile_install_config.patch
Index: 1.1.0-1/debian/patches/folder_list_cosmetics.patch
===================================================================
--- 1.1.0-1/debian/patches/folder_list_cosmetics.patch (nonexistent)
+++ 1.1.0-1/debian/patches/folder_list_cosmetics.patch (revision 37)
@@ -0,0 +1,30 @@
+--- a/prayer/cmd_folders.c
++++ b/prayer/cmd_folders.c
+@@ -45,10 +45,10 @@ generate_folder_line(struct session *ses
+ html_session_bprintf(session, b, "<a href=\"", "\">",
+ "folders/toggle/%s", name);
+ if (fi->expanded)
+- html_icon(session, b, "down.gif", "[Collapse]");
++ html_icon(session, b, "down.gif", "[-]&nbsp;");
+ else
+- html_icon(session, b, "right.gif", "[Expand]");
+- bputs(b, "</a>&nbsp;");
++ html_icon(session, b, "right.gif", "[+]&nbsp;");
++ bputs(b, "</a>");
+ } else
+ html_icon(session, b, "blank.gif", "&nbsp;&nbsp;&nbsp;&nbsp;");
+
+--- a/prayer/cmd_favourites.c
++++ b/prayer/cmd_favourites.c
+@@ -77,9 +77,9 @@ generate_folder_line(struct session *ses
+ html_session_bprintf(session, b, "<a href=\"", "\">",
+ "favourites/toggle/%s", name);
+ if (fi->expanded)
+- html_icon(session, b, "down.gif", "[Collapse]");
++ html_icon(session, b, "down.gif", "[-]&nbsp;");
+ else
+- html_icon(session, b, "right.gif", "[Expand]");
++ html_icon(session, b, "right.gif", "[+]&nbsp;");
+ bputs(b, "</a>");
+ } else
+ html_icon(session, b, "blank.gif", "&nbsp;&nbsp;&nbsp;&nbsp;");
Index: 1.1.0-1/debian/patches/includes.patch
===================================================================
--- 1.1.0-1/debian/patches/includes.patch (nonexistent)
+++ 1.1.0-1/debian/patches/includes.patch (revision 37)
@@ -0,0 +1,22 @@
+--- prayer-1.1.0.orig/prayer/prayer_session.h
++++ prayer-1.1.0/prayer/prayer_session.h
+@@ -27,7 +27,7 @@
+
+ extern int errno; /* just in case */
+
+-#include "c-client.h"
++#include <c-client.h>
+
+ #define PRAYER_FULL_HDRS
+ #include "prayer_shared.h"
+--- prayer-1.1.0.orig/prayer/cdb.c
++++ prayer-1.1.0/prayer/cdb.c
+@@ -63,7 +63,7 @@
+ #include <unistd.h>
+ #include <sys/stat.h>
+
+-#include "mail.h"
++#include "common.h"
+ #include "cdb.h"
+
+ #define CDB_HASH_SPLIT 256 /* num pieces the hash table is split into */
Index: 1.1.0-1/debian/patches/makefile_install_config.patch
===================================================================
--- 1.1.0-1/debian/patches/makefile_install_config.patch (nonexistent)
+++ 1.1.0-1/debian/patches/makefile_install_config.patch (revision 37)
@@ -0,0 +1,251 @@
+--- prayer-1.1.0.orig/files/etc/prayer-accountd.cf
++++ prayer-1.1.0/files/etc/prayer-accountd.cf
+@@ -8,6 +8,8 @@
+ # Default accountd.cf file suitable for RedHat Linux only.
+ # See distribution for some sample files for FreeBSD and Solaris
+
++accountd_port = 145
++
+ msforward_name = ".MSforward"
+ forward_name = ".forward"
+ aliases_name = "vacation.aliases"
+--- prayer-1.1.0.orig/files/Makefile
++++ prayer-1.1.0/files/Makefile
+@@ -53,41 +53,44 @@ distclean:
+ install-cert:
+ if [ -f certs/prayer.pem ]; then \
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) \
+- -m $(PRIVATE_FILE) certs/prayer.pem ${BROOT}${PREFIX}/certs; \
++ -m $(PRIVATE_FILE) certs/prayer.pem ${DESTDIR}${PREFIX}/certs; \
+ fi
+
+ install-config: etc/prayer.cf
+ $(INSTALL) -D -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_FILE) \
+- etc/prayer.cf ${BROOT}${PRAYER_CONFIG_FILE}
++ etc/prayer.cf ${DESTDIR}${PRAYER_CONFIG_FILE}
+
+ install-aconfig:
+ $(INSTALL) -D -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_FILE) \
+- etc/prayer-accountd.cf ${BROOT}${ACCOUNTD_CONFIG_FILE}
++ etc/prayer-accountd.cf ${DESTDIR}${ACCOUNTD_CONFIG_FILE}
+
+ install-motd:
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_FILE) \
+- etc/motd.html ${BROOT}${PREFIX}/etc
++ etc/motd.html ${DESTDIR}/etc/prayer
+
+ install-welcome:
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_FILE) \
+- etc/welcome.html ${BROOT}${PREFIX}/etc
++ etc/welcome.html ${DESTDIR}/etc/prayer
+
+ install:
+- PREFIX=$(BROOT)$(PREFIX) VAR_PREFIX=$(BROOT)$(VAR_PREFIX) \
++ ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${DESTDIR}${PREFIX}
++ ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${DESTDIR}/etc/prayer
++
++ PREFIX=$(DESTDIR)$(PREFIX) VAR_PREFIX=$(DESTDIR)$(VAR_PREFIX) \
+ RO_USER=$(RO_USER) RO_GROUP=$(RO_GROUP) \
+ RW_USER=$(RW_USER) RW_GROUP=$(RW_GROUP) \
+ PUBLIC_DIR=$(PUBLIC_DIR) PRIVATE_DIR=$(PRIVATE_DIR) \
+ PUBLIC_FILE=$(PUBLIC_FILE) PRIVATE_FILE=$(PRIVATE_FILE) \
+ PUBLIC_EXEC=$(PUBLIC_FILE) PRIVATE_EXEC=$(PRIVATE_EXEC) \
+- BIN_DIR=$(BIN_DIR) INSTALL=$(INSTALL) \
++ BIN_DIR=$(DESTDIR)$(BIN_DIR) INSTALL=$(INSTALL) \
+ ./install.sh
+- if [ ! -f $(BROOT)$(PREFIX)/certs/prayer.pem ]; then $(MAKE) install-cert; fi
+- if [ ! -f $(BROOT)$(PRAYER_CONFIG_FILE) ]; then $(MAKE) install-config; fi
+- if [ ! -f $(BROOT)$(ACCOUNTD_CONFIG_FILE) ]; then $(MAKE) install-aconfig; fi
+- if [ ! -f $(BROOT)$(PREFIX)/etc/motd.html ]; then $(MAKE) install-motd; fi
+- if [ ! -f $(BROOT)$(PREFIX)/etc/welcome.html ]; then $(MAKE) install-welcome; fi
++# if [ ! -f $(DESTDIR)$(PREFIX)/certs/prayer.pem ]; then $(MAKE) install-cert; fi
++ if [ ! -f $(DESTDIR)$(PRAYER_CONFIG_FILE) ]; then $(MAKE) install-config; fi
++ if [ ! -f $(DESTDIR)$(ACCOUNTD_CONFIG_FILE) ]; then $(MAKE) install-aconfig; fi
++ if [ ! -f $(DESTDIR)/etc/prayer/motd.html ]; then $(MAKE) install-motd; fi
++ if [ ! -f $(DESTDIR)/etc/prayer/welcome.html ]; then $(MAKE) install-welcome; fi
+
+ redhat-install-init.d:
+ install -D -o root -g root -m 755 \
+- ./init.d/prayer $(BROOT)/etc/rc.d/init.d/prayer
++ ./init.d/prayer $(DESTDIR)/etc/rc.d/init.d/prayer
+ #chkconfig prayer --level 2345 on
+--- prayer-1.1.0.orig/files/install.sh
++++ prayer-1.1.0/files/install.sh
+@@ -4,77 +4,6 @@
+
+ PATH=/bin:/sbin/:/usr/bin:/usr/sbin
+
+-error=0
+-
+-if [ "x$PREFIX" = "x" ]; then
+- echo 'PREFIX not defined'
+- error=1
+-fi
+-
+-if [ "x$VAR_PREFIX" = "x" ]; then
+- echo 'VAR_PREFIX not defined'
+- error=1
+-fi
+-
+-if [ "x$RO_USER" = "x" ]; then
+- echo 'RO_USER not defined'
+- error=1
+-fi
+-
+-if [ "x$RO_GROUP" = "x" ]; then
+- echo 'RO_GROUP not defined'
+- error=1
+-fi
+-
+-if [ "x$RW_USER" = "x" ]; then
+- echo 'RW_USER not defined'
+- error=1
+-fi
+-
+-if [ "x$RW_GROUP" = "x" ]; then
+- echo 'RW_GROUP not defined'
+- error=1
+-fi
+-
+-if [ "x$PUBLIC_DIR" = "x" ]; then
+- echo 'PUBLIC_DIR not defined'
+- error=1
+-fi
+-
+-if [ "x$PRIVATE_DIR" = "x" ]; then
+- echo 'PRIVATE_DIR not defined'
+- error=1
+-fi
+-
+-if [ "x$BIN_DIR" = "x" ]; then
+- echo 'BIN_DIR not defined'
+- error=1
+-fi
+-
+-if [ $error != 0 ]; then
+- exit 1
+-fi
+-
+-if [ ! -d ${VAR_PREFIX} -a `whoami` = "root" ]; then
+- ${INSTALL} -d -o ${RW_USER} -g ${RW_GROUP} -m ${PRIVATE_DIR} ${VAR_PREFIX}
+-fi
+-
+-if [ ! -d ${PREFIX} ]; then
+- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${PREFIX}
+-fi
+-
+-if [ ! -d ${PREFIX}/etc ]; then
+- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${PREFIX}/etc
+-fi
+-
+-if [ ! -d ${PREFIX}/certs ]; then
+- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PRIVATE_DIR} ${PREFIX}/certs
+-fi
+-
+-if [ ! -d ${BIN_DIR} ]; then
+- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${BIN_DIR}
+-fi
+-
+ for i in help icons
+ do
+ if [ -d "${PREFIX}/${i}" ]; then
+--- prayer-1.1.0.orig/files/etc/prayer.cf.SRC
++++ prayer-1.1.0/files/etc/prayer.cf.SRC
+@@ -20,7 +20,7 @@ var_prefix = "__VAR_PREFIX__"
+ # User ID to run as if we start off as root
+ prayer_user = "prayer"
+ # Group ID to run as if we start off as root
+-prayer_group = "prayer"
++prayer_group = "nogroup"
+
+ # Run prayer as background process.
+ # TRUE => will return as soon as valid configuration is found.
+@@ -428,14 +428,14 @@ bin_dir = "__BIN_DIR__"
+
+ # Various directories used by the running system
+ # Logs stored in $log_dir
+-log_dir = "$var_prefix/logs"
++log_dir = "/var/log/prayer"
+
+ # $lock_dir used for interlocking between prayer processes
+-lock_dir = "$var_prefix/locks"
++lock_dir = "/var/lock"
+
+ # $socket_dir is location for unix domain sockets which connect frontend
+ # to backend in proxy mode of operation.
+-socket_dir = "$var_prefix/sockets"
++socket_dir = "/var/run/prayer"
+
+ # Split socket directory into 64 subdirs keyed on first letter of sessionID
+ # Code provides compatibility in both directions: can switch back and forward
+@@ -446,14 +446,14 @@ socket_split_dir = TRUE
+ init_socket_name = init
+
+ # $ssl_session_dir is location for SSL session cache
+-ssl_session_dir = "$var_prefix/ssl_scache"
++ssl_session_dir = "/var/run/prayer/ssl_scache"
+
+ # Location for temporary files e.g; attachments and folders in transist
+ # during upload and download operation. Core files also end up here
+-tmp_dir = "$var_prefix/tmp"
++tmp_dir = "/tmp"
+
+ # Location for PID files for prayer and prayer-session master processes.
+-pid_dir = "$var_prefix/pid"
++pid_dir = "/var/run/prayer"
+
+ # Interface to Hermes finger database
+ #lookup_rpasswd = "/data/finger/rpasswd.cdb"
+@@ -614,7 +614,7 @@ sent_mail_folder = "sent-mail"
+ # default_domain = "<valid mail domain>"
+
+ # Language for ispell.
+-ispell_language = "british"
++ispell_language = "american"
+
+ # Size of small and large compose windows
+ small_cols = 80
+--- prayer-1.1.0.orig/prayer/Makefile
++++ prayer-1.1.0/prayer/Makefile
+@@ -102,8 +102,9 @@ ifeq ($(strip $(CCLIENT_KERB_ENABLE)), t
+ SESSION_LIBS += $(KERB_LIBS)
+ endif
+
+-CFLAGS = $(BASECFLAGS) $(COMMON_SSL_INCLUDE) $(CCLIENT_INCLUDE)
+-LDFLAGS = $(BASELDFLAGS)
++CFLAGS = $(BASECFLAGS)
++override CFLAGS += $(COMMON_SSL_INCLUDE) $(CCLIENT_INCLUDE)
++LDFLAGS = $(BASELDFLAGS) -Wl,--as-needed
+
+ SHARED_OBJS = \
+ pool.o list.o assoc.o memblock.o buffer.o string.o config.o user_agent.o \
+@@ -175,21 +176,21 @@ clean:
+
+ install: all
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_DIR) -d \
+- $(BROOT)$(BIN_DIR)
++ $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer $(BROOT)$(BIN_DIR)
++ prayer $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-chroot $(BROOT)$(BIN_DIR)
++ prayer-chroot $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-session $(BROOT)$(BIN_DIR)
++ prayer-session $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-ssl-prune $(BROOT)$(BIN_DIR)
++ prayer-ssl-prune $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-sem-prune $(BROOT)$(BIN_DIR)
++ prayer-sem-prune $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-db-prune $(BROOT)$(BIN_DIR)
++ prayer-db-prune $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-cyclog $(BROOT)$(BIN_DIR)
++ prayer-cyclog $(DESTDIR)$(BIN_DIR)
+
+ prayer: $(PRAYER_OBJS) prayer_main.o
+ $(CC) $(LDFLAGS) -o prayer $(PRAYER_OBJS) prayer_main.o $(PRAYER_LIBS)
Index: 1.1.0-1/debian/patches/sighandling.patch
===================================================================
--- 1.1.0-1/debian/patches/sighandling.patch (nonexistent)
+++ 1.1.0-1/debian/patches/sighandling.patch (revision 37)
@@ -0,0 +1,75 @@
+Index: prayer-1.0.18/prayer/os.h
+===================================================================
+--- prayer-1.0.18.orig/prayer/os.h 2007-03-10 19:56:40.357114747 +0100
++++ prayer-1.0.18/prayer/os.h 2007-03-10 19:57:56.266959171 +0100
+@@ -44,6 +44,8 @@ BOOL os_signal_alarm_clear(void);
+
+ BOOL os_signal_init();
+
++BOOL os_signal_hup_term_init(void (*hup_fn) (), void (*term_fn) ());
++
+ BOOL os_lock_exclusive(int fd);
+
+ BOOL os_lock_shared(int fd);
+Index: prayer-1.0.18/prayer/session_server.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/session_server.c 2007-03-10 19:56:40.647152355 +0100
++++ prayer-1.0.18/prayer/session_server.c 2007-03-10 19:57:56.326966954 +0100
+@@ -355,6 +355,7 @@ BOOL session_server(struct config *confi
+ fd_set readfds;
+ pid_t child;
+ unsigned long timeout = 0L;
++ BOOL sighup_seen = NIL;
+
+ if (config->direct_enable) {
+ ssl_portlist
+@@ -420,6 +421,18 @@ BOOL session_server(struct config *confi
+ } else {
+ rc = select(maxfd + 1, &readfds, NIL, NIL, NIL);
+ }
++ if (sighup_seen) {
++ log_misc("SIGHUP received - reexec daemon");
++ close(sockfd);
++ if (config->direct_enable) {
++ /* Find some way to pass this information along
++ to the new invocation somehow later. */
++ portlist_close_all(ssl_portlist);
++ portlist_close_all(plain_portlist);
++ }
++ log_misc_free();
++ return (T);
++ }
+ }
+ while ((rc < 0) && (errno == EINTR));
+
+Index: prayer-1.0.18/prayer/log.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/log.c 2007-03-10 19:58:03.667919109 +0100
++++ prayer-1.0.18/prayer/log.c 2007-03-10 19:58:11.688959503 +0100
+@@ -502,6 +502,13 @@ BOOL log_misc_init(struct config *config
+ return (log_open(log_misc_ptr, log_name));
+ }
+
++void log_misc_free()
++{
++ if ((log_misc_ptr == NIL) || (log_misc_ptr->fd < 0))
++ return;
++ log_free(log_misc_ptr);
++}
++
+ /* log_misc_ping() *******************************************************
+ *
+ * Reopen misc log file if required
+Index: prayer-1.0.18/prayer/log.h
+===================================================================
+--- prayer-1.0.18.orig/prayer/log.h 2007-03-10 19:58:04.067970999 +0100
++++ prayer-1.0.18/prayer/log.h 2007-03-10 19:58:11.648954314 +0100
+@@ -45,6 +45,8 @@ void log_record_peer_pid(struct log *log
+ BOOL
+ log_misc_init(struct config *config, char *progname, char *misc_log_name);
+
++void log_misc_free();
++
+ BOOL log_misc_ping();
+
+ void log_misc(char *fmt, ...);
Index: 1.1.0-1/debian/changelog
===================================================================
--- 1.1.0-1/debian/changelog (nonexistent)
+++ 1.1.0-1/debian/changelog (revision 37)
@@ -0,0 +1,25 @@
+prayer (1.1.0-1) unstable; urgency=low
+
+ * First upload to unstable.
+ * New upstream release.
+ + Requires development version of the c-client library (libc-client2007-dev).
+ - Drop pidfiles_extension.patch, session_unix_bugs.patch,
+ session_server_bugs.patch; all incorporated upstream.
+ - Drop ipv6.patch; incorporated upstream.
+ - Drop utf8.patch; incorporated and improved upstream.
+ - Drop hasnochildren_means_noinferiors.patch since upstream now
+ handles dual-use mailboxes.
+ * New maintainer email address.
+ * Update README.Debian, removing lies about TLS not being possible to
+ disable (Closes: #440462).
+ * folder_list_cosmetics.patch: Remove space between expand/collapse
+ arrow and folder icon in the folder list and change the alt texts so
+ that the tree looks nicer in text browsers.
+
+ -- Magnus Holmgren <holmgren@debian.org> Tue, 13 May 2008 22:31:36 +0200
+
+prayer (1.0.18-1) experimental; urgency=low
+
+ * Initial release (Closes: #392823)
+
+ -- Magnus Holmgren <magnus@kibibyte.se> Sat, 10 Mar 2007 14:24:21 +0100
Index: 1.1.0-1/debian/README.Debian
===================================================================
--- 1.1.0-1/debian/README.Debian (nonexistent)
+++ 1.1.0-1/debian/README.Debian (revision 37)
@@ -0,0 +1,31 @@
+prayer for Debian
+-----------------
+
+The Debian version of Prayer is built with SSL support with session
+cache using libdb4.3, gzip Content-Transfer-Encoding, LDAP, and System
+V mutex support. The previous version, which was only uloaded to the
+experimental distribution, was heavily patched to add UTF-8 and IPv6
+support among other things. All that has been incorporated and
+improved by upstream in 1.1.0. The remaining patches concern changes
+to default configuration regarding directory structure, and minor
+cosmetic changes to the folder list.
+
+Quirks:
+
+ * If your IMAP server supports STARTTLS, then Prayer (actually the
+ libc-client IMAP client library) will use it automatically. To
+ disable, append "/notls" to the IMAP server name(s) specified with
+ imapd_server. To force TLS, append "/tls". Make sure that the
+ server name you specify for imapd_server in prayer.cf matches the
+ Common Name in the SSL certificate; otherwise libc-client will
+ refuse to accept it. To disable that check, use "/novalidate-cert".
+ Other switches you can append are listed in the file naming.txt.gz
+ in the documentation directory of the C-client library.
+
+ * If your IMAP server is Dovecot (or any of a number of others,
+ probably), then you must change prefs_folder_name to something not
+ containing a dot. Unfortunately this means that the preference
+ folder will be fully visible.
+
+ -- Magnus Holmgren <holmgren@debian.org>, Tue, 13 May 2008 22:27:11 +0200
+
Index: 1.1.0-1/debian/prayer.postinst
===================================================================
--- 1.1.0-1/debian/prayer.postinst (nonexistent)
+++ 1.1.0-1/debian/prayer.postinst (revision 37)
@@ -0,0 +1,45 @@
+#!/bin/sh
+# postinst script for prayer
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+#
+
+case "$1" in
+ configure)
+ adduser --quiet --system --no-create-home prayer
+ chown prayer:root /var/run/prayer
+ chown prayer:adm /var/log/prayer
+ chmod 2750 /var/run/prayer /var/log/prayer
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
Index: 1.1.0-1/debian/control
===================================================================
--- 1.1.0-1/debian/control (nonexistent)
+++ 1.1.0-1/debian/control (revision 37)
@@ -0,0 +1,52 @@
+Source: prayer
+Section: mail
+Priority: optional
+Maintainer: Magnus Holmgren <holmgren@debian.org>
+Build-Depends: cdbs (>= 0.4.27-1), debhelper (>= 5), quilt,
+ libc-client2007-dev, libldap2-dev,
+ zlib1g-dev, libssl-dev (>= 0.9.6), libdb4.3-dev | libdb-dev,
+Standards-Version: 3.7.2
+Vcs-Svn: svn://svn.kibibyte.se/prayer/trunk
+Vcs-Browser: http://svn.kibibyte.se/prayer
+
+Package: prayer
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, adduser
+Suggests: prayer-accountd, imap-server, aspell | ispell
+Description: Standalone IMAP-based webmail server
+ Prayer is yet another Webmail interface.
+ .
+ It is unusual in that it is a complete, standalone, HTTP server and proxy
+ rather a Apache/mod_php plugin. Prayer maintains persistent connections to
+ the IMAP server and is written entirely in C. Consequently it is much
+ faster than most open source Webmail interfaces and puts very little load
+ on either the machines running the Web server or the backend IMAP servers
+ (even if traditional Unix format mailfolders are in use).
+ .
+ Prayer has very few external dependencies as user preferences are stored on
+ the IMAP server rather than in a SQL database. It does however implement a
+ full range of features and user preference settings.
+
+Package: prayer-accountd
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Suggests: prayer
+Recommends: exim4
+Description: account management daemon for Prayer
+ Prayer is yet another Webmail interface.
+ .
+ It is unusual in that it is a complete, standalone, HTTP server and proxy
+ rather a Apache/mod_php plugin. Prayer maintains persistent connections to
+ the IMAP server and is written entirely in C. Consequently it is much
+ faster than most open source Webmail interfaces and puts very little load
+ on either the machines running the Web server or the backend IMAP servers
+ (even if traditional Unix format mailfolders are in use).
+ .
+ This package contains a daemon that can do the following for users:
+ .
+ * Change passwords
+ * Change their full name
+ * Manage mail filtering (requires Exim) and forwarding
+ * Manage vacation messages and logs
+ .
+ NOTE: This package is currently not very useful.
Index: 1.1.0-1/debian/compat
===================================================================
--- 1.1.0-1/debian/compat (nonexistent)
+++ 1.1.0-1/debian/compat (revision 37)
@@ -0,0 +1 @@
+5
Index: 1.1.0-1/debian/prayer.default
===================================================================
--- 1.1.0-1/debian/prayer.default (nonexistent)
+++ 1.1.0-1/debian/prayer.default (revision 37)
@@ -0,0 +1,11 @@
+# Defaults for prayer initscript
+# sourced by /etc/init.d/prayer
+# installed at /etc/default/prayer by the maintainer scripts
+
+# This is a POSIX shell fragment
+
+# Change to one to enable prayer after editing /etc/prayer/prayer.cf
+ENABLED=0
+
+# Options. You probably won't need any.
+DAEMON_OPTS=""
Index: 1.1.0-1/debian/prayer.postrm
===================================================================
--- 1.1.0-1/debian/prayer.postrm (nonexistent)
+++ 1.1.0-1/debian/prayer.postrm (revision 37)
@@ -0,0 +1,43 @@
+#!/bin/sh
+# postrm script for prayer
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge)
+ deluser --system --quiet prayer || true
+ rm -rf /var/log/prayer
+ find /var/run/prayer/ \( -type s -o -name ssl_scache \) -exec rm {} +
+ ;;
+
+ remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
Index: 1.1.0-1/debian/prayer-accountd.docs
===================================================================
--- 1.1.0-1/debian/prayer-accountd.docs (nonexistent)
+++ 1.1.0-1/debian/prayer-accountd.docs (revision 37)
@@ -0,0 +1,8 @@
+docs/ACCOUNTD
+docs/DESIGN
+docs/DONE-OLD
+docs/FEATURES
+docs/NOTICE
+docs/README
+docs/SECURITY
+docs/TODO
Index: 1.1.0-1/debian/prayer-session.8.dbk
===================================================================
--- 1.1.0-1/debian/prayer-session.8.dbk (nonexistent)
+++ 1.1.0-1/debian/prayer-session.8.dbk (revision 37)
@@ -0,0 +1,158 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+<!--
+
+Process this file with an XSLT processor: `xsltproc \
+-''-nonet /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xslb manpage.dbk'. A manual page
+<package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A
+typical entry in a Makefile or Makefile.am is:
+
+DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xsl
+XP=xsltproc -''-nonet
+
+manpage.1: manpage.dbk
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The
+XSL files are in docbook-xsl. Please remember that if you
+create the nroff version in one of the debian/rules file
+targets (such as build), you will need to include xsltproc
+and docbook-xsl in your Build-Depends control field.
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>Magnus</firstname>">
+ <!ENTITY dhsurname "<surname>Holmgren</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>oktober 24, 2006</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>8</manvolnum>">
+ <!ENTITY dhemail "<email>magnus@kibibyte.se</email>">
+ <!ENTITY dhusername "Magnus Holmgren">
+ <!ENTITY dhucpackage "<refentrytitle>PRAYER</refentrytitle>">
+ <!ENTITY dhpackage "prayer-session">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2006</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>a fast stand-alone webmail server</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option><replaceable>OPTION</replaceable></option></arg>...</cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> command.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>--config-file <replaceable>filename</replaceable></option>
+ </term>
+ <listitem>
+ <para>Define prayer config file (Overrides compilation default and PRAYER_CONFIG_FILE environment variable).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--config-option <replaceable>option</replaceable>=<replaceable>value</replaceable></option>
+ </term>
+ <listitem>
+ <para>Override single configuration option.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--foreground</option>
+ </term>
+ <listitem>
+ <para>Run single threaded server in foreground.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--debug</option>
+ </term>
+ <listitem>
+ <para>Enable debugging.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show option summary.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>prayer(8), prayer.cf(5).</para>
+
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
Index: 1.1.0-1/debian/prayer.docs
===================================================================
--- 1.1.0-1/debian/prayer.docs (nonexistent)
+++ 1.1.0-1/debian/prayer.docs (revision 37)
@@ -0,0 +1,11 @@
+docs/CMD_LINE
+docs/DESIGN
+docs/DONE-OLD
+docs/FEATURES
+docs/ICONLIST
+docs/LOGS
+docs/NOTICE
+docs/README
+docs/SECURITY
+docs/TODO
+docs/URL_OPTIONS
Index: 1.1.0-1/debian/rules
===================================================================
--- 1.1.0-1/debian/rules (nonexistent)
+++ 1.1.0-1/debian/rules (revision 37)
@@ -0,0 +1,24 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses cdbs. Originaly written by Robert Millan.
+# This file is public domain.
+
+DEB_AUTO_CLEANUP_RCS := yes
+
+# Add here any variable or target overrides you need
+
+makebuilddir/prayer::
+ cp debian/Config .
+
+include /usr/share/cdbs/1/class/makefile.mk
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/rules/patchsys-quilt.mk
+
+#DEB_MAKE_INVOKE = $(DEB_MAKE_ENVVARS) make
+DEB_MAKE_INSTALL_TARGET = install DESTDIR=$(CURDIR)/debian/tmp
+DEB_INSTALL_CHANGELOGS_ALL = docs/DONE
+DEB_INSTALL_DOCS_ALL = -XCVS
+DEB_DH_INSTALL_ARGS = -XCVS
+DEB_DH_INSTALL_SOURCEDIR = debian/tmp
+
+clean::
+ rm -f Config
/1.1.0-1/debian/rules
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: 1.1.0-1/debian/prayer-accountd.dirs
===================================================================
--- 1.1.0-1/debian/prayer-accountd.dirs (nonexistent)
+++ 1.1.0-1/debian/prayer-accountd.dirs (revision 37)
@@ -0,0 +1 @@
+/var/run/prayer
Index: 1.1.0-1/debian/prayer.logrotate
===================================================================
--- 1.1.0-1/debian/prayer.logrotate (nonexistent)
+++ 1.1.0-1/debian/prayer.logrotate (revision 37)
@@ -0,0 +1,8 @@
+/var/log/prayer/prayer /var/log/prayer/prayer_session /var/log/prayer/access_log /var/log/prayer/session_log {
+ rotate 28
+ daily
+ compress
+ delaycompress
+ missingok
+ notifempty
+}
Index: 1.1.0-1/debian/prayer.dirs
===================================================================
--- 1.1.0-1/debian/prayer.dirs (nonexistent)
+++ 1.1.0-1/debian/prayer.dirs (revision 37)
@@ -0,0 +1,2 @@
+var/run/prayer
+var/log/prayer
Index: 1.1.0-1/debian/prayer-accountd.init
===================================================================
--- 1.1.0-1/debian/prayer-accountd.init (nonexistent)
+++ 1.1.0-1/debian/prayer-accountd.init (revision 37)
@@ -0,0 +1,71 @@
+#!/bin/sh
+#
+### BEGIN INIT INFO
+# Provides: prayer-accountd
+# Required-Start:
+# Required-Stop:
+# Should-Start: $local_fs
+# Should-Stop: $local_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Prayer account helper daemon
+# Description: Lets users change passwords, manage filters and other things not supported by IMAP itself
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/prayer-accountd
+PIDFILE=/var/run/prayer/accountd.pid
+DESC="Prayer account helper server"
+
+test -x $DAEMON || exit 0
+
+egrep -iq "^[[:space:]]*accountd_port[[:space:]]*=[[:space:]]*[[:digit:]]+[[:space:]]*$" /etc/prayer/accountd.cf || exit 0
+
+. /lib/lsb/init-functions
+
+# Include prayer defaults if available
+if [ -f /etc/default/prayer-accountd ] ; then
+ . /etc/default/prayer-accountd
+fi
+
+set +e
+
+start() {
+ log_daemon_msg "Starting $DESC" "accountd"
+ start-stop-daemon --start --background --make-pidfile --pidfile $PIDFILE \
+ --exec $DAEMON -- $DAEMON_OPTS
+ log_end_msg $?
+}
+
+stop() {
+ log_daemon_msg "Stopping $DESC"
+ if [ -f "$PIDFILE" ]; then
+ start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
+ log_progress_msg "accountd"
+ fi
+ rm -f "$PIDFILE"
+ log_end_msg 0
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+
+ stop)
+ stop
+ ;;
+
+ restart|force-reload)
+ stop
+ start
+ ;;
+ *)
+ N=/etc/init.d/prayer-accountd
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ log_failure_msg "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
Index: 1.1.0-1/debian/prayer.init
===================================================================
--- 1.1.0-1/debian/prayer.init (nonexistent)
+++ 1.1.0-1/debian/prayer.init (revision 37)
@@ -0,0 +1,89 @@
+#!/bin/sh
+#
+### BEGIN INIT INFO
+# Provides: prayer
+# Required-Start:
+# Required-Stop:
+# Should-Start: $local_fs
+# Should-Stop: $local_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Prayer init script
+# Description: Init script for prayer services
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+FRONTEND_DAEMON=/usr/sbin/prayer
+SESSION_DAEMON=/usr/sbin/prayer-session
+FRONTEND_PIDFILE=/var/run/prayer/prayer.pid
+SESSION_PIDFILE=/var/run/prayer/prayer-session.pid
+DESC="webmail server"
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+ENABLED=0
+
+# Include prayer defaults if available
+if [ -f /etc/default/prayer ] ; then
+ . /etc/default/prayer
+fi
+
+set +e
+
+start() {
+ if [ "$ENABLED" = "0" ]; then
+ echo "Prayer is disabled. Please set ENABLED=1 in /etc/default/prayer"
+ echo "after adapting /etc/prayer/prayer.cf to your needs."
+ exit 0
+ fi
+
+ log_daemon_msg "Starting $DESC" "prayer"
+ start-stop-daemon --start --pidfile $FRONTEND_PIDFILE \
+ --exec $FRONTEND_DAEMON -- $DAEMON_OPTS
+ log_end_msg $?
+}
+
+stop() {
+ log_daemon_msg "Stopping $DESC"
+ if [ -f "$SESSION_PIDFILE" ]; then
+ start-stop-daemon --stop --quiet --oknodo --pidfile $SESSION_PIDFILE
+ log_progress_msg "prayer-session"
+ fi
+ if [ -f "$FRONTEND_PIDFILE" ]; then
+ start-stop-daemon --stop --quiet --oknodo --pidfile $FRONTEND_PIDFILE
+ start-stop-daemon --stop --quiet --oknodo --exec $FRONTEND_DAEMON
+ log_progress_msg "prayer"
+ fi
+ rm -f "$FRONTEND_PIDFILE" "$SESSION_PIDFILE"
+ log_end_msg 0
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+
+ stop)
+ stop
+ ;;
+
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart".
+ #
+ stop
+ start
+ ;;
+ *)
+ N=/etc/init.d/prayer
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ log_failure_msg "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
Index: 1.1.0-1/debian/prayer-accountd.install
===================================================================
--- 1.1.0-1/debian/prayer-accountd.install (nonexistent)
+++ 1.1.0-1/debian/prayer-accountd.install (revision 37)
@@ -0,0 +1,2 @@
+usr/sbin/prayer-accountd
+etc/prayer/accountd.cf
Index: 1.1.0-1/debian/Config
===================================================================
--- 1.1.0-1/debian/Config (nonexistent)
+++ 1.1.0-1/debian/Config (revision 37)
@@ -0,0 +1,160 @@
+# $Cambridge: hermes/src/prayer/defaults/Config,v 1.5 2006/04/05 12:35:35 fanf2 Exp $
+#
+# Prayer - a Webmail Interface
+#
+# Copyright (c) University of Cambridge 2000 - 2002
+# See the file NOTICE for conditions of use and distribution.
+#
+# Conventional Configure file.
+
+SSL_ENABLE = true # SSL requires OpenSSL
+SESSION_CACHE_ENABLE = true # SSL session cache Requires Berkeley DB 3 or 4
+GZIP_ENABLE = true # Enable on the fly compression of pages
+LDAP_ENABLE = true # Add LDAP interface
+FENCE_ENABLE = false # Use Electric Fence to catch malloc problems
+DIRECT_ENABLE = false # Experimental. Leave this switched off...
+MUTEX_SEMAPHORE = true # Use SYSV mutexes rather than file locking
+
+# Following depend on the way that you have configured c-client
+CCLIENT_SSL_ENABLE = false # C-client was built with SSL support
+CCLIENT_PAM_ENABLE = false # C-client was built with PAM support
+CCLIENT_KERB_ENABLE = false # C-client was built with Kerberos support
+
+# Probably don't need the following
+ACCOUNTD_ENABLE = true # Only of use in Cambridge at the moment.
+ACCOUNTD_SSL_ENABLE = true # Enable SSL support in account management daemon
+ACCOUNTD_PAM_ENABLE = true # Enable PAM support in account management daemon
+ACCOUNTD_USE_BSD_PTY = true # Use Berkeley PTYs rather than Sys V PTYs
+
+############################################################################
+# Location of compiler
+CC = gcc
+# Location of make program (GNU make required)
+MAKE = make
+# Location of install program (GNU install or compatible required)
+INSTALL = install
+
+# Base Compiler options for GCC.
+#BASECFLAGS = -Wall -g
+#BASELDFLAGS = -g
+BASECFLAGS = -Wall -g -O2
+BASELDFLAGS = -g -O2
+BASE_LIBS = -lcrypt
+
+# Base Compiler options for Sun SUNWspro compiler
+#CC = /opt/SUNWspro/bin/cc
+#BASECFLAGS = -fast
+#BASELDFLAGS = -s
+#BASE_LIBS = -lcrypt -lxnet
+
+############################################################################
+# Location of various include files and libraries.
+############################################################################
+
+# Location of c-client library.
+#
+# Following works if we have a vanilla c-client installation at same level
+# as the prayer installation. Relies on a symbolic link ./prayer/c-client
+# which points to ../../imap/c-client. This just reduces the amount of
+# noise output on each line when building the package.
+#
+CCLIENT_DIR=/usr/include/c-client
+CCLIENT_INCLUDE=-I$(CCLIENT_DIR)
+CCLIENT_LIBS=-lc-client
+
+#
+# Following works with the mail/cclient port from FreeBSD
+#
+#CCLIENT_INCLUDE = -I/usr/local/include/c-client
+#CCLIENT_LIBS = -L/usr/local/lib -lc-client4
+#
+# Complication:
+# The FreeBSD port uses PAM and optionally SSL if built WITH_SSL=yes.
+#
+#CCLIENT_SSL_ENABLE = true
+#CCLIENT_KERB_ENABLE = true
+
+############################################################################
+
+# Electric fence (required if FENCE_ENABLE set)
+FENCE_INCLUDE=
+FENCE_LIBS=-lmcheck
+
+# Zlib (required if GZIP_ENABLE set)
+Z_INCLUDE =
+Z_LIBS = -lz
+
+# LDAP (required if LDAP_ENABLE set)
+LDAP_INCLUDE =
+LDAP_LIBS = -lldap
+
+# Pam (required if CCLIENT_PAM_ENABLE set)
+PAM_INCLUDE =
+PAM_LIBS = -lpam
+
+# Kerberos (required if CCLIENT_KERB_ENABLE set)
+KERB_INCLUDE =
+KERB_LIBS = -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err
+
+# SSL definitions (required if SSL_ENABLE or CCLIENT_SSL_ENABLE set)
+#
+# Following suitable for Linux and FreeBSD which have SSL preinstalled
+# (Header files from OpenSSL 0.9.7 want to include various Kerboros stuff)
+#
+SSL_INCLUDE=
+SSL_LIBS=-lssl -lcrypto
+OPENSSL=openssl
+
+# Following definitions suitable for our Sun systems.
+#SSL_BASE=/opt/local/ssl/current
+#SSL_INCLUDE=-I ${SSL_BASE}/include
+#SSL_LIBS=-L ${SSL_BASE}/lib -lssl -lcrypto
+#OPENSSL=${SSL_BASE}/bin/openssl
+
+# DB definitions (required if SESSION_CACHE_ENABLE set)
+#
+# Following suitable for Redhat Linux which has DB 3 preinstalled
+DB_INCLUDE=
+DB_LIBS=-ldb
+
+# Following suitable for FreeBSD with DB 4 package installed
+#DB_INCLUDE=-I/usr/local/include/db4
+#DB_LIBS=-L/usr/local/lib -ldb4
+
+############################################################################
+
+# Install location of prayer configuration and support files. The initial
+# config file runs prayer processes as user "prayer" and group "prayer".
+# If you are using SSL, the certificate file must be readable by RW_USER or
+# RW_GROUP. It is important that nothing else can read the certificate file.
+
+# Build root (used by Redhat RPM system)
+BROOT=$(CURDIR)/../debian/tmp
+
+# Directory, User and group for read-write files: log files, sockets etc
+VAR_PREFIX = /var/lib/prayer
+RW_USER = root
+RW_GROUP = root
+
+# Root Directory, User and group for read-only configuration files.
+# Default configuration and permissions does not allow prayer user to
+# update prayer configuration file.
+
+PREFIX = /usr/share/prayer
+RO_USER = root
+RO_GROUP = root
+
+# Access permissions for general objects (wrt above users and groups)
+PUBLIC_EXEC = 0755
+PUBLIC_DIR = 0755
+PUBLIC_FILE = 0644
+
+# Access permissions for private objects (wrt above users and groups)
+PRIVATE_EXEC = 0750
+PRIVATE_DIR = 0750
+PRIVATE_FILE = 0640
+
+# Location of configuration files and binaries
+PRAYER_CONFIG_FILE = /etc/prayer/prayer.cf
+BIN_DIR = /usr/sbin
+ACCOUNTD_CONFIG_FILE = /etc/prayer/accountd.cf
Index: 1.1.0-1/debian/watch
===================================================================
--- 1.1.0-1/debian/watch (nonexistent)
+++ 1.1.0-1/debian/watch (revision 37)
@@ -0,0 +1,9 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+ftp://ftp.csx.cam.ac.uk/pub/software/email/prayer/prayer-(.*)\.tar\.gz debian uupdate
Index: 1.1.0-1/debian/prayer.8.dbk
===================================================================
--- 1.1.0-1/debian/prayer.8.dbk (nonexistent)
+++ 1.1.0-1/debian/prayer.8.dbk (revision 37)
@@ -0,0 +1,178 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+<!--
+
+Process this file with an XSLT processor: `xsltproc \
+-''-nonet /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xslb manpage.dbk'. A manual page
+<package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A
+typical entry in a Makefile or Makefile.am is:
+
+DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xsl
+XP=xsltproc -''-nonet
+
+manpage.1: manpage.dbk
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The
+XSL files are in docbook-xsl. Please remember that if you
+create the nroff version in one of the debian/rules file
+targets (such as build), you will need to include xsltproc
+and docbook-xsl in your Build-Depends control field.
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>Magnus</firstname>">
+ <!ENTITY dhsurname "<surname>Holmgren</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>oktober 24, 2006</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>8</manvolnum>">
+ <!ENTITY dhemail "<email>magnus@kibibyte.se</email>">
+ <!ENTITY dhusername "Magnus Holmgren">
+ <!ENTITY dhucpackage "<refentrytitle>PRAYER</refentrytitle>">
+ <!ENTITY dhpackage "prayer">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2006</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>a fast stand-alone webmail server</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option><replaceable>OPTION</replaceable></option></arg>... -- <arg><option><replaceable>PRAYER-SESSION-OPTION</replaceable></option></arg> ...
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ <application>Info</application> format; see below.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>--config-file <replaceable>filename</replaceable></option>
+ </term>
+ <listitem>
+ <para>Define prayer config file (Overrides compilation default and PRAYER_CONFIG_FILE environment variable).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--config-option <replaceable>option</replaceable>=<replaceable>value</replaceable></option>
+ </term>
+ <listitem>
+ <para>Override single configuration option.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--foreground</option>
+ </term>
+ <listitem>
+ <para>Run single threaded server in foreground.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--disable-prefork</option>
+ </term>
+ <listitem>
+ <para>Run as simple fork()/exec() daemon.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--disable-session</option>
+ </term>
+ <listitem>
+ <para>Don't start up prayer-session server.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--</option>
+ </term>
+ <listitem>
+ <para>End of prayer options: remaining options will be passed to prayer-session server process.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show option summary.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>prayer-session(8), prayer.cf(5).</para>
+
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
Index: 1.1.0-1/debian/prayer.install
===================================================================
--- 1.1.0-1/debian/prayer.install (nonexistent)
+++ 1.1.0-1/debian/prayer.install (revision 37)
@@ -0,0 +1,10 @@
+usr/sbin/prayer
+usr/sbin/prayer-session
+usr/sbin/prayer-chroot
+usr/sbin/prayer-db-prune
+usr/sbin/prayer-sem-prune
+usr/sbin/prayer-ssl-prune
+usr/share/prayer
+etc/prayer/prayer.cf
+etc/prayer/motd.html
+etc/prayer/welcome.html
Index: 1.1.0-1/debian
===================================================================
--- 1.1.0-1/debian (nonexistent)
+++ 1.1.0-1/debian (revision 37)
/1.1.0-1/debian
Property changes:
Added: mergeWithUpstream
## -0,0 +1 ##
+1
\ No newline at end of property
Index: 1.0.18-1/debian/control
===================================================================
--- 1.0.18-1/debian/control (nonexistent)
+++ 1.0.18-1/debian/control (revision 37)
@@ -0,0 +1,48 @@
+Source: prayer
+Section: mail
+Priority: optional
+Maintainer: Magnus Holmgren <magnus@kibibyte.se>
+Build-Depends: cdbs (>= 0.4.27-1), debhelper (>= 5), quilt, libc-client-dev, zlib1g-dev, libssl-dev (>= 0.9.6), libdb4.3-dev | libdb-dev, libldap2-dev
+Standards-Version: 3.7.2
+
+Package: prayer
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, adduser
+Suggests: prayer-accountd, imap-server, aspell | ispell
+Description: Standalone IMAP-based webmail server
+ Prayer is yet another Webmail interface.
+ .
+ It is unusual in that it is a complete, standalone, HTTP server and proxy
+ rather a Apache/mod_php plugin. Prayer maintains persistent connections to
+ the IMAP server and is written entirely in C. Consequently it is much
+ faster than most open source Webmail interfaces and puts very little load
+ on either the machines running the Web server or the backend IMAP servers
+ (even if traditional Unix format mailfolders are in use).
+ .
+ Prayer has very few external dependencies as user preferences are stored on
+ the IMAP server rather than in a SQL database. It does however implement a
+ full range of features and user preference settings.
+
+Package: prayer-accountd
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Suggests: prayer
+Recommends: exim4
+Description: account management daemon for Prayer
+ Prayer is yet another Webmail interface.
+ .
+ It is unusual in that it is a complete, standalone, HTTP server and proxy
+ rather a Apache/mod_php plugin. Prayer maintains persistent connections to
+ the IMAP server and is written entirely in C. Consequently it is much
+ faster than most open source Webmail interfaces and puts very little load
+ on either the machines running the Web server or the backend IMAP servers
+ (even if traditional Unix format mailfolders are in use).
+ .
+ This package contains a daemon that can do the following for users:
+ .
+ * Change passwords
+ * Change their full name
+ * Manage mail filtering (requires Exim) and forwarding
+ * Manage vacation messages and logs
+ .
+ NOTE: This package is currently not very useful.
Index: 1.0.18-1/debian/compat
===================================================================
--- 1.0.18-1/debian/compat (nonexistent)
+++ 1.0.18-1/debian/compat (revision 37)
@@ -0,0 +1 @@
+5
Index: 1.0.18-1/debian/prayer.postinst
===================================================================
--- 1.0.18-1/debian/prayer.postinst (nonexistent)
+++ 1.0.18-1/debian/prayer.postinst (revision 37)
@@ -0,0 +1,46 @@
+#!/bin/sh
+# postinst script for prayer
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+#
+
+case "$1" in
+ configure)
+ adduser --quiet --system --ingroup nogroup --no-create-home \
+ --disabled-password --disabled-login prayer
+ chown prayer:root /var/run/prayer
+ chown prayer:adm /var/log/prayer
+ chmod 2750 /var/run/prayer /var/log/prayer
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
Index: 1.0.18-1/debian/prayer.default
===================================================================
--- 1.0.18-1/debian/prayer.default (nonexistent)
+++ 1.0.18-1/debian/prayer.default (revision 37)
@@ -0,0 +1,11 @@
+# Defaults for prayer initscript
+# sourced by /etc/init.d/prayer
+# installed at /etc/default/prayer by the maintainer scripts
+
+# This is a POSIX shell fragment
+
+# Change to one to enable prayer after editing /etc/prayer/prayer.cf
+ENABLED=0
+
+# Options. You probably won't need any.
+DAEMON_OPTS=""
Index: 1.0.18-1/debian/prayer.postrm
===================================================================
--- 1.0.18-1/debian/prayer.postrm (nonexistent)
+++ 1.0.18-1/debian/prayer.postrm (revision 37)
@@ -0,0 +1,43 @@
+#!/bin/sh
+# postrm script for prayer
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge)
+ deluser --system --quiet prayer || true
+ rm -rf /var/log/prayer
+ find /var/run/prayer/ \( -type s -o -name ssl_scache \) -exec rm {} +
+ ;;
+
+ remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
Index: 1.0.18-1/debian/prayer-accountd.docs
===================================================================
--- 1.0.18-1/debian/prayer-accountd.docs (nonexistent)
+++ 1.0.18-1/debian/prayer-accountd.docs (revision 37)
@@ -0,0 +1,8 @@
+docs/ACCOUNTD
+docs/DESIGN
+docs/DONE-OLD
+docs/FEATURES
+docs/NOTICE
+docs/README
+docs/SECURITY
+docs/TODO
Index: 1.0.18-1/debian/patches/hasnochildren_means_noinferiors.patch
===================================================================
--- 1.0.18-1/debian/patches/hasnochildren_means_noinferiors.patch (nonexistent)
+++ 1.0.18-1/debian/patches/hasnochildren_means_noinferiors.patch (revision 37)
@@ -0,0 +1,12 @@
+--- prayer-1.0.18.orig/prayer/dirlist.c
++++ prayer-1.0.18/prayer/dirlist.c
+@@ -172,7 +172,8 @@
+
+ dl->next = NIL;
+ dl->name = pool_strdup(callback.pool, name);
+- dl->isdir = (attributes & LATT_NOINFERIORS) ? NIL : T;
++ dl->isdir = (attributes & (LATT_NOINFERIORS | LATT_HASNOCHILDREN)) ?
++ NIL : T;
+
+ /* Insertion sort algorithm */
+
Index: 1.0.18-1/debian/patches/ipv6.patch
===================================================================
--- 1.0.18-1/debian/patches/ipv6.patch (nonexistent)
+++ 1.0.18-1/debian/patches/ipv6.patch (revision 37)
@@ -0,0 +1,508 @@
+--- prayer-1.0.18.orig/prayer/config.c
++++ prayer-1.0.18/prayer/config.c
+@@ -1650,7 +1650,7 @@
+
+ if (!config_parse_rest(&option))
+ error = T;
+- else if ((s = (strchr(option, ':')))) {
++ else if ((s = (strrchr(option, ':')))) {
+ *s++ = '\0';
+ if (!config_parse_number(&port, s))
+ error = T;
+--- prayer-1.0.18.orig/prayer/ipaddr.c
++++ prayer-1.0.18/prayer/ipaddr.c
+@@ -32,11 +32,7 @@
+
+ BOOL ipaddr_copy(struct ipaddr * dst, struct ipaddr * src)
+ {
+- dst->version = src->version;
+- dst->addr[0] = src->addr[0];
+- dst->addr[1] = src->addr[1];
+- dst->addr[2] = src->addr[2];
+- dst->addr[3] = src->addr[3];
++ memcpy(dst, src, sizeof(struct ipaddr));
+
+ return (T);
+ }
+@@ -55,19 +51,7 @@
+ if (addr1->version != addr2->version)
+ return (NIL);
+
+- if (addr1->addr[0] != addr2->addr[0])
+- return (NIL);
+-
+- if (addr1->addr[1] != addr2->addr[1])
+- return (NIL);
+-
+- if (addr1->addr[2] != addr2->addr[2])
+- return (NIL);
+-
+- if (addr1->addr[3] != addr2->addr[3])
+- return (NIL);
+-
+- return (T);
++ return (memcmp(&addr1->addr, &addr2->addr, addr1->version == 6 ? 16 : 4) == 0);
+ }
+
+ /* ====================================================================== */
+@@ -81,8 +65,7 @@
+ {
+ static char buf[64];
+
+- sprintf(buf, "%d.%d.%d.%d",
+- addr->addr[0], addr->addr[1], addr->addr[2], addr->addr[3]);
++ os_inet_ntop(addr->addr, addr->version, buf, 64);
+
+ return (buf);
+ }
+@@ -96,7 +79,7 @@
+ {
+ char *result;
+
+- if ((result = os_gethostbyaddr(addr->addr)))
++ if ((result = os_gethostbyaddr(addr->addr, addr->version)))
+ return (result);
+
+ return (ipaddr_text(addr));
+@@ -116,39 +99,10 @@
+
+ BOOL ipaddr_parse(struct ipaddr * addr, char *text)
+ {
+- char *next;
+-
+ if (text == NIL)
+ return (NIL);
+
+- /* IPv4 only for the moment */
+- addr->version = 4;
+-
+- /* Parse first number */
+- if (!(next = strchr(text, '.')))
+- return (NIL);
+- addr->addr[0] = atoi(text);
+- text = next + 1;
+-
+- /* Parse second number */
+- if (!(next = strchr(text, '.')))
+- return (NIL);
+- addr->addr[1] = atoi(text);
+- text = next + 1;
+-
+- /* Parse third number */
+- if (!(next = strchr(text, '.')))
+- return (NIL);
+- addr->addr[2] = atoi(text);
+- text = next + 1;
+-
+- /* Parse forth number */
+- if ((next = strchr(text, '.')))
+- return (NIL);
+- addr->addr[3] = atoi(text);
+-
+- /* Looks good */
+- return (T);
++ return (os_inet_pton(text, addr));
+ }
+
+ /* ====================================================================== */
+@@ -157,56 +111,63 @@
+ *
+ * Compare IP address to text list of form:
+ * ipaddr:
+- * text: Text string of form "131.111.0.0/16 : 192.168.0.0/24".
++ * text: Text string of form "131.111.0.0/16 : 192.168.0.0/24 : 2001:12cd:1::/48".
++ * (There has to be a space on either side of the colon for it to
++ * separate two networks)
+ *
+ * Returns: T if addr matches list.
+ ************************************************************************/
+
+ BOOL ipaddr_compare_list(struct ipaddr * ipaddr, char *text)
+ {
+- char *next, *s, *alloc;
++ char *next = NULL, *s, *alloc;
++ int i;
+ unsigned long bits, mask;
+ struct ipaddr parsed;
+
+ alloc = text = pool_strdup(NIL, text);
+
+ while (text && *text) {
+- if ((next = strchr(text, ':')))
+- *next++ = '\0';
++ s = text;
++ while ((s = strchr(s, ':'))) {
++ if (*(s - 1) == ' ' || *(s + 1) == ' ') {
++ *(next = s) = '\0';
++ next++;
++ }
++ s++;
++ }
+
+ text = string_trim_whitespace(text);
+
+ if ((s = strchr(text, '/'))) {
+ *s++ = '\0';
+ bits = atoi(s);
+- } else
+- bits = 32;
+-
+- if (bits > 32)
+- bits = 32;
+-
+- /* Create mask with appropriate number of bits set */
+- mask = 0;
+- while (bits > 0) {
+- mask >>= 1;
+- mask |= 0x80000000;
+- bits--;
+ }
++ else
++ bits = 128; /* Doesn't matter if it's too big */
+
+ if (ipaddr_parse(&parsed, text)) {
+- unsigned long a1;
+- unsigned long a2;
+-
+- a1 = ((ipaddr->addr[0] << 24) + (ipaddr->addr[1] << 16) +
+- (ipaddr->addr[2] << 8) + (ipaddr->addr[3]));
+-
+- a2 = ((parsed.addr[0] << 24) + (parsed.addr[1] << 16) +
+- (parsed.addr[2] << 8) + (parsed.addr[3]));
+-
+- if ((a1 & mask) == (a2 & mask)) {
+- free(alloc);
+- return (T);
+- }
++ if (parsed.version != ipaddr->version) {
++ text = next; continue;
++ }
++
++ for (i = 0; i < (parsed.version == 6 ? 4 : 1); i++) {
++ if (bits == 0) mask = 0;
++ else if (bits < 32) {
++ mask = (-1) << (32 - bits);
++ bits = 0;
++ }
++ else {
++ mask = -1;
++ bits -= 32;
++ }
++
++ if ((parsed.addr[i] & mask) != (ipaddr->addr[i] & mask)) {
++ text = next; continue;
++ }
++ }
++ free(alloc);
++ return (T);
+ }
+ text = next;
+ }
+@@ -225,11 +187,11 @@
+
+ void ipaddr_send_iostream(struct ipaddr *addr, struct iostream *stream)
+ {
++ int i;
+ ioputc(addr->version, stream);
+- ioputc(addr->addr[0], stream);
+- ioputc(addr->addr[1], stream);
+- ioputc(addr->addr[2], stream);
+- ioputc(addr->addr[3], stream);
++ for (i = 0; i < (addr->version == 6 ? 16 : 4); i++) {
++ ioputc(((char *)addr->addr)[i], stream);
++ }
+ }
+
+ /* ====================================================================== */
+@@ -246,13 +208,13 @@
+
+ if ((c = iogetc(stream)) != EOF) {
+ addr->version = (unsigned char) c;
+- for (i = 0; i < 4; i++) {
++ for (i = 0; i < (addr->version == 6 ? 16 : 4); i++) {
+ if ((c = iogetc(stream)) == EOF) {
+ rc = NIL;
+ break;
+ }
+
+- addr->addr[i] = (unsigned char) c;
++ ((char *)addr->addr)[i] = (unsigned char) c;
+ }
+ }
+
+@@ -279,9 +241,14 @@
+ ipaddr_set(struct ipaddr *ipaddr, unsigned long version,
+ unsigned char *addr)
+ {
+- if (version != 4)
+- log_fatal("ipaddr_set(): IPv4 only supported at the moment!");
++ if (version != 4 && version != 6)
++ log_fatal("ipaddr_set(): IPv4 and IPv6 only supported!");
++
++ ipaddr->version = version;
++ memcpy(ipaddr->addr, addr, version == 6 ? 16 : 4);
++ if (ipaddr->addr[0] == 0 && ipaddr->addr[1] == 0 && ipaddr->addr[2] == 0xffff) {
++ ipaddr->addr[0] = ipaddr->addr[3];
++ ipaddr->version = 4;
++ }
+
+- ipaddr->version = 4;
+- memcpy(ipaddr->addr, addr, 4);
+ }
+--- prayer-1.0.18.orig/prayer/ipaddr.h
++++ prayer-1.0.18/prayer/ipaddr.h
+@@ -8,7 +8,7 @@
+
+ struct ipaddr {
+ unsigned long version;
+- unsigned char addr[4];
++ unsigned long addr[4];
+ };
+
+ struct ipaddr *ipaddr_create(struct pool *pool);
+--- prayer-1.0.18.orig/prayer/os.h
++++ prayer-1.0.18/prayer/os.h
+@@ -24,7 +24,11 @@
+
+ int os_socket_nonblocking(int sockfd);
+
+-char *os_gethostbyaddr(void *addr);
++char *os_gethostbyaddr(void *addr, unsigned int version);
++
++int os_inet_ntop(void *addr, unsigned long version, char *buf, unsigned long buflen);
++
++int os_inet_pton(char *str, struct ipaddr *addr);
+
+ void os_child_reaper();
+
+--- prayer-1.0.18.orig/prayer/os_linux.c
++++ prayer-1.0.18/prayer/os_linux.c
+@@ -13,14 +13,11 @@
+ #include <sys/un.h>
+ #include <sys/resource.h>
+ #include <netinet/in.h>
+-#include <netinet/tcp.h>
+ #include <arpa/inet.h>
+ #include <signal.h>
+ #include <netdb.h>
+ #include <sys/file.h>
+
+-#include <openssl/rand.h>
+-
+ /* ====================================================================== */
+
+ BOOL os_socketpair(int *sockfd)
+@@ -63,33 +60,28 @@
+
+ int os_connect_inet_socket(char *host, unsigned long port)
+ {
+- struct hostent *hostent;
+- struct sockaddr_in serv_addr;
++ struct addrinfo *first_ai, *ai;
++ char port_str[12];
+ int sockfd;
+
+- /* Open the socket */
+- if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
+- return (-1);
+-
+- /* Set up the socket */
+- bzero((char *) &serv_addr, sizeof(serv_addr));
+- serv_addr.sin_family = AF_INET;
+- serv_addr.sin_port = htons(port);
+-
+- if ((hostent = gethostbyname(host)) == NIL) {
+- close(sockfd);
+- return (-1);
+- }
+- bcopy(hostent->h_addr, (char *) &serv_addr.sin_addr,
+- hostent->h_length);
+-
+- if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr))
+- < 0) {
+- close(sockfd);
+- return (-1);
+- }
+-
+- return (sockfd);
++ sprintf(port_str, "%lu", port);
++ if (getaddrinfo(host, port_str, NULL, &first_ai)) {
++ return (-1);
++ }
++ for (ai = first_ai; ai->ai_next; ai = ai->ai_next) {
++ /* Open the socket */
++ if ((sockfd = socket(ai->ai_family, SOCK_STREAM, 0)) < 0) {
++ break;
++ }
++ if (connect(sockfd, (struct sockaddr *) ai->ai_addr, ai->ai_addrlen) < 0) {
++ close(sockfd);
++ break;
++ }
++ freeaddrinfo(first_ai);
++ return (sockfd);
++ }
++ freeaddrinfo(first_ai);
++ return (-1);
+ }
+
+ /* ====================================================================== */
+@@ -150,9 +141,39 @@
+ int os_bind_inet_socket(unsigned long port, char *interface)
+ {
+ int i, sockfd;
+- struct sockaddr_in serv_addr;
++ struct sockaddr_storage serv_addr;
++ struct addrinfo *ai;
++
++ bzero((char *) &serv_addr, sizeof(serv_addr));
+
+- if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
++ if (interface) {
++ if (getaddrinfo(interface, NULL, NULL, &ai)) {
++ log_panic
++ ("[os_bind_inet_socket()] Failed to lookup hostname: %s",
++ interface);
++ return -1;
++ }
++#if 0 /* Use the first interface address; don't panic if both IPv6
++ and IPv4 addresses are returned. */
++ if (hostent->h_addr_list[1]) {
++ log_panic
++ ("[os_bind_inet_socket()] Ambiguous interface name: %s",
++ interface);
++ return (-1);
++ }
++#endif
++ memcpy(&serv_addr, ai->ai_addr, ai->ai_addrlen);
++ freeaddrinfo(ai);
++ }
++ else {
++ serv_addr.ss_family = AF_INET6;
++ ((struct sockaddr_in6*)&serv_addr)->sin6_addr = in6addr_any;
++ }
++ /* This isn't formally correct, but *in fact*, sin6_port is at the
++ same place as sin_port, so it works. */
++ ((struct sockaddr_in6*)&serv_addr)->sin6_port = htons(port);
++
++ if ((sockfd = socket(serv_addr.ss_family, SOCK_STREAM, 0)) < 0) {
+ log_panic("[os_bind_inet_socket()] socket() failed, %s",
+ strerror(errno));
+ return (-1);
+@@ -168,41 +189,6 @@
+ return (-1);
+ }
+
+- bzero((char *) &serv_addr, sizeof(serv_addr));
+- serv_addr.sin_family = AF_INET;
+- serv_addr.sin_port = htons(port);
+- serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
+-
+- /* Calculate serv_addr for specific interface to bind to */
+- if (interface) {
+- struct hostent *hostent;
+- struct in_addr *s;
+-
+- if (!(hostent = gethostbyname(interface))) {
+- log_panic
+- ("[os_bind_inet_socket()] Failed to lookup hostname: %s",
+- interface);
+-
+- return (-1);
+- }
+-
+- if (hostent->h_addr_list[1]) {
+- log_panic
+- ("[os_bind_inet_socket()] Ambiguous interface name: %s",
+- interface);
+- return (-1);
+- }
+-
+- if (!(s = ((struct in_addr *)hostent->h_addr_list[0]))) {
+- log_panic("[os_bind_inet_socket()] Invalid interface name: %s",
+- interface);
+- return (-1);
+- }
+-
+- /* s has four bytes in network byte order */
+- memcpy(&serv_addr.sin_addr.s_addr, s, sizeof(struct in_addr));
+- }
+-
+ /* bind() as Internet domain socket */
+ if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) <
+ 0) {
+@@ -255,8 +242,8 @@
+
+ int os_accept_inet(int sockfd, struct ipaddr *ipaddr)
+ {
+- struct sockaddr_in addr;
+- socklen_t len = (socklen_t) sizeof(struct sockaddr_in);
++ struct sockaddr_storage addr;
++ socklen_t len = (socklen_t) sizeof(addr);
+ int newsockfd;
+
+ do {
+@@ -271,8 +258,12 @@
+ return (-1);
+ }
+
+- if (ipaddr)
+- ipaddr_set(ipaddr, 4, (unsigned char *) &addr.sin_addr);
++ if (ipaddr) {
++ if (addr.ss_family == AF_INET6)
++ ipaddr_set(ipaddr, 6, (unsigned char *)&((struct sockaddr_in6*)&addr)->sin6_addr);
++ else
++ ipaddr_set(ipaddr, 4, (unsigned char *)&((struct sockaddr_in*)&addr)->sin_addr);
++ }
+
+ /* Set close on exec so subprocesses can't interfere */
+ if (fcntl(newsockfd, F_SETFD, FD_CLOEXEC) < 0) {
+@@ -322,9 +313,14 @@
+
+ /* Convert IPv4 address into text form */
+
+-char *os_gethostbyaddr(void *opaque)
++char *os_gethostbyaddr(void *opaque, unsigned int version)
+ {
+- struct hostent *hostent = gethostbyaddr(opaque, 4, AF_INET);
++ struct hostent *hostent;
++
++ if (version == 6)
++ hostent = gethostbyaddr(opaque, 16, AF_INET6);
++ else
++ hostent = gethostbyaddr(opaque, 4, AF_INET);
+
+ if (hostent && hostent->h_name && hostent->h_name[0])
+ return (hostent->h_name);
+@@ -332,6 +328,32 @@
+ return (NIL);
+ }
+
++int os_inet_ntop(void *addr, unsigned long version, char *buf, unsigned long buflen) {
++ if (version == 6) {
++ if (inet_ntop(AF_INET6, addr, buf, buflen))
++ return (T);
++ }
++ else {
++ if (inet_ntop(AF_INET, addr, buf, buflen))
++ return (T);
++ }
++ return (NIL);
++}
++
++int os_inet_pton(char *str, struct ipaddr *addr) {
++ unsigned char buf[16];
++
++ if (inet_pton(AF_INET6, str, buf)) {
++ ipaddr_set(addr, 6, buf);
++ return (T);
++ }
++ else if (inet_pton(AF_INET, str, buf)) {
++ ipaddr_set(addr, 4, buf);
++ return (T);
++ }
++ return (NIL);
++}
++
+ /* ====================================================================== */
+
+ /* Trivial SIG_CLD handler to prevent zombies from hanging around */
Index: 1.0.18-1/debian/patches/includes.patch
===================================================================
--- 1.0.18-1/debian/patches/includes.patch (nonexistent)
+++ 1.0.18-1/debian/patches/includes.patch (revision 37)
@@ -0,0 +1,26 @@
+Index: prayer-1.0.18/prayer/prayer_session.h
+===================================================================
+--- prayer-1.0.18.orig/prayer/prayer_session.h 2007-03-10 18:50:09.676882377 +0100
++++ prayer-1.0.18/prayer/prayer_session.h 2007-03-10 18:50:11.007049496 +0100
+@@ -27,7 +27,7 @@
+
+ extern int errno; /* just in case */
+
+-#include "c-client.h"
++#include <c-client.h>
+
+ #define PRAYER_FULL_HDRS
+ #include "prayer_shared.h"
+Index: prayer-1.0.18/prayer/cdb.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cdb.c 2007-03-10 18:51:20.845827434 +0100
++++ prayer-1.0.18/prayer/cdb.c 2007-03-10 18:51:25.766446163 +0100
+@@ -63,7 +63,7 @@
+ #include <unistd.h>
+ #include <sys/stat.h>
+
+-#include "mail.h"
++#include "common.h"
+ #include "cdb.h"
+
+ #define CDB_HASH_SPLIT 256 /* num pieces the hash table is split into */
Index: 1.0.18-1/debian/patches/session_unix_bugs.patch
===================================================================
--- 1.0.18-1/debian/patches/session_unix_bugs.patch (nonexistent)
+++ 1.0.18-1/debian/patches/session_unix_bugs.patch (revision 37)
@@ -0,0 +1,20 @@
+--- prayer-1.0.18.orig/prayer/session_unix.c
++++ prayer-1.0.18/prayer/session_unix.c
+@@ -56,7 +56,7 @@
+ }
+
+ if (config->fix_client_ipaddr
+- && ipaddr_compare(session->ipaddr, &remote)) {
++ && !ipaddr_compare(session->ipaddr, &remote)) {
+ struct buffer *b = request->write_buffer;
+
+ html_common_start(config, b, "Security Alert");
+@@ -69,7 +69,7 @@
+ response_send(request);
+ log_misc
+ ("HTTP Request from invalid IP address %s to running session %s",
+- &remote, session->url_prefix_asession);
++ ipaddr_text(&remote), session->url_prefix_asession);
+ return;
+ }
+
Index: 1.0.18-1/debian/patches/utf8.patch
===================================================================
--- 1.0.18-1/debian/patches/utf8.patch (nonexistent)
+++ 1.0.18-1/debian/patches/utf8.patch (revision 37)
@@ -0,0 +1,1507 @@
+This patch adds support for UTF-8 and modified UTF-7. Functions are in
+the new utf8.c. The patch adds calls to utf8_to_imaputf7() or
+utf8_from_imaputf7() wherever a folder name is handled in the code. In
+addition, it changes prayer to use UTF-8 in all HTML output as well as
+in composition of messages.
+Index: prayer-1.0.18/prayer/Makefile
+===================================================================
+--- prayer-1.0.18.orig/prayer/Makefile 2007-03-10 19:39:29.563948453 +0100
++++ prayer-1.0.18/prayer/Makefile 2007-03-10 19:39:30.294042473 +0100
+@@ -127,7 +127,7 @@ SESSION_SUPPORT_OBJS = \
+ abook.o lookup.o role.o dictionary.o \
+ options.o rfc1522.o banner.o favourite.o wrap.o portlist.o \
+ account.o account_msshell.o account_sieve.o account_support.o \
+- sieve.o filter.o checksum.o
++ sieve.o filter.o checksum.o utf8.o
+
+ ifeq ($(strip $(SESSION_NEEDS_DB)), true)
+ SESSION_SUPPORT_OBJS += mydb_db3.o
+Index: prayer-1.0.18/prayer/cmd_change.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_change.c 2007-03-10 19:38:53.659325192 +0100
++++ prayer-1.0.18/prayer/cmd_change.c 2007-03-10 19:39:30.344048912 +0100
+@@ -16,7 +16,7 @@ void cmd_change(struct session *session)
+ if (request->method == POST) {
+ request_decode_post(request);
+
+- if (!(name = assoc_lookup(request->form, "folder"))) {
++ if (!(name = utf8_to_imaputf7(request->pool, assoc_lookup(request->form, "folder")))) {
+ session_redirect(session, request, "error");
+ return;
+ }
+@@ -30,7 +30,8 @@ void cmd_change(struct session *session)
+ }
+
+ if (!session_streams_change(session, name)) {
+- session_message(session, "Unable to switch to folder: %s", name);
++ session_message(session, "Unable to switch to folder: %s",
++ utf8_from_imaputf7(request->pool, name));
+ session_redirect(session, request, "restart");
+ return;
+ }
+@@ -47,7 +48,7 @@ void cmd_change(struct session *session)
+ }
+
+ session_message(session, "Switched to mailbox: %s",
+- session->foldername);
++ utf8_from_imaputf7(request->pool, session->foldername));
+ session_log(session, "[cmd_change] Switched to mailbox: %s",
+ session->foldername);
+
+Index: prayer-1.0.18/prayer/cmd_compose.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_compose.c 2007-03-10 19:38:53.719332917 +0100
++++ prayer-1.0.18/prayer/cmd_compose.c 2007-03-10 19:39:30.384054064 +0100
+@@ -244,7 +244,7 @@ static BOOL cmd_compose_generate_postpon
+ strlen(string), string, NIL);
+
+ string =
+- string_prune(request->pool, string, config->list_addr_maxlen);
++ utf8_prune(request->pool, string, config->list_addr_maxlen);
+
+ bputs(b, "<td>" CRLF);
+ html_quote_string(b, string);
+@@ -267,7 +267,7 @@ static BOOL cmd_compose_generate_postpon
+ rfc1522_decode(pool_alloc(request->pool, strlen(string)),
+ strlen(string), string, NIL);
+
+- string = string_prune(request->pool, string,
++ string = utf8_prune(request->pool, string,
+ config->list_subject_maxlen);
+ } else
+ string = "(No subject)";
+Index: prayer-1.0.18/prayer/cmd_copy.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_copy.c 2007-03-10 19:38:53.769339356 +0100
++++ prayer-1.0.18/prayer/cmd_copy.c 2007-03-10 19:39:30.404056640 +0100
+@@ -95,7 +95,7 @@ generate_directory_line(struct session *
+ html_session_bprintf(session, b,
+ "<td><a href=\"", "\">" CRLF, "copy?cwd=%s",
+ name);
+- html_quote_string(b, dir);
++ html_quote_string(b, utf8_from_imaputf7(pool, dir));
+ bprintf(b, "</a></td>" CRLF);
+
+ bputs(b, "</tr>" CRLF);
+@@ -127,7 +127,7 @@ generate_favourite_folder_line(struct se
+ html_session_bprintf(session, b,
+ "<td><a href=\"", "\">" CRLF, "copy_msg/%s",
+ name);
+- html_quote_string(b, folder);
++ html_quote_string(b, utf8_from_imaputf7(pool, folder));
+ bprintf(b, "</a></td>" CRLF);
+
+ bputs(b, "</tr>" CRLF);
+@@ -159,7 +159,7 @@ generate_folder_line(struct session *ses
+ html_session_bprintf(session, b,
+ "<td><a href=\"", "\">" CRLF, "copy_msg/%s",
+ name);
+- html_quote_string(b, folder);
++ html_quote_string(b, utf8_from_imaputf7(pool, folder));
+ bprintf(b, "</a></td>" CRLF);
+
+ bprintf(b, "</tr>" CRLF);
+@@ -209,8 +209,8 @@ html_folderlist(struct session *session,
+ bputs(b, "<tr>");
+ bputs(b, "<td>");
+ bputs(b, "<table><tr><td>" CRLF);
+- html_form_field(b, "Directory", "cwd", session->cwd, 32);
+- html_form_field(b, "Filter", "filter", session->dir_filter, 12);
++ html_form_field(b, "Directory", "cwd", utf8_from_imaputf7(pool, session->cwd), 32);
++ html_form_field(b, "Filter", "filter", utf8_from_imaputf7(pool, session->dir_filter), 12);
+ html_form_submit(b, "submit", "Apply");
+ bputs(b, "</td></tr></table>" CRLF);
+ bputs(b, "<td align=\"right\"><table><tr><td>" CRLF);
+Index: prayer-1.0.18/prayer/cmd_copy_msg.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_copy_msg.c 2007-03-10 19:38:53.829347082 +0100
++++ prayer-1.0.18/prayer/cmd_copy_msg.c 2007-03-10 19:39:30.484066944 +0100
+@@ -125,12 +125,13 @@ void cmd_copy_msg(struct session *sessio
+ /* Keep current message */
+ if (count > 1) {
+ session_message(session, "Copied %lu messages to %s", count,
+- mailbox);
++ utf8_from_imaputf7(request->pool, mailbox));
+ session_log(session,
+ "[cmd_copy_msg] Copied %lu messages to %s", count,
+ mailbox);
+ } else if (count == 1) {
+- session_message(session, "Copied 1 message to %s", mailbox);
++ session_message(session, "Copied 1 message to %s",
++ utf8_from_imaputf7(request->pool, mailbox));
+ session_log(session, "[cmd_copy_msg] Copied 1 message to %s",
+ mailbox);
+ } else {
+@@ -152,9 +153,8 @@ void cmd_copy_msg(struct session *sessio
+ next = msgmap_value(zm, zm_offset + 1);
+ else {
+ /* No next message */
+- session_message(session,
+- "Copied message %lu to \"%s\", no more messages",
+- msgno, mailbox);
++ session_message(session, "Copied message %lu to \"%s\", no more messages",
++ msgno, utf8_from_imaputf7(request->pool, mailbox));
+ session_log(session, "[cmd_copy_msg] Copied message %lu to %s",
+ msgno, mailbox);
+ session->current = msgno;
+@@ -162,9 +162,8 @@ void cmd_copy_msg(struct session *sessio
+ return;
+ }
+
+- session_message(session,
+- "Copied message %lu to \"%s\", displaying %lu out of %lu",
+- msgno, mailbox, next, zm->nmsgs);
++ session_message(session, "Copied message %lu to \"%s\", displaying %lu out of %lu",
++ msgno, utf8_from_imaputf7(request->pool, mailbox), next, zm->nmsgs);
+ session_log(session, "[cmd_copy_msg] Copied message %lu to %s",
+ msgno, mailbox);
+
+Index: prayer-1.0.18/prayer/cmd_create.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_create.c 2007-03-10 19:38:53.919358672 +0100
++++ prayer-1.0.18/prayer/cmd_create.c 2007-03-10 19:39:30.554075959 +0100
+@@ -21,7 +21,8 @@ void cmd_create(struct session *session)
+
+ request_decode_get(request);
+
+- if ((mailbox = assoc_lookup(request->form, "name")) == NIL) {
++ if ((mailbox = utf8_to_imaputf7(request->pool,
++ assoc_lookup(request->form, "name"))) == NIL) {
+ session_redirect(session, request, "error");
+ return;
+ }
+@@ -58,12 +59,13 @@ void cmd_create(struct session *session)
+ if (ml_have_error()) {
+ session_message(session,
+ "Failed to create directory: %s - %s",
+- path, ml_errmsg());
++ utf8_from_imaputf7(request->pool, path), ml_errmsg());
+ session_log(session,
+ "[cmd_create] Failed to create directory: %s",
+ path);
+ } else {
+- session_message(session, "Created directory: %s", path);
++ session_message(session, "Created directory: %s",
++ utf8_from_imaputf7(request->pool, path));
+ session_log(session,
+ "[cmd_create] Created directory: %s", path);
+ dircache_add(session->dircache, path, T);
+@@ -72,12 +74,13 @@ void cmd_create(struct session *session)
+ if (ml_have_error()) {
+ session_message(session,
+ "Failed to create mailbox: %s - %s",
+- path, ml_errmsg());
++ utf8_from_imaputf7(request->pool, path), ml_errmsg());
+ session_log(session,
+ "[cmd_create] Failed to create mailbox: %s",
+ path);
+ } else {
+- session_message(session, "Created mailbox: %s", path);
++ session_message(session, "Created mailbox: %s",
++ utf8_from_imaputf7(request->pool, path));
+ session_log(session, "[cmd_create] Created mailbox: %s",
+ path);
+ dircache_add(session->dircache, path, NIL);
+Index: prayer-1.0.18/prayer/cmd_dir_check.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_dir_check.c 2007-03-10 19:38:53.979366397 +0100
++++ prayer-1.0.18/prayer/cmd_dir_check.c 2007-03-10 19:39:30.584079823 +0100
+@@ -43,7 +43,7 @@ void cmd_dir_check(struct session *sessi
+
+ session_message(session,
+ "Refreshed directory cache for directory \"%s\" at %s",
+- session->cwd, current_time());
++ utf8_from_imaputf7(request->pool, session->cwd), current_time());
+ dircache_invalidate(session, session->cwd);
+
+ if (request->argc >= 2)
+Index: prayer-1.0.18/prayer/cmd_display.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_display.c 2007-03-10 19:38:54.049375411 +0100
++++ prayer-1.0.18/prayer/cmd_display.c 2007-03-10 19:39:30.644087551 +0100
+@@ -567,9 +567,11 @@ show_textpart(struct session *session, M
+ struct request *request = session->request;
+ struct buffer *b = request->write_buffer;
+ char *init_msg, *decode_msg;
++ char *charset = "ISO-8859-1";
+ unsigned long len;
+ BODY *body = NIL;
+ BOOL show_html = NIL;
++ PARAMETER *parameter;
+
+ if (!(body = ml_body(session, stream, msgno, section)))
+ return(NIL);
+@@ -580,6 +582,13 @@ show_textpart(struct session *session, M
+ return(NIL);
+ }
+
++ for (parameter = body->parameter; parameter; parameter = parameter->next) {
++ if (strcasecmp(parameter->attribute, "charset") == 0) {
++ charset = parameter->value;
++ break;
++ }
++ }
++
+ if (!(init_msg = ml_fetchbody(session, stream, msgno, section, &len)))
+ return(NIL);
+
+@@ -637,10 +646,10 @@ show_textpart(struct session *session, M
+ if (show_html) {
+ if (decode_msg == init_msg)
+ decode_msg = strdup(init_msg);
+- html_secure(session, b, decode_msg);
++ html_secure(session, b, utf8_from_string(request->pool, charset, decode_msg, len));
+ } else {
+ bprintf(b, "<pre>" CRLF);
+- wrap_line_html(session, b, decode_msg, 80);
++ wrap_line_html(session, b, utf8_from_string(request->pool, charset, decode_msg, len), 80);
+ bprintf(b, "</pre>" CRLF);
+ }
+
+Index: prayer-1.0.18/prayer/cmd_favourites.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_favourites.c 2007-03-10 19:38:54.109383138 +0100
++++ prayer-1.0.18/prayer/cmd_favourites.c 2007-03-10 19:39:30.664090126 +0100
+@@ -104,7 +104,7 @@ generate_directory_line(struct session *
+ html_session_bprintf(session, b, "<a href=\"", "\">" CRLF,
+ "favourites?cwd=%s", name);
+
+- html_quote_string(b, dir);
++ html_quote_string(b, utf8_from_imaputf7(pool, dir));
+ bprintf(b, "</a></td>" CRLF);
+ bputs(b, "<td>&nbsp;</td>" CRLF);
+ bputs(b, "<td>&nbsp;</td>" CRLF);
+@@ -134,7 +134,7 @@ generate_favourite_folder_line(struct se
+ bputs(b, "</td>" CRLF);
+
+ bputs(b, "<td nowrap>" CRLF);
+- html_quote_string(b, folder);
++ html_quote_string(b, utf8_from_imaputf7(pool, folder));
+ bputs(b, "</td>" CRLF);
+
+ html_textlink_mailbox_table(session, b, "unsubscribe", name,
+@@ -170,7 +170,7 @@ generate_folder_line(struct session *ses
+ bputs(b, "</td>" CRLF);
+
+ bprintf(b, "<td nowrap>" CRLF);
+- html_quote_string(b, folder);
++ html_quote_string(b, utf8_from_imaputf7(pool, folder));
+ bprintf(b, "</td>" CRLF);
+
+ html_textlink_mailbox_table(session, b, "subscribe", name,
+@@ -208,8 +208,8 @@ html_folderlist(struct session *session,
+ bputs(b, "<tr>");
+ bputs(b, "<td>");
+ bputs(b, "<table><tr><td>" CRLF);
+- html_form_field(b, "Directory", "cwd", session->cwd, 32);
+- html_form_field(b, "Filter", "filter", session->dir_filter, 12);
++ html_form_field(b, "Directory", "cwd", utf8_from_imaputf7(pool, session->cwd), 32);
++ html_form_field(b, "Filter", "filter", utf8_from_imaputf7(pool, session->dir_filter), 12);
+ html_form_submit(b, "submit", "Apply");
+ bputs(b, "</td></tr></table>" CRLF);
+ bputs(b, "</td>" CRLF);
+Index: prayer-1.0.18/prayer/cmd_filter_select.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_filter_select.c 2007-03-10 19:38:54.159389577 +0100
++++ prayer-1.0.18/prayer/cmd_filter_select.c 2007-03-10 19:39:30.694093991 +0100
+@@ -68,7 +68,7 @@ generate_directory_line(struct session *
+ html_session_bprintf(session, b, "<td><a href=\"", "\">" CRLF,
+ "filter_select?cwd=%s", name);
+
+- html_quote_string(b, dir);
++ html_quote_string(b, utf8_from_imaputf7(pool, dir));
+ bprintf(b, "</a></td>" CRLF);
+
+ bputs(b, "</tr>" CRLF);
+@@ -93,7 +93,7 @@ generate_favourite_folder_line(struct se
+ bputs(b, "</td>" CRLF);
+
+ bputs(b, "<td>" CRLF);
+- html_quote_string(b, folder);
++ html_quote_string(b, utf8_from_imaputf7(pool, folder));
+ bputs(b, "</td>" CRLF);
+
+ html_textlink_mailbox_table(session, b, "filter_mbox/copy", name,
+@@ -124,7 +124,7 @@ generate_folder_line(struct session *ses
+ bputs(b, "</td>" CRLF);
+
+ bputs(b, "<td>" CRLF);
+- html_quote_string(b, folder);
++ html_quote_string(b, utf8_from_imaputf7(pool, folder));
+ bputs(b, "</td>" CRLF);
+
+ html_textlink_mailbox_table(session, b, "filter_mbox/copy", name,
+@@ -159,8 +159,8 @@ html_folderlist(struct session *session,
+ /* Change directory form, including back button */
+ html_form_start(session, b, "GET", "filter_select");
+
+- html_form_field(b, "Directory", "cwd", session->cwd, 32);
+- html_form_field(b, "Filter", "filter", session->dir_filter, 12);
++ html_form_field(b, "Directory", "cwd", utf8_from_imaputf7(pool, session->cwd), 32);
++ html_form_field(b, "Filter", "filter", utf8_from_imaputf7(pool, session->dir_filter), 12);
+ html_form_submit(b, "sub_apply", "Apply");
+ html_form_submit(b, "sub_cancel", "Cancel");
+ html_form_end(b);
+Index: prayer-1.0.18/prayer/cmd_folders.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_folders.c 2007-03-10 19:38:54.249401166 +0100
++++ prayer-1.0.18/prayer/cmd_folders.c 2007-03-10 19:39:30.734099143 +0100
+@@ -95,7 +95,7 @@ generate_directory_line(struct session *
+
+ html_session_bprintf(session, b, "<td><a href=\"", "\">" CRLF,
+ "folders?cwd=%s", name);
+- html_quote_string(b, dir);
++ html_quote_string(b, utf8_from_imaputf7(pool, dir));
+ bprintf(b, "</a></td>" CRLF);
+
+ html_textlink_mailbox_table(session, b, "rename", name, "Rename");
+@@ -127,7 +127,7 @@ generate_folder_line(struct session *ses
+ html_session_bprintf(session, b, "<td nowrap><a href=\"", "\">" CRLF,
+ "change/%s", name);
+
+- html_quote_string(b, folder);
++ html_quote_string(b, utf8_from_imaputf7(pool, folder));
+ bprintf(b, "</a></td>" CRLF);
+
+ if (strcmp(name, "INBOX") != 0) {
+@@ -165,8 +165,8 @@ html_folderlist(struct session *session,
+ else
+ bputs(b, "<tr>");
+ bputs(b, "<td><table><tr><td>" CRLF);
+- html_form_field(b, "Directory", "cwd", session->cwd, 32);
+- html_form_field(b, "Filter", "filter", session->dir_filter, 12);
++ html_form_field(b, "Directory", "cwd", utf8_from_imaputf7(pool, session->cwd), 32);
++ html_form_field(b, "Filter", "filter", utf8_from_imaputf7(pool, session->dir_filter), 12);
+ html_form_submit(b, "submit", "Apply");
+ bputs(b, "</td></tr></table></td>" CRLF);
+ bputs(b, "<td align=\"right\"><table><tr>" CRLF);
+@@ -267,7 +267,7 @@ void cmd_folders(struct session *session
+ request_decode_get(request);
+ h = request->form;
+
+- if ((s = assoc_lookup(h, "cwd"))) {
++ if ((s = utf8_to_imaputf7(request->pool, assoc_lookup(h, "cwd")))) {
+ string_canon_decode(s);
+
+ if (string_filename_valid(s))
+@@ -277,7 +277,7 @@ void cmd_folders(struct session *session
+ "Path contained illegal characters");
+ }
+
+- if ((s = assoc_lookup(h, "filter"))
++ if ((s = utf8_to_imaputf7(request->pool, assoc_lookup(h, "filter")))
+ && (strcmp(s, session->dir_filter) != 0))
+ string_strdup(&session->dir_filter, s);
+ }
+Index: prayer-1.0.18/prayer/cmd_forward1.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_forward1.c 2007-03-10 19:38:54.309408891 +0100
++++ prayer-1.0.18/prayer/cmd_forward1.c 2007-03-10 19:39:30.744100430 +0100
+@@ -157,6 +157,8 @@ add_text(struct session *session,
+ char *init_msg, *decode_msg, *type;
+ BODY *body = NIL;
+ char *section = "1";
++ PARAMETER *parameter;
++ char *charset = "ISO-8859-1";
+
+ if (!(text = ml_fetch_header(session, stream, msgno,
+ NIL, hdrslist, &len, 0)))
+@@ -204,6 +206,13 @@ add_text(struct session *session,
+ } else
+ section = "1";
+
++ for (parameter = body->parameter; parameter; parameter = parameter->next) {
++ if (strcasecmp(parameter->attribute, "charset") == 0) {
++ charset = parameter->value;
++ break;
++ }
++ }
++
+ if (!(init_msg = ml_fetchbody(session, stream, msgno, section, &len)))
+ return (NIL);
+
+Index: prayer-1.0.18/prayer/cmd_list.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_list.c 2007-03-10 19:38:54.379417906 +0100
++++ prayer-1.0.18/prayer/cmd_list.c 2007-03-10 19:39:30.794106870 +0100
+@@ -143,7 +143,7 @@ cmd_list_toolbar_hdr(struct session *ses
+ bputs(b, "</tr></table></td>" CRLF);
+
+ bputs(b, "<td width=\"33%\" align=\"center\"><strong>\"");
+- html_quote_string(b, session->foldername);
++ html_quote_string(b, utf8_from_imaputf7(session->request->pool, session->foldername));
+ bputs(b, "\" with ");
+ bprintf(b, "%lu%s %s" CRLF, count, marked, messages);
+ bputs(b, "</strong></td>" CRLF);
+@@ -378,7 +378,7 @@ cmd_list_msg(struct session *session,
+ (char *) rfc1522_decode(pool_alloc(request->pool, strlen(string)),
+ strlen(string), string, NIL);
+
+- string = string_prune(request->pool, string, config->list_addr_maxlen);
++ string = utf8_prune(request->pool, string, config->list_addr_maxlen);
+
+ if (use_to)
+ string = pool_strcat(request->pool, "To: ", string);
+@@ -400,7 +400,7 @@ cmd_list_msg(struct session *session,
+ rfc1522_decode(pool_alloc(request->pool, strlen(string)),
+ strlen(string), string, NIL);
+
+- string = string_prune(request->pool, string,
++ string = utf8_prune(request->pool, string,
+ config->list_subject_maxlen);
+ } else
+ string = "(No subject)";
+Index: prayer-1.0.18/prayer/cmd_preferred.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_preferred.c 2007-03-10 19:38:54.429424344 +0100
++++ prayer-1.0.18/prayer/cmd_preferred.c 2007-03-10 19:39:30.824110733 +0100
+@@ -22,7 +22,8 @@ void cmd_preferred(struct session *sessi
+ if (string_filename_valid(name)) {
+ favourite_preferred(fl, name);
+ options->save = T;
+- session_message(session, "Making %s preferred folder", name);
++ session_message(session, "Making %s preferred folder",
++ utf8_from_imaputf7(request->pool, name));
+ } else
+ session_message(session,
+ "String contained illegal characters");
+Index: prayer-1.0.18/prayer/cmd_rename.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_rename.c 2007-03-10 19:38:54.499433358 +0100
++++ prayer-1.0.18/prayer/cmd_rename.c 2007-03-10 19:39:30.844113310 +0100
+@@ -63,7 +63,7 @@ generate_directory_line(struct session *
+ bprintf(b, "</a></td>" CRLF);
+ html_session_bprintf(session, b, "<td><a href=\"", "\">" CRLF,
+ "rename?cwd=%s", name);
+- html_quote_string(b, dir);
++ html_quote_string(b, utf8_from_imaputf7(pool, dir));
+ bprintf(b, "</a></td></tr>" CRLF);
+ }
+
+@@ -84,7 +84,7 @@ generate_folder_line(struct session *ses
+ html_icon(session, b, "dir.gif", "[mailbox]");
+ bputs(b, "</a></td>" CRLF);
+ bputs(b, "<td><a>" CRLF);
+- html_quote_string(b, folder);
++ html_quote_string(b, utf8_from_imaputf7(pool, folder));
+ bputs(b, "</a></td></tr>" CRLF);
+ }
+
+@@ -107,7 +107,7 @@ rename_html_folderlist(struct session *s
+ if (session->rename_foldername)
+ bprintf(b,
+ "<h2 align=\"center\">Rename folder %s to ...</h2>" CRLF,
+- session->rename_foldername);
++ utf8_from_imaputf7(pool, session->rename_foldername));
+
+ /* Change directory form, including back button */
+ html_form_start(session, b, "GET", "rename");
+@@ -118,8 +118,8 @@ rename_html_folderlist(struct session *s
+ else
+ bputs(b, "<tr>");
+ bputs(b, "<td>" CRLF);
+- html_form_field(b, "Directory", "cwd", session->cwd, 32);
+- html_form_field(b, "Filter", "filter", session->dir_filter, 12);
++ html_form_field(b, "Directory", "cwd", utf8_from_imaputf7(pool, session->cwd), 32);
++ html_form_field(b, "Filter", "filter", utf8_from_imaputf7(pool, session->dir_filter), 12);
+ html_form_submit(b, "submit", "Apply");
+ bputs(b, "</td></tr></table>" CRLF);
+ html_form_end(b);
+Index: prayer-1.0.18/prayer/cmd_rename_item.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_rename_item.c 2007-03-10 19:38:54.569442372 +0100
++++ prayer-1.0.18/prayer/cmd_rename_item.c 2007-03-10 19:39:30.864115885 +0100
+@@ -29,7 +29,7 @@ void cmd_rename_item(struct session *ses
+ }
+
+ if (!(session->rename_foldername &&
+- (newname = assoc_lookup(request->form, "name")))) {
++ (newname = utf8_to_imaputf7(pool, assoc_lookup(request->form, "name"))))) {
+ session_redirect(session, request, "folders");
+ return;
+ }
+@@ -70,11 +70,13 @@ void cmd_rename_item(struct session *ses
+ if (ml_have_error()) {
+ session_message(session,
+ "Failed to rename mailbox: %s - %s",
+- session->rename_foldername, ml_errmsg());
++ utf8_from_imaputf7(pool, session->rename_foldername),
++ ml_errmsg());
+ } else {
+ session_message(session,
+ "Renamed mailbox %s to be %s",
+- session->rename_foldername, newname);
++ utf8_from_imaputf7(pool, session->rename_foldername),
++ newname);
+ dircache_rename(session->dircache, session->rename_foldername,
+ newname);
+ }
+Index: prayer-1.0.18/prayer/cmd_reply2.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_reply2.c 2007-03-10 19:38:54.619448812 +0100
++++ prayer-1.0.18/prayer/cmd_reply2.c 2007-03-10 19:39:30.894119749 +0100
+@@ -51,6 +51,8 @@ add_text(struct session *session, struct
+ char *init_msg, *decode_msg, *type;
+ unsigned long len;
+ char *text, *s;
++ PARAMETER *parameter;
++ char *charset = "ISO-8859-1";
+
+ if ((body = ml_body(session, stream, msgno, "1")) == NIL)
+ return(NIL);
+@@ -91,6 +93,13 @@ add_text(struct session *session, struct
+ return(T);
+ }
+
++ for (parameter = body->parameter; parameter; parameter = parameter->next) {
++ if (strcasecmp(parameter->attribute, "charset") == 0) {
++ charset = parameter->value;
++ break;
++ }
++ }
++
+ /* Got a valid text section to display */
+ if (!(init_msg=ml_fetchbody(session, stream, msgno, section, &len)))
+ return(NIL);
+@@ -133,11 +142,11 @@ add_text(struct session *session, struct
+ struct buffer *b = buffer_create(pool, 8192);
+ if (decode_msg == init_msg)
+ decode_msg = strdup(init_msg);
+- html_secure_strip_all(b, decode_msg);
++ html_secure_strip_all(b, utf8_from_string(pool, charset, decode_msg, len));
+
+ text = buffer_fetch(b, 0, buffer_size(b), NIL);
+ } else
+- text = decode_msg;
++ text = utf8_from_string(pool, charset, decode_msg, len);
+
+ bputs(b, ">");
+ for (s = text; *s;) {
+Index: prayer-1.0.18/prayer/cmd_rm.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_rm.c 2007-03-10 19:38:54.669455249 +0100
++++ prayer-1.0.18/prayer/cmd_rm.c 2007-03-10 19:39:30.914122325 +0100
+@@ -32,16 +32,20 @@ void cmd_rm(struct session *session)
+ bprintf(b,
+ "<h2 align=\"center\">Confirm directory deletion: \"%s\"</h2>"
+ CRLF,
+- string_canon_decode(pool_strdup
+- (request->pool, request->argv[2])));
++ utf8_from_imaputf7(request->pool,
++ string_canon_decode(pool_strdup
++ (request->pool,
++ request->argv[2]))));
+
+ } else {
+ html_start(session, b, "Confirm Mail folder deletion");
+ bprintf(b,
+ "<h2 align=\"center\">Confirm folder deletion: \"%s\"</h2>"
+ CRLF,
+- string_canon_decode(pool_strdup
+- (request->pool, request->argv[2])));
++ utf8_from_imaputf7(request->pool,
++ string_canon_decode(pool_strdup
++ (request->pool,
++ request->argv[2]))));
+ }
+
+ cmd = pool_printf(request->pool, "rm1/%s/%s",
+Index: prayer-1.0.18/prayer/cmd_rm1.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_rm1.c 2007-03-10 19:38:54.719461687 +0100
++++ prayer-1.0.18/prayer/cmd_rm1.c 2007-03-10 19:39:30.944126189 +0100
+@@ -55,7 +55,7 @@ void cmd_rm1(struct session *session)
+ session_message(session, "%s", ml_errmsg()); /* Includes name */
+ } else {
+ session_message(session, "Deleted directory: \"%s\"", mailbox);
+- dircache_delete(session->dircache, mailbox);
++ dircache_delete(session->dircache, utf8_from_imaputf7(request->pool, mailbox));
+ }
+ } else {
+ ml_delete(session, stream,
+@@ -67,7 +67,8 @@ void cmd_rm1(struct session *session)
+ } else if (ml_have_error()) {
+ session_message(session, "%s", ml_errmsg()); /* Includes name */
+ } else {
+- session_message(session, "Deleted mailbox: \"%s\"", mailbox);
++ session_message(session, "Deleted mailbox: \"%s\"",
++ utf8_from_imaputf7(request->pool, mailbox));
+ dircache_delete(session->dircache, mailbox);
+ if (favourite_delete(fl, mailbox))
+ options->save = T;
+Index: prayer-1.0.18/prayer/cmd_subscribe.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_subscribe.c 2007-03-10 19:38:54.769468126 +0100
++++ prayer-1.0.18/prayer/cmd_subscribe.c 2007-03-10 19:39:30.954127477 +0100
+@@ -23,7 +23,7 @@ void cmd_subscribe(struct session *sessi
+ if (favourite_add(fl, name)) {
+ options->save = T;
+ session_message(session, "Added %s to favourites list",
+- name);
++ utf8_from_imaputf7(request->pool, name));
+ } else
+ session_message(session, "Already on favourites list",
+ name);
+Index: prayer-1.0.18/prayer/cmd_transfer.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_transfer.c 2007-03-10 19:38:54.829475852 +0100
++++ prayer-1.0.18/prayer/cmd_transfer.c 2007-03-10 19:39:30.994132629 +0100
+@@ -93,7 +93,7 @@ generate_directory_line(struct session *
+ html_session_bprintf(session, b,
+ "<td><a href=\"", "\">" CRLF, "transfer?cwd=%s",
+ name);
+- html_quote_string(b, dir);
++ html_quote_string(b, utf8_from_imaputf7(pool, dir));
+ bprintf(b, "</a></td>" CRLF);
+
+ bputs(b, "<td>&nbsp;</td>" CRLF);
+@@ -125,7 +125,7 @@ generate_favourite_folder_line(struct se
+ bputs(b, "</a></td>" CRLF);
+
+ bputs(b, "<td><a>" CRLF);
+- html_quote_string(b, folder);
++ html_quote_string(b, utf8_from_imaputf7(pool, folder));
+ bputs(b, "</a></td>" CRLF);
+
+ bprintf(b, "<td><a href=\"%s/NOSEQ/transfer/%s/%s\">" CRLF,
+@@ -159,7 +159,7 @@ generate_folder_line(struct session *ses
+ bputs(b, "</a></td>" CRLF);
+
+ bputs(b, "<td>" CRLF);
+- html_quote_string(b, folder);
++ html_quote_string(b, utf8_from_imaputf7(pool, folder));
+ bputs(b, "</td>" CRLF);
+
+ bprintf(b, "<td><a href=\"%s/NOSEQ/transfer/%s/%s\">" CRLF,
+@@ -197,8 +197,8 @@ html_folderlist(struct session *session,
+ else
+ bputs(b, "<tr>");
+ bputs(b, "<td><table><tr><td>" CRLF);
+- html_form_field(b, "Directory", "cwd", session->cwd, 32);
+- html_form_field(b, "Filter", "filter", session->dir_filter, 12);
++ html_form_field(b, "Directory", "cwd", utf8_from_imaputf7(pool, session->cwd), 32);
++ html_form_field(b, "Filter", "filter", utf8_from_imaputf7(pool, session->dir_filter), 12);
+ html_form_submit(b, "submit", "Apply");
+ bputs(b, "</td></tr></table></td>" CRLF);
+ bputs(b, "<td align=\"right\"><table><tr><td>" CRLF);
+@@ -332,7 +332,8 @@ static BOOL download(struct session *ses
+ OP_READONLY);
+
+ if (!session->xfer_stream) {
+- session_message(session, "Failed to open mail folder: %s", name);
++ session_message(session, "Failed to open mail folder: %s",
++ utf8_from_imaputf7(request->pool, name));
+ session_log(session,
+ "[cmd_transfer] Failed to open mail folder: %s", name);
+ return (NIL);
+@@ -343,7 +344,7 @@ static BOOL download(struct session *ses
+ /* Fetch overview for all messages in folder */
+ if (!ml_fetch_overview(session, tstream, "1:*", NIL)) {
+ session_message(session, "Failed to fetch folder overview: %s",
+- name);
++ utf8_from_imaputf7(request->pool, name));
+ session_log(session,
+ "[cmd_transfer]] Failed to fetch overview: %s", name);
+ return (NIL);
+Index: prayer-1.0.18/prayer/cmd_unsubscribe.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_unsubscribe.c 2007-03-10 19:38:54.919487442 +0100
++++ prayer-1.0.18/prayer/cmd_unsubscribe.c 2007-03-10 19:39:31.014135204 +0100
+@@ -23,10 +23,11 @@ void cmd_unsubscribe(struct session *ses
+ if (favourite_delete(fl, name)) {
+ options->save = T;
+ session_message(session, "Removed %s from favourites list",
+- name);
++ utf8_from_imaputf7(request->pool, name));
+ } else
+ session_message(session,
+- "Folder %s not on favourites list", name);
++ "Folder %s not on favourites list",
++ utf8_from_imaputf7(request->pool, name));
+ } else
+ session_message(session,
+ "String contained illegal characters");
+Index: prayer-1.0.18/prayer/cmd_upload_select.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/cmd_upload_select.c 2007-03-10 19:38:54.969493881 +0100
++++ prayer-1.0.18/prayer/cmd_upload_select.c 2007-03-10 19:39:31.034137781 +0100
+@@ -122,8 +122,8 @@ html_folderlist(struct session *session,
+
+ /* Change directory form, including back button */
+ html_form_start(session, b, "GET", "upload_select");
+- html_form_field(b, "Directory", "cwd", session->cwd, 32);
+- html_form_field(b, "Filter", "filter", session->dir_filter, 12);
++ html_form_field(b, "Directory", "cwd", utf8_from_imaputf7(pool, session->cwd), 32);
++ html_form_field(b, "Filter", "filter", utf8_from_imaputf7(pool, session->dir_filter), 12);
+ html_form_submit(b, "submit", "Apply");
+ html_form_end(b);
+
+Index: prayer-1.0.18/prayer/draft.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/draft.c 2007-03-10 19:38:55.019500318 +0100
++++ prayer-1.0.18/prayer/draft.c 2007-03-10 19:39:31.074142931 +0100
+@@ -477,7 +477,7 @@ void draft_update_body(struct draft *d,
+ } else
+ d->body = pool_strdup(d->pool, d->body);
+
+- draft_transliterate_1252((unsigned char *)d->body);
++ /*draft_transliterate_1252((unsigned char *)d->body);*/
+ }
+
+ /* draft_update() ********************************************************
+@@ -535,7 +535,7 @@ void draft_update(struct draft *d, struc
+ else
+ d->body = pool_maybe_strdup(d->pool, d->body);
+
+- draft_transliterate_1252((unsigned char *)d->body);
++ /*draft_transliterate_1252((unsigned char *)d->body);*/
+
+ d->in_reply_to = pool_maybe_strdup(d->pool, d->in_reply_to);
+ d->references = pool_maybe_strdup(d->pool, d->references);
+@@ -1164,7 +1164,7 @@ static void draft_make_multipart(struct
+ bprintf(b, CRLF "--%s" CRLF, cookie);
+
+ bputs(b,
+- "Content-Type: text/plain; format=flowed; charset=ISO-8859-1"
++ "Content-Type: text/plain; format=flowed; charset=UTF-8"
+ CRLF);
+ if (need_qprint)
+ bputs(b, "Content-Transfer-Encoding: QUOTED-PRINTABLE" CRLF);
+@@ -1323,7 +1323,7 @@ static void draft_make_single_part(struc
+ need_qprint = T;
+
+ bputs(b,
+- "Content-Type: text/plain; format=flowed; charset=ISO-8859-1"
++ "Content-Type: text/plain; format=flowed; charset=UTF-8"
+ CRLF);
+ if (need_qprint)
+ bputs(b, "Content-Transfer-Encoding: quoted-printable" CRLF);
+@@ -1418,7 +1418,7 @@ char *draft_make_msg(struct draft *draft
+
+ /* Encode using temporary buffer if required */
+ s = (char *) rfc1522_encode(tmp, len,
+- (unsigned char *) s, "ISO-8859-1");
++ (unsigned char *) s, "UTF-8");
+ bprintf(mb, "Subject: %s" CRLF, s);
+ free(tmp);
+ }
+Index: prayer-1.0.18/prayer/html.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/html.c 2007-03-10 19:38:55.069506757 +0100
++++ prayer-1.0.18/prayer/html.c 2007-03-10 19:39:31.134150660 +0100
+@@ -35,7 +35,7 @@ void html_start(struct session *session,
+ bprintf(b, "<title>Webmail service: %s</title>" CRLF, title);
+ bputs(b, "<meta name=\"robots\" content=\"none\">" CRLF);
+ bputs(b, ("<meta http-equiv=\"Content-Type\" "
+- "content=\"text/html; charset=ISO-8859-1\">" CRLF));
++ "content=\"text/html; charset=UTF-8\">" CRLF));
+ bputs(b, "</head>" CRLF);
+
+ bputs(b, "<body");
+@@ -502,7 +502,7 @@ void
+ html_form_start(struct session *s, struct buffer *b, char *method,
+ char *cmd)
+ {
+- bprintf(b, "<form method=\"%s\" accept-charset=\"ISO-8859-1\"",
++ bprintf(b, "<form method=\"%s\" accept-charset=\"UTF-8\"",
+ method);
+ html_session_bputs(s, b, " action=\"", "\">" CRLF, cmd);
+ }
+@@ -854,7 +854,7 @@ html_banner_toolbar_favourites(struct se
+ string_canon_encode(request->pool, li->name));
+ }
+
+- html_quote_string(b, li->name);
++ html_quote_string(b, utf8_from_imaputf7(request->pool, li->name));
+ bputs(b, "</option>" CRLF);
+ }
+ bputs(b, "</select>" CRLF);
+@@ -926,14 +926,14 @@ html_banner_toolbar_folders(struct sessi
+ if (prefix) {
+ bprintf(b, "<option value=\"%s%s\">",
+ prefix, string_canon_encode(request->pool, dl->name));
+- html_quote_string(b, session->cwd);
++ html_quote_string(b, utf8_from_imaputf7(request->pool, session->cwd));
+ html_quote_string(b, "/");
+- html_quote_string(b, dl->name);
++ html_quote_string(b, utf8_from_imaputf7(request->pool, dl->name));
+ bputs(b, "</option>" CRLF);
+ } else if (strcasecmp(dl->name, "INBOX") != 0) {
+ bprintf(b, "<option value=\"%s\">",
+ string_canon_encode(request->pool, dl->name));
+- html_quote_string(b, dl->name);
++ html_quote_string(b, utf8_from_imaputf7(request->pool, dl->name));
+ bputs(b, "</option>" CRLF);
+ }
+ }
+@@ -1077,7 +1077,8 @@ html_banner_toolbar(struct session *sess
+ void html_quote_char(struct buffer *b, unsigned char c)
+ {
+ if (c > 127) {
+- bprintf(b, "&#%lu;", (unsigned long) c);
++ /*bprintf(b, "&#%lu;", (unsigned long) c);*/
++ bputc(b, c);
+ } else
+ switch (c) {
+ case '"':
+Index: prayer-1.0.18/prayer/prayer_session.h
+===================================================================
+--- prayer-1.0.18.orig/prayer/prayer_session.h 2007-03-10 19:39:29.243907238 +0100
++++ prayer-1.0.18/prayer/prayer_session.h 2007-03-10 19:39:31.844242104 +0100
+@@ -74,3 +74,4 @@ extern int errno; /* just
+ #include "checksum.h"
+ #include "wrap.h"
+ #include "portlist.h"
++#include "utf8.h"
+Index: prayer-1.0.18/prayer/response.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/response.c 2007-03-10 19:38:55.169519634 +0100
++++ prayer-1.0.18/prayer/response.c 2007-03-10 19:39:31.904249831 +0100
+@@ -405,7 +405,7 @@ void response_error(struct request *requ
+ bputs(b, "Expires: ");
+ response_date_string(b, time(NIL));
+ bputs(b, "" CRLF);
+- bprintf(b, "Content-Type: text/html; charset=iso-8859-1" CRLF);
++ bprintf(b, "Content-Type: text/html; charset=UTF-8" CRLF);
+ bprintf(b, "Content-Length: %lu" CRLF,
+ buffer_size(request->write_buffer));
+ response_header_end(request);
+@@ -437,7 +437,7 @@ void response_html(struct request *reque
+
+ /* Generate simple header block for HTML */
+ response_header_start(request, status);
+- bputs(b, "Content-Type: text/html; charset=iso-8859-1" CRLF);
++ bputs(b, "Content-Type: text/html; charset=UTF-8" CRLF);
+
+ #ifdef STELLA_HACK
+ bputs(b, "Expires: ");
+Index: prayer-1.0.18/prayer/rfc1522.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/rfc1522.c 2007-03-10 19:38:55.249529936 +0100
++++ prayer-1.0.18/prayer/rfc1522.c 2007-03-10 19:39:31.934253696 +0100
+@@ -162,6 +162,7 @@ char **charset;
+ unsigned char *rv = NULL, *p;
+ char *start = s, *sw, *cset, *enc, *txt, *ew, **q, *lang;
+ unsigned long l;
++ unsigned char *src;
+ int i;
+
+ *d = '\0'; /* init destination */
+@@ -171,15 +172,16 @@ char **charset;
+ while (s && (sw = strstr(s, RFC1522_INIT))) {
+ /* validate the rest of the encoded-word */
+ if (rfc1522_valid(sw, &cset, &enc, &txt, &ew)) {
+- if (!rv)
++ if (!rv)
+ rv = d; /* remember start of dest */
+
+ /* copy everything between s and sw to destination */
+ for (i = 0; &s[i] < sw; i++)
+ if (!isspace((unsigned char) s[i])) { /* if some non-whitespace */
+- while (s < sw && d - rv < len - 1)
+- *d++ = (unsigned char) *s++;
+-
++ /* Assume that any 8 bit characters are Latin-1 */
++ utf8_print(VAR_CHAR_SET, NULL,
++ &d, len - (d - rv) - 1,
++ (unsigned char**)&s, sw - s);
+ break;
+ }
+
+@@ -188,23 +190,12 @@ char **charset;
+ if ((lang = strchr(cset, '*')))
+ *lang++ = '\0';
+
+-
+- /* Insert text explaining charset if we don't know what it is */
+- if ((strcasecmp((char *) cset, VAR_CHAR_SET))
+- && strcasecmp((char *) cset, "US-ASCII")) {
+- if (charset) {
+- if (!*charset) /* only write first charset */
+- *charset = cpystr(cset);
+- } else {
+- if (d - rv < len - 1)
+- *d++ = '[';
+-
+- sstrncpy((char **) &d, cset, len - 1 - (d - rv));
+- if (d - rv < len - 1)
+- *d++ = ']';
+- if (d - rv < len - 1)
+- *d++ = SPACE;
+- }
++ if (!*cset) {
++ cset = UNKNOWN_CHARSET;
++ }
++ if (charset) {
++ if (!*charset) /* only write first charset */
++ *charset = cpystr(cset);
+ }
+
+ /* based on encoding, write the encoded text to output buffer */
+@@ -228,15 +219,14 @@ char **charset;
+ } else
+ q = NULL;
+
+- if ((p =
++ if ((src = p =
+ rfc822_qprint((unsigned char *) txt, strlen(txt),
+ &l))) {
+- strncpy((char *) d, (char *) p, len - 1 - (d - rv));
+- d[len - 1 - (d - rv)] = '\0';
++ utf8_print(cset, VAR_CHAR_SET,
++ &d, len - 1 - (d - rv),
++ &src, l);
++ *d = '\0';
+ fs_give((void **) &p); /* free encoded buf */
+- d += l; /* advance dest ptr to EOL */
+- if (d - rv > len - 1)
+- d = rv + len - 1;
+ } else {
+ if (q)
+ fs_give((void **) &q);
+@@ -255,22 +245,26 @@ char **charset;
+
+ case 'B': /* 'B' encoding */
+ case 'b':
+- if ((p =
++ if ((src = p =
+ rfc822_base64((unsigned char *) txt, strlen(txt),
+ &l))) {
+- strncpy((char *) d, (char *) p, len - 1 - (d - rv));
+- d[len - 1 - (d - rv)] = '\0';
++ utf8_print(cset, VAR_CHAR_SET,
++ &d, len - 1 - (d - rv),
++ &src, l);
++ *d = '\0';
+ fs_give((void **) &p); /* free encoded buf */
+- d += l; /* advance dest ptr to EOL */
+- if (d - rv > len - 1)
+- d = rv + len - 1;
+ } else
+ goto bogus;
+
+ break;
+
++ bogus:
+ default:
+- sstrncpy((char **) &d, txt, len - 1 - (d - rv));
++ src = txt;
++ utf8_print(VAR_CHAR_SET, NULL,
++ &d, len - 1 - (d - rv),
++ (unsigned char **)&src, ew - txt);
++ *d = '\0';
+ break;
+ }
+
+@@ -283,6 +277,7 @@ char **charset;
+
+ if (lang)
+ lang[-1] = '*';
++
+ } else {
+
+ /*
+@@ -291,28 +286,38 @@ char **charset;
+
+ /* if already copying to destn, copy it */
+ if (rv) {
+- strncpy((char *) d, s,
+- (int) min((l = (sw - s) + RFC1522_INIT_L),
+- len - 1 - (d - rv)));
+- d += l; /* advance d, tie off text */
+- if (d - rv > len - 1)
+- d = rv + len - 1;
++ utf8_print(VAR_CHAR_SET, NULL,
++ &d, len - 1 - (d - rv),
++ (unsigned char**)&s, sw - s);
+ *d = '\0';
+- s += l; /* advance s beyond intro */
+ } else
+ s += ((sw - s) + RFC1522_INIT_L);
+ }
+ }
+
+- if (rv && *s) /* copy remaining text */
+- strncat((char *) rv, s, len - 1 - strlen((char *) rv));
++ if (rv && *s) { /* copy remaining text */
++ utf8_print(VAR_CHAR_SET, NULL,
++ &d, len - 1 - (d - rv),
++ (unsigned char**)&s, strlen(s));
++ *d = '\0';
++ }
+
+ /* BUG: MUST do code page mapping under DOS after decoding */
+
+- return (rv ? rv : (unsigned char *) start);
++ if (rv) return rv;
++
++ for (s = start; *s; s++) {
++ if (*s & 0x80) {
++ rv = d;
++ utf8_print(VAR_CHAR_SET, NULL,
++ &d, len - 1,
++ (unsigned char**)&start, strlen(s));
++ *d = '\0';
++ return rv;
+
+- bogus:
+- return ((unsigned char *) start);
++ }
++ }
++ return (unsigned char *) start;
+ }
+
+
+@@ -364,7 +369,7 @@ int c;
+ int rfc1522_valenc(c)
+ int c;
+ {
+- return (!(c == '?' || c == SPACE) && isprint((unsigned char) c));
++ return (!(c == '?' /*|| c == SPACE*/) && isprint((unsigned char) c));
+ }
+
+
+@@ -386,7 +391,7 @@ char **endp;
+ &e)
+ && rfc1522_token(++e, rfc1522_valtok, RFC1522_DLIM, &t)
+ && rfc1522_token(++t, rfc1522_valenc, RFC1522_TERM, &p)
+- && p - s <= RFC1522_MAXW;
++ /* && p - s <= RFC1522_MAXW */;
+
+ if (charset)
+ *charset = c;
+Index: prayer-1.0.18/prayer/utf8.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ prayer-1.0.18/prayer/utf8.c 2007-03-10 19:39:31.974258848 +0100
+@@ -0,0 +1,418 @@
++/* Copyright (c) Magnus Holmgren <magnus@kibibyte.se>,
++ * <holmgren@lysator.liu.se>
++ *
++ * This file is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ */
++
++#include "prayer_session.h"
++#include <iconv.h>
++
++#define JNK 0177
++#define UNI_REPLACEMENT_CHAR 0x0000FFFD
++#define UNI_REPLACEMENT_CHAR_UTF8 "\xEF\xBF\xBD"
++#define ICONV_CHUNK_SIZE 1024
++
++/* utf8_from_imaputf7() ***********************************************
++ *
++ * Convert a string encoded as modified UTF-7 to UTF-8.
++ * pool: Target pool for storage
++ * t: The string to convert
++ *
++ * Returns: A new, UTF-8-encoded string
++ *
++ * Note: This function tries hard to return something useful in case
++ * the input string is invalid in some way, rather than bail out
++ * and return NULL.
++ **********************************************************************/
++
++char *utf8_from_imaputf7(struct pool *pool, char *t)
++{
++ struct buffer *b = buffer_create(pool, 64);
++ BOOL base64mode = NIL;
++ int i, j;
++ unsigned char buf[4];
++ unsigned char *s;
++ unsigned long scalar; /* Unicode scalar value */
++ unsigned char c;
++
++ static char decode_base64[256] = {
++ JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,
++ JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,
++ JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,076,077,JNK,JNK,JNK,
++ 064,065,066,067,070,071,072,073,074,075,JNK,JNK,JNK,JNK,JNK,JNK,
++ JNK,000,001,002,003,004,005,006,007,010,011,012,013,014,015,016,
++ 017,020,021,022,023,024,025,026,027,030,031,JNK,JNK,JNK,JNK,JNK,
++ JNK,032,033,034,035,036,037,040,041,042,043,044,045,046,047,050,
++ 051,052,053,054,055,056,057,060,061,062,063,JNK,JNK,JNK,JNK,JNK,
++ JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,
++ JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,
++ JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,
++ JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,
++ JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,
++ JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,
++ JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,
++ JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK
++ };
++
++ if (!t) return NULL;
++
++ for (s = (unsigned char*)t; *s; s++) {
++ if (base64mode) {
++ if (*s == '-') {
++ if (j != 0 || c != 0) /* Some junk left */ {
++ bputs(b, UNI_REPLACEMENT_CHAR_UTF8);
++ }
++ base64mode = NIL;
++ continue;
++ }
++
++ if (decode_base64[*s] == JNK) {
++ break; /* Bail out */
++ }
++
++ switch (i++) {
++ case 0:
++ /* Top 6 bits of the first octet */
++ c = decode_base64[*s] << 2; break;
++ case 1:
++ /* Top 2 bits are bottom 2 bits of the first octet */
++ buf[j++] = c | (decode_base64[*s] >> 4);
++ /* and bottom 4 bits are top 4 bits of the second */
++ c = decode_base64[*s] << 4; break;
++ case 2:
++ /* Top 4 bits are bottom 4 bits of the second octet */
++ buf[j++] = c | (decode_base64[*s] >> 2);
++ /* and bottom 2 bits are top 2 bits of the third */
++ c = decode_base64[*s] << 6; break;
++ case 3:
++ /* Bottom 6 bits of the third octet */
++ buf[j++] = c | decode_base64[*s];
++ i = 0;
++ }
++
++ /* Check if we have a complete UTF-16 character */
++ if (j == 4) { /* We should now have a surrogate pair */
++ scalar = ((buf[0] & 3) << 18) + (buf[1] << 10)
++ + ((buf[2] & 3) << 8) + buf[3] + 0x10000;
++ }
++ else if (j == 2) {
++ if (buf[0] < 0xD8 || buf[0] > 0xDF) {
++ scalar = (buf[0] << 8) + buf[1];
++ }
++ else if (buf[0] > 0xDB) {
++ /* Error - invalid surrogate */
++ scalar = UNI_REPLACEMENT_CHAR;
++ }
++ else {
++ /* High surrogate found - need low surrogate */
++ continue;
++ }
++ }
++ else continue; /* Odd number of bytes */
++
++ if (scalar >= 0x110000) scalar = UNI_REPLACEMENT_CHAR;
++
++ if (scalar < 0x80) {
++ bputc(b, (unsigned char)scalar);
++ j = 0;
++ continue;
++ } else if (scalar < 0x800) {
++ bputc(b, 0xC0 | (scalar >> 6));
++ } else if (scalar < 0x10000) {
++ bputc(b, 0xE0 | (scalar >> 12));
++ } else {
++ bputc(b, 0xF0 | (scalar >> 18));
++ }
++
++ if (scalar >= 0x10000)
++ bputc(b, 0x80 | ((scalar >> 12) & 0x3F));
++ if (scalar >= 0x800)
++ bputc(b, 0x80 | ((scalar >> 6) & 0x3F));
++ bputc(b, 0x80 | (scalar & 0x3F));
++ j = 0;
++
++ }
++ else /* !base64mode */ {
++ if (*s == '&') {
++ if (*(s+1) == '-') {
++ bputc(b, '&');
++ s++;
++ }
++ else {
++ base64mode = T;
++ i = 0; j = 0; c = 0;
++ }
++ }
++ else {
++ bputc(b, *s);
++ }
++ }
++ }
++ return buffer_fetch(b, 0, buffer_size(b), NIL);
++}
++
++
++/* utf8_to_imaputf7() *************************************************
++ *
++ * Convert a string encoded as UTF-8 to modified UTF-7.
++ * pool: Target pool for storage
++ * t: The string to convert
++ *
++ * Returns: A new string encoded as modified UTF-7
++ *
++ * Note: This function tries hard to return something useful in case
++ * the input string is invalid in some way, rather than bail out
++ * and return NULL.
++ **********************************************************************/
++
++char *utf8_to_imaputf7(struct pool *pool, char *t)
++{
++ unsigned char *s;
++ struct buffer *b = buffer_create(pool, 64);
++ BOOL base64mode = NIL;
++ unsigned long scalar;
++ unsigned int L, i, j;
++ unsigned char buf[4];
++ unsigned char c = 0;
++
++ static char encode_base64[64] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,";
++ if (!t) return NULL;
++
++ for (s = (unsigned char *)t; *s; s++) {
++ if (*s < 0x7f && *s >= 0x20) {
++ if (base64mode) {
++ switch (i) {
++ case 1:
++ /* Remaining bottom 2 bits of the last octet */
++ bputc(b, encode_base64[c << 4]); break;
++ case 2:
++ /* Remaining bottom 4 bits of the last octet */
++ bputc(b, encode_base64[c << 2]);
++ }
++ bputc(b, '-');
++ base64mode = NIL;
++ }
++ bputc(b, *s);
++ if (*s == '&') {
++ bputc(b, '-');
++ }
++ }
++ else {
++ if (*s < 0x80) {
++ L = 0; scalar = *s;
++ } else if ((*s & 0xE0) == 0xC0) {
++ L = 1; scalar = (*s & 0x1F);
++ } else if ((*s & 0xF0) == 0xE0) {
++ L = 2; scalar = (*s & 0x0F);
++ } else if ((*s & 0xF8) == 0xF0) {
++ L = 3; scalar = (*s & 0x07);
++ } else if ((*s & 0xFC) == 0xF8) {
++ L = 4; scalar = (*s & 0x03);
++ } else if ((*s & 0xFE) == 0xFC) {
++ L = 5; scalar = (*s & 0x01);
++ } else {
++ L = 0; scalar = UNI_REPLACEMENT_CHAR;
++ }
++
++ for (j = 0; j < L; j++) {
++ s++;
++ if ((*s & 0xC0) == 0x80) {
++ scalar <<= 6;
++ scalar |= (*s & 0x3F);
++ }
++ else {
++ s--;
++ scalar = UNI_REPLACEMENT_CHAR;
++ }
++ }
++
++ if (!base64mode) {
++ bputc(b, '&');
++ base64mode = T;
++ i = 0;
++ }
++ if (scalar <= 0xFFFF) {
++ buf[1] = scalar & 0xFF;
++ scalar >>= 8;
++ buf[0] = scalar & 0xFF;
++ L = 2;
++ }
++ else {
++ scalar -= 0x100000UL;
++ buf[3] = scalar & 0xFF;
++ scalar >>= 8;
++ buf[2] = 0xDC | (scalar & 0x03);
++ scalar >>= 2;
++ buf[3] = scalar & 0xFF;
++ scalar >>= 8;
++ buf[1] = 0xD8 | (scalar & 0x03);
++ L = 4;
++ }
++
++ for (j = 0; j < L; j++) {
++ switch (i++) {
++ case 0:
++ /* Top 6 bits of the first octet */
++ bputc(b, encode_base64[(buf[j] >> 2) & 0x3F]);
++ c = (buf[j] & 0x03); break;
++ case 1:
++ /* Bottom 2 bits of the first octet, and top 4 bits of the second */
++ bputc(b, encode_base64[(c << 4) |
++ ((buf[j] >> 4) & 0x0F)]);
++ c = (buf[j] & 0x0F); break;
++ case 2:
++ /* Bottom 4 bits of the second octet and top 2 bits of the third */
++ bputc(b, encode_base64[(c << 2) |
++ ((buf[j] >> 6) & 0x03)]);
++ /* Bottom 6 bits of the third octet */
++ bputc(b, encode_base64[buf[j] & 0x3F]);
++ i = 0;
++ }
++ }
++
++ }
++ }
++ if (base64mode) {
++ switch (i) {
++ case 1:
++ /* Remaining bottom 2 bits of the last octet */
++ bputc(b, encode_base64[c << 4]); break;
++ case 2:
++ /* Remaining bottom 4 bits of the last octet */
++ bputc(b, encode_base64[c << 2]);
++ }
++ bputc(b, '-');
++ base64mode = NIL;
++ }
++ return buffer_fetch(b, 0, buffer_size(b), NIL);
++}
++
++
++/* utf8_from_string() ************************************************
++ *
++ * Convert a string with given character encoding to UTF-8
++ *
++ * pool: Pool to allocate memory from
++ * charset: Charset of input string
++ * t: String to convert
++ * len: Length of string
++ ***********************************************************************/
++
++char *utf8_from_string(struct pool *pool, char *charset, char *t, unsigned long len)
++{
++ struct buffer *b;
++ char chunk[ICONV_CHUNK_SIZE];
++ char *outbuf;
++ size_t outbytesleft;
++ size_t result;
++ int i;
++ iconv_t cd = iconv_open("UTF-8", charset);
++ b = buffer_create(pool, 1024);
++
++ if (cd == (iconv_t)(-1)) {
++ buffer_printf(b, "(Conversion from %s failed)", charset);
++ }
++ else while (len) {
++ outbuf = chunk;
++ outbytesleft = ICONV_CHUNK_SIZE;
++ result = iconv(cd, &t, (size_t*)&len, &outbuf, &outbytesleft);
++ for (i = 0; i < ICONV_CHUNK_SIZE - outbytesleft; i++) {
++ bputc(b, chunk[i]);
++ }
++ if (result == (size_t)(-1)) switch (errno) {
++ case E2BIG:
++ break;
++ case EILSEQ:
++ case EINVAL:
++ /* Try skipping a byte */
++ t++;
++ len--;
++ bputs(b, UNI_REPLACEMENT_CHAR_UTF8);
++ break;
++ default:
++ iconv_close(cd);
++ return NULL;
++ }
++ }
++
++ iconv_close(cd);
++ return buffer_fetch(b, 0, buffer_size(b), NIL);
++}
++
++BOOL utf8_print(char *charset, char *fallback_charset,
++ unsigned char **dst, unsigned long dst_size,
++ unsigned char **src, unsigned long src_size)
++{
++
++ iconv_t cd = iconv_open("UTF-8", charset);
++ if (cd == (iconv_t)(-1) && fallback_charset)
++ cd = iconv_open("UTF-8", fallback_charset);
++
++ while (iconv(cd, (char**)src, (size_t*)&src_size,
++ (char**)dst, (size_t*)&dst_size) == (size_t)(-1)) {
++ switch (errno) {
++ case EILSEQ:
++ case EINVAL:
++ /* Try skipping a byte */
++ (*src)++;
++ src_size--;
++ if (dst_size >= sizeof(UNI_REPLACEMENT_CHAR_UTF8)) {
++ strcpy((char*)*dst, UNI_REPLACEMENT_CHAR_UTF8);
++ }
++ if (errno == EILSEQ) break;
++ case E2BIG:
++ default:
++ iconv_close(cd);
++ return NIL;
++ }
++ }
++ iconv_close(cd);
++ return T;
++}
++
++/* utf8_prune() ********************************************************
++ *
++ * Like string_prune, but counts UTF-8 multibyte sequences as units.
++ * pool: Target pool
++ * s: UTF-8 string to prune
++ * maxlen: Maximum length of string before pruning applies.
++ *
++ * Returns: Pruned string, maximum maxlen characters (not bytes), not
++ * counting the terminating null.
++ ***********************************************************************/
++
++char *utf8_prune(struct pool *pool, char *s, unsigned long maxlen)
++{
++ char *result;
++ unsigned long cutoff;
++ unsigned long L;
++ unsigned long i = 0;
++
++ if (maxlen < (strlen("...") + 1))
++ return (s);
++
++ for (L = 0; L < maxlen; L++) {
++ if (s[i] == '\0') return s;
++ if (L == maxlen - strlen("...")) cutoff = i;
++
++ if (s[i] & 0x80)
++ while (s[i] & 0x80) i++;
++ else
++ i++;
++ }
++
++ result = pool_alloc(pool, cutoff + 4);
++ memcpy(result, s, cutoff);
++ strcpy(result + cutoff, "...");
++
++ return (result);
++
++}
+Index: prayer-1.0.18/prayer/utf8.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ prayer-1.0.18/prayer/utf8.h 2007-03-10 19:39:32.004262711 +0100
+@@ -0,0 +1,7 @@
++char *utf8_from_imaputf7(struct pool *pool, char *t);
++char *utf8_to_imaputf7(struct pool *pool, char *t);
++char *utf8_from_string(struct pool *pool, char *charset, char *t, unsigned long len);
++BOOL utf8_print(char *charset, char *fallback_charset,
++ unsigned char **dst, unsigned long dst_size,
++ unsigned char **src, unsigned long src_size);
++char *utf8_prune(struct pool *pool, char *s, unsigned long maxlen);
Index: 1.0.18-1/debian/patches/sighandling.patch
===================================================================
--- 1.0.18-1/debian/patches/sighandling.patch (nonexistent)
+++ 1.0.18-1/debian/patches/sighandling.patch (revision 37)
@@ -0,0 +1,75 @@
+Index: prayer-1.0.18/prayer/os.h
+===================================================================
+--- prayer-1.0.18.orig/prayer/os.h 2007-03-10 19:56:40.357114747 +0100
++++ prayer-1.0.18/prayer/os.h 2007-03-10 19:57:56.266959171 +0100
+@@ -44,6 +44,8 @@ BOOL os_signal_alarm_clear(void);
+
+ BOOL os_signal_init();
+
++BOOL os_signal_hup_term_init(void (*hup_fn) (), void (*term_fn) ());
++
+ BOOL os_lock_exclusive(int fd);
+
+ BOOL os_lock_shared(int fd);
+Index: prayer-1.0.18/prayer/session_server.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/session_server.c 2007-03-10 19:56:40.647152355 +0100
++++ prayer-1.0.18/prayer/session_server.c 2007-03-10 19:57:56.326966954 +0100
+@@ -355,6 +355,7 @@ BOOL session_server(struct config *confi
+ fd_set readfds;
+ pid_t child;
+ unsigned long timeout = 0L;
++ BOOL sighup_seen = NIL;
+
+ if (config->direct_enable) {
+ ssl_portlist
+@@ -420,6 +421,18 @@ BOOL session_server(struct config *confi
+ } else {
+ rc = select(maxfd + 1, &readfds, NIL, NIL, NIL);
+ }
++ if (sighup_seen) {
++ log_misc("SIGHUP received - reexec daemon");
++ close(sockfd);
++ if (config->direct_enable) {
++ /* Find some way to pass this information along
++ to the new invocation somehow later. */
++ portlist_close_all(ssl_portlist);
++ portlist_close_all(plain_portlist);
++ }
++ log_misc_free();
++ return (T);
++ }
+ }
+ while ((rc < 0) && (errno == EINTR));
+
+Index: prayer-1.0.18/prayer/log.c
+===================================================================
+--- prayer-1.0.18.orig/prayer/log.c 2007-03-10 19:58:03.667919109 +0100
++++ prayer-1.0.18/prayer/log.c 2007-03-10 19:58:11.688959503 +0100
+@@ -502,6 +502,13 @@ BOOL log_misc_init(struct config *config
+ return (log_open(log_misc_ptr, log_name));
+ }
+
++void log_misc_free()
++{
++ if ((log_misc_ptr == NIL) || (log_misc_ptr->fd < 0))
++ return;
++ log_free(log_misc_ptr);
++}
++
+ /* log_misc_ping() *******************************************************
+ *
+ * Reopen misc log file if required
+Index: prayer-1.0.18/prayer/log.h
+===================================================================
+--- prayer-1.0.18.orig/prayer/log.h 2007-03-10 19:58:04.067970999 +0100
++++ prayer-1.0.18/prayer/log.h 2007-03-10 19:58:11.648954314 +0100
+@@ -45,6 +45,8 @@ void log_record_peer_pid(struct log *log
+ BOOL
+ log_misc_init(struct config *config, char *progname, char *misc_log_name);
+
++void log_misc_free();
++
+ BOOL log_misc_ping();
+
+ void log_misc(char *fmt, ...);
Index: 1.0.18-1/debian/patches/makefile_install_config.patch
===================================================================
--- 1.0.18-1/debian/patches/makefile_install_config.patch (nonexistent)
+++ 1.0.18-1/debian/patches/makefile_install_config.patch (revision 37)
@@ -0,0 +1,260 @@
+--- prayer-1.0.18.orig/files/etc/prayer-accountd.cf
++++ prayer-1.0.18/files/etc/prayer-accountd.cf
+@@ -8,6 +8,8 @@
+ # Default accountd.cf file suitable for RedHat Linux only.
+ # See distribution for some sample files for FreeBSD and Solaris
+
++accountd_port = 145
++
+ msforward_name = ".MSforward"
+ forward_name = ".forward"
+ aliases_name = "vacation.aliases"
+--- prayer-1.0.18.orig/files/Makefile
++++ prayer-1.0.18/files/Makefile
+@@ -53,41 +53,44 @@
+ install-cert:
+ if [ -f certs/prayer.pem ]; then \
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) \
+- -m $(PRIVATE_FILE) certs/prayer.pem ${BROOT}${PREFIX}/certs; \
++ -m $(PRIVATE_FILE) certs/prayer.pem ${DESTDIR}${PREFIX}/certs; \
+ fi
+
+ install-config: etc/prayer.cf
+ $(INSTALL) -D -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_FILE) \
+- etc/prayer.cf ${BROOT}${PRAYER_CONFIG_FILE}
++ etc/prayer.cf ${DESTDIR}${PRAYER_CONFIG_FILE}
+
+ install-aconfig:
+ $(INSTALL) -D -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_FILE) \
+- etc/prayer-accountd.cf ${BROOT}${ACCOUNTD_CONFIG_FILE}
++ etc/prayer-accountd.cf ${DESTDIR}${ACCOUNTD_CONFIG_FILE}
+
+ install-motd:
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_FILE) \
+- etc/motd.html ${BROOT}${PREFIX}/etc
++ etc/motd.html ${DESTDIR}/etc/prayer
+
+ install-welcome:
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_FILE) \
+- etc/welcome.html ${BROOT}${PREFIX}/etc
++ etc/welcome.html ${DESTDIR}/etc/prayer
+
+ install:
+- PREFIX=$(BROOT)$(PREFIX) VAR_PREFIX=$(BROOT)$(VAR_PREFIX) \
++ ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${DESTDIR}${PREFIX}
++ ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${DESTDIR}/etc/prayer
++
++ PREFIX=$(DESTDIR)$(PREFIX) VAR_PREFIX=$(DESTDIR)$(VAR_PREFIX) \
+ RO_USER=$(RO_USER) RO_GROUP=$(RO_GROUP) \
+ RW_USER=$(RW_USER) RW_GROUP=$(RW_GROUP) \
+ PUBLIC_DIR=$(PUBLIC_DIR) PRIVATE_DIR=$(PRIVATE_DIR) \
+ PUBLIC_FILE=$(PUBLIC_FILE) PRIVATE_FILE=$(PRIVATE_FILE) \
+ PUBLIC_EXEC=$(PUBLIC_FILE) PRIVATE_EXEC=$(PRIVATE_EXEC) \
+- BIN_DIR=$(BIN_DIR) INSTALL=$(INSTALL) \
++ BIN_DIR=$(DESTDIR)$(BIN_DIR) INSTALL=$(INSTALL) \
+ ./install.sh
+- if [ ! -f $(BROOT)$(PREFIX)/certs/prayer.pem ]; then $(MAKE) install-cert; fi
+- if [ ! -f $(BROOT)$(PRAYER_CONFIG_FILE) ]; then $(MAKE) install-config; fi
+- if [ ! -f $(BROOT)$(ACCOUNTD_CONFIG_FILE) ]; then $(MAKE) install-aconfig; fi
+- if [ ! -f $(BROOT)$(PREFIX)/etc/motd.html ]; then $(MAKE) install-motd; fi
+- if [ ! -f $(BROOT)$(PREFIX)/etc/welcome.html ]; then $(MAKE) install-welcome; fi
++# if [ ! -f $(DESTDIR)$(PREFIX)/certs/prayer.pem ]; then $(MAKE) install-cert; fi
++ if [ ! -f $(DESTDIR)$(PRAYER_CONFIG_FILE) ]; then $(MAKE) install-config; fi
++ if [ ! -f $(DESTDIR)$(ACCOUNTD_CONFIG_FILE) ]; then $(MAKE) install-aconfig; fi
++ if [ ! -f $(DESTDIR)/etc/prayer/motd.html ]; then $(MAKE) install-motd; fi
++ if [ ! -f $(DESTDIR)/etc/prayer/welcome.html ]; then $(MAKE) install-welcome; fi
+
+ redhat-install-init.d:
+ install -D -o root -g root -m 755 \
+- ./init.d/prayer $(BROOT)/etc/rc.d/init.d/prayer
++ ./init.d/prayer $(DESTDIR)/etc/rc.d/init.d/prayer
+ #chkconfig prayer --level 2345 on
+--- prayer-1.0.18.orig/files/install.sh
++++ prayer-1.0.18/files/install.sh
+@@ -4,77 +4,6 @@
+
+ PATH=/bin:/sbin/:/usr/bin:/usr/sbin
+
+-error=0
+-
+-if [ "x$PREFIX" = "x" ]; then
+- echo 'PREFIX not defined'
+- error=1
+-fi
+-
+-if [ "x$VAR_PREFIX" = "x" ]; then
+- echo 'VAR_PREFIX not defined'
+- error=1
+-fi
+-
+-if [ "x$RO_USER" = "x" ]; then
+- echo 'RO_USER not defined'
+- error=1
+-fi
+-
+-if [ "x$RO_GROUP" = "x" ]; then
+- echo 'RO_GROUP not defined'
+- error=1
+-fi
+-
+-if [ "x$RW_USER" = "x" ]; then
+- echo 'RW_USER not defined'
+- error=1
+-fi
+-
+-if [ "x$RW_GROUP" = "x" ]; then
+- echo 'RW_GROUP not defined'
+- error=1
+-fi
+-
+-if [ "x$PUBLIC_DIR" = "x" ]; then
+- echo 'PUBLIC_DIR not defined'
+- error=1
+-fi
+-
+-if [ "x$PRIVATE_DIR" = "x" ]; then
+- echo 'PRIVATE_DIR not defined'
+- error=1
+-fi
+-
+-if [ "x$BIN_DIR" = "x" ]; then
+- echo 'BIN_DIR not defined'
+- error=1
+-fi
+-
+-if [ $error != 0 ]; then
+- exit 1
+-fi
+-
+-if [ ! -d ${VAR_PREFIX} -a `whoami` = "root" ]; then
+- ${INSTALL} -d -o ${RW_USER} -g ${RW_GROUP} -m ${PRIVATE_DIR} ${VAR_PREFIX}
+-fi
+-
+-if [ ! -d ${PREFIX} ]; then
+- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${PREFIX}
+-fi
+-
+-if [ ! -d ${PREFIX}/etc ]; then
+- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PUBLIC_DIR} ${PREFIX}/etc
+-fi
+-
+-if [ ! -d ${PREFIX}/certs ]; then
+- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PRIVATE_DIR} ${PREFIX}/certs
+-fi
+-
+-if [ ! -d ${BIN_DIR} ]; then
+- ${INSTALL} -d -o ${RO_USER} -g ${RO_GROUP} -m ${PRIVATE_DIR} ${BIN_DIR}
+-fi
+-
+ for i in help icons
+ do
+ if [ -d "${PREFIX}/${i}" ]; then
+--- prayer-1.0.18.orig/files/etc/prayer.cf.SRC
++++ prayer-1.0.18/files/etc/prayer.cf.SRC
+@@ -20,7 +20,7 @@
+ # User ID to run as if we start off as root
+ prayer_user = "prayer"
+ # Group ID to run as if we start off as root
+-prayer_group = "prayer"
++prayer_group = "nogroup"
+
+ # Run prayer as background process.
+ # TRUE => will return as soon as valid configuration is found.
+@@ -423,14 +423,14 @@
+
+ # Various directories used by the running system
+ # Logs stored in $log_dir
+-log_dir = "$var_prefix/logs"
++log_dir = "/var/log/prayer"
+
+ # $lock_dir used for interlocking between prayer processes
+-lock_dir = "$var_prefix/locks"
++lock_dir = "/var/lock"
+
+ # $socket_dir is location for unix domain sockets which connect frontend
+ # to backend in proxy mode of operation.
+-socket_dir = "$var_prefix/sockets"
++socket_dir = "/var/run/prayer"
+
+ # Split socket directory into 64 subdirs keyed on first letter of sessionID
+ # Code provides compatibility in both directions: can switch back and forward
+@@ -441,14 +441,14 @@
+ init_socket_name = init
+
+ # $ssl_session_dir is location for SSL session cache
+-ssl_session_dir = "$var_prefix/ssl_scache"
++ssl_session_dir = "/var/run/prayer/ssl_scache"
+
+ # Location for temporary files e.g; attachments and folders in transist
+ # during upload and download operation. Core files also end up here
+-tmp_dir = "$var_prefix/tmp"
++tmp_dir = "/tmp"
+
+ # Location for PID files for prayer and prayer-session master processes.
+-pid_dir = "$var_prefix/pid"
++pid_dir = "/var/run/prayer"
+
+ # Interface to Hermes finger database
+ #lookup_rpasswd = "/data/finger/rpasswd.cdb"
+@@ -587,7 +587,7 @@
+ suppress_dotfiles = TRUE
+
+ # Mail directory in users account
+-maildir = "mail"
++maildir = ""
+
+ # Temporary hack to remove "mail/" from favourites list (and anywhere
+ # else where we find the strings embedded into .prayer files).
+@@ -601,7 +601,7 @@
+ # default_domain = "<valid mail domain>"
+
+ # Language for ispell.
+-ispell_language = "british"
++ispell_language = "american"
+
+ # Size of small and large compose windows
+ small_cols = 80
+--- prayer-1.0.18.orig/prayer/Makefile
++++ prayer-1.0.18/prayer/Makefile
+@@ -102,8 +102,9 @@
+ SESSION_LIBS += $(KERB_LIBS)
+ endif
+
+-CFLAGS = $(BASECFLAGS) $(COMMON_SSL_INCLUDE) $(CCLIENT_INCLUDE)
+-LDFLAGS = $(BASELDFLAGS)
++CFLAGS = $(BASECFLAGS)
++override CFLAGS += $(COMMON_SSL_INCLUDE) $(CCLIENT_INCLUDE)
++LDFLAGS = $(BASELDFLAGS) -Wl,--as-needed
+
+ SHARED_OBJS = \
+ pool.o list.o assoc.o memblock.o buffer.o string.o config.o user_agent.o \
+@@ -175,21 +176,21 @@
+
+ install: all
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_DIR) -d \
+- $(BROOT)$(BIN_DIR)
++ $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer $(BROOT)$(BIN_DIR)
++ prayer $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-chroot $(BROOT)$(BIN_DIR)
++ prayer-chroot $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-session $(BROOT)$(BIN_DIR)
++ prayer-session $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-ssl-prune $(BROOT)$(BIN_DIR)
++ prayer-ssl-prune $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-sem-prune $(BROOT)$(BIN_DIR)
++ prayer-sem-prune $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-db-prune $(BROOT)$(BIN_DIR)
++ prayer-db-prune $(DESTDIR)$(BIN_DIR)
+ $(INSTALL) -o $(RO_USER) -g $(RO_GROUP) -m $(PUBLIC_EXEC) \
+- prayer-cyclog $(BROOT)$(BIN_DIR)
++ prayer-cyclog $(DESTDIR)$(BIN_DIR)
+
+ prayer: $(PRAYER_OBJS) prayer_main.o
+ $(CC) $(LDFLAGS) -o prayer $(PRAYER_OBJS) prayer_main.o $(PRAYER_LIBS)
Index: 1.0.18-1/debian/patches/session_server_bugs.patch
===================================================================
--- 1.0.18-1/debian/patches/session_server_bugs.patch (nonexistent)
+++ 1.0.18-1/debian/patches/session_server_bugs.patch (revision 37)
@@ -0,0 +1,12 @@
+--- prayer-1.0.18.orig/prayer/session_server.c
++++ prayer-1.0.18/prayer/session_server.c
+@@ -375,7 +375,8 @@
+ if (!os_signal_child_init(os_child_reaper))
+ return (NIL);
+
+- name = pool_strcat(NIL, config->socket_dir, "/init");
++ name = pool_printf(NIL, "%s/%s",
++ config->socket_dir, config->init_socket_name);
+
+ if ((sockfd = os_bind_unix_socket(name)) < 0)
+ return (NIL);
Index: 1.0.18-1/debian/patches/pidfiles_extension.patch
===================================================================
--- 1.0.18-1/debian/patches/pidfiles_extension.patch (nonexistent)
+++ 1.0.18-1/debian/patches/pidfiles_extension.patch (revision 37)
@@ -0,0 +1,22 @@
+--- prayer-1.0.18.orig/prayer/prayer_main.c
++++ prayer-1.0.18/prayer/prayer_main.c
+@@ -111,7 +111,7 @@
+
+ static BOOL prayer_main_write_pid(struct config *config)
+ {
+- char *name = pool_printf(NIL, "%s/prayer", config->pid_dir);
++ char *name = pool_printf(NIL, "%s/prayer.pid", config->pid_dir);
+ FILE *file;
+
+ if ((file = fopen(name, "w")) == NIL)
+--- prayer-1.0.18.orig/prayer/session_main.c
++++ prayer-1.0.18/prayer/session_main.c
+@@ -32,7 +32,7 @@
+
+ static BOOL session_main_write_pid(struct config *config)
+ {
+- char *name = pool_printf(NIL, "%s/prayer-session", config->pid_dir);
++ char *name = pool_printf(NIL, "%s/prayer-session.pid", config->pid_dir);
+ FILE *file;
+
+ if ((file = fopen(name, "w")) == NIL)
Index: 1.0.18-1/debian/patches/series
===================================================================
--- 1.0.18-1/debian/patches/series (nonexistent)
+++ 1.0.18-1/debian/patches/series (revision 37)
@@ -0,0 +1,8 @@
+includes.patch
+makefile_install_config.patch
+session_unix_bugs.patch
+session_server_bugs.patch
+hasnochildren_means_noinferiors.patch
+pidfiles_extension.patch
+ipv6.patch
+utf8.patch
Index: 1.0.18-1/debian/changelog
===================================================================
--- 1.0.18-1/debian/changelog (nonexistent)
+++ 1.0.18-1/debian/changelog (revision 37)
@@ -0,0 +1,5 @@
+prayer (1.0.18-1) experimental; urgency=low
+
+ * Initial release (Closes: #392823)
+
+ -- Magnus Holmgren <magnus@kibibyte.se> Sat, 10 Mar 2007 14:24:21 +0100
Index: 1.0.18-1/debian/prayer-session.8.dbk
===================================================================
--- 1.0.18-1/debian/prayer-session.8.dbk (nonexistent)
+++ 1.0.18-1/debian/prayer-session.8.dbk (revision 37)
@@ -0,0 +1,158 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+<!--
+
+Process this file with an XSLT processor: `xsltproc \
+-''-nonet /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xslb manpage.dbk'. A manual page
+<package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A
+typical entry in a Makefile or Makefile.am is:
+
+DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xsl
+XP=xsltproc -''-nonet
+
+manpage.1: manpage.dbk
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The
+XSL files are in docbook-xsl. Please remember that if you
+create the nroff version in one of the debian/rules file
+targets (such as build), you will need to include xsltproc
+and docbook-xsl in your Build-Depends control field.
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>Magnus</firstname>">
+ <!ENTITY dhsurname "<surname>Holmgren</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>oktober 24, 2006</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>8</manvolnum>">
+ <!ENTITY dhemail "<email>magnus@kibibyte.se</email>">
+ <!ENTITY dhusername "Magnus Holmgren">
+ <!ENTITY dhucpackage "<refentrytitle>PRAYER</refentrytitle>">
+ <!ENTITY dhpackage "prayer-session">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2006</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>a fast stand-alone webmail server</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option><replaceable>OPTION</replaceable></option></arg>...</cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> command.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>--config-file <replaceable>filename</replaceable></option>
+ </term>
+ <listitem>
+ <para>Define prayer config file (Overrides compilation default and PRAYER_CONFIG_FILE environment variable).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--config-option <replaceable>option</replaceable>=<replaceable>value</replaceable></option>
+ </term>
+ <listitem>
+ <para>Override single configuration option.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--foreground</option>
+ </term>
+ <listitem>
+ <para>Run single threaded server in foreground.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--debug</option>
+ </term>
+ <listitem>
+ <para>Enable debugging.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show option summary.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>prayer(8), prayer.cf(5).</para>
+
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
Index: 1.0.18-1/debian/prayer.docs
===================================================================
--- 1.0.18-1/debian/prayer.docs (nonexistent)
+++ 1.0.18-1/debian/prayer.docs (revision 37)
@@ -0,0 +1,11 @@
+docs/CMD_LINE
+docs/DESIGN
+docs/DONE-OLD
+docs/FEATURES
+docs/ICONLIST
+docs/LOGS
+docs/NOTICE
+docs/README
+docs/SECURITY
+docs/TODO
+docs/URL_OPTIONS
Index: 1.0.18-1/debian/rules
===================================================================
--- 1.0.18-1/debian/rules (nonexistent)
+++ 1.0.18-1/debian/rules (revision 37)
@@ -0,0 +1,24 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses cdbs. Originaly written by Robert Millan.
+# This file is public domain.
+
+DEB_AUTO_CLEANUP_RCS := yes
+
+# Add here any variable or target overrides you need
+
+makebuilddir/prayer::
+ cp debian/Config .
+
+include /usr/share/cdbs/1/class/makefile.mk
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/rules/patchsys-quilt.mk
+
+#DEB_MAKE_INVOKE = $(DEB_MAKE_ENVVARS) make
+DEB_MAKE_INSTALL_TARGET = install DESTDIR=$(CURDIR)/debian/tmp
+DEB_INSTALL_CHANGELOGS_ALL = docs/DONE
+DEB_INSTALL_DOCS_ALL = -XCVS
+DEB_DH_INSTALL_ARGS = -XCVS
+DEB_DH_INSTALL_SOURCEDIR = debian/tmp
+
+clean::
+ rm -f Config
/1.0.18-1/debian/rules
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: 1.0.18-1/debian/prayer-accountd.dirs
===================================================================
--- 1.0.18-1/debian/prayer-accountd.dirs (nonexistent)
+++ 1.0.18-1/debian/prayer-accountd.dirs (revision 37)
@@ -0,0 +1 @@
+/var/run/prayer
Index: 1.0.18-1/debian/prayer.logrotate
===================================================================
--- 1.0.18-1/debian/prayer.logrotate (nonexistent)
+++ 1.0.18-1/debian/prayer.logrotate (revision 37)
@@ -0,0 +1,8 @@
+/var/log/prayer/prayer /var/log/prayer/prayer_session /var/log/prayer/access_log /var/log/prayer/session_log {
+ rotate 28
+ daily
+ compress
+ delaycompress
+ missingok
+ notifempty
+}
Index: 1.0.18-1/debian/prayer.dirs
===================================================================
--- 1.0.18-1/debian/prayer.dirs (nonexistent)
+++ 1.0.18-1/debian/prayer.dirs (revision 37)
@@ -0,0 +1,2 @@
+var/run/prayer
+var/log/prayer
Index: 1.0.18-1/debian/prayer-accountd.init
===================================================================
--- 1.0.18-1/debian/prayer-accountd.init (nonexistent)
+++ 1.0.18-1/debian/prayer-accountd.init (revision 37)
@@ -0,0 +1,71 @@
+#!/bin/sh
+#
+### BEGIN INIT INFO
+# Provides: prayer-accountd
+# Required-Start:
+# Required-Stop:
+# Should-Start: $local_fs
+# Should-Stop: $local_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Prayer account helper daemon
+# Description: Lets users change passwords, manage filters and other things not supported by IMAP itself
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/prayer-accountd
+PIDFILE=/var/run/prayer/accountd.pid
+DESC="Prayer account helper server"
+
+test -x $DAEMON || exit 0
+
+egrep -iq "^[[:space:]]*accountd_port[[:space:]]*=[[:space:]]*[[:digit:]]+[[:space:]]*$" /etc/prayer/accountd.cf || exit 0
+
+. /lib/lsb/init-functions
+
+# Include prayer defaults if available
+if [ -f /etc/default/prayer-accountd ] ; then
+ . /etc/default/prayer-accountd
+fi
+
+set +e
+
+start() {
+ log_daemon_msg "Starting $DESC" "accountd"
+ start-stop-daemon --start --background --make-pidfile --pidfile $PIDFILE \
+ --exec $DAEMON -- $DAEMON_OPTS
+ log_end_msg $?
+}
+
+stop() {
+ log_daemon_msg "Stopping $DESC"
+ if [ -f "$PIDFILE" ]; then
+ start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
+ log_progress_msg "accountd"
+ fi
+ rm -f "$PIDFILE"
+ log_end_msg 0
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+
+ stop)
+ stop
+ ;;
+
+ restart|force-reload)
+ stop
+ start
+ ;;
+ *)
+ N=/etc/init.d/prayer-accountd
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ log_failure_msg "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
Index: 1.0.18-1/debian/prayer.init
===================================================================
--- 1.0.18-1/debian/prayer.init (nonexistent)
+++ 1.0.18-1/debian/prayer.init (revision 37)
@@ -0,0 +1,89 @@
+#!/bin/sh
+#
+### BEGIN INIT INFO
+# Provides: prayer
+# Required-Start:
+# Required-Stop:
+# Should-Start: $local_fs
+# Should-Stop: $local_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Prayer init script
+# Description: Init script for prayer services
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+FRONTEND_DAEMON=/usr/sbin/prayer
+SESSION_DAEMON=/usr/sbin/prayer-session
+FRONTEND_PIDFILE=/var/run/prayer/prayer.pid
+SESSION_PIDFILE=/var/run/prayer/prayer-session.pid
+DESC="webmail server"
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+ENABLED=0
+
+# Include prayer defaults if available
+if [ -f /etc/default/prayer ] ; then
+ . /etc/default/prayer
+fi
+
+set +e
+
+start() {
+ if [ "$ENABLED" = "0" ]; then
+ echo "Prayer is disabled. Please set ENABLED=1 in /etc/default/prayer"
+ echo "after adapting /etc/prayer/prayer.cf to your needs."
+ exit 0
+ fi
+
+ log_daemon_msg "Starting $DESC" "prayer"
+ start-stop-daemon --start --pidfile $FRONTEND_PIDFILE \
+ --exec $FRONTEND_DAEMON -- $DAEMON_OPTS
+ log_end_msg $?
+}
+
+stop() {
+ log_daemon_msg "Stopping $DESC"
+ if [ -f "$SESSION_PIDFILE" ]; then
+ start-stop-daemon --stop --quiet --oknodo --pidfile $SESSION_PIDFILE
+ log_progress_msg "prayer-session"
+ fi
+ if [ -f "$FRONTEND_PIDFILE" ]; then
+ start-stop-daemon --stop --quiet --oknodo --pidfile $FRONTEND_PIDFILE
+ start-stop-daemon --stop --quiet --oknodo --exec $FRONTEND_DAEMON
+ log_progress_msg "prayer"
+ fi
+ rm -f "$FRONTEND_PIDFILE" "$SESSION_PIDFILE"
+ log_end_msg 0
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+
+ stop)
+ stop
+ ;;
+
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart".
+ #
+ stop
+ start
+ ;;
+ *)
+ N=/etc/init.d/prayer
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ log_failure_msg "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
Index: 1.0.18-1/debian/prayer-accountd.install
===================================================================
--- 1.0.18-1/debian/prayer-accountd.install (nonexistent)
+++ 1.0.18-1/debian/prayer-accountd.install (revision 37)
@@ -0,0 +1,2 @@
+usr/sbin/prayer-accountd
+etc/prayer/accountd.cf
Index: 1.0.18-1/debian/Config
===================================================================
--- 1.0.18-1/debian/Config (nonexistent)
+++ 1.0.18-1/debian/Config (revision 37)
@@ -0,0 +1,160 @@
+# $Cambridge: hermes/src/prayer/defaults/Config,v 1.5 2006/04/05 12:35:35 fanf2 Exp $
+#
+# Prayer - a Webmail Interface
+#
+# Copyright (c) University of Cambridge 2000 - 2002
+# See the file NOTICE for conditions of use and distribution.
+#
+# Conventional Configure file.
+
+SSL_ENABLE = true # SSL requires OpenSSL
+SESSION_CACHE_ENABLE = true # SSL session cache Requires Berkeley DB 3 or 4
+GZIP_ENABLE = true # Enable on the fly compression of pages
+LDAP_ENABLE = true # Add LDAP interface
+FENCE_ENABLE = false # Use Electric Fence to catch malloc problems
+DIRECT_ENABLE = false # Experimental. Leave this switched off...
+MUTEX_SEMAPHORE = true # Use SYSV mutexes rather than file locking
+
+# Following depend on the way that you have configured c-client
+CCLIENT_SSL_ENABLE = false # C-client was built with SSL support
+CCLIENT_PAM_ENABLE = false # C-client was built with PAM support
+CCLIENT_KERB_ENABLE = false # C-client was built with Kerberos support
+
+# Probably don't need the following
+ACCOUNTD_ENABLE = true # Only of use in Cambridge at the moment.
+ACCOUNTD_SSL_ENABLE = true # Enable SSL support in account management daemon
+ACCOUNTD_PAM_ENABLE = true # Enable PAM support in account management daemon
+ACCOUNTD_USE_BSD_PTY = true # Use Berkeley PTYs rather than Sys V PTYs
+
+############################################################################
+# Location of compiler
+CC = gcc
+# Location of make program (GNU make required)
+MAKE = make
+# Location of install program (GNU install or compatible required)
+INSTALL = install
+
+# Base Compiler options for GCC.
+#BASECFLAGS = -Wall -g
+#BASELDFLAGS = -g
+BASECFLAGS = -Wall -g -O2
+BASELDFLAGS = -g -O2
+BASE_LIBS = -lcrypt
+
+# Base Compiler options for Sun SUNWspro compiler
+#CC = /opt/SUNWspro/bin/cc
+#BASECFLAGS = -fast
+#BASELDFLAGS = -s
+#BASE_LIBS = -lcrypt -lxnet
+
+############################################################################
+# Location of various include files and libraries.
+############################################################################
+
+# Location of c-client library.
+#
+# Following works if we have a vanilla c-client installation at same level
+# as the prayer installation. Relies on a symbolic link ./prayer/c-client
+# which points to ../../imap/c-client. This just reduces the amount of
+# noise output on each line when building the package.
+#
+CCLIENT_DIR=/usr/include/c-client
+CCLIENT_INCLUDE=-I$(CCLIENT_DIR)
+CCLIENT_LIBS=-lc-client
+
+#
+# Following works with the mail/cclient port from FreeBSD
+#
+#CCLIENT_INCLUDE = -I/usr/local/include/c-client
+#CCLIENT_LIBS = -L/usr/local/lib -lc-client4
+#
+# Complication:
+# The FreeBSD port uses PAM and optionally SSL if built WITH_SSL=yes.
+#
+#CCLIENT_SSL_ENABLE = true
+#CCLIENT_KERB_ENABLE = true
+
+############################################################################
+
+# Electric fence (required if FENCE_ENABLE set)
+FENCE_INCLUDE=
+FENCE_LIBS=-lmcheck
+
+# Zlib (required if GZIP_ENABLE set)
+Z_INCLUDE =
+Z_LIBS = -lz
+
+# LDAP (required if LDAP_ENABLE set)
+LDAP_INCLUDE =
+LDAP_LIBS = -lldap
+
+# Pam (required if CCLIENT_PAM_ENABLE set)
+PAM_INCLUDE =
+PAM_LIBS = -lpam
+
+# Kerberos (required if CCLIENT_KERB_ENABLE set)
+KERB_INCLUDE =
+KERB_LIBS = -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err
+
+# SSL definitions (required if SSL_ENABLE or CCLIENT_SSL_ENABLE set)
+#
+# Following suitable for Linux and FreeBSD which have SSL preinstalled
+# (Header files from OpenSSL 0.9.7 want to include various Kerboros stuff)
+#
+SSL_INCLUDE=
+SSL_LIBS=-lssl -lcrypto
+OPENSSL=openssl
+
+# Following definitions suitable for our Sun systems.
+#SSL_BASE=/opt/local/ssl/current
+#SSL_INCLUDE=-I ${SSL_BASE}/include
+#SSL_LIBS=-L ${SSL_BASE}/lib -lssl -lcrypto
+#OPENSSL=${SSL_BASE}/bin/openssl
+
+# DB definitions (required if SESSION_CACHE_ENABLE set)
+#
+# Following suitable for Redhat Linux which has DB 3 preinstalled
+DB_INCLUDE=
+DB_LIBS=-ldb
+
+# Following suitable for FreeBSD with DB 4 package installed
+#DB_INCLUDE=-I/usr/local/include/db4
+#DB_LIBS=-L/usr/local/lib -ldb4
+
+############################################################################
+
+# Install location of prayer configuration and support files. The initial
+# config file runs prayer processes as user "prayer" and group "prayer".
+# If you are using SSL, the certificate file must be readable by RW_USER or
+# RW_GROUP. It is important that nothing else can read the certificate file.
+
+# Build root (used by Redhat RPM system)
+BROOT=$(CURDIR)/../debian/tmp
+
+# Directory, User and group for read-write files: log files, sockets etc
+VAR_PREFIX = /var/lib/prayer
+RW_USER = root
+RW_GROUP = root
+
+# Root Directory, User and group for read-only configuration files.
+# Default configuration and permissions does not allow prayer user to
+# update prayer configuration file.
+
+PREFIX = /usr/share/prayer
+RO_USER = root
+RO_GROUP = root
+
+# Access permissions for general objects (wrt above users and groups)
+PUBLIC_EXEC = 0755
+PUBLIC_DIR = 0755
+PUBLIC_FILE = 0644
+
+# Access permissions for private objects (wrt above users and groups)
+PRIVATE_EXEC = 0750
+PRIVATE_DIR = 0750
+PRIVATE_FILE = 0640
+
+# Location of configuration files and binaries
+PRAYER_CONFIG_FILE = /etc/prayer/prayer.cf
+BIN_DIR = /usr/sbin
+ACCOUNTD_CONFIG_FILE = /etc/prayer/accountd.cf
Index: 1.0.18-1/debian/watch
===================================================================
--- 1.0.18-1/debian/watch (nonexistent)
+++ 1.0.18-1/debian/watch (revision 37)
@@ -0,0 +1,9 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+ftp://ftp.csx.cam.ac.uk/pub/software/email/prayer/prayer-(.*)\.tar\.gz debian uupdate
Index: 1.0.18-1/debian/prayer.8.dbk
===================================================================
--- 1.0.18-1/debian/prayer.8.dbk (nonexistent)
+++ 1.0.18-1/debian/prayer.8.dbk (revision 37)
@@ -0,0 +1,178 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+<!--
+
+Process this file with an XSLT processor: `xsltproc \
+-''-nonet /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xslb manpage.dbk'. A manual page
+<package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A
+typical entry in a Makefile or Makefile.am is:
+
+DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xsl
+XP=xsltproc -''-nonet
+
+manpage.1: manpage.dbk
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The
+XSL files are in docbook-xsl. Please remember that if you
+create the nroff version in one of the debian/rules file
+targets (such as build), you will need to include xsltproc
+and docbook-xsl in your Build-Depends control field.
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>Magnus</firstname>">
+ <!ENTITY dhsurname "<surname>Holmgren</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>oktober 24, 2006</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>8</manvolnum>">
+ <!ENTITY dhemail "<email>magnus@kibibyte.se</email>">
+ <!ENTITY dhusername "Magnus Holmgren">
+ <!ENTITY dhucpackage "<refentrytitle>PRAYER</refentrytitle>">
+ <!ENTITY dhpackage "prayer">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2006</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>a fast stand-alone webmail server</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option><replaceable>OPTION</replaceable></option></arg>... -- <arg><option><replaceable>PRAYER-SESSION-OPTION</replaceable></option></arg> ...
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ <application>Info</application> format; see below.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>--config-file <replaceable>filename</replaceable></option>
+ </term>
+ <listitem>
+ <para>Define prayer config file (Overrides compilation default and PRAYER_CONFIG_FILE environment variable).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--config-option <replaceable>option</replaceable>=<replaceable>value</replaceable></option>
+ </term>
+ <listitem>
+ <para>Override single configuration option.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--foreground</option>
+ </term>
+ <listitem>
+ <para>Run single threaded server in foreground.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--disable-prefork</option>
+ </term>
+ <listitem>
+ <para>Run as simple fork()/exec() daemon.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--disable-session</option>
+ </term>
+ <listitem>
+ <para>Don't start up prayer-session server.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--</option>
+ </term>
+ <listitem>
+ <para>End of prayer options: remaining options will be passed to prayer-session server process.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show option summary.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>prayer-session(8), prayer.cf(5).</para>
+
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
Index: 1.0.18-1/debian/prayer.install
===================================================================
--- 1.0.18-1/debian/prayer.install (nonexistent)
+++ 1.0.18-1/debian/prayer.install (revision 37)
@@ -0,0 +1,10 @@
+usr/sbin/prayer
+usr/sbin/prayer-session
+usr/sbin/prayer-chroot
+usr/sbin/prayer-db-prune
+usr/sbin/prayer-sem-prune
+usr/sbin/prayer-ssl-prune
+usr/share/prayer
+etc/prayer/prayer.cf
+etc/prayer/motd.html
+etc/prayer/welcome.html
Index: 1.0.18-1/debian/copyright
===================================================================
--- 1.0.18-1/debian/copyright (nonexistent)
+++ 1.0.18-1/debian/copyright (revision 37)
@@ -0,0 +1,83 @@
+This package was debianized by Magnus Holmgren <magnus@kibibyte.se> on
+Tue, 24 Oct 2006 21:08:34 +0200.
+
+It was downloaded from http://www-uxsup.csx.cam.ac.uk/~dpc22/prayer/
+
+Upstream author/maintainer: David Carter <dpc22@cam.ac.uk> et al.
+
+The Debian packaging is (C) 2006, Magnus Holmgren <magnus@kibibyte.se>
+and is licensed under the GPL.
+
+The original licence is as follows (from the file NOTICE in the upstream
+distribution); the GPL should be in /usr/share/common-licenses/GPL on a debian
+system.
+
+
+The Prayer Webmail Interface
+----------------------------
+
+Copyright (c) 2002 University of Cambridge
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+In addition, for the avoidance of any doubt, permission is granted to
+link this program with OpenSSL or any other library package.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
+USA
+
+INCORPORATED CODE
+-----------------
+
+Code implementing the SSL session cache has been adapted from code used by
+the Cyrus IMAP server, which is distributed under the following copyright:
+
+/* Copyright (c) 2000 Carnegie Mellon University. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The name "Carnegie Mellon University" must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission. For permission or any other legal
+ * details, please contact
+ * Office of Technology Transfer
+ * Carnegie Mellon University
+ * 5000 Forbes Avenue
+ * Pittsburgh, PA 15213-3890
+ * (412) 268-4387, fax: (412) 268-7395
+ * tech-transfer@andrew.cmu.edu
+ *
+ * 4. Redistributions of any form whatsoever must retain the following
+ * acknowledgment:
+ * "This product includes software developed by Computing Services
+ * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
+ *
+ * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
+ * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
Index: 1.0.18-1/debian/README.Debian
===================================================================
--- 1.0.18-1/debian/README.Debian (nonexistent)
+++ 1.0.18-1/debian/README.Debian (revision 37)
@@ -0,0 +1,51 @@
+prayer for Debian
+-----------------
+
+The Debian version of Prayer is built with SSL support with session
+cache using libdb4.3, gzip Content-Transfer-Encoding, LDAP, and System
+V mutex support. Some bigger and some smaller changes have been made:
+
+ * As the upstream web page explains, "Prayer was designed to work
+ with the Washington IMAP server, which has the most problems
+ associated with transient IMAP connections. Consequently, the user
+ interface distinguishes between mailboxes and directories: this will
+ not work well with servers which provide dual use mail folders."
+ A simple patch from Jonathan McDowell at least makes leaf folders
+ be treated as folders.
+
+ * This packaging adds IPv6 support. However, prayer-session uses
+ libc-client to connect to the IMAP server, and IPv6 support can only
+ be achieved there by building with the version of libc-client
+ currently in experimental.
+
+ * This packaging adds international character support, including
+ encoding and decoding of modified-UTF-7-encoded folder
+ names. However, the folder filter still works on the UTF-7 level,
+ meaning, for example, that a "-" will match any folder with an
+ encoded character in it, since "-" is the shift-out character that
+ ends every base64-encoded sequence in UTF-7.
+
+ Where it was hardwired to ISO-8859-1 it has been re-wired to UTF-8,
+ but I may have missed some spots and ISO-8859-1 is still the hardcoded
+ fallback character set.
+
+ * The decoding of RFC2047 encoded words has been relaxed, accommodating
+ to some common encoding errors: spaces are accepted in the encoded
+ text, as are overlong encoded words.
+
+
+Quirks:
+
+ * If your IMAP server supports STARTTLS, then Prayer (actually the
+ libc-client IMAP client library) will use it automatically and it
+ can't be turned off. Make sure that the server name you specify for
+ imapd_server in prayer.cf matches the Common Name in the SSL
+ certificate; otherwise libc-client will refuse to accept it.
+
+ * If your IMAP server is Dovecot, then you must change
+ prefs_folder_name to something not containing a dot. Unfortunately
+ this means that the preference folder will be fully visible.
+
+ -- Magnus Holmgren <magnus@kibibyte.se>, Wed, 15 Nov 2006 14:51:00 +0100
+
+Tag: interface::web, made-of::lang:c, made-of::data:html mail::imap, mail::user-agent, protocol::imap, protocol::ssl, protocol::http, role::sw:server, use::viewing, works-with::mail, web::application
Index: 1.0.18-1/debian
===================================================================
--- 1.0.18-1/debian (nonexistent)
+++ 1.0.18-1/debian (revision 37)
/1.0.18-1/debian
Property changes:
Added: mergeWithUpstream
## -0,0 +1 ##
+1
\ No newline at end of property