# # spec file for package roundcubemail # # Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # Name: roundcubemail Version: 1.3.4 Release: 0 Summary: A browser-based multilingual IMAP client License: GPL-3.0+ and GPL-2.0 and BSD-3-Clause Group: Productivity/Networking/Email/Clients Url: https://www.roundcube.net/ Source0: https://github.com/roundcube/roundcubemail/releases/download/%{version}/%{name}-%{version}-complete.tar.gz Source1: %{name}-rpmlintrc Source2: %{name}-httpd.conf Source4: README.openSUSE Source5: %{name}.logrotate Source6: https://roundcube.net/download/pubkey.asc#/%{name}.keyring Source7: https://github.com/roundcube/roundcubemail/releases/download/%{version}/%{name}-%{version}-complete.tar.gz.asc Source8: robots.txt # PATCH-FIX-OPENSUSE roundcubemail-1.1-beta-config_dir.patch -- use the general config directory /etc Patch0: %{name}-1.1-beta-config_dir.patch BuildArch: noarch BuildRequires: apache2-devel %if 0%{suse_version} >= 1100 BuildRequires: fdupes %endif BuildRequires: pcre-devel BuildRequires: php BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires: http_daemon Requires: mod_php_any >= 5.3 Requires: php-dom Requires: php-exif Requires: php-gettext Requires: php-iconv Requires: php-json Requires: php-mbstring Requires: php-openssl Requires: php-session Requires: php-sockets Requires: php_any_db ## Requires: for upstream dep package Requires: php-pear-Auth_SASL >= 1.0.6 Requires: php-pear-MDB2_Driver_mysqli Requires: php-pear-Mail_Mime >= 1.9.0 Requires: php-pear-Net_IDNA2 >= 0.1.1 Requires: php-pear-Net_LDAP2 Requires: php-pear-Net_SMTP Requires: php-pear-Net_Sieve >= 1.3.2 Requires: php-pear-Net_Socket Recommends: logrotate Recommends: php-mysql Recommends: php-intl Recommends: php-fileinfo Recommends: php-zip Recommends: php-pear-Crypt_GPG >= 1.2.0 Suggests: apache2 Provides: roundcube_framework = %{version} Conflicts: roundcube-framework %define apache_serverroot %(/usr/sbin/apxs2 -q DATADIR) %define apache_sysconfdir %(/usr/sbin/apxs2 -q SYSCONFDIR) %define roundcubepath %{apache_serverroot}/%{name} %define roundcubeconfigpath %{_sysconfdir}/%{name} %define php_major_version %(php -r "echo PHP_MAJOR_VERSION;") %description Roundcube Webmail is a browser-based multilingual IMAP client with an application-like user interface. It provides MIME support, address book, folder manipulation, message searching and spell checking. Roundcube Webmail is written in PHP and requires a MySQL database. The user interface is skinnable using XHTML and CSS 2. %prep %setup -q %patch0 -p1 cp %{SOURCE4} . # remove cruft from source archive find . -name ".gitignore" -delete # no need to check .htaccess each time, the apache config takes care of the restrictions find . -name ".htaccess" -delete # remove mssql scripts (not needed on openSUSE) rm -rf \ SQL/mssql/ \ SQL/mssql.*.sql # remove shebang from chpass-wrapper sed -i '1d' plugins/password/helpers/chpass-wrapper.py # remove INSTALL doc rm INSTALL %build %install # install roundcubemail.logrotate install -d -m 0755 %{buildroot}/%{_sysconfdir}/logrotate.d install %{SOURCE5} %{buildroot}/%{_sysconfdir}/logrotate.d/%{name} # extract roundcube-framework install -d -m 0755 %{buildroot}/%{_datadir}/php%{php_major_version} mv program/lib/Roundcube %{buildroot}%{_datadir}/php%{php_major_version}/Roundcube # install roundcubemail install -d -m 0755 %{buildroot}/%{roundcubepath} cp -a * %{buildroot}%{roundcubepath}/ cp %{SOURCE8} %{buildroot}%{roundcubepath}/ ln -s %{roundcubepath}/installer %{buildroot}/%{roundcubepath}/public_html/installer # install config mkdir -p %{buildroot}%{_sysconfdir}/%{name} cp config/* %{buildroot}%{roundcubeconfigpath}/ install %{buildroot}/%{roundcubeconfigpath}/config.inc.php.sample %{buildroot}/%{roundcubeconfigpath}/config.inc.php rm -rf %{buildroot}/%{roundcubepath}/config ln -s %{roundcubeconfigpath} %{buildroot}/%{roundcubepath}/config # logs + temp go into /var/ rm -rf %{buildroot}/%{roundcubepath}/logs \ %{buildroot}%{roundcubepath}/temp install -d %{buildroot}/%{_localstatedir}/log/%{name} \ %{buildroot}%{_localstatedir}/lib/%{name} ln -s %{_localstatedir}/log/%{name}/ %{buildroot}/%{roundcubepath}/logs ln -s %{_localstatedir}/lib/%{name}/ %{buildroot}/%{roundcubepath}/temp # move some plugin configs to /etc/roundcubemail for PLUGIN in acl managesieve password; do if [ -f %{buildroot}/%{roundcubepath}/plugins/$PLUGIN/config.inc.php.dist ]; then mv %{buildroot}%{roundcubepath}/plugins/$PLUGIN/config.inc.php.dist %{buildroot}%{roundcubeconfigpath}/$PLUGIN.inc.php ln -s %{roundcubeconfigpath}/$PLUGIN.inc.php %{buildroot}/%{roundcubepath}/plugins/$PLUGIN/config.inc.php fi done # install httpd.conf file and adapt the configuration install -d -m 0755 %{buildroot}/%{apache_sysconfdir}/conf.d sed -e "s#__ROUNDCUBEPATH__#%{roundcubepath}#g" %{SOURCE2} > %{buildroot}%{apache_sysconfdir}/conf.d/roundcubemail.conf # install docs install -d -m 0755 %{buildroot}/%{_defaultdocdir}/%{name} for i in CHANGELOG UPGRADING LICENSE README.md README.openSUSE SQL; do mv -v %{buildroot}%{roundcubepath}/$i %{buildroot}%{_defaultdocdir}/%{name}/ done # create a link for SQL ln -s %{_defaultdocdir}/%{name}/SQL %{buildroot}/%{roundcubepath}/SQL # Make ghost files mkdir %{buildroot}%{roundcubepath}/migrated mkdir %{buildroot}%{roundcubepath}/migration # fdupes %if 0%{suse_version} >= 1100 %fdupes %{buildroot}%{roundcubepath} %endif %pre # backup logs, temp and config for migration if [ ! -h %{roundcubepath}/logs ] && [ -d %{roundcubepath}/logs ]; then mkdir -p %{roundcubepath}/migration mv %{roundcubepath}/logs %{roundcubepath}/migration/. fi if [ ! -h %{roundcubepath}/temp ] && [ -d %{roundcubepath}/temp ]; then mkdir -p %{roundcubepath}/migration mv %{roundcubepath}/temp %{roundcubepath}/migration/. fi if [ ! -h %{roundcubepath}/SQL ] && [ -d %{roundcubepath}/SQL ]; then mkdir -p %{roundcubepath}/migration mv %{roundcubepath}/SQL %{roundcubepath}/migration/. fi for PLUGIN in acl managesieve password; do if [ ! -h %{roundcubepath}/plugins/$PLUGIN/config.inc.php ] && [ -f %{roundcubepath}/plugins/$PLUGIN/config.inc.php ]; then mv %{roundcubepath}/plugins/$PLUGIN/config.inc.php %{roundcubepath}/migration/$PLUGIN.inc.php fi done %post # replace default des string in config file for better security makedesstr() { local chars="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" local max=${#chars} for i in $(seq 1 24); do echo "$chars" | dd bs=1 skip=$(($(od -An -d -N2 /dev/urandom) % $max)) count=1 2>/dev/null done echo } sed -i "s/rcmail-\!24ByteDESkey\*Str/`makedesstr`/" %{roundcubeconfigpath}/defaults.inc.php || : &> /dev/null # enable apache required apache modules if [ -x /usr/sbin/a2enmod ]; then a2enmod -q alias || a2enmod alias a2enmod -q rewrite || a2enmod rewrite a2enmod -q version || a2enmod version fi # restore backed up logs, temp and config if [ -h %{roundcubepath}/logs ] && [ -d %{roundcubepath}/migration/logs ]; then mkdir -p %{roundcubepath}/migrated cp %{roundcubepath}/migration/logs/* %{roundcubepath}/logs/. mv %{roundcubepath}/migration/logs %{roundcubepath}/migrated/. fi if [ -h %{roundcubepath}/temp ] && [ -d %{roundcubepath}/migration/temp ]; then mkdir -p %{roundcubepath}/migrated cp %{roundcubepath}/migration/temp/* %{roundcubepath}/temp/. mv %{roundcubepath}/migration/temp %{roundcubepath}/migrated/. fi if [ -h %{roundcubepath}/SQL ] && [ -d %{roundcubepath}/migration/SQL ]; then rm -r %{roundcubepath}/migration/SQL fi for PLUGIN in acl managesieve password; do if [ -f %{roundcubepath}/migration/$PLUGIN.inc.php ] && [ -h %{roundcubepath}/plugins/$PLUGIN/config.inc.php ]; then cp %{roundcubepath}/migration/$PLUGIN.inc.php %{roundcubeconfigpath}/. mv %{roundcubepath}/migration/$PLUGIN.inc.php %{roundcubepath}/migrated/$PLUGIN.inc.php fi done for MIGDIR in migration migrated; do if [ -d %{roundcubepath}/$MIGDIR ]; then find %{roundcubepath}/$MIGDIR -empty -delete fi if [ -d %{roundcubepath}/$MIGDIR ]; then echo "Found %{roundcubepath}/$MIGDIR! Make sure you delete this folder after checking the migration!" fi done # update/make new config if [ ! -f %{roundcubeconfigpath}/config.inc.php ]; then if [ -f %{roundcubeconfigpath}/main.inc.php ] && [ -f %{roundcubeconfigpath}/db.inc.php ]; then %{roundcubepath}/bin/update.sh \ --version '?' \ --accept else cp %{roundcubeconfigpath}/config.inc.php.sample %{roundcubeconfigpath}/config.inc.php fi fi exit 0 %files %defattr(0644, root, root,0755) %doc CHANGELOG %doc LICENSE %doc README.md %doc README.openSUSE %doc UPGRADING %doc SQL/ %dir %{roundcubepath} %dir %{roundcubeconfigpath} %ghost %config(noreplace) %{roundcubeconfigpath}/config.inc.php %config(noreplace) %{roundcubeconfigpath}/acl.inc.php %config(noreplace) %{roundcubeconfigpath}/managesieve.inc.php %config(noreplace) %{roundcubeconfigpath}/password.inc.php %config %{roundcubeconfigpath}/config.inc.php.sample %config %{roundcubeconfigpath}/defaults.inc.php %config %{roundcubeconfigpath}/mimetypes.php %config(noreplace) %{apache_sysconfdir}/conf.d/roundcubemail.conf %config(noreplace) %{_sysconfdir}/logrotate.d/%{name} %{roundcubepath}/composer.json-dist %{roundcubepath}/config %{roundcubepath}/index.php %{roundcubepath}/robots.txt %dir %{roundcubepath}/bin %attr(0755,root,root) %{roundcubepath}/bin/*.sh %{roundcubepath}/installer/ %{roundcubepath}/logs %ghost %{roundcubepath}/migrated/ %ghost %{roundcubepath}/migration/ %{roundcubepath}/public_html/ %{roundcubepath}/plugins/ %{roundcubepath}/program/ %{roundcubepath}/skins/ %{roundcubepath}/SQL %{roundcubepath}/temp %{roundcubepath}/vendor/ %dir %{_datadir}/php%{php_major_version} %{_datadir}/php%{php_major_version}/Roundcube/ %attr(-, wwwrun, root) %{_localstatedir}/log/%{name} %attr(-, wwwrun, root) %{_localstatedir}/lib/%{name} # RW need for PGP plugin %attr(0700, wwwrun, root) %dir %{roundcubepath}/plugins/enigma/home %changelog