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