Предположим, что у вас имеется установленный и настроенный Asterisk версии 1.8, а также СУБД MySQL и Apache 2. Это означает, что уже из коробки Asterisk способен писать логи в MySQL (т.е. никаких asterisk-addons ставить не нужно). А дальше нам просто нужна веб-морда, которая бы показывала данные логов пользователю.
# mysql -p > CREATE DATABASE asterisk; GRANT INSERT ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'yourpassword'; USE asterisk; CREATE TABLE `cdr` ( `calldate` datetime NOT NULL default '0000-00-00 00:00:00', `clid` varchar(80) NOT NULL default '', `src` varchar(80) NOT NULL default '', `dst` varchar(80) NOT NULL default '', `dcontext` varchar(80) NOT NULL default '', `channel` varchar(80) NOT NULL default '', `dstchannel` varchar(80) NOT NULL default '', `lastapp` varchar(80) NOT NULL default '', `lastdata` varchar(80) NOT NULL default '', `duration` int(11) NOT NULL default '0', `billsec` int(11) NOT NULL default '0', `disposition` varchar(45) NOT NULL default '', `amaflags` int(11) NOT NULL default '0', `accountcode` varchar(20) NOT NULL default '', `userfield` varchar(255) NOT NULL default '' ); ALTER TABLE `cdr` ADD `uniqueid` VARCHAR(32) NOT NULL default ''; ALTER TABLE `cdr` ADD INDEX ( `calldate` ); ALTER TABLE `cdr` ADD INDEX ( `dst` ); ALTER TABLE `cdr` ADD INDEX ( `accountcode` );
Теперь создаем пользователя для доступа к созданной БД:
mysql> grant LOCK TABLES on asterisk.* to 'asterisk_user'@'localhost' identified by 'pass'; Query OK, 0 rows affected (0.00 sec) mysql> grant SELECT on asterisk.* to 'asterisk_user'@'localhost' identified by 'pass'; Query OK, 0 rows affected (0.02 sec) mysql> grant INSERT on asterisk.* to 'asterisk_user'@'localhost' identified by 'pass'; mysql> flush privileges;
Обращаем внимание, что пользователю дается только право на чтение данных.
hostname=localhost dbname=asterisk table=cdr password=pass user=asterisk_user port=3306
Выполняем перезапуск asterisk. Делаем контрольный звонок, проверяем, что, данные по звонкам пишутся в MySQL БД asterisk.
define ("WEBROOT", "http://IP адрес вашего сервера/asterisk-stat/"); define ("FSROOT", "/var/www/asteriskstat/"); ... define ("HOST", "localhost"); define ("PORT", "3306"); define ("USER", "asterisk_user"); define ("PASS", "pass"); define ("DBNAME", "asterisk"); define ("DB_TYPE", "mysql");
Теперь файл ./lib/DB-modules/phplib_mysql.php:
var $Host = "localhost"; var $Database = "asterisk"; var $User = "asterisk_user"; var $Password = "pass";
Alias /asterisk-stat "/var/www/asteriskstat/" <Directory "/var/www/asteriskstat/"> Options none AuthName "Asterisk access" AuthType Basic AuthUserFile /usr/local/etc/apache22/authasteriskstat Require valid-user AllowOverride Limit Order Deny,Allow Allow from all DirectoryIndex cdr.php </Directory>
Строки
AuthName "Asterisk access" AuthType Basic AuthUserFile /usr/local/etc/apache22/authasteriskstat Require valid-user
закрывают доступ к статистике простой аутентификацией пользователя по логину/паролю. Если это не нужно, убираем строки. Чтобы создать файл аутентификации, выполняем команду:
htpasswd -c /usr/local/etc/apache22/authasteriskstat <имя пользователя>
Выполняем перезапуск Apache.
1. Ошибка при экспорте в PDF:
Parse error: parse error, unexpected T_STRING in export_pdf.php on line 120
Решение:
include_once(dirname(__FILE__) . "/lib/fpdf.php");
2. Если WWW-страница не отображается корректно, то возможно, нужно задать правильные настройки в /usr/local/etc/php.ini (если нет файла, скопируйте оригинал /usr/local/etc/php.ini-production):
... short_open_tag = On ... date.timezone = Europe/Moscow ...
TAG: