File vicibox-install.spec of Package vicibox-install

#
# spec file for package vicibox-install
#
# Copyright (c) 2020 SUSE LLC
#
# 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 https://bugs.opensuse.org/
#

# Some declared stuff
%define shortname vicibox
%if (0%{?suse_version} >= 1600 && 0%{?is_opensuse})
%define apxs %{_bindir}/apxs
%else
%define apxs %{_sbindir}/apxs2
%endif
%define ap_sysconfdir %(%{apxs} -q SYSCONFDIR)

Name:           vicibox-install
Version:        1.1.1
Release:        0
Summary:        ViciBox Install and pre-requisites
License:        AGPL-1.0-or-later
Group:          Productivity/Telephony/Servers
URL:            https://www.vicibox.com/
Source0:        vicibox-install.pl
Source1:        vici-getsvn
Source2:        vicidial-mysqldiff
Source3:        vicibox-express
Source4:        enable-archive
Source5:        vicidial-serverscrub
Source6:        vicidial
Source7:        vicibox-web.sh
Source8:        vicibox-tel.sh
Source9:        sysconfig.vicidial
Source10:       allcron
Source11:       dbcron
Source12:       dialcron
Source13:       vicidial.service
Source14:       codec-install.sh
Source15:       index.html
Source16:       vicibox-timezone
Source17:       server-tuning.conf
Source18:       0000-default.conf
Source19:       0000-default-ssl.conf
Source20:       conf.gsm
Source21:       modules.conf
Source22:       my.cnf
Source23:       mod_deflate.conf
Source24:       audiostore.conf
Source25:       viciarchive.conf
Source26:       vicirecord.conf
Source27:       vicibox-externip
Source28:       vicibox-mdraid1
Source29:       vici-sip.sh
Source30:       vici-pjsip.sh
BuildArch:      noarch
BuildRequires:  apache2-devel

# Requirements
Requires:       asterisk
Requires:       asterisk-moh-base
Requires:       asterisk-perl
Requires:       asterisk-sounds-base
Requires:       dahdi-linux
Requires:       dahdi-linux-kmp-default
Requires:       dahdi-tools
Requires:       lame
Requires:       mariadb
Requires:       nvme-cli
Requires:       openr2
Requires:       ploticus
Requires:       pwgen
Requires:       screen
Requires:       sipsak
Requires:       sox
Requires:       subversion
Requires:       ttyload

### PERL stuff
Requires:       perl-Class-Mix
Requires:       perl-Crypt-Eksblowfish
Requires:       perl-Crypt-CBC
Requires:       perl-CryptX
Requires:       perl-DBD-mysql
Requires:       perl-Digest-MD5-File
Requires:       perl-Digest-Perl-MD5
Requires:       perl-Email-Date-Format
Requires:       perl-File-Temp
Requires:       perl-GD
Requires:       perl-HTML-Format
Requires:       perl-HTML-Strip
Requires:       perl-IO-Pty-Easy
Requires:       perl-IO-String
Requires:       perl-IO-Tty
Requires:       perl-Jcode
Requires:       perl-LWP-Protocol-https
Requires:       perl-Mail-Box
Requires:       perl-Mail-IMAPClient
Requires:       perl-Mail-POP3Client
Requires:       perl-Mail-Sendmail
Requires:       perl-Digest-MD5
Requires:       perl-MIME-Lite
Requires:       perl-MIME-tools
Requires:       perl-MySQL-Diff
Requires:       perl-Net-Daemon
Requires:       perl-Net-FTPSSL
Requires:       perl-Net-Server
Requires:       perl-Net-Telnet
Requires:       perl-Proc-ProcessTable
Requires:       perl-RPC-XML
Requires:       perl-Spreadsheet-ParseExcel
Requires:       perl-Spreadsheet-Read
Requires:       perl-Spreadsheet-ReadSXC
Requires:       perl-Spreadsheet-WriteExcel
Requires:       perl-Spreadsheet-XLSX
Requires:       perl-String-ShellQuote
Requires:       perl-Switch
Requires:       perl-TermReadLine-Gnu
Requires:       perl-Test-Simple
Requires:       perl-Text-CSV
Requires:       perl-Text-CSV_XS
Requires:       perl-Tie-IxHash
Requires:       perl-TimeDate
Requires:       perl-Unicode-Map
Recommends:     perl-Net-SFTP
Recommends:     perl-Net-SFTP-Foreign
Recommends:     perl-Term-ANSIColor
Recommends:     perl-WWW-Curl
Recommends:     php-xmlrpc
%{perl_requires}

### PHP Stuff
# Versions prior to 16.0 uses sle_version, 16.0+ uses suse_version
%if (0%{?sle_version} >= 150600 || 0%{?suse_version} >= 1600) && 0%{?is_opensuse}
# From ViciBox12 or OpenSuSE Leap 15.6 forward, use PHP8
Requires:       apache2-mod_php8
Requires:       php-pear-XML_RPC
Requires:       php8-ctype
Requires:       php8-curl
Requires:       php8-ftp
Requires:       php8-gd
Requires:       php8-gettext
Requires:       php8-opcache
Requires:       php8-openssl
Requires:       php8-soap
Requires:       php8-tokenizer
Requires:       php8-xmlreader
Requires:       php8-xmlwriter
Requires:       php8-zip
Requires:       php8-zlib
Requires:       php8-mysql
%else
# Previous releases used PHP7
Requires:       apache2-mod_php7
Requires:       php7-ctype
Requires:       php7-curl
Requires:       php7-ftp
Requires:       php7-gd
Requires:       php7-gettext
Requires:       php7-json
Requires:       php7-opcache
Requires:       php7-openssl
Requires:       php7-pear-XML_RPC
Requires:       php7-soap
Requires:       php7-tokenizer
Requires:       php7-xmlreader
Requires:       php7-xmlwriter
Requires:       php7-zip
Requires:       php7-zlib
Requires:       php7-mysql
%endif

%description
ViciBox installer and pre-requisites for the ViciDial contact center suite.
This package provides:
- Installation scripts and utilities
- System configuration files
- Apache/Web server configurations
- Database management tools
- Service management scripts


%prep

%build

%install
# Do vicibox stuff
mkdir -p %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE0} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE1} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE2} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE3} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE4} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE5} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE7} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE8} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0644 %{SOURCE10} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0644 %{SOURCE11} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0644 %{SOURCE12} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE14} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0644 %{SOURCE15} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE16} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE17} %{buildroot}/%{_datarootdir}/%{shortname}
install -D -m 0644 %{SOURCE20} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0644 %{SOURCE21} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0644 %{SOURCE22} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE27} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE28} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE29} %{buildroot}/%{_datarootdir}/%{shortname}
install -m 0755 %{SOURCE30} %{buildroot}/%{_datarootdir}/%{shortname}

# Apache configs
install -D -m 0644 %{SOURCE23} %{buildroot}/%{_datarootdir}/%{shortname}
install -D -m 0644 %{SOURCE24} %{buildroot}/%{_datarootdir}/%{shortname}
install -D -m 0644 %{SOURCE25} %{buildroot}/%{_datarootdir}/%{shortname}
install -D -m 0644 %{SOURCE26} %{buildroot}/%{_datarootdir}/%{shortname}
install -D -m 0644 %{SOURCE18} %{buildroot}/%{_datarootdir}/%{shortname}
install -D -m 0644 %{SOURCE19} %{buildroot}/%{_datarootdir}/%{shortname}

# Init stuff
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_sbindir}
mkdir -p %{buildroot}%{_unitdir}
install -D -m 644 %{SOURCE13} %{buildroot}%{_unitdir}/vicidial.service
install -D -m 644 %{SOURCE9} %{buildroot}%{_fillupdir}/sysconfig.vicidial
install -D -m 755 %{SOURCE6} %{buildroot}%{_bindir}/vicidial
%fillup_and_insserv

%pre
%service_add_pre vicidial.service
### Backup config files if they exist
if [ -e %{ap_sysconfdir}/conf.d/mod_deflate.conf ]; then
  cp %{ap_sysconfdir}/conf.d/mod_deflate.conf %{ap_sysconfdir}/conf.d/mod_deflate.conf.old
fi
if [ -e %{ap_sysconfdir}/conf.d/audiostore.conf ]; then
  cp %{ap_sysconfdir}/conf.d/audiostore.conf %{ap_sysconfdir}/conf.d/audiostore.conf.old
fi
if [ -e %{ap_sysconfdir}/conf.d/viciarchive.conf ]; then
  cp %{ap_sysconfdir}/conf.d/viciarchive.conf %{ap_sysconfdir}/conf.d/viciarchive.conf.old
fi
if [ -e %{ap_sysconfdir}/conf.d/vicirecord.conf ]; then
  cp %{ap_sysconfdir}/conf.d/vicirecord.conf %{ap_sysconfdir}/conf.d/vicirecord.conf.old
fi
if [ -e %{ap_sysconfdir}/vhosts.d/0000-default.conf ]; then
  cp %{ap_sysconfdir}/vhosts.d/0000-default.conf %{ap_sysconfdir}/vhosts.d/0000-default.conf.old
fi
if [ -e %{ap_sysconfdir}/vhosts.d/0000-default-ssl.conf ]; then
  cp %{ap_sysconfdir}/vhosts.d/0000-default-ssl.conf %{ap_sysconfdir}/vhosts.d/0000-default-ssl.conf.old
fi
if [ -e %{ap_sysconfdir}/vhosts.d/1111-default.conf ]; then
  cp %{ap_sysconfdir}/vhosts.d/1111-default.conf %{ap_sysconfdir}/vhosts.d/1111-default.conf.old
fi
if [ -e %{ap_sysconfdir}/vhosts.d/1111-default-ssl.conf ]; then
  cp %{ap_sysconfdir}/vhosts.d/1111-default-ssl.conf %{ap_sysconfdir}/vhosts.d/1111-default-ssl.conf.old
fi


%post
### Symlinks for most things
ln -sf %{_datarootdir}/%{shortname}/vicibox-install.pl %{_bindir}/vicibox-install
ln -sf %{_datarootdir}/%{shortname}/vici-getsvn %{_bindir}
ln -sf %{_datarootdir}/%{shortname}/vicibox-express %{_bindir}
ln -sf %{_datarootdir}/%{shortname}/enable-archive %{_bindir}/vicibox-enable-archive
ln -sf %{_datarootdir}/%{shortname}/vicidial-mysqldiff %{_bindir}
ln -sf %{_datarootdir}/%{shortname}/codec-install.sh %{_bindir}/codec-install
ln -sf %{_datarootdir}/%{shortname}/vicidial-serverscrub %{_bindir}
ln -sf %{_datarootdir}/%{shortname}/vicibox-timezone %{_bindir}
ln -sf %{_datarootdir}/%{shortname}/vicibox-externip %{_bindir}
ln -sf %{_datarootdir}/%{shortname}/vicibox-mdraid1 %{_bindir}

### Copy config files if they don't exist
if [ -d %{ap_sysconfdir}/conf.d ]; then
  if [ ! -e %{ap_sysconfdir}/conf.d/mod_deflate.conf ]; then
    cp %{_datarootdir}/%{shortname}/mod_deflate.conf %{ap_sysconfdir}/conf.d/
  fi
  if [ ! -e %{ap_sysconfdir}/conf.d/audiostore.conf ]; then
    cp %{_datarootdir}/%{shortname}/audiostore.conf %{ap_sysconfdir}/conf.d/
  fi
  if [ ! -e %{ap_sysconfdir}/conf.d/viciarchive.conf ]; then
    cp %{_datarootdir}/%{shortname}/viciarchive.conf %{ap_sysconfdir}/conf.d/
  fi
  if [ ! -e %{ap_sysconfdir}/conf.d/vicirecord.conf ]; then
    cp %{_datarootdir}/%{shortname}/vicirecord.conf %{ap_sysconfdir}/conf.d/
  fi
fi
# Older versions of vicibox used 1111-default conf files. This caused issues with making sure the expected default vhost was
# used. Later versions switched to 0000-default to address this. So if neither config file exists, copy the 0000-default
if [ -d %{ap_sysconfdir}/vhosts.d ]; then
  if [ ! -e %{ap_sysconfdir}/vhosts.d/0000-default.conf ] && [ ! -e %{ap_sysconfdir}/vhosts.d/1111-default.conf ]; then
    cp -p %{_datarootdir}/%{shortname}/0000-default.conf %{ap_sysconfdir}/vhosts.d/ || :
  fi
  if [ ! -e %{ap_sysconfdir}/vhosts.d/0000-default-ssl.conf ] && [ ! -e %{ap_sysconfdir}/vhosts.d/1111-default-ssl.conf ]; then
    cp -p %{_datarootdir}/%{shortname}/0000-default-ssl.conf %{ap_sysconfdir}/vhosts.d/ || :
  fi
fi
if ! a2enmod -l | grep deflate > /dev/null; then
  a2enmod deflate
fi


%{fillup_only -n vicidial }
%service_add_post vicidial.service


%preun
%service_del_preun vicidial.service

%postun
%service_del_postun vicidial.service

%files
%defattr(644,root,root,755)
%dir %attr(644,root,root) %{_datarootdir}/%{shortname}
%{_datarootdir}/%{shortname}/server-tuning.conf
%{_datarootdir}/%{shortname}/index.html
%{_datarootdir}/%{shortname}/allcron
%{_datarootdir}/%{shortname}/dbcron
%{_datarootdir}/%{shortname}/dialcron
%{_datarootdir}/%{shortname}/conf.gsm
%{_datarootdir}/%{shortname}/modules.conf
%{_datarootdir}/%{shortname}/my.cnf
%{_datarootdir}/%{shortname}/mod_deflate.conf
%{_datarootdir}/%{shortname}/audiostore.conf
%{_datarootdir}/%{shortname}/viciarchive.conf
%{_datarootdir}/%{shortname}/vicirecord.conf
%{_datarootdir}/%{shortname}/0000-default.conf
%{_datarootdir}/%{shortname}/0000-default-ssl.conf

# Executable files
%attr(0755,root,root) %{_datarootdir}/%{shortname}/vicibox-install.pl
%attr(0755,root,root) %{_datarootdir}/%{shortname}/vici-getsvn
%attr(0755,root,root) %{_datarootdir}/%{shortname}/vicibox-express
%attr(0755,root,root) %{_datarootdir}/%{shortname}/enable-archive
%attr(0755,root,root) %{_datarootdir}/%{shortname}/vicidial-mysqldiff
%attr(0755,root,root) %{_datarootdir}/%{shortname}/vicidial-serverscrub
%attr(0755,root,root) %{_datarootdir}/%{shortname}/vicibox-tel.sh
%attr(0755,root,root) %{_datarootdir}/%{shortname}/vicibox-web.sh
%attr(0755,root,root) %{_datarootdir}/%{shortname}/codec-install.sh
%attr(0755,root,root) %{_datarootdir}/%{shortname}/vicibox-timezone
%attr(0755,root,root) %{_datarootdir}/%{shortname}/vicibox-externip
%attr(0755,root,root) %{_datarootdir}/%{shortname}/vicibox-mdraid1
%attr(0755,root,root) %{_datarootdir}/%{shortname}/vici-pjsip.sh
%attr(0755,root,root) %{_datarootdir}/%{shortname}/vici-sip.sh
%attr(0755,root,root) %{_bindir}/vicidial
%{_fillupdir}/sysconfig.vicidial
%{_unitdir}/vicidial.service

%changelog
openSUSE Build Service is sponsored by