flexisip-account-manager/flexisip-account-manager.spec
Timothée Jaussoin eeeb6baf74 Fix FLEXIAPI-366 Send the voicemails by email
Add a Voicemail UI to listen and delete voicemails in the Admin Account view
2025-12-11 17:20:56 +01:00

181 lines
5.6 KiB
RPMSpec

# -*- rpm-spec -*-
%define build_number MAKE_FILE_BUILD_NUMBER_SEARCH
%define var_dir /var/opt/belledonne-communications
%define opt_dir /opt/belledonne-communications/share/flexisip-account-manager
%define etc_dir /etc/flexisip-account-manager
%if %{with deb}
%define env_config_file %{etc_dir}/flexiapi.env
%else
%define env_config_file "$RPM_BUILD_ROOT%{etc_dir}/flexiapi.env"
%endif
%define env_symlink_file %{opt_dir}/flexiapi/.env
%bcond_with deb
%if %{with deb}
%define web_user www-data
%define apache_conf_path /etc/apache2/conf-available
%else
%define web_user apache
%define apache_conf_path /etc/httpd/conf.d
%endif
Name: bc-flexisip-account-manager
Version: MAKE_FILE_VERSION_SEARCH
Release: %{build_number}%{?dist}
Summary: Web panel and a REST API to manage and handle Flexisip accounts related features. Only tested for Apache2.
Group: Applications/Communications
License: GPL
URL: http://www.linphone.org
Source0: flexisip-account-manager.tar.gz
Requires: php >= 8.2, php-gd, php-pdo, php-redis, php-mysqlnd, php-mbstring
%description
PHP server for Linphone and Flexisip providing module for account creation.
%global debug_package %{nil}
%prep
%setup -n flexisip-account-manager
%install
rm -rf "$RPM_BUILD_ROOT"
mkdir -p "$RPM_BUILD_ROOT%{opt_dir}"
cp -R flexiapi "$RPM_BUILD_ROOT%{opt_dir}"
cp flexiapi/composer.json "$RPM_BUILD_ROOT%{opt_dir}/flexiapi"
cp README* "$RPM_BUILD_ROOT%{opt_dir}/"
cp INSTALL* "$RPM_BUILD_ROOT%{opt_dir}/"
mkdir -p $RPM_BUILD_ROOT/etc/cron.daily
mkdir -p $RPM_BUILD_ROOT/etc/cron.d
mkdir -p $RPM_BUILD_ROOT%{apache_conf_path}
cp httpd/flexisip-account-manager.conf "$RPM_BUILD_ROOT%{apache_conf_path}/"
%if %{with deb}
cp cron/flexiapi.debian "$RPM_BUILD_ROOT/etc/cron.daily/"
chmod +x "$RPM_BUILD_ROOT/etc/cron.daily/flexiapi.debian"
%else
cp cron/flexiapi.redhat "$RPM_BUILD_ROOT/etc/cron.daily/"
chmod +x "$RPM_BUILD_ROOT/etc/cron.daily/flexiapi.redhat"
%endif
cp cron/flexiapi.cron "$RPM_BUILD_ROOT/etc/cron.d/flexiapi"
chmod +x "$RPM_BUILD_ROOT/etc/cron.d/flexiapi"
%if %{with deb}
sed 's/apache/www-data/g' "$RPM_BUILD_ROOT/etc/cron.d/flexiapi"
%endif
# POST INSTALLATION
%posttrans
# Create the var directory if it doesn't exists
# FlexiAPI logs file
mkdir -p %{var_dir}/log/flexiapi
# FlexiAPI base directories setup and rights
mkdir -p %{var_dir}/flexiapi/storage/app/public
mkdir -p %{var_dir}/flexiapi/storage/framework/cache/data
mkdir -p %{var_dir}/flexiapi/storage/framework/sessions
mkdir -p %{var_dir}/flexiapi/storage/framework/testing
mkdir -p %{var_dir}/flexiapi/storage/framework/views
mkdir -p %{var_dir}/flexiapi/bootstrap/cache
mkdir -p %{var_dir}/log
chown -R %{web_user}:%{web_user} %{var_dir}/log
chown -R %{web_user}:%{web_user} %{var_dir}/flexiapi/storage
chown -R %{web_user}:%{web_user} %{var_dir}/flexiapi/bootstrap
chown -R %{web_user}:%{web_user} %{var_dir}/log/flexiapi
# Forces the creation of the symbolic links event if they already exists
ln -sf %{var_dir}/log/flexiapi %{var_dir}/flexiapi/storage/logs
ln -sf %{var_dir}/flexiapi/storage %{opt_dir}/flexiapi/.
# if selinux is installed on the system (even if not enabled)
which setsebool > /dev/null 2>&1
if [ $? -eq 0 ] ; then
setsebool -P httpd_can_network_connect on
setsebool -P httpd_can_network_connect_db on
setsebool -P httpd_can_sendmail on
semanage fcontext -a -t var_log_t %{var_dir}/log 2>/dev/null || :
semanage fcontext -a -t httpd_log_t "%{var_dir}/log/flexiapi(./*)?" 2>/dev/null || :
restorecon %{var_dir}/log || :
restorecon -R %{var_dir}/log/flexiapi || :
semanage fcontext -a -t httpd_sys_rw_content_t "%{var_dir}/flexiapi/storage(/.*)?" 2>/dev/null || :
restorecon -R %{var_dir}/flexiapi/storage || :
semanage fcontext -a -t httpd_sys_rw_content_t "%{opt_dir}/flexiapi/storage(/.*)?" 2>/dev/null || :
restorecon -R %{opt_dir}/flexiapi/storage || :
fi
# FlexiAPI env file configuration
if ! test -f %{env_config_file}; then
cd %{opt_dir}/flexiapi/
mkdir -p %{etc_dir}
cp -R .env.example %{env_config_file}
ln -s %{env_config_file} %{env_symlink_file}
php artisan key:generate
fi
# Link it once more
ln -sf %{env_config_file} %{env_symlink_file}
# Check if there is a migration
if cd %{opt_dir}/flexiapi/ && php artisan migrate:status | grep -q No; then
echo " "
echo "All the following commands need to be run with the web user"
echo "sudo -su %{web_user}"
echo "You need to migrate the database to finish the setup:"
echo "%{web_user}$ cd %{opt_dir}/flexiapi/"
echo %{web_user}$ php artisan migrate
fi
%postun
# Final removal.
# if selinux is installed on the system (even if not enabled)
which setsebool > /dev/null 2>&1
if [ $? -eq 0 ] ; then
semanage fcontext -d -t httpd_log_t "%{var_dir}/log/flexiapi(./*)?" 2>/dev/null || :
semanage fcontext -d -t httpd_sys_rw_content_t "%{var_dir}/flexiapi/storage(/.*)?" 2>/dev/null || :
semanage fcontext -d -t httpd_sys_rw_content_t "%{opt_dir}/flexiapi/storage(/.*)?" 2>/dev/null || :
if [ $1 -eq 0 ] ; then
restorecon -R %{var_dir}/log/flexiapi || :
restorecon -R %{var_dir}/flexiapi/storage || :
restorecon -R %{opt_dir}/flexiapi/storage || :
fi
fi
# FILES
%files
%{opt_dir}/flexiapi/
%{opt_dir}/README*
%{opt_dir}/INSTALL*
%exclude %{opt_dir}/flexiapi/storage/
%config /etc/cron.d/flexiapi
%config(noreplace) %{apache_conf_path}/flexisip-account-manager.conf
%if %{with deb}
%config(noreplace) /etc/cron.daily/flexiapi.debian
%else
%config(noreplace) /etc/cron.daily/flexiapi.redhat
%endif
%clean
rm -rf $RPM_BUILD_ROOT