====== Настройка web сервера Asterisk ====== ===== Настройка Asterisk Manager API ===== Во первых необходимо создать пользователя для управления asterisk. Для этого достаточно внести соответствующую запись в **/etc/asterisk/manager.conf**, в примере ниже добавлен пользователь //1cami// с паролем //PASSWORD1cami//. Важно также в секцию general добавить опции указанные в примере. [general] enabled = yes port = 5038 bindaddr = 0.0.0.0 allowmultiplelogin = yes webenabled = yes httptimeout = 60 [1cami] secret = PASSWORD1cami deny=0.0.0.0/0.0.0.0 permit=0.0.0.0/0.0.0.0 read = call,cdr,user,config write = call,originate,reporting ;;; Дополнительные опции для ASTERISK 11+ ;;; Начало ;;;; eventfilter=!Event: Newexten eventfilter=!Event: DeviceStateChange eventfilter=!Event: NewConnectedLine eventfilter=!Event: Newchannel eventfilter=!Event: SoftHangupRequest eventfilter=!Event: HangupRequest eventfilter=!Event: BridgeDestroy eventfilter=!Event: BridgeCreate eventfilter=!Event: BridgeMerge eventfilter=!Event: MusicOnHoldStop eventfilter=!Event: MusicOnHoldStart eventfilter=!Event: NewCallerid eventfilter=!Event: LocalBridge eventfilter=!Event: Unhold eventfilter=!Event: Hold eventfilter=!Event: AttendedTransfer ;;; Дополнительные опции для ASTERISK 11+ ;;; Конец ;;;; Обратите внимание на строки фильтра: eventfilter=!Event: NewextenОни актуальны для Asterisk 13. \\ **Эта настройка крайне необходима!!!** ===== Настройка AJAM HTTP ===== Если мы хотим опубликовать ajam интерфейс на порту 8088 в режиме http, файл **/etc/asterisk/http.conf** должен выглядеть примерно так: [general] enabled=yes enablestatic=yes bindaddr=0.0.0.0 bindport=8088 prefix=asterisk ===== Настройка AJAM HTTPS ===== Настройка HTTPS не является обязательным условием. Этот раздел можно пропустить. Если мы хотим опубликовать ajam интерфейс на порту 4443 в режиме https, файл http.conf должен выглядеть примерно так: Для астериск версии 1.6 [general] enabled=yes bindaddr=0.0.0.0 bindport=8088 prefix=asterisk enablestatic=yes sslenable=yes sslbindaddr=0.0.0.0 sslbindport=4443 sslcert = /etc/asterisk/ssl/ajam.pem Для астериск версии 1.8 и выше [general] enabled=yes bindaddr=0.0.0.0 bindport=8088 prefix=asterisk enablestatic=yes tlsenable=yes tlsbindaddr=0.0.0.0:4443 tlscertfile= /etc/asterisk/ssl/ajam.pem tlsprivatekey= /etc/asterisk/ssl/ajam.pem Также для https режима необходимо сгенерировать сертификат, которым будут шифроваться передаваемые данные. Самый простой способ, это генерация самоподписанного сертификата на сервере Asterisk командой: cd /tmp openssl req -new -x509 -days 365 -nodes -out /tmp/foo.pem -keyout /tmp/foo.pem mkdir /etc/asterisk/ssl mv /tmp/foo.pem /etc/asterisk/ssl/ajam.pem ===== Настройка папки uploads ===== Если есть необходимость передавать на астериск какие-то файлы, например мы хотим обеспечить печать и отправку факсимильных сообщений, нужно настроить папку для приема таких файлов. В Asterisk есть специальный модуль который отвечает за прием файлов через AJAM интерфейс - //res_http_post.so//. Этот модуль не всегда устанавливается вмесе с Asterisk по умолчанию, т.к. требует установленных пакетов **GMIME** и **GMIME-DEVEL**. После установки модуля необходимо настроить секцию post_mappings в файле http.conf Механизм работы res_http_post описан подробно в [[http://igorg.ru/2012/04/07/otpravka-fajla-na-asterisk/|блоге Игоря Гончаровского]]. [post_mappings] ; ; In this example, if the prefix option is set to "asterisk", then using the ; POST URL: /asterisk/uploads will put files in /var/lib/asterisk/uploads/. uploads = /var/lib/asterisk/uploads ===== Проверка работы и дополнительные настройки ===== В консоли сервера где установлен Asterisk выполняем следующую команду: sudo asterisk -rx "http show status" Если все настроено правильно, то ответ будет примерно такой: HTTP Server Status: Prefix: /asterisk Server Enabled and Bound to 0.0.0.0:8088 HTTPS Server Enabled and Bound to 0.0.0.0:4443 Enabled URI's: /asterisk/httpstatus => Asterisk HTTP General Status /asterisk/phoneprov/... => Asterisk HTTP Phone Provisioning Tool /asterisk/amanager => HTML Manager Event Interface w/Digest authentication /asterisk/uploads => HTTP POST mapping /asterisk/arawman => Raw HTTP Manager Event Interface w/Digest authentication /asterisk/manager => HTML Manager Event Interface /asterisk/rawman => Raw HTTP Manager Event Interface /asterisk/static/... => Asterisk HTTP Static Delivery /asterisk/amxml => XML Manager Event Interface w/Digest authentication /asterisk/mxml => XML Manager Event Interface Enabled Redirects: None. Проверка настроек AMI: manager show settings Вывод команды Global Settings: ---------------- Manager (AMI): Yes Web Manager (AMI/HTTP): Yes TCP Bindaddress: 0.0.0.0:5038 HTTP Timeout (minutes): 60 TLS Enable: No TLS Bindaddress: Disabled TLS Certfile: asterisk.pem TLS Privatekey: TLS Cipher: Allow multiple login: Yes Display connects: Yes Timestamp events: No Channel vars: Debug: No Block sockets: No Проверка настроек менеджера Asterisk: sip*CLI> manager show user 1cami username: 1cami secret: acl: yes read perm: call,user,cdr,all write perm: call,reporting,originate,all displayconnects: yes **Окончательная проверка**: Идем в браузере по адресу http://ipadress_asteriska:8088/asterisk/rawman?action=login&username=1cami&secret=PASSWORD1cami Если в качестве результата получим строку: Response: Success Message: Authentication accepted Значит со стороны Asterisk все настроено правильно. Не забудьте открыть на фаерволе порт 4443 или 8088 чтобы интерфейс ajam был доступен из вне. Например для iptables под управлением CENTOS это делается добавлением строчки в файл /etc/sysconfig/iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8088 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4443 -j ACCEPT ===== Полезные ссылки ===== * [[http://habrahabr.ru/company/myasterisk/blog/130325/|Про безопасность]] * [[doc:1cajam|SDK: Компонента связи 1C и Asterisk]] * [[http://igorg.ru/2012/04/07/otpravka-fajla-na-asterisk/|Отправка файла на asterisk]] ===== Комментарии ===== ~~DISQUS~~