среда, 9 февраля 2022 г.

Защита WEB интерфейса FreePBX с помощью Apache HTTP Authentication and Authorization

Описание сервера
OS: CentOS 8
# cat /etc/os-release
NAME="CentOS Stream"
VERSION="8"

Asterisk 16+FreePBX 15

Server version: Apache/2.4.37 (centos)
Server built:   Nov 12 2021 04:57:27

Предварительно нужно создать файл с паролями:

htpasswd -c /etc/httpd/.htpasswd admin

*admin это имя пользователя, укажите любое

*параметр -с создает новый файл, чтобы добавить еще пользователя выполните команду без этого параметра.

Далее редактируем файл /etc/httpd/conf/httpd.conf 

Добавляем 

 AuthType Basic
 AuthName "Restricted Content"
 AuthUserFile /etc/httpd/.htpasswd
 Require valid-user

В две директории:
!Важно закомментировать # Require all granted иначе авторизация не заработает

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


!Важно

/var/www/html/admin/.htaccess меняем  параметр Require all granted на Require valid-user

# Apache 2.4
<IfModule mod_authz_core.c>
        # Disallow all . files, such as .htaccess or .git
        <FilesMatch "\..*$">
                Require all denied
        </FilesMatch>
        # Allow index, config, and ajax.php, as well as all our image types.
        <FilesMatch "(^$|index\.html|index\.php|config\.php|ajax\.php|\.(map|gif|GIF|jpg|jpeg|png|css|js|swf|txt|ico|ttf|svg|eot|woff|woff2|wav|mp3|aac|ogg|webm|gz)$)">
                Require valid-user
                #Require all granted
        </FilesMatch>
</IfModule>

После редактирования перезапускаем httpd сервер

systemctl restart httpd


Долго загружается dashboard и после выдает ошибку FreePBX 15 на CentOS 8

После установки Asterisk 16 и  FreePBX на чистую систему CentOS из консоли, при входе в веб интерфейс, dashboard долго думает и потом выдает сообщение об ошибке

Gateway Timeout
The gateway did not receive a timely response from the upstream server or application.

Gateway Timeout The gateway did not receive a timely response from the upstream server or application.

В System Overview будет сообщение
There was an error asking for Overview. Check the error logs for more information

Эта проблема связанна с тем что в скрипте (/var/www/html/admin/modules/dashboard/sections/Overview.class.php) модуля есть функции mailq которые используют консольную системную утилиту mailq для получения сведений об очереди e-mail сообщений.

Из консоли выполните команду 
# mailq -v
WARNING: local host name (HOSTNAME) is not qualified; see cf/README: WHO AM I?
/var/spool/mqueue is empty

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

Пример
hostname.local
asterisk.local
ast.ru
astersik.org
asterisk.ru

Переименовать можно следующими командами 

hostnamectl set-hostname asterisk.local

Измените так же имя в файле /etc/hostname чтобы после перезагрузки оно сохранилось.

Очистка переполненной памяти на сервере Asterisk без перезагрузки

 При интенсивной нагрузке на сервис Asterisk он может постепенно занимать (отжирать) всю физическую память на сервере.

Для решения есть несколько путей решений этой проблемы, но самый простой регулярно очищать буфер и кэш памяти командами, которые можно добавить в Cron по расписанию.

Команды для очистки памяти сервера без перезагрузки сервисов.

echo 1 > /proc/sys/vm/compact_memory
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches


Пример для cron

*/10 * * * *  echo 1 > /proc/sys/vm/compact_memory
30 */3 * * *  sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

четверг, 22 марта 2018 г.

FreePBX 14: Исправление кириллической кодировки в CDR Reports отчетах - кракозябры



Нормальное отображение русских имен в CallerID на SIP телефонах, в таблице asteriskcdrdb в базе MySQL и в модуле CDR web-интерфейса FreePBX 14
Применялось на - Asterisk Version: 13.18.4 - FreePBX 14.0.1.36
Устанавливалось с ISO:
Исправление:
нужно установить Mariadb-connector-odbc-3.0.x
Делается это из командной строки Linux:
 yum install mariadb-connector-odbc 

Так же нужно удалить старый коннектор MySQL, чтобы в лог и CLI Asterisk не сыпалось куча ошибок об невозможности записать данные в таблицу Cel.

Команды:

 rpm -qa | grep mysql-connector-odbc 
#mysql-connector-odbc-5.2.5-6.el7.x86_64

 rpm -e –nodeps [Имя пакета]

#Пример
#rpm -e --nodeps mysql-connector-odbc-5.2.5-6.el7.x86_64


Перезапустим FreePBX сервисы:


 fwconsole restart 



четверг, 15 июня 2017 г.

Удаление старых записей в asterisk, удаление старых файлов в linux

При большом количестве абонентов и высокой интенсивности звонков в Asterisk, с включенными записями разговоров для всех, возникает периодическая потребность в их очистке. Ниже приведен пример ручного и автоматического удаления файлов по времени их существования.

Краткая инстуркция

Примеры:

Команда в консоли для удаления файлов старше 180 дней:
 find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \; 

Автоматическое удаление с помощью cron (планировщик задач в Linux):

Просмотр записей в cron:
crontab -l

Редактирование заданий от текущего пользователя (открывается в редакторе vi):
crontab -e

Нужно добавить эту запись и сохранить, смотрите как пользоваться редактором vi здесь.
12 2 * * * root find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \;
Ежедневно в 2:12 ночи будет запускаться команда от пользователя root.

Формат cron:
* * * * *
| | | | |
| | | | +----- Дни недели (диапазон: 1-7)
| | | +------- Месяцы     (диапазон: 1-12)
| | +--------- Дни месяца (диапазон: 1-31)
| +----------- Часы       (диапазон: 0-23)
+------------- Минуты     (диапазон: 0-59)

Подробнее про формат cron здесь

Подробная инструкция

Удаление старых записей в Asterisk и устаревших файлов в Linux

При высокой нагрузке на сервер Asterisk, особенно если включена запись разговоров для всех абонентов, необходимо периодически удалять устаревшие файлы, чтобы освободить место на диске и поддерживать стабильную работу системы. В этой инструкции подробно рассмотрены способы удаления таких файлов как вручную, так и автоматически через планировщик задач cron.


Ручное удаление старых записей в Asterisk

Чтобы удалить файлы записей звонков, хранящиеся в каталоге /var/spool/asterisk/monitor, можно использовать команду find, которая позволяет находить файлы по их дате создания.

Пример:

find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \;
  • /var/spool/asterisk/monitor — путь к папке, где хранятся записи разговоров.
  • -mtime +180 — указывает, что удаляться будут файлы, старше 180 дней.
  • -exec rm -R {} \; — команда, которая удаляет найденные файлы.

Чтобы выполнить удаление с подтверждением каждого файла, можно использовать:

find /var/spool/asterisk/monitor -mtime +180 -ok rm -R {} \;

Для проверки, какие файлы будут удалены, используйте find без удаления:

find /var/spool/asterisk/monitor -mtime +180 -ls

Автоматическое удаление файлов через cron

Чтобы настроить автоматическое удаление старых записей, можно воспользоваться планировщиком задач cron, который позволяет выполнять команды по расписанию.

Просмотр текущих заданий cron

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

crontab -l

Редактирование cron-заданий

Для редактирования списка задач используйте команду:

crontab -e

По умолчанию, файл откроется в редакторе vi или nano (в зависимости от настроек системы).

Добавление задания на автоматическое удаление файлов

Добавьте следующую строку в crontab, чтобы ежедневно в 2:12 ночи удалялись записи старше 180 дней:

12 2 * * * root find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \;

Расшифровка cron-формата

* * * * *
| | | | |
| | | | +----- День недели (0 - вс, 1 - пн, ..., 6 - сб)
| | | +------- Месяц (1-12)
| | +--------- День месяца (1-31)
| +----------- Часы (0-23)
+------------- Минуты (0-59)

Пример записи:

  • 12 2 * * * — выполнение в 02:12 каждую ночь.
  • root — выполнение от имени суперпользователя.
  • find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \; — команда поиска и удаления файлов.

Дополнительные примеры cron-записей

  • Удаление файлов раз в неделю по воскресеньям в 3:00 ночи:
    0 3 * * 0 root find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \;
    
  • Удаление файлов каждый день в полночь:
    0 0 * * * root find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \;
    

Дополнительные настройки безопасности

  1. Запись лога об удаленных файлах: Чтобы сохранять информацию об удаленных файлах в лог, можно изменить команду следующим образом:

    find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \; -print >> /var/log/asterisk_cleanup.log
    
  2. Использование tmpwatch для автоматической очистки: В некоторых дистрибутивах Linux можно использовать tmpwatch для автоматического удаления файлов старше определенного времени:

    tmpwatch --mtime --nodirs 180 /var/spool/asterisk/monitor
    

    Это удобный инструмент, который автоматически очищает файлы по дате последнего изменения.


Автоматическая очистка старых записей Asterisk — важный процесс для поддержания стабильности системы. Использование команд find и cron позволяет автоматизировать удаление, снижая нагрузку на сервер и освобождая дисковое пространство. Для дополнительного контроля можно настроить логирование или использовать альтернативные утилиты, такие как tmpwatch. Регулярный мониторинг и настройка правильных параметров гарантируют бесперебойную работу Asterisk без риска переполнения диска.




среда, 22 марта 2017 г.

Самые дешевые IP / SIP телефоны







Вопрос выбора бюджетных SIP телефонных аппаратов у многих вызывает затруднение.
Рекомендую следующие аппараты ориентируясь исключительно на практический опыт.

Рассматриваемые показатели: надежность-качество-долговечность (НКД), цена.

Цена - самые дешевые.

Yealink SIP-T19 E2


Цена: от 2500 руб. 
Один SIP аккаунт. (Одна линия)
WEB-интерфейс управления
Телефон не поддерживает технологию PoE
Совместим с Asterisk.

Важный момент что у этого аппарата встроенный коммутатор с двумя разъемами RJ45 для подключения в локальную сеть. Это будет полезно тем у кого в офисе на рабочих местах по одному порту RJ45 в локальную сеть. Вы подключаете телефон в LAN порт, а компьютер в порт PC, обеспечивая тем самым доступ сеть двум устройства. Подробные характеристики и комплектация.

Yealink SIP-T21P E2



Цена: от 3500 руб.
Два SIP-аккаунта (Две линии)
WEB-интерфейс управления
Так же имеет два порта RJ45
Телефон поддерживает технологию PoE (Power over Ethernet).
Совместим с Asterisk.
У данного аппарата немного улучшен дизайн.

Подробные характеристики и комплектация.




НКД - надежность, качество, долговечность

Cisco 3905 - бюджетный Cisco телефон.

Cisco 3905 
Цена: от 4000 руб. 

Один SIP аккаунт. (Одна линия)
Отсутствует WEB-интерфейс управления
Телефон поддерживает технологию PoE (Power over Ethernet).
Два порта RJ45
Совместим с Asterisk.
Считаю эту модель лучшим вариантом для организации связи на начальном этапе.




Если вы не можете определиться какие же все таки телефоны вам нужны, берите самые дешевые, по мере роста компании и поломок аппаратов вы будете постепенно заменять телефоны необходимой вам конфигурацией, дизайном и качеством.

Дополнительно из бюджетных телефонов можете рассмотреть производителей Grandstream, Panasonic, Escene. Других производителей даже не рекомендую, так как опыт показал что откровенный "Китай" не целесообразная трата денег, часто ломаются, зависают и умирают. :)





пятница, 13 января 2017 г.

Какого провайдера IP телефонии выбрать?

Какого sip провайдера выбрать?
Данный вопрос задают многие, однозначного ответа на этот вопрос нет. У каждого свои возможности, потребности, условия и вкусы, так же как выбор автомобиля, не может быть уникального авто на все случае жизни одного и того же производителя.

Если вы не знаете на какие моменты следует обратить внимания и как сформировать ваши требования, то далее мы разберем что необходимо проанализировать и какой SIP оператор будет для вас наиболее подходящим.

Первым делом нужно ответить на следующие вопросы:
1. Телефония нужна для Колл-Центра ?
2. Будет ли международные звонки?
3. Нужна ли интеграция с CRM или ERP?
4. Нужен ли виджет обратного звонка на сайт?
5. Нужен ли виджет звонок с сайта через браузер?
6. Нужна ли запись разговора на уровне оператора?
7. У вас будет несколько городских номеров?
8. Вы хотите подключать прямые телефоны разных регионов России и других стран?
9. Возможность работы без договора, оплата пластиковой картой или Яндекс.Деньги?
10. Нужны недорогие тарифы на связь?

Если большинство ответов положительные "ДА" то без сомнения вас заинтересует оператор Zadarma.ru
Более того в нем есть много и других полезных опций и услуг, оперативная техническая поддержка и лояльное отношение к своим клиентам.

Если же вы ориентируетесь только на ценник и ищите для себя самые выгодные предложения для IP телефонии, и вам не нужны дополнительные функции, то вам лучше рассмотреть операторов из следующего списка:
1. МТТ
2. Билайн (Вымпелком)
3. Мегафон (Корпоративная связь)
С этими операторами можно вести диалог на предмет индивидуальных тарифов или безлимитной связи, все зависит от планируемого вами количества совершаемых вызовов, если объем для них будет интересен например 100000 мин. в месяц, то они будут вам предлагать разные варианты оптимизации трафика.

Так же всегда есть возможность подключить несколько операторов с помощью Asterisk и звонить на различные направления и операторов мобильной связи через того у кого вызов по данному направлению будет дешевле. Данный алгоритм называется LCR, настраивается с помощью биллинговой системы для Asterisk и загрузкой в нее тарифов подключенных операторов.

Не забываем про подключение к Asterisk GSM шлюзов и использование тарифов мобильных операторов местного региона.