summaryrefslogtreecommitdiff
blob: d79f7804488b18c5f27c53bdf6839635d8410eef (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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI="6"

inherit user systemd

DESCRIPTION="An Open source Ticket Request System"
HOMEPAGE="https://www.otrs.com/"
SRC_URI="https://ftp.otrs.org/pub/${PN}/${P}.tar.bz2"

LICENSE="AGPL-3+"
KEYWORDS="~amd64 ~x86"
IUSE="apache2 fastcgi +gd ldap mod_perl +mysql pdf postgres soap"
SLOT="0"

REQUIRED_USE="|| ( mysql postgres )"

DEPEND="media-libs/libpng:0"

RDEPEND="dev-perl/Apache-Reload
	dev-perl/Archive-Zip
	dev-perl/DBI
	dev-perl/IO-Socket-SSL
	dev-perl/JSON-XS
	dev-perl/LWP-UserAgent-Determined
	dev-perl/Mail-POP3Client
	dev-perl/Mail-IMAPClient
	>dev-perl/Net-DNS-0.60
	dev-perl/Template-Toolkit
	dev-perl/Text-CSV_XS
	dev-perl/TimeDate
	dev-perl/XML-Parser
	dev-perl/YAML-LibYAML
	apache2? (
		mod_perl? (
			www-servers/apache:2
			=www-apache/libapreq2-2* www-apache/mod_perl
		)
		!fastcgi? ( !mod_perl? ( www-servers/apache:2[suexec] ) )
	)
	fastcgi? (
		dev-perl/FCGI
		virtual/httpd-fastcgi
	)
	!fastcgi? ( !apache2? ( virtual/httpd-cgi ) )
	gd? (
		dev-perl/GD
		dev-perl/GDTextUtil
		dev-perl/GDGraph
	)
	ldap? ( dev-perl/perl-ldap )
	mysql? ( dev-perl/DBD-mysql )
	postgres? ( dev-perl/DBD-Pg )
	pdf? (
		>=dev-perl/PDF-API2-0.73
		virtual/perl-Compress-Raw-Zlib
	)
	soap? (
		dev-perl/SOAP-Lite
		!=dev-perl/SOAP-Lite-0.711
		!=dev-perl/SOAP-Lite-0.712
	)
	"

OTRS_HOME="/var/lib/otrs"

pkg_setup() {
	# The enewuser otrs will fail if apache isn't there, but it's an optional dep
	# so we create the apache user here just in case
	enewgroup apache 81
	enewuser apache 81 -1 /var/www apache
	enewuser otrs -1 -1 "${OTRS_HOME}" apache
}

src_prepare() {
	rm -r "${S}/scripts"/auto_* || die

	pushd Kernel >/dev/null || die
	local i
	for i in *.dist; do
		cp "${i}" $(basename "${i}" .dist) || die
	done
	popd >/dev/null || die

	# Fix broken png file (and see pngfix help for exit codes)
	pngfix -q --out=out.png "${S}/var/httpd/htdocs/skins/Agent/default/img/otrs-verify.png"
	if [[ $? -gt 15 ]]; then
		die "pngfix failed"
	fi
	mv -f out.png "${S}/var/httpd/htdocs/skins/Agent/default/img/otrs-verify.png" || die

	sed -i -e "s:/opt/otrs:${EPREFIX}${OTRS_HOME}:g" "${S}"/Kernel/Config.pm \
		|| die "sed failed"

	sed -i -e "s:/opt/otrs:${EPREFIX}${OTRS_HOME}:g" "${S}"/Kernel/Config/Defaults.pm \
		|| die "sed failed"

	grep -lR "/opt" "${S}"/scripts | \
		xargs sed -i -e "s:/opt/otrs:${EPREFIX}${OTRS_HOME}:g" \
		|| die "sed failed"

	echo "CONFIG_PROTECT=\"${EPREFIX}${OTRS_HOME}/Kernel/Config.pm \
		${EPREFIX}${OTRS_HOME}/Kernel/Config/GenericAgent.pm\"" > "${T}/50${PN}" || die

	eapply_user
}

# This is too automagic, either einfo telling user or installing to /etc/cron.d/ should be preferred
pkg_config() {
	einfo "Installing cronjobs"
	crontab -u otrs "${EROOT%/}"/usr/share/doc/${PF}/crontab || die
}

src_install() {
	dodoc CHANGES.md README*

	insinto "${OTRS_HOME}"
	doins -r .fetchmailrc.dist .mailfilter.dist .procmailrc.dist RELEASE \
		Custom Kernel bin scripts var

	cat "${S}"/var/cron/*.dist > "${T}"/crontab || die
	insinto /usr/share/doc/${PF}/
	doins "${T}"/crontab

	local a
	for a in article log pics/images pics/stats pics sessions spool tmp tmp/CacheFileStorable
	do
		keepdir "${OTRS_HOME}/var/${a}"
	done
	doenvd "${T}/50${PN}"

	systemd_dounit "${FILESDIR}/otrs.service"
}

pkg_postinst() {
	einfo "Setting correct permissions ..."
	/usr/bin/env perl "${EROOT%/}${OTRS_HOME}"/bin/otrs.SetPermissions.pl "${EROOT%/}${OTRS_HOME}" \
		--otrs-user=otrs \
		--web-group=apache \
		|| die "Could not set permissions"

	einfo "Installation done!"
	elog "1) Rebuild your config now by running the following commands:"
	elog "sudo -u otrs /usr/bin/env perl "${EROOT%/}${OTRS_HOME}"/bin/otrs.Console.pl Maint::Config::Rebuild"
	elog "sudo -u otrs /usr/bin/env perl "${EROOT%/}${OTRS_HOME}"/bin/otrs.Console.pl Maint::Cache::Delete"
	elog ""
	elog "2) Enable cronjobs with the following command:"
	elog "crontab -u otrs crontab"
	elog ""
	elog "3) systemd users: enable and start OTRS daemon:"
	elog "systemctl enable otrs"
	elog "systemctl start otrs"
}