##
##  squirrelmail.spec -- OpenPKG RPM Package Specification
##  Copyright (c) 2000-2025 OpenPKG Project <http://openpkg.org/>
##
##  Permission to use, copy, modify, and distribute this software for
##  any purpose with or without fee is hereby granted, provided that
##  the above copyright notice and this permission notice appear in all
##  copies.
##
##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
##  SUCH DAMAGE.
##

#   package version
%define       V_squirrelmail        1.4.22
%define       V_locale              1.4.18-20090526
%define       V_plugin_compat       2.0.14-1.0
%define       V_plugin_logger       1.4.0-1.0.6
%define       V_plugin_addgraphics  2.3-1.0.3
%define       V_plugin_avelsieve    1.9.7
%define       V_plugin_saslpwd      1.4.1-1.4
%define       V_plugin_checkquota   2.2-1.4.0
%define       V_plugin_foldersize   1.5-1.4.0
%define       V_plugin_gnupg        2.0.1-1.4.2
%define       V_plugin_ldif         1.4-1.2.x
%define       V_plugin_update       0.7-1.4.2
%define       V_plugin_userip       3.3-re-1.2.2
%define       V_plugin_smallcal     0.8-1.2.3
%define       V_plugin_vkeyboard    0.9
%define       V_plugin_username     2.3-1.0.0

#   package information
Name:         squirrelmail
Summary:      SquirrelMail Webmail Client
URL:          http://www.squirrelmail.org/
Vendor:       Squirrelmail Developers
Packager:     OpenPKG Project
Distribution: OpenPKG Community
Class:        EVAL
Group:        Mail
License:      GPL
Version:      %{V_squirrelmail}
Release:      20160306

#   package options
%option       with_plugins  no

#   list of sources
Source0:      http://download.sourceforge.net/squirrelmail/squirrelmail-webmail-%{V_squirrelmail}.tar.bz2
Source1:      http://download.sourceforge.net/squirrelmail/all_locales-%{V_locale}.tar.bz2
Source2:      http://www.squirrelmail.org/plugins/compatibility-%{V_plugin_compat}.tar.gz
Source3:      http://www.squeaksoft.com/products/SquirrelLogger/squirrel_logger.%{V_plugin_logger}.tar.gz
Source4:      http://www.squirrelmail.org/plugins/addgraphics-%{V_plugin_addgraphics}.tar.gz
Source5:      http://www.squirrelmail.org/plugins/avelsieve-%{V_plugin_avelsieve}.tar.gz
Source6:      http://www.squirrelmail.org/plugins/chg_sasl_passwd-%{V_plugin_saslpwd}.tar.gz
Source7:      http://www.squirrelmail.org/plugins/check_quota-%{V_plugin_checkquota}.tar.gz
Source8:      http://www.squirrelmail.org/plugins/folder_sizes-%{V_plugin_foldersize}.tar.gz
Source9:      http://www.squirrelmail.org/plugins/gpg.%{V_plugin_gnupg}.tar.gz
Source10:     http://www.squirrelmail.org/plugins/ldifimport-%{V_plugin_ldif}.tar.gz
Source11:     http://www.squirrelmail.org/plugins/pupdate.%{V_plugin_update}.tar.gz
Source12:     http://www.squirrelmail.org/plugins/show_user_and_ip-%{V_plugin_userip}.tar.gz
Source13:     http://www.squirrelmail.org/plugins/smallcal-%{V_plugin_smallcal}.tar.gz
Source14:     http://www.squirrelmail.org/plugins/vkeyboard-%{V_plugin_vkeyboard}.tar.gz
Source15:     http://www.squirrelmail.org/plugins/username-%{V_plugin_username}.tar.gz
Source16:     config.php
Source17:     defprefs.txt
Source18:     opkg_large.png
Source19:     opkg_small.png
Source20:     rc.squirrelmail
Source21:     squirrelmail.conf
Source22:     index.php
Patch0:       squirrelmail.patch
Patch1:       squirrelmail.patch.plugins

#   build information
BuildPreReq:  OpenPKG, openpkg >= 20160101
PreReq:       OpenPKG, openpkg >= 20160101
PreReq:       MTA, apache, apache-php, apache-php::with_xml = yes

%description
    SquirrelMail is a standards-based webmail package written in PHP. It
    includes built-in pure PHP support for the IMAP and SMTP protocols,
    and all pages render in pure HTML 4.0 (with no Javascript) for
    maximum compatibility across browsers. It has very few requirements
    and is very easy to configure and install. SquirrelMail has all the
    functionality you would want from an email client, including strong
    MIME support, address books, and folder manipulation.

%track
    prog squirrelmail = {
        version   = %{V_squirrelmail}
        url       = http://sourceforge.net/projects/squirrelmail/files/
        regex     = squirrelmail-webmail-(\d+\.[02468]\.\d+[a-z]?)\.tar\.bz2
    }
    prog squirrelmail:locales = {
        version   = %{V_locale}
        url       = http://sourceforge.net/projects/squirrelmail/files/
        regex     = all_locales-(\d+\.[02468]\.\d+-\d+)\.tar\.bz2
    }
    prog squirrelmail:compat = {
        comment   = "cs: untrackable due to CMS generated URLs"
        disabled
        version   = %{V_plugin_compat}
        url       = http://www.squirrelmail.org/plugins_category.php?category_id=all
        regex     = compatibility-(__VER__)\.tar\.gz
    }
    prog squirrelmail:logger = {
        version   = %{V_plugin_logger}
        url       = http://www.squeaksoft.com/products/SquirrelLogger/
        regex     = squirrel_logger.(__VER__)\.tar\.gz
    }
    prog squirrelmail:addgraphics = {
        comment   = "cs: untrackable due to CMS generated URLs"
        disabled
        version   = %{V_plugin_addgraphics}
        url       = http://www.squirrelmail.org/plugins_category.php?category_id=all
        regex     = addgraphics-(__VER__)\.tar\.gz
    }
    prog squirrelmail:avelsieve = {
        comment   = "cs: untrackable due to CMS generated URLs"
        disabled
        version   = %{V_plugin_avelsieve}
        url       = http://www.squirrelmail.org/plugins_category.php?category_id=all
        regex     = avelsieve-(\d+\.\d+\.\d+)\.tar\.gz
    }
    prog squirrelmail:saslpwd = {
        comment   = "cs: untrackable due to CMS generated URLs"
        disabled
        version   = %{V_plugin_saslpwd}
        url       = http://www.squirrelmail.org/plugins_category.php?category_id=all
        regex     = chg_sasl_passwd-(\d+\.\d+\.\d+-\d+\.\d+)\.tar\.gz
    }
    prog squirrelmail:checkquota = {
        comment   = "cs: untrackable due to CMS generated URLs"
        disabled
        version   = %{V_plugin_checkquota}
        url       = http://www.squirrelmail.org/plugins_category.php?category_id=all
        regex     = check_quota-(__VER__)\.tar\.gz
    }
    prog squirrelmail:foldersize = {
        comment   = "cs: untrackable due to CMS generated URLs"
        disabled
        version   = %{V_plugin_foldersize}
        url       = http://www.squirrelmail.org/plugins_category.php?category_id=all
        regex     = folder_sizes-(__VER__)\.tar\.gz
    }
    prog squirrelmail:gnupg = {
        comment   = "cs: untrackable due to CMS generated URLs"
        disabled
        version   = %{V_plugin_gnupg}
        url       = http://www.squirrelmail.org/plugins_category.php?category_id=all
        regex     = gpg.(\d+\.\d+\.\d+-\d+\.\d+\.\d+)\.tar\.gz
    }
    prog squirrelmail:ldif = {
        comment   = "cs: untrackable due to CMS generated URLs"
        disabled
        version   = %{V_plugin_ldif}
        url       = http://www.squirrelmail.org/plugins_category.php?category_id=all
        regex     = ldifimport-(__VER__)\.tar\.gz
    }
    prog squirrelmail:update = {
        comment   = "cs: untrackable due to CMS generated URLs"
        disabled
        version   = %{V_plugin_update}
        url       = http://www.squirrelmail.org/plugins_category.php?category_id=all
        regex     = pupdate.(__VER__)\.tar\.gz
    }
    prog squirrelmail:userip = {
        comment   = "cs: untrackable due to CMS generated URLs"
        disabled
        version   = %{V_plugin_userip}
        url       = http://www.squirrelmail.org/plugins_category.php?category_id=all
        regex     = show_user_and_ip-(__VER__)\.tar\.gz
    }
    prog squirrelmail:smallcal = {
        comment   = "cs: untrackable due to CMS generated URLs"
        disabled
        version   = %{V_plugin_smallcal}
        url       = http://www.squirrelmail.org/plugins_category.php?category_id=all
        regex     = smallcal-(__VER__)\.tar\.gz
    }
    prog squirrelmail:vkeyboard = {
        comment   = "cs: untrackable due to CMS generated URLs"
        disabled
        version   = %{V_plugin_vkeyboard}
        url       = http://www.squirrelmail.org/plugins_category.php?category_id=all
        regex     = vkeyboard-(__VER__)\.tar\.gz
    }
    prog squirrelmail:username = {
        comment   = "cs: untrackable due to CMS generated URLs"
        disabled
        version   = %{V_plugin_username}
        url       = http://www.squirrelmail.org/plugins_category.php?category_id=all
        regex     = username-(__VER__)\.tar\.gz
    }

%prep
    %setup -q -c -n squirrelmail
    %setup -q -D -T -a 1 -c -n squirrelmail/all_locales-%{V_locale}
    %setup -q -D -T -a 2 -n squirrelmail
    %setup -q -D -T -a 3 -n squirrelmail
    mv compatibility squirrelmail-webmail-%{V_squirrelmail}/plugins
    mv squirrel_logger squirrelmail-webmail-%{V_squirrelmail}/plugins
%if "%{with_plugins}" == "yes"
    %setup -q -D -T -a 4 -n squirrelmail
    %setup -q -D -T -a 5 -n squirrelmail
    %setup -q -D -T -a 6 -n squirrelmail
    %setup -q -D -T -a 7 -n squirrelmail
    %setup -q -D -T -a 8 -n squirrelmail
    %setup -q -D -T -a 9 -n squirrelmail
    %setup -q -D -T -a 10 -n squirrelmail
    %setup -q -D -T -a 11 -n squirrelmail
    %setup -q -D -T -a 12 -n squirrelmail
    %setup -q -D -T -a 13 -n squirrelmail
    %setup -q -D -T -a 14 -n squirrelmail
    %setup -q -D -T -a 15 -n squirrelmail

    #   move additional plugins where other are already placed
    for plug in addgraphics avelsieve check_quota chg_sasl_passwd \
                folder_sizes gpg ldifimport pupdate show_user_and_ip \
                smallcal vkeyboard username; do
        mv $plug squirrelmail-webmail-%{V_squirrelmail}/plugins
    done
%endif

    #   clean up login screen of distractions
    ( cd squirrelmail-webmail-%{V_squirrelmail}
      %patch -p0
    ) || exit $?

    #   rearrange documentation and remove archive script
    ( cd squirrelmail-webmail-%{V_squirrelmail}
      mv AUTHORS ChangeLog COPYING INSTALL README UPGRADE doc/
      mv ReleaseNotes doc/ReleaseNotes.txt
      mv themes/README.themes doc/
      for fil in `find plugins/ -name "README*" -o -name "Readme*" \
                 -o -name "INSTALL*" -o -name CHANGES -o -name HISTORY`; do
          %{l_shtool} mkdir -f -p -m 755 doc/`dirname $fil`
          mv -f $fil $_
      done
      mv doc/plugins/squirrelspell/doc/README doc/plugins/squirrelspell
      rm -rf doc/plugins/squirrelspell/doc doc/plugins/squirrelspell/index.php
      mv plugins/squirrelspell/doc/* doc/plugins/squirrelspell
      rm -rf plugins/squirrelspell/doc
      rm -f plugins/make_archive.pl
%if "%{with_plugins}" == "yes"
      mv plugins/pupdate/docs/* doc/plugins/pupdate
      rm -rf plugins/pupdate/docs
%endif

      #   postadjustment cosmetics
      %{l_shtool} subst \
          -e 's;\(#ffffff., .border="0" width=\)"350";\1"250";1' \
          src/login.php

      #   set default prefs
      cat %{SOURCE defprefs.txt} >>data/default_pref
    ) || exit $?

%build

%install

    #   create directory structure
    %{l_shtool} mkdir -f -p -m 755 \
        $RPM_BUILD_ROOT%{l_prefix}/bin \
        $RPM_BUILD_ROOT%{l_prefix}/etc/squirrelmail \
        $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/prefs \
        $RPM_BUILD_ROOT%{l_prefix}/var/squirrelmail/spool/attach \
        $RPM_BUILD_ROOT%{l_prefix}/var/squirrelmail/log

    #   install locales
    ( cd all_locales-%{V_locale}
      cp -rpf help images locale $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/
    ) || exit $?

    #   install program
    ( cd squirrelmail-webmail-%{V_squirrelmail}

      #   install default_pref
      %{l_shtool} install -c -m 644 \
          data/default_pref \
          $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/prefs/

      #   create initial administrator list
      echo %{l_musr} >>$RPM_BUILD_ROOT%{l_prefix}/etc/squirrelmail/admins

      #   copy over most functional directories, a lot of stuff
      for dir in class doc functions include plugins src themes; do
          cp -rpf $dir $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/
      done
      cp -rpf images/* $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/images/
      cp -pf locale/timezones.cfg $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/locale/

      #   install main config files
      l_fqdm=`%{l_shtool} echo -e %h%d`
      %{l_shtool} install -c -m 644 %{l_value -s -a} \
          -e 's;config/\(config_local.php\);\1;g' \
          -e "s;@l_fqdm@;${l_fqdm};g" \
          %{SOURCE config.php} \
          config/config_default.php \
          config/config_local.php \
          $RPM_BUILD_ROOT%{l_prefix}/etc/squirrelmail/
%if "%{with_plugins}" == "yes"
      ( cd $RPM_BUILD_ROOT%{l_prefix}
        %{l_patch} -p0 <%{PATCH squirrelmail.patch.plugins}
        rm -f $RPM_BUILD_ROOT%{l_prefix}/etc/squirrelmail/*.orig
        rm -f $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/plugins/gpg/*.orig
        rm -f $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/plugins/chg_sasl_passwd/*.orig
      ) || exit $?
%endif

      #   install plugin config files
      ( cd $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/plugins
        %{l_shtool} subst \
            -e 's;../data/access_log;../../../var/squirrelmail/log/access.log;' \
            -e 's;\(\$sl_dateformat = \)"m/d/Y G:i:s";\1"d/m/Y G:i:s";' \
            squirrel_logger/setup.php
%if "%{with_plugins}" == "yes"
        cp -pf check_quota/config.sample.php check_quota/config.php
        cp -pf chg_sasl_passwd/config.php.sample chg_sasl_passwd/config.php
        cp -pf show_user_and_ip/config.php.sample show_user_and_ip/config.php
        %{l_shtool} install -c -m 644 \
            -e "s;sm_logo\.png;opkg_small.png;" \
            -e "s;SquirrelMail Logo;OpenPKG Logo;" \
            -e "s;www\.squirrelmail\.org;www.openpkg.org;" \
            -e "s;\/\/\(\$image_width.*\) = 308;\1 = 201;" \
            -e "s;\/\/\(\$image_height.*\) = 111;\1 = 62;" \
            addgraphics/config.php.typical.one.domain \
            addgraphics/config.php
        %{l_shtool} install -c -m 644 \
            -e 's/^\(\$sieve_preferred_sasl_mech =\).*/\1 "PLAIN LOGIN CRAM-MD5 DIGEST-MD5";/' \
            -e 's/^\(\$avelsieve_oldcyrus =\).*/\1 false;/' \
            -e 's/^\(\$startitems =\).*/\1 4;/' \
            avelsieve/config/config_sample.php \
            avelsieve/config/config.php
        %{l_shtool} subst \
            -e 's;\(path_to_gpg=\)/usr/bin/gpg.*;\1%{l_prefix}/bin/gpg;' \
            gpg/gpg_local_prefs.txt
        %{l_shtool} install -c -m 644 \
            -e 's;\(adminusername = "\)[^"]*;\1%{l_musr};' \
            -e 's;corehide = 1;corehide = 0;' \
            pupdate/config.php.sample \
            pupdate/config.php
        %{l_shtool} install -c -m 644 \
            -e "s;\(\$vkeyboard_msgsize.*\)'medium';\1'x-small';" \
            -e "s;\(\$vkeyboard_layout.*\)'us_english';\1'portuguese_abnt2';" \
            -e "s;\(\$vkeyboard_height.*\)'250';\1'270';" \
            vkeyboard/config.php.sample \
            vkeyboard/config.php
        cp -pf username/config.php.sample username/config.php
        %{l_shtool} install -c -m 644 \
            %{SOURCE opkg_small.png} \
            $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/images/
%endif
      ) || exit $?

      #   install squirrelmail configuration perl script
      %{l_shtool} install -c -m 755 \
          -e 's;chdir($dir);chdir("%{l_prefix}/etc/squirrelmail");g' \
          -e 's;\.\./plugins;%{l_prefix}/share/squirrelmail/plugins;g' \
          -e 's;\.\./themes;%{l_prefix}/share/squirrelmail/themes;g' \
          -e 's;config/config_local.php;config_local.php;g' \
          config/conf.pl \
          $RPM_BUILD_ROOT%{l_prefix}/bin/squirrelconf

      #   use our own logo, a squirrel next to a OpenPKG package
      %{l_shtool} install -c -m 644 \
          %{SOURCE opkg_large.png} \
          $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/images/
    ) || exit $?

    #   install runcommand script
    %{l_shtool} mkdir -f -p -m 755 \
        $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
    %{l_shtool} install -c -m 755 %{l_value -s -a} \
        %{SOURCE rc.squirrelmail} \
        $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/

    #   replace false /etc config paths throughout
    %{l_shtool} subst \
        -e 's;SM_PATH \. \(.\)config/;\1%{l_prefix}/etc/squirrelmail/;g' \
        -e 's;require_once(SM_PATH \. \(.*\)%{l_prefix};require_once(\1%{l_prefix};g' \
        $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/functions/*.php \
        $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/include/*.php \
        $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/plugins/administrator/*.php \
        $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/plugins/calendar/*.php \
        $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/src/*.php

    #   integration into Apache under /webmail
    %{l_shtool} mkdir -f -p -m 755 \
        $RPM_BUILD_ROOT%{l_prefix}/etc/apache/apache.d
    %{l_shtool} install -c -m 644 %{l_value -s -a} \
        %{SOURCE squirrelmail.conf} \
        $RPM_BUILD_ROOT%{l_prefix}/etc/apache/apache.d/
    %{l_shtool} install -c -m 644 %{l_value -s -a} \
        %{SOURCE index.php} \
        $RPM_BUILD_ROOT%{l_prefix}/share/squirrelmail/

    #   determine package ingredients and tag config files
    %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
        %{l_files_std} \
        '%config %{l_prefix}/etc/squirrelmail/*' \
        '%config %{l_prefix}/share/squirrelmail/prefs/*' \
        '%config %{l_prefix}/share/squirrelmail/plugins/squirrelspell/sqspell_config.php' \
%if "%{with_plugins}" == "yes"
        '%config %{l_prefix}/share/squirrelmail/plugins/addgraphics/config.php' \
        '%config %{l_prefix}/share/squirrelmail/plugins/avelsieve/config/config.php' \
        '%config %{l_prefix}/share/squirrelmail/plugins/check_quota/config.php' \
        '%config %{l_prefix}/share/squirrelmail/plugins/chg_sasl_passwd/config.php' \
        '%config %{l_prefix}/share/squirrelmail/plugins/folder_sizes/folder_sizes.php' \
        '%config %{l_prefix}/share/squirrelmail/plugins/gpg/gpg_local_prefs.txt' \
        '%config %{l_prefix}/share/squirrelmail/plugins/ldifimport/config.php' \
        '%config %{l_prefix}/share/squirrelmail/plugins/pupdate/config.php' \
        '%config %{l_prefix}/share/squirrelmail/plugins/show_user_and_ip/config.php' \
        '%config %{l_prefix}/share/squirrelmail/plugins/vkeyboard/config.php' \
        '%config %{l_prefix}/share/squirrelmail/plugins/username/config.php' \
%endif
        '%attr(755,%{l_nusr},%{l_ngrp}) %{l_prefix}/share/squirrelmail/prefs' \
        '%attr(755,%{l_nusr},%{l_ngrp}) %{l_prefix}/var/squirrelmail/spool/attach' \
        '%attr(755,%{l_nusr},%{l_ngrp}) %{l_prefix}/var/squirrelmail/log'

%files -f files

%clean

%preun
    #   before erase, remove log files
    [ $1 -eq 0 ] || exit 0
    rm -f $RPM_INSTALL_PREFIX/var/squirrelmail/log/*.log >/dev/null 2>&1 || true

