%bcond_without tls # disable SSL/TLS support
%bcond_without cap # disable capabilities
-%define rel 2
+%define rel 3
Summary: Small, fast and secure FTP server
Summary(pl.UTF-8): Mały, szybki i bezpieczny serwer FTP
Name: pure-ftpd
-Version: 1.0.41
+Version: 1.0.49
Release: %{rel}%{?with_extra:extra}
License: BSD-like%{?with_extra:, GLPv2 for pure-config due to libcfg+ license}
Group: Daemons
Source0: http://download.pureftpd.org/pub/pure-ftpd/releases/%{name}-%{version}.tar.bz2
-# Source0-md5: 76c2364591418f153ed815034621d058
+# Source0-md5: b7025f469711d88bd84a3518f67c1470
Source1: %{name}.pamd
Source2: %{name}.init
Source3: %{name}.sysconfig
Source5: http://twittner.host.sk/files/pure-config/pure-config-20041201.tar.gz
# Source5-md5: 3f2ff6b00b5c38ee11ce588ee5af6cf6
Patch0: %{name}-config.patch
-
+Patch1: %{name}-allauth.patch
Patch2: %{name}-pure-pw_passwd.patch
Patch3: %{name}-mysql_config.patch
-
-Patch5: %{name}-passwd_location.patch
-Patch6: %{name}-additionalgid.patch
-Patch7: audit_cap.patch
-Patch8: %{name}-apparmor.patch
-Patch9: %{name}-mysql-utf8.patch
+# from Fedora
+Patch4: 0003-Allow-having-both-options-and-config-file-on-command.patch
+Patch5: paths.patch
+Patch6: %{name}-apparmor.patch
+Patch7: %{name}-mysql-utf8.patch
+Patch8: caps.patch
URL: http://www.pureftpd.org/
%{?with_extra:BuildRequires: autoconf}
%{?with_extra:BuildRequires: automake}
BuildRequires: pam-devel
%{?with_pgsql:BuildRequires: postgresql-devel}
BuildRequires: rpmbuild(macros) >= 1.304
+Requires(post): /usr/bin/openssl
Requires(post,preun): /sbin/chkconfig
+Requires(postun): /usr/sbin/groupdel
+Requires(postun): /usr/sbin/userdel
+Requires(pre): /bin/id
+Requires(pre): /usr/bin/getgid
+Requires(pre): /usr/sbin/groupadd
+Requires(pre): /usr/sbin/useradd
Requires: pam >= 0.79.0
%{!?with_extra:Requires: perl-base}
Requires: rc-scripts
Provides: ftpserver
+Provides: user(ftpauth)
+Provides: group(ftpauth)
+Provides: user(ftpcert)
+Provides: group(ftpcert)
Conflicts: man-pages < 1.51
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%prep
%setup -q -a 5
%patch0 -p0
+%patch1 -p1
%patch3 -p1
-
+%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
-%patch9 -p1
%{?with_extra:%patch2 -p1}
%{__aclocal} -Im4
%{__autoconf}
%{__autoheader}
+%{__automake}
%configure \
CFLAGS="%{rpmcflags} %{rpmcppflags} -DALLOW_DELETION_OF_TEMPORARY_FILES=1 -DALWAYS_SHOW_RESOLVED_SYMLINKS=1" \
+ --disable-silent-rules \
--with-boring \
--with-altlog \
--with-cookie \
%{?with_mysql:CPPFLAGS="-I%{_includedir}/mysql" --with-mysql} \
--with-pam \
--with-peruserlimits \
- --with-rfc2640 \
%{?with_pgsql:--with-pgsql} \
--with-privsep \
%{?with_puredb:--with-puredb} \
--with-quotas \
--with-ratios \
--with-throttling \
- %{?with_tls:--with-tls --with-certfile=%{_sharedstatedir}/openssl/certs/ftpd.pem} \
+ %{?with_tls:--with-tls --with-certfile=/etc/pure-ftpd/ssl/pure-ftpd.pem} \
--with-uploadscript \
--with-virtualchroot \
--with-virtualhosts \
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT/etc/{pam.d,sysconfig,security,rc.d/init.d} \
+install -d $RPM_BUILD_ROOT/etc/{pam.d,sysconfig,security,rc.d/init.d,%{name}/{certd,authd,conf,ssl}} \
$RPM_BUILD_ROOT{%{_sysconfdir}/vhosts,%{_ftpdir},%{schemadir}}
%{__make} install \
%{?with_ldap:install pureftpd-ldap.conf $RPM_BUILD_ROOT%{_sysconfdir}/pureftpd-ldap.conf}
%{?with_mysql:install pureftpd-mysql.conf $RPM_BUILD_ROOT%{_sysconfdir}/pureftpd-mysql.conf}
%{?with_pgsql:install pureftpd-pgsql.conf $RPM_BUILD_ROOT%{_sysconfdir}/pureftpd-pgsql.conf}
-cp -p configuration-file/pure-ftpd.conf $RPM_BUILD_ROOT%{_sysconfdir}/pureftpd.conf
-%{!?with_extra:install configuration-file/pure-config.pl $RPM_BUILD_ROOT%{_sbindir}}
cp -p pureftpd.schema $RPM_BUILD_ROOT%{schemadir}/pureftpd.schema
+mv $RPM_BUILD_ROOT%{_sysconfdir}/{pure-ftpd,pureftpd}.conf
+
touch $RPM_BUILD_ROOT%{_sysconfdir}/{ftpusers,pureftpd-dir-aliases}
+:> $RPM_BUILD_ROOT/etc/pure-ftpd/ssl/dhparams.pem
ln -s vhosts $RPM_BUILD_ROOT%{_sysconfdir}/pure-ftpd
rm -rf $RPM_BUILD_ROOT
%post
+if [ ! -s /etc/pure-ftpd/ssl/dhparams.pem ]; then
+ umask 027
+ %{_bindir}/openssl dhparam -out /etc/pure-ftpd/ssl/dhparams.pem 2048 || :
+fi
+
/sbin/chkconfig --add %{name}
%service %{name} restart "PureFTPD daemon"
+%pre
+%groupadd -g 326 ftpauth
+%useradd -u 326 -d %{_ftpdir} -s /bin/false -c "FTP Auth daemon" -g ftpauth ftpauth
+%groupadd -g 335 ftpcert
+%useradd -u 335 -d %{_ftpdir} -s /bin/false -c "FTP Cert daemon" -g ftpcert ftpcert
+
%preun
if [ "$1" = "0" ]; then
%service %{name} stop
/sbin/chkconfig --del %{name}
fi
+%postun
+if [ "$1" = "0" ]; then
+ %userremove ftpauth
+ %groupremove ftpauth
+ %userremove ftpcert
+ %groupremove ftpcert
+fi
+
%post -n openldap-schema-pureftpd
%openldap_schema_register %{schemadir}/pureftpd.schema -d core
%service -q ldap restart
%files
%defattr(644,root,root,755)
-%doc AUTHORS ChangeLog CONTACT COPYING FAQ HISTORY NEWS README* THANKS pure*.conf pureftpd.schema
+%doc AUTHORS ChangeLog COPYING FAQ HISTORY NEWS README* THANKS pure*.conf pureftpd.schema
%attr(755,root,root) %{_bindir}/*
%attr(755,root,root) %{_sbindir}/*
%attr(754,root,root) /etc/rc.d/init.d/%{name}
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/*
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/*
+%attr(751,root,root) %config(noreplace) %verify(not md5 mtime size) %dir /etc/%{name}
+%attr(750,root,ftpauth) %config(noreplace) %verify(not md5 mtime size) %dir /etc/%{name}/authd
+%attr(750,root,ftpcert) %config(noreplace) %verify(not md5 mtime size) %dir /etc/%{name}/certd
+# for future /etc/ftpd -> /etc/pure-ftpd/conf migration
+# %attr(750,root,root) %config(noreplace) %verify(not md5 mtime size) %dir /etc/%{name}/conf
+%attr(750,root,root) %config(noreplace) %verify(not md5 mtime size) %dir /etc/%{name}/ssl
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %ghost /etc/%{name}/ssl/dhparams.pem
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ftpusers
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pureftpd-dir-aliases
%{?with_ldap:%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/pureftpd-ldap.conf}