From bc30e8c6c9db34f93e329826786fbba056f8bad5 Mon Sep 17 00:00:00 2001 From: frytimo Date: Fri, 21 Nov 2025 21:27:09 -0400 Subject: [PATCH] Add support for Debian version 13 codename Trixie (#451) --- debian/install.sh | 6 +- debian/resources/finish.sh | 6 ++ debian/resources/nginx.sh | 14 +++- debian/resources/php.sh | 31 +++++++- debian/resources/switch.sh | 2 + debian/resources/switch/source-release.sh | 92 +++++++++++++++-------- debian/resources/switch/source-sounds.sh | 6 +- 7 files changed, 116 insertions(+), 41 deletions(-) diff --git a/debian/install.sh b/debian/install.sh index 45ed38e..36c1be6 100755 --- a/debian/install.sh +++ b/debian/install.sh @@ -52,15 +52,15 @@ resources/fusionpbx.sh #Optional Applications resources/applications.sh -#FreeSWITCH -resources/switch.sh - #Fail2ban resources/fail2ban.sh #Postgres resources/postgresql.sh +#FreeSWITCH +resources/switch.sh + #set the ip address server_address=$(hostname -I) diff --git a/debian/resources/finish.sh b/debian/resources/finish.sh index 0edaf76..d9591c3 100755 --- a/debian/resources/finish.sh +++ b/debian/resources/finish.sh @@ -111,6 +111,12 @@ cd /var/www/fusionpbx && /usr/bin/php /var/www/fusionpbx/core/upgrade/upgrade.ph #install crontab apt install cron +#update file permissions +chmod 664 /etc/fusionpbx/config.conf + +#restart nginx +systemctl restart nginx freeswitch + #welcome message echo "" echo "" diff --git a/debian/resources/nginx.sh b/debian/resources/nginx.sh index fe4835f..2f0c057 100755 --- a/debian/resources/nginx.sh +++ b/debian/resources/nginx.sh @@ -58,6 +58,15 @@ fi if [ ."$php_version" = ."8.1" ]; then sed -i /etc/nginx/sites-available/fusionpbx -e 's#unix:.*;#unix:/var/run/php/php8.1-fpm.sock;#g' fi +if [ ."$php_version" = ."8.2" ]; then + sed -i /etc/nginx/sites-available/fusionpbx -e 's#unix:.*;#unix:/var/run/php/php8.2-fpm.sock;#g' +fi +if [ ."$php_version" = ."8.3" ]; then + sed -i /etc/nginx/sites-available/fusionpbx -e 's#unix:.*;#unix:/var/run/php/php8.3-fpm.sock;#g' +fi +if [ ."$php_version" = ."8.4" ]; then + sed -i /etc/nginx/sites-available/fusionpbx -e 's#unix:.*;#unix:/var/run/php/php8.4-fpm.sock;#g' +fi ln -s /etc/nginx/sites-available/fusionpbx /etc/nginx/sites-enabled/fusionpbx #self signed certificate @@ -81,4 +90,7 @@ fi systemctl daemon-reload #restart nginx -service nginx restart +#service nginx restart + +#restart again +systemctl restart nginx diff --git a/debian/resources/php.sh b/debian/resources/php.sh index 1f727a9..f2005df 100755 --- a/debian/resources/php.sh +++ b/debian/resources/php.sh @@ -104,6 +104,26 @@ else /usr/bin/sh -c 'echo "deb [signed-by=/etc/apt/keyrings/sury-php-8.x.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' fi fi + if [ ."$os_codename" = ."trixie" ]; then + if [ ."$php_version" = ."8.2" ]; then + /usr/bin/apt -y install apt-transport-https lsb-release ca-certificates curl wget gnupg2 + /usr/bin/wget -qO- https://packages.sury.org/php/apt.gpg | gpg --dearmor > /etc/apt/keyrings/sury-php-8.x.gpg + /usr/bin/chmod 644 /etc/apt/keyrings/sury-php-8.x.gpg + /usr/bin/sh -c 'echo "deb [signed-by=/etc/apt/keyrings/sury-php-8.x.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' + fi + if [ ."$php_version" = ."8.3" ]; then + /usr/bin/apt -y install apt-transport-https lsb-release ca-certificates curl wget gnupg2 + /usr/bin/wget -qO- https://packages.sury.org/php/apt.gpg | gpg --dearmor > /etc/apt/keyrings/sury-php-8.x.gpg + /usr/bin/chmod 644 /etc/apt/keyrings/sury-php-8.x.gpg + /usr/bin/sh -c 'echo "deb [signed-by=/etc/apt/keyrings/sury-php-8.x.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' + fi + if [ ."$php_version" = ."8.4" ]; then + /usr/bin/apt -y install apt-transport-https lsb-release ca-certificates curl wget gnupg2 + /usr/bin/wget -qO- https://packages.sury.org/php/apt.gpg | gpg --dearmor > /etc/apt/keyrings/sury-php-8.x.gpg + /usr/bin/chmod 644 /etc/apt/keyrings/sury-php-8.x.gpg + /usr/bin/sh -c 'echo "deb [signed-by=/etc/apt/keyrings/sury-php-8.x.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' + fi + fi fi apt-get update -y @@ -125,16 +145,16 @@ if [ ."$php_version" = ."7.4" ]; then apt-get install -y --no-install-recommends php7.4 php7.4-common php7.4-cli php7.4-dev php7.4-fpm php7.4-pgsql php7.4-sqlite3 php7.4-odbc php7.4-curl php7.4-imap php7.4-xml php7.4-gd php7.4-mbstring php7.4-inotify fi if [ ."$php_version" = ."8.1" ]; then - apt-get install -y --no-install-recommends php8.1 php8.1-common php8.1-cli php8.1-dev php8.1-fpm php8.1-pgsql php8.1-sqlite3 php8.1-odbc php8.1-curl php8.1-imap php8.1-xml php8.1-gd php8.1-mbstring php8.1-ldap php8.1-inotify + apt-get install -y --no-install-recommends php8.1 php8.1-common php8.1-cli php8.1-dev php8.1-fpm php8.1-pgsql php8.1-sqlite3 php8.1-odbc php8.1-curl php8.1-imap php8.1-xml php8.1-gd php8.1-mbstring php8.1-ldap php8.1-inotify php8.1-snmp fi if [ ."$php_version" = ."8.2" ]; then - apt-get install -y --no-install-recommends php8.2 php8.2-common php8.2-cli php8.2-dev php8.2-fpm php8.2-pgsql php8.2-sqlite3 php8.2-odbc php8.2-curl php8.2-imap php8.2-xml php8.2-gd php8.2-mbstring php8.2-ldap php8.2-inotify + apt-get install -y --no-install-recommends php8.2 php8.2-common php8.2-cli php8.2-dev php8.2-fpm php8.2-pgsql php8.2-sqlite3 php8.2-odbc php8.2-curl php8.2-imap php8.2-xml php8.2-gd php8.2-mbstring php8.2-ldap php8.2-inotify php8.2-snmp fi if [ ."$php_version" = ."8.3" ]; then - apt-get install -y --no-install-recommends php8.3 php8.3-common php8.3-cli php8.3-dev php8.3-fpm php8.3-pgsql php8.3-sqlite3 php8.3-odbc php8.3-curl php8.3-imap php8.3-xml php8.3-gd php8.3-mbstring php8.3-ldap php8.3-inotify + apt-get install -y --no-install-recommends php8.3 php8.3-common php8.3-cli php8.3-dev php8.3-fpm php8.3-pgsql php8.3-sqlite3 php8.3-odbc php8.3-curl php8.3-imap php8.3-xml php8.3-gd php8.3-mbstring php8.3-ldap php8.3-inotify php8.3-snmp fi if [ ."$php_version" = ."8.4" ]; then - apt-get install -y --no-install-recommends php8.4 php8.4-common php8.4-cli php8.4-dev php8.4-fpm php8.4-pgsql php8.4-sqlite3 php8.4-odbc php8.4-curl php8.4-imap php8.4-xml php8.4-gd php8.4-mbstring php8.4-ldap php8.4-inotify + apt-get install -y --no-install-recommends php8.4 php8.4-common php8.4-cli php8.4-dev php8.4-fpm php8.4-pgsql php8.4-sqlite3 php8.4-odbc php8.4-curl php8.4-imap php8.4-xml php8.4-gd php8.4-mbstring php8.4-ldap php8.4-inotify php8.4-snmp fi #update config if source is being used @@ -206,6 +226,9 @@ fi if [ ."$php_version" = ."8.3" ]; then systemctl restart php8.3-fpm fi +if [ ."$php_version" = ."8.4" ]; then + systemctl restart php8.4-fpm +fi #init.d #/usr/sbin/service php5-fpm restart diff --git a/debian/resources/switch.sh b/debian/resources/switch.sh index aa5cbef..96e5619 100755 --- a/debian/resources/switch.sh +++ b/debian/resources/switch.sh @@ -9,8 +9,10 @@ cd "$(dirname "$0")" if [ .$switch_source = .true ]; then if [ ."$switch_branch" = "master" ]; then + echo "MASTER" switch/source-master.sh else + echo "RELEASE" switch/source-release.sh fi diff --git a/debian/resources/switch/source-release.sh b/debian/resources/switch/source-release.sh index 6d12a0c..4773200 100755 --- a/debian/resources/switch/source-release.sh +++ b/debian/resources/switch/source-release.sh @@ -12,21 +12,27 @@ apt update && apt upgrade -y # install dependencies apt install -y autoconf automake devscripts g++ git-core libncurses5-dev libtool libtool-bin make libjpeg-dev -apt install -y pkg-config flac libgdbm-dev libdb-dev gettext sudo equivs mlocate git dpkg-dev libpq-dev +apt install -y pkg-config flac libgdbm-dev libdb-dev gettext sudo equivs git dpkg-dev libpq-dev apt install -y liblua5.2-dev libtiff5-dev libperl-dev libcurl4-openssl-dev libsqlite3-dev libpcre3-dev apt install -y devscripts libspeexdsp-dev libspeex-dev libldns-dev libedit-dev libopus-dev libmemcached-dev apt install -y libshout3-dev libmpg123-dev libmp3lame-dev yasm nasm libsndfile1-dev libuv1-dev libvpx-dev -apt install -y libavformat-dev libswscale-dev libvlc-dev python3-distutils sox libsox-fmt-all +apt install -y libavformat-dev libswscale-dev libvlc-dev sox libsox-fmt-all #install dependencies that depend on the operating system version +if [ ."$os_codename" = ."noble" ]; then + apt install -y python3-distutils mlocate libvpx9 swig3.0 +fi if [ ."$os_codename" = ."stretch" ]; then - apt install -y libvpx4 swig3.0 + apt install -y python3-distutils mlocate libvpx4 swig3.0 fi if [ ."$os_codename" = ."buster" ]; then - apt install -y libvpx5 swig3.0 + apt install -y python3-distutils mlocate libvpx5 swig3.0 fi if [ ."$os_codename" = ."bullseye" ]; then - apt install -y libvpx6 swig4.0 + apt install -y python3-distutils mlocate libvpx6 swig4.0 +fi +if [ ."$os_codename" = ."trixie" ]; then + apt install -y python3-distutils-extra plocate fi # additional dependencies @@ -36,7 +42,7 @@ apt install -y sqlite3 unzip CWD=$(pwd) #install the following dependencies if the switch version is greater than 1.10.0 -if [ $(echo "$switch_version" | tr -d '.') -gt 1100 ]; then +if [ ."$switch_version" = ."master" ] || [ $(echo "$switch_version" | tr -d '.') -gt 1100 ] || [ ."$os_codename" = ."trixie" ]; then # libks build-requirements apt install -y cmake uuid-dev @@ -54,10 +60,14 @@ if [ $(echo "$switch_version" | tr -d '.') -gt 1100 ]; then # sofia-sip cd /usr/src - #git clone https://github.com/freeswitch/sofia-sip.git sofia-sip - wget https://github.com/freeswitch/sofia-sip/archive/refs/tags/v$sofia_version.zip - unzip v$sofia_version.zip - cd sofia-sip-$sofia_version + if [ ."$sofia_version" = ."master" ] || [ ."$os_codename" = ."trixie" ]; then + git clone https://github.com/freeswitch/sofia-sip.git sofia-sip + cd sofia-sip + else + wget https://github.com/freeswitch/sofia-sip/archive/refs/tags/v$sofia_version.zip + unzip v$sofia_version.zip + cd sofia-sip-$sofia_version + fi sh autogen.sh ./configure --enable-debug make -j $(getconf _NPROCESSORS_ONLN) @@ -67,8 +77,10 @@ if [ $(echo "$switch_version" | tr -d '.') -gt 1100 ]; then cd /usr/src git clone https://github.com/freeswitch/spandsp.git spandsp cd spandsp - git reset --hard 0d2e6ac65e0e8f53d652665a743015a88bf048d4 - #/usr/bin/sed -i 's/AC_PREREQ(\[2\.71\])/AC_PREREQ([2.69])/g' /usr/src/spandsp/configure.ac + if [ ."$sofia_version" != ."master" ] && [ ."$os_codename" != ."trixie" ] && [ ."$switch_branch" != ."master" ]; then + git reset --hard 0d2e6ac65e0e8f53d652665a743015a88bf048d4 + fi + #/usr/bin/sed -i 's/AC_PREREQ(\[2\.71\])/AC_PREREQ([2.69])/g' /usr/src/spandsp/configure.ac sh autogen.sh ./configure --enable-debug make -j $(getconf _NPROCESSORS_ONLN) @@ -79,35 +91,48 @@ fi cd /usr/src #check for master -if [ $switch_branch = "master" ]; then +if [ ."$os_codename" != ."trixie" ] || [ ."$switch_branch" = ."master" ]; then #master branch echo "Using version master" rm -r /usr/src/freeswitch git clone https://github.com/signalwire/freeswitch.git cd /usr/src/freeswitch + + git remote add fusionpbx https://github.com/fusionpbx/freeswitch.git + git fetch fusionpbx + git checkout -b $switch_version + + git rebase fusionpbx/master ./bootstrap.sh -j fi #check for stable release -if [ $switch_branch = "stable" ]; then +if [ ."$switch_branch" != ."master" ] && [ ."$os_codename" != ."trixie" ] && [ ."$switch_branch" = ."stable" ]; then echo "Using version $switch_version" #1.8 and older if [ $(echo "$switch_version" | tr -d '.') -lt 1100 ]; then wget http://files.freeswitch.org/freeswitch-releases/freeswitch-$switch_version.zip unzip freeswitch-$switch_version.zip cd /usr/src/freeswitch-$switch_version + + # Reset repo just-in-case we are rebuilding + git reset --hard HEAD && git clean -fdx fi #1.10.0 and newer if [ $(echo "$switch_version" | tr -d '.') -gt 1100 ]; then - git clone -b $switch_version --single-branch https://github.com/fusionpbx/freeswitch freeswitch-$switch_version - git checkout $switch_version + + git clone https://github.com/fusionpbx/freeswitch freeswitch-$switch_version + + cd /usr/src/freeswitch-$switch_version + + # Reset repo just-in-case we are rebuilding + git reset --hard origin/master && git clean -fdx #wget http://files.freeswitch.org/freeswitch-releases/freeswitch-$switch_version.-release.zip #unzip freeswitch-$switch_version.-release.zip #mv freeswitch-$switch_version.-release freeswitch-$switch_version - cd /usr/src/freeswitch-$switch_version - + # bootstrap is needed if using git ./bootstrap.sh -j @@ -124,22 +149,22 @@ fi # enable required modules #sed -i /usr/src/freeswitch/modules.conf -e s:'#applications/mod_avmd:applications/mod_avmd:' -sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'#applications/mod_av:formats/mod_av:' -sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'#applications/mod_callcenter:applications/mod_callcenter:' -sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'#applications/mod_cidlookup:applications/mod_cidlookup:' -sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'#applications/mod_memcache:applications/mod_memcache:' -sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'#applications/mod_nibblebill:applications/mod_nibblebill:' -sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'#applications/mod_curl:applications/mod_curl:' -sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'#applications/mod_translate:applications/mod_translate:' -sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'#formats/mod_shout:formats/mod_shout:' -sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'#formats/mod_pgsql:formats/mod_pgsql:' -sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'#say/mod_say_es:say/mod_say_es:' -sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'#say/mod_say_fr:say/mod_say_fr:' +sed -i modules.conf -e s:'#applications/mod_av:formats/mod_av:' +sed -i modules.conf -e s:'#applications/mod_callcenter:applications/mod_callcenter:' +sed -i modules.conf -e s:'#applications/mod_cidlookup:applications/mod_cidlookup:' +sed -i modules.conf -e s:'#applications/mod_memcache:applications/mod_memcache:' +sed -i modules.conf -e s:'#applications/mod_nibblebill:applications/mod_nibblebill:' +sed -i modules.conf -e s:'#applications/mod_curl:applications/mod_curl:' +sed -i modules.conf -e s:'#applications/mod_translate:applications/mod_translate:' +sed -i modules.conf -e s:'#formats/mod_shout:formats/mod_shout:' +sed -i modules.conf -e s:'#formats/mod_pgsql:formats/mod_pgsql:' +sed -i modules.conf -e s:'#say/mod_say_es:say/mod_say_es:' +sed -i modules.conf -e s:'#say/mod_say_fr:say/mod_say_fr:' #disable module or install dependency libks to compile signalwire -sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'applications/mod_signalwire:#applications/mod_signalwire:' -sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'endpoints/mod_skinny:#endpoints/mod_skinny:' -sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'endpoints/mod_verto:#endpoints/mod_verto:' +sed -i modules.conf -e s:'applications/mod_signalwire:#applications/mod_signalwire:' +sed -i modules.conf -e s:'endpoints/mod_skinny:#endpoints/mod_skinny:' +sed -i modules.conf -e s:'endpoints/mod_verto:#endpoints/mod_verto:' # prepare the build #./configure --prefix=/usr/local/freeswitch --enable-core-pgsql-support --disable-fhs @@ -151,5 +176,8 @@ sed -i /usr/src/freeswitch-$switch_version/modules.conf -e s:'endpoints/mod_vert make -j $(getconf _NPROCESSORS_ONLN) make install +# create voicemail directory for installer +mkdir -p /var/lib/freeswitch/storage/voicemail + #return to the executing directory cd $CWD diff --git a/debian/resources/switch/source-sounds.sh b/debian/resources/switch/source-sounds.sh index 420c6c1..73f8e99 100755 --- a/debian/resources/switch/source-sounds.sh +++ b/debian/resources/switch/source-sounds.sh @@ -8,7 +8,11 @@ cd "$(dirname "$0")" . ../environment.sh # change the working directory -cd /usr/src/freeswitch-$switch_version +if [ ."$switch_branch" = ."master" ]; then + cd /usr/src/freeswitch +else + cd /usr/src/freeswitch-$switch_version +fi # compile and install the sounds make sounds-install moh-install