summaryrefslogtreecommitdiff
blob: fb79f9f2564633ab281c9d19df7993139f5e8f47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

inherit eutils webapp depend.php depend.apache

DESCRIPTION="Web Based Management tool for Postfix for dealing with Postfix Style Virtual Domains
and Virtual Users that are stored in MySQL."
HOMEPAGE="http://sourceforge.net/projects/postfixadmin/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tgz"

LICENSE="MPL-1.1"
KEYWORDS="~x86 ~amd64"
IUSE="mysql postgres"

RDEPEND=">=mail-mta/postfix-2.0.0
	mysql? ( dev-perl/DBI dev-perl/DBD-mysql )
	!www-apps/postfixadmin"

need_php_httpd
need_apache

pkg_setup() {
	webapp_pkg_setup
	if use mysql; then
		enewgroup vacation
		enewuser vacation -1 -1 /dev/null vacation
	fi

	local flags="pcre session"
	use mysql && flags="${flags} mysql"
	use postgres && flags="${flags} postgres"
	require_php_with_use ${flags}
}

src_unpack() {
	unpack ${A}
	cd "${S}"

	# Remove .cvs* files and CVS directories
	ecvs_clean

	# Database support (we don't care wich one is used. Allow both of them!)
	if use mysql; then
		cp ./DATABASE_MYSQL.TXT "${T}"/mysql-setup.sql || die "Creating MySQL setup script failed!"
		cp ./TABLE_CHANGES.TXT "${T}"/mysql-update.sql || die "Creating MySQL update script failed!"
		cp ./VIRTUAL_VACATION/INSTALL.TXT "${T}"/VIRTUAL_VACATION_INSTALL.TXT
	fi
	if use postgres ; then
		cp ./DATABASE_PGSQL.TXT "${T}"/pgsql-setup.sql || die "Creating PostgreSQL setup script failed!"
		epatch "${FILESDIR}"/${P}-postgres-1.patch || die "Patching for postgres failed."
		epatch "${FILESDIR}"/${P}-postgres-2.patch || die "Patching for postgres failed."
		epatch "${FILESDIR}"/${P}-postgres-3.patch || die "Patching for postgres failed."
	fi

	# Rename config.inc.php
	cp ./config.inc.php.sample "${T}"/config.inc.php || die "Creating config file failed!"
}

src_install() {
	webapp_src_preinst

	# Virtual Vacation only works with MySQL
	if use mysql; then
		diropts -m0770 -o vacation -g vacation
		keepdir /var/spool/vacation
		insinto /var/spool/vacation
		insopts -m770 -o vacation -g vacation
		doins "${S}"/VIRTUAL_VACATION/vacation.pl
	fi

	# install the SQL scripts available to us
	# unfortunately, we do not have scripts to upgrade from older versions
	# these are things we need to add at a later date
	#
	if use mysql; then
		webapp_sqlscript mysql "${T}"/mysql-setup.sql
		webapp_sqlscript mysql "${T}"/mysql-update.sql 2.0.x
		webapp_sqlscript mysql "${T}"/mysql-update.sql 1.5x
	fi
	if use postgres ; then
		webapp_sqlscript postgres "${T}"/pgsql-setup.sql
	fi


	einfo "Installing main files"
	dodir ${MY_HTDOCSDIR}
	cp -r . "${D}"${MY_HTDOCSDIR} || die "cp failed"
	cp "${T}"/config.inc.php "${D}"${MY_HTDOCSDIR} || die "cp failed"

	# handle documentation files
	local docs="{BACKUP_MX,CHANGELOG,INSTALL,LANGUAGE,LICENSE.TXT,TABLE_BACKUP_MX,TABLE_CHANGES,UPGRADE}.TXT"
	use mysql && docs="${docs} DATABASE_MYSQL.TXT ${T}/VIRTUAL_VACATION_INSTALL.TXT"
	use postgres && docs="${docs} DATABASE_PGSQL.TXT"

	dodoc ${docs}
	for foo in ${docs} DATABASE_MYSQL.TXT DATABASE_PGSQL.TXT ADDITIONS VIRTUAL_VACATION ; do
		rm -rf "${D}"${MY_HTDOCSDIR}/${foo}
	done

	webapp_configfile ${MY_HTDOCSDIR}/config.inc.php
	webapp_configfile ${MY_HTDOCSDIR}/admin/.htpasswd

	# Add the hook file to fix the .htaccess file
	webapp_hook_script "${FILESDIR}"/config-hook.sh

	webapp_postinst_txt en "${FILESDIR}"/postinstall-en.txt

	webapp_src_install
}