Как и говорил в прошлой заметке, сегодня я покажу как настраивается/устанавливается оснастка Web - Asterisk CDR Viewer на сервер где работает роль Asterisk 16 + ODBC + Mysql с целью визуализации совершенных звонков (всех звонков). В роли операционной системы сервера — это Ubuntu 18.04 Server amd64. Легче смотреть логи/анализировать куда попадает звонок и что не так с ним, предоставлять выгрузку звонков. К тому же так удобнее использовать Web-интерфейс.

Что было сделано до этой заметки:

Шаг №1: Проверяю, что Asterisk 16 видит модуль cdr_mysql.so:

ekzorchik@srv-asterisk:~$ sudo asterisk -rx "module show like cdr_mysql.so"

[sudo] password for ekzorchik:

Module Description Use Count Status Support Level

cdr_mysql.so MySQL CDR Backend 0 Running deprecated

1 modules loaded

Шаг №2: С номера 2002 совершил звонок на номер 1000 (точное время)

Фиксирую запись вызова в базе MySQL:

Фиксирую звонок в базе Mysql

mysql> quit

Bye

ekzorchik@srv-asterisk:~$

Т.к. в выводе вижу вызов, то это означает что CDR пишется и все работает.

Шаг №3: Теперь настрою Asterisk CDR Viewer, но сперва устанавливаю пакет LAMP содержащий Webсервис Apache2 + MySQL + PHP

ekzorchik@srv-asterisk:~$ wget https://github.com/prog-it/Asterisk-CDR-Viewer-Mod/archive/master.zip

ekzorchik@srv-asterisk:~$ unzip master.zip

ekzorchik@srv-asterisk:~$ mv Asterisk-CDR-Viewer-Mod-master/ acdrviewer

ekzorchik@srv-asterisk:~$ sudo tasksel install lamp-server

ekzorchik@srv-asterisk:~$ sudo nano /etc/apache2/apache2.conf

ServerName localhost

ekzorchik@srv-asterisk:~$ sudo a2enmod authz_groupfile

ekzorchik@srv-asterisk:~$ sudo unlink /etc/apache2/sites-available/default-ssl.conf

ekzorchik@srv-asterisk:~$ sudo rm /var/www/html/index.html

ekzorchik@srv-asterisk:~$ sudo mv acdrviewer/ /var/www/html/

ekzorchik@srv-asterisk:~$ sudo cp /var/www/html/acdrviewer/inc/config/config.php.sample /var/www/html/acdrviewer/inc/config/config.php

ekzorchik@srv-asterisk:~$ sudo nano /var/www/html/acdrviewer/inc/config/config.php

# Тип базы, который поддерживается PDO. Например: mysql, pgsql

'type' => 'mysql',

# Хост

'host' => 'localhost',

# Порт

'port' => '3306',

# Пользователь

'user' => 'asteriskuser',

# Имя базы

'name' => 'asteriskcdrdb',

# Пароль

'pass' => 'asterpass',

# Название таблицы

'table' => 'cdr',

# Доп. опции подключения

'options' => array(

//PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',

),

ekzorchik@srv-asterisk:~$ sudo chown -R www-data:www-data /var/www/html/

ekzorchik@srv-asterisk:~$ sudo systemctl restart apache2

Запускаю со своей рабочей системы с которой взаимодействую с сервером где у меня роль Asterisk 16 браузер и в новой вкладке обращаюсь на URL адрес: http://172.33.33.2/acdrviewer и получаю доступ к оснастке «Детализация звонков»

Web-оснастка "Детализация звонков"

Ура оснастка встала без каких либо проблем

А вот и найденный звонок

  • Дата: 4 декабря 2019
  • Кто звонил: 2002

и нажимаю «Искать»

"Детализация звонков" видит зафиксированный звонок из базы mysql

Шаг №4: Далее я бы закрыл доступ к этой оснастке от посторонних лиц обычной Basic аутентификацией:

ekzorchik@srv-asterisk:~$ sudo nano /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>

ServerAdmin webmaster@localhost

DocumentRoot /var/www/html

<Directory "/var/www/html">

Options -Indexes -FollowSymLinks

</Directory>

<Directory "/var/www/html/acdrviewer">

AuthType Basic

AuthName "Asterisk Web CDR"

AuthUserFile /var/www/html/.htpasswd

AuthGroupFile /dev/null

Require valid-user

</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

ekzorchik@srv-asterisk:~$ sudo htpasswd -c /var/www/html/.htpasswd ekzorchik

New password: ввожу пароль 712mbddr@

Re-type new password: подтверждаю пароль 712mbddr@

Adding password for user ekzorchik

ekzorchik@srv-asterisk:~$

ekzorchik@srv-asterisk:~$ cat /var/www/html/.htpasswd

ekzorchik:$apr1$.s7YeBQ0$g7g2Hkqz.iMr3h8grcrLE1

ekzorchik@srv-asterisk:~$ sudo chown -R www-data:www-data /var/www/html/

ekzorchik@srv-asterisk:~$ sudo apache2ctl configtest

Syntax OK

ekzorchik@srv-asterisk:~$ sudo systemctl restart apache2

Проверяем, доступ к корню — закрыт:

Forbidden

You don't have permission to acces this resource

Доступ к листингу корня закрыт

Доступ к Webоснастке просмотра логов звонков:

Доступ к Web-оснастке закрыт авторизацией

После если нужно сохраняем логин и пароль в браузере чтобы каждый раз не вводить заново:

Указав Login & Pass получаю доступ

Итого. Я получил в свое распоряжение Web-оснастку на доступ к детализации звонков + ограничил к ней доступ внутренними средствами Web-сервиса Apache2. Хотя если я один обслуживаю телефонию некоторые могут сказать — зачем? Но я придерживаюсь правило что ничего не должно быть без авторизации. Заметка работоспособна. На этом пока все, с уважением автор блога Олло Александр aka ekzorchik.