1 # Copyright 1999-2015 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
6 inherit eutils multilib systemd
15 DESCRIPTION="An advanced and very configurable FTP server"
16 HOMEPAGE="http://www.proftpd.org/
17 http://www.castaglia.org/proftpd/
18 http://www.thrallingpenguin.com/resources/mod_clamav.htm
19 http://gssmod.sourceforge.net/"
20 SRC_URI="ftp://ftp.proftpd.org/distrib/source/${P/_/}.tar.gz
21 case? ( http://www.castaglia.org/${PN}/modules/${PN}-mod-case-${MOD_CASE}.tar.gz )
22 clamav? ( https://secure.thrallingpenguin.com/redmine/attachments/download/1/mod_clamav-${MOD_CLAMAV}.tar.gz )
23 diskuse? ( http://www.castaglia.org/${PN}/modules/${PN}-mod-diskuse-${MOD_DISKUSE}.tar.gz )
24 kerberos? ( mirror://sourceforge/gssmod/mod_gss-${MOD_GSS}.tar.gz )
25 msg? ( http://www.castaglia.org/${PN}/modules/${PN}-mod-msg-${MOD_MSG}.tar.gz )
26 vroot? ( https://github.com/Castaglia/${PN}-mod_vroot/archive/mod_vroot-${MOD_VROOT}.tar.gz )"
30 KEYWORDS="~alpha amd64 arm hppa ~ia64 ~mips ppc ppc64 ~sparc x86 ~x86-fbsd"
31 IUSE="acl authfile ban +caps case clamav copy ctrls deflate diskuse doc dso dynmasq exec ifsession ifversion ident ipv6
32 kerberos ldap libressl linguas_bg_BG linguas_en_US linguas_fr_FR linguas_it_IT linguas_ja_JP linguas_ko_KR
33 linguas_ru_RU linguas_zh_CN linguas_zh_TW log_forensic memcache msg mysql ncurses nls pam +pcre postgres qos radius
34 ratio readme rewrite selinux sftp shaper sitemisc snmp softquota sqlite ssl tcpd test trace unique_id vroot xinetd"
36 REQUIRED_USE="ban? ( ctrls )
41 CDEPEND="acl? ( virtual/acl )
42 caps? ( sys-libs/libcap )
43 clamav? ( app-antivirus/clamav )
44 kerberos? ( virtual/krb5 )
45 ldap? ( net-nds/openldap )
46 memcache? ( >=dev-libs/libmemcached-0.41 )
47 mysql? ( virtual/mysql )
48 nls? ( virtual/libiconv )
49 ncurses? ( sys-libs/ncurses:0= )
51 !libressl? ( dev-libs/openssl:0= )
52 libressl? ( dev-libs/libressl:= )
55 pcre? ( dev-libs/libpcre )
56 postgres? ( dev-db/postgresql:= )
57 sqlite? ( dev-db/sqlite:3 )
58 xinetd? ( virtual/inetd )"
60 test? ( dev-libs/check )"
63 selinux? ( sec-policy/selinux-ftp )"
65 S="${WORKDIR}/${P/_/}"
69 local mod_topdir=${WORKDIR}/${2:-${mod_name}}
71 mv "${mod_topdir}/${mod_name}.c" contrib || die
72 mv "${mod_topdir}/${mod_name}.html" doc/contrib || die
73 rm -r "${mod_topdir}" || die
77 # Skip 'install-conf' / Support LINGUAS
78 sed -i -e "/install-all/s/ install-conf//" Makefile.in
79 sed -i -e "s/^LANGS=.*$/LANGS=${LINGUAS}/" locale/Makefile.in
81 # Prepare external modules
82 use case && __prepare_module mod_case
84 mv "${WORKDIR}"/mod_clamav-${MOD_CLAMAV}/mod_clamav.{c,h} contrib
85 epatch "${WORKDIR}"/mod_clamav-${MOD_CLAMAV}/${PN}.patch
86 rm -r "${WORKDIR}"/mod_clamav-${MOD_CLAMAV}
88 use msg && __prepare_module mod_msg
89 use vroot && __prepare_module mod_vroot ${PN}-mod_vroot-mod_vroot-${MOD_VROOT}
91 # Prepare external kerberos module
92 if use kerberos ; then
93 cd "${WORKDIR}"/mod_gss-${MOD_GSS}
95 # Support app-crypt/heimdal / Gentoo Bug #284853
96 sed -i -e "s/krb5_principal2principalname/_\0/" mod_auth_gss.c.in
98 # Remove obsolete DES / Gentoo Bug #324903
99 # Replace 'rpm' lookups / Gentoo Bug #391021
100 sed -i -e "/ac_gss_libs/s/ -ldes425//" \
101 -e "s/ac_libdir=\`rpm -q -l.*$/ac_libdir=\/usr\/$(get_libdir)\//" \
102 -e "s/ac_includedir=\`rpm -q -l.*$/ac_includedir=\/usr\/include\//" configure{,.in}
109 use acl && m="${m}:mod_facl"
110 use ban && m="${m}:mod_ban"
111 use case && m="${m}:mod_case"
112 use clamav && m="${m}:mod_clamav"
113 use copy && m="${m}:mod_copy"
114 use ctrls && m="${m}:mod_ctrls_admin"
115 use deflate && m="${m}:mod_deflate"
116 if use diskuse ; then
117 cd "${WORKDIR}"/mod_diskuse
119 mv mod_diskuse.{c,h} "${S}"/contrib
120 mv mod_diskuse.html "${S}"/doc/contrib
122 rm -r "${WORKDIR}"/mod_diskuse
125 use dynmasq && m="${m}:mod_dynmasq"
126 use exec && m="${m}:mod_exec"
127 use ifsession && m="${m}:mod_ifsession"
128 use ifversion && m="${m}:mod_ifversion"
129 if use kerberos ; then
130 cd "${WORKDIR}"/mod_gss-${MOD_GSS}
131 if has_version app-crypt/mit-krb5 ; then
134 econf --enable-heimdal
136 mv mod_{auth_gss,gss}.c "${S}"/contrib
137 mv mod_gss.h "${S}"/include
138 mv README.mod_{auth_gss,gss} "${S}"
139 mv mod_gss.html "${S}"/doc/contrib
140 mv rfc{1509,2228}.txt "${S}"/doc/rfc
142 rm -r "${WORKDIR}"/mod_gss-${MOD_GSS}
143 m="${m}:mod_gss:mod_auth_gss"
145 use ldap && m="${m}:mod_ldap"
146 use log_forensic && m="${m}:mod_log_forensic"
147 use msg && m="${m}:mod_msg"
148 if use mysql || use postgres || use sqlite ; then
149 m="${m}:mod_sql:mod_sql_passwd"
150 use mysql && m="${m}:mod_sql_mysql"
151 use postgres && m="${m}:mod_sql_postgres"
152 use sqlite && m="${m}:mod_sql_sqlite"
154 use qos && m="${m}:mod_qos"
155 use radius && m="${m}:mod_radius"
156 use ratio && m="${m}:mod_ratio"
157 use readme && m="${m}:mod_readme"
158 use rewrite && m="${m}:mod_rewrite"
161 use pam && m="${m}:mod_sftp_pam"
162 use mysql || use postgres || use sqlite && m="${m}:mod_sftp_sql"
164 use shaper && m="${m}:mod_shaper"
165 use sitemisc && m="${m}:mod_site_misc"
166 use snmp && m="${m}:mod_snmp"
167 if use softquota ; then
168 m="${m}:mod_quotatab:mod_quotatab_file"
169 use ldap && m="${m}:mod_quotatab_ldap"
170 use radius && m="${m}:mod_quotatab_radius"
171 use mysql || use postgres || use sqlite && m="${m}:mod_quotatab_sql"
174 m="${m}:mod_tls:mod_tls_shmcache"
175 use memcache && m="${m}:mod_tls_memcache"
178 m="${m}:mod_wrap2:mod_wrap2_file"
179 use mysql || use postgres || use sqlite && m="${m}:mod_wrap2_sql"
181 use unique_id && m="${m}:mod_unique_id"
182 use vroot && m="${m}:mod_vroot"
184 if [[ -n ${PROFTP_CUSTOM_MODULES} ]]; then
185 einfo "Adding user-specified extra modules: '${PROFTP_CUSTOM_MODULES}'"
186 m="${m}:${PROFTP_CUSTOM_MODULES}"
189 [[ -z ${m} ]] || c="${c} --with-modules=${m:1}"
190 econf --localstatedir=/var/run/proftpd --sysconfdir=/etc/proftpd --disable-strip \
191 $(use_enable acl facl) \
192 $(use_enable authfile auth-file) \
193 $(use_enable caps cap) \
194 $(use_enable ctrls) \
196 $(use_enable ident) \
198 $(use_enable memcache) \
199 $(use_enable ncurses) \
201 $(use_enable ssl openssl) \
202 $(use_enable pam auth-pam) \
204 $(use_enable test tests) \
205 $(use_enable trace) \
206 $(use_enable userland_GNU shadow) \
207 $(use_enable userland_GNU autoshadow) \
212 emake api-tests -C tests
217 [[ -z ${LINGUAS} ]] && rm -r "${ED}"/usr/share/locale
218 rm -rf "${ED}"/var/run
220 newinitd "${FILESDIR}"/proftpd.initd proftpd
222 doins "${FILESDIR}"/proftpd.conf.sample
225 insinto /etc/xinetd.d
226 newins "${FILESDIR}"/proftpd.xinetd proftpd
229 dodoc ChangeLog CREDITS INSTALL NEWS README* RELEASE_NOTES
231 dohtml doc/*.html doc/contrib/*.html doc/howto/*.html doc/modules/*.html
236 systemd_dounit "${FILESDIR}"/${PN}.service
237 systemd_newtmpfilesd "${FILESDIR}"/${PN}-tmpfiles.d.conf ${PN}.conf