3CX, phppgadmin & nginx

3CX hat nicht gerade die Vorzeige-Dokumentationen, man möchte sich bedeckt halten, um die Services wirtschaftlicher vermarkten zu können. Nichts dagegen, wir wollen trotzdem ein bisschen mehr Informationen haben.

Wie sieht wohl das Datenmodell einer 3CX VoIP Telefonanlage aus? Wie kommen wir an wichtige Infos und wo stehen die? Wir brauchen doch einen Dialer für Firefox ohne Telify!

Voraussetzungen:

Ähnliches Foto

3CX 16.0.2.910

Bildergebnis für debian logo

Debian 9.9

Die 3CX basiert auf dem original Debian Image, das ursprünglich auf Debian 8 daher kam.

Problem, bzw. warum das Ganze:

Das Telify Addon für Firefox gibt es nicht mehr. Wir brauchen eine Alternative, die intelligent sein und in unserer Umgebung UCS/3CX/Snom für Clients unter macOS, Linux und Windows einen Ersatz finden soll.

Da wir daher an der nativen Implementierung eines Firefox Dialers für unsere Snom Telefone, die an einer 3CX hängen, arbeiten, haben wir uns gedacht, dass es keine schlechte Idee wäre, sich die PostgreSQL DB der 3CX näher anzusehen, um das Datenmodell dahinter schneller zu verstehen. Geeignet ist dazu phppgadmin, das wir temporär installieren wollen.

Ziel ist es, die MAC-Adressen der Snom-Telefone für bestimmte Extensions auszulesen. Die MAC-Adresse brauchen wir, um die IP und damit die URL für das entsprechende Snom Telefon heraus zu finden. Mehr zu dem Dialer in einem der nächsten Beiträge.

Jetzt kümmern wir uns erst mal darum, dass phppgadmin läuft.

Aktuell stehen einige Informationen zur PostgreSQL DB in der 3CX hier:

/var/lib/3cxpbx/Bin/3CXPhoneSystem.ini

Wir benötigen zusätzliche Komponenten:

admin@3cx[~]# sudo apt update && apt-get install nginx-common nginx php php-fpm php-apcu php-curl php-cli php-pgsql php-gd php-mcrypt php-mbstring php-fdomdocument php-intl php7.0-fpm libjs-jquery libphp-adodb slony1-2-bin php-cgi php-cli php-common php-pgsql libzip4 postgresql-client-common; sudo apt --purge remove *apache*

Erstellung der root- und log-Verzeichnisse, setzen der Rechte:

admin@3cx[~]# sudo mkdir -p /var/www/getcom.de/phppgadmin/; sudo mkdir /var/log/phppgadmin; sudo chown www-data.adm /var/log/phppgadmin

Download phppgadmin:

admin@3cx[~]# cd /var/www/getcom.de/phppgadmin/; sudo wget https://github.com/phppgadmin/phppgadmin/archive/REL_5-6-0.tar.gz

Auspacken!

admin@3cx[/var/www/getcom.de/phppgadmin]# sudo gunzip REL_5-6-0.tar.gz; sudo tar -xvf REL_5-6-0.tar; sudo mv phppgadmin-REL_5-6-0/* .; sudo rm REL_5-6-0.tar; sudo rm -R phppgadmin-REL_5-6-0/

Erstellen der Config-Datei:

admin@3cx[/var/www/getcom.de/phppgadmin]# sudo cp -a conf/config.inc.php-dist conf/config.inc.php

Hier ändern wir zwei Parameter ab:

$conf['servers'][0]['host'] = '127.0.0.1';
$conf['extra_login_security'] = false;

Weiterhin benötigen wir einen Superuser auf der PostgreSQL DB, für den wir ein Passwort vergeben:

admin@3cx[/var/www/getcom.de/phppgadmin]# sudo su -
Remote: 14:22:25h@3cx [root@~]
# sudo su - postgres
postgres@3cx:~$ createuser --superuser --pwprompt getcom

Da  wir den nginx worker für phppgadmin auf Port 81 laufen lassen wollen, muss die 3CX Firewall dafür geöffnet werden. Dafür identifizieren wir die Regel IDs, setzen die iptables regeln und schreiben die neue Configuration als persistentes Setup:

Remote: 14:22:36h@3cx [root@~]
#iptables -L INPUT --line-numbers | grep -e 5060 -e 5090 | grep tcp
2    ACCEPT     tcp  --  anywhere             anywhere             multiport dports http,81,https,sip,sip-tls,5090,bacula-fd tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
13   ACCEPT     tcp  --  anywhere             anywhere             multiport dports http,81,https,sip,sip-tls,5090,bacula-fd tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW

Regel IDs sind somit 2 und 13. Jetzt ändern wir das.

Remote: 02:22:46h@3cx [root@~]
# /sbin/iptables -R INPUT 2 -p tcp -m multiport --dports 80,81,443,5060,5061,5090,9102 -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j ACCEPT
Remote: 02:22:48h@3cx [root@~]
# /sbin/iptables -R INPUT 13 -p tcp -m multiport --dports 80,81,443,5060,5061,5090,9102 -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j ACCEPT
Remote: 02:22:50h@3cx [root@~]
# service netfilter-persistent save; exit

Die nginx Config:

admin@3cx[~]# sudo vi /etc/nginx/sites-available/phppgadmin
server {
    listen 81;
    listen [::]:81; 
    index  index.html index.htm index.php;
 
    root /var/www/getcom.de/phppgadmin;
    access_log      /var/log/phppgadmin/access.log;
    error_log       /var/log/phppgadmin/error.log;
 
    access_log off;
 
        location ~ \.php$ {
		include /etc/nginx/fastcgi.conf; 
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                fastcgi_index index.php;
        }
}

Wichtig ist hier der Pfad bei fastcgi_pass, der muss stimmen.

Anschließend die Aktivierung:

admin@3cx[~]# sudo ln -s /etc/nginx/sites-available/phppgadmin /etc/nginx/sites-enabled/

Jetzt noch eine kleine Änderung der php settings von fpm:

Hier ist zu aktivieren:

cgi.fix_pathinfo=0

admin@3cx[~]# sudo vi /etc/php/*/fpm/php.ini
admin@3cx[~]# systemctl restart php7.0-fpm

Es ist Zeit für den restart von nginx:

admin@3cx[~]# systemctl restart nginx

Prüfung, ob der Port 81 hoch kam:

admin@3cx[~]# sudo netstat -anp | grep 0.0.0.0:81
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      30341/nginx: master

Im Browser mit der URL http://3cx.getcom.de:81 und nach Anmeldung mit unserem neuen Superuser sieht die 3CX DB so aus:

phppgadmin unter nginx/3CX

Ziel erreicht!

Tags: , , , , ,

Related posts

BeagleBone AI & Debian 10

3CX hat nicht gerade die Vorzeige-Dokumentationen, man möchte sich bedeckt halten, um die Services wirtschaftlicher vermarkten zu können. Nichts dagegen, wir wollen trotzdem ein bisschen mehr Informationen haben. Wie sieht wohl das Datenmodell einer 3CX VoIP Telefonanlage aus? Wie kommen wir an wichtige Infos und wo stehen die? Wir brauchen doch einen Dialer für Firefox ohne Telify!

RPi 3/3+ & Debian 10

3CX hat nicht gerade die Vorzeige-Dokumentationen, man möchte sich bedeckt halten, um die Services wirtschaftlicher vermarkten zu können. Nichts dagegen, wir wollen trotzdem ein bisschen mehr Informationen haben. Wie sieht wohl das Datenmodell einer 3CX VoIP Telefonanlage aus? Wie kommen wir an wichtige Infos und wo stehen die? Wir brauchen doch einen Dialer für Firefox ohne Telify!

Debian Pakete sperren

3CX hat nicht gerade die Vorzeige-Dokumentationen, man möchte sich bedeckt halten, um die Services wirtschaftlicher vermarkten zu können. Nichts dagegen, wir wollen trotzdem ein bisschen mehr Informationen haben. Wie sieht wohl das Datenmodell einer 3CX VoIP Telefonanlage aus? Wie kommen wir an wichtige Infos und wo stehen die? Wir brauchen doch einen Dialer für Firefox ohne Telify!

Leave a Comment

Schreibe einen Kommentar

Your email address will not be published.




Top