По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Некоторые категории SIP провайдеров предоставляют авторизацию на своем софтсвиче по IP – адресу. Это означает, что только лишь получив запрос с выделенного IP – адреса, провайдер позволит Вам совершать и принимать звонки. О том, как настроить авторизацию у провайдера без регистрации по IP – адресу на Asterisk при помощи FreePBX 13 расскажем в статье. Что мы имеем Итак, предположим, провайдер связи предоставляет нам 1 SIP номер с авторизацией по IP. Адрес софтсвича будет 33.33.44.45. Помимо этого, провайдера выделяет нам подсеть 11.22.33.44/30. В это сети: 11.22.33.47 - широковещательный адрес 11.22.33.46 - адрес шлюза по умолчанию 11.22.33.45 - адрес, который провайдер выделяет нам для настройки на нашем Asterisk 11.22.33.44 - IP адрес сети На нашем Asterisk уже существует текущее сетевое подключение через единственный NIC (Network Interface Card, сетевая карта). Для установки дополнительного IP, нам нужно будет добавить дополнительную сетевую карту, либо добавить виртуальный интерфейс (например, eth0:0). В нашем случае, в лаборатории, наш Asterisk развернут на виртуальной машине VmWare, поэтому, мы просто добавим виртуальный vNIC. После добавления интерфейса, мы назначим ему IP – адрес 11.22.33.45 и создадим маршрут, в котором укажем отправлять весь трафик в сторону софтсвича 33.33.44.45 через новый интерфейс (eth1). Итак, переходим к настройке. Настройка в консоли Первым делом подключимся к консоли (CLI) нашего сервера IP – АТС. После добавления нового интерфейса, переходим к его настройке. Вводим команду: [root@asterisk ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1 Нажимаем «o» для редактирования и указываем следующие параметры: DEVICE=eth1 BOOTPROTO=static ONBOOT='yes' IPADDR=11.22.33.45 //тут будет ваш IP - адрес NETMASK=255.255.255.252 GATEWAY=11.22.33.46 //ваш адрес шлюза HWADDR=00:15:5d:01:02:00 //mac – адрес NIC ZONE=trusted Нажимаем «:x!» и сохраняем изменения. После этого перезагружаем сетевую службу командой: [root@asterisk ~]# service network restart Shutting down interface eth0: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: Determining if ip address 192.168.1.2 is already in use for device eth0... [ OK ] Bringing up interface eth1: Determining if ip address 11.22.33.45 is already in use for device eth1... [ OK ] Отлично. Оба сетевых интерфейса поднялись и работают. Теперь давайте настроим маршрут для отправки трафика в сторону софтсвича через интерфейс eth1. Для этого, откройте для редактирования файл маршрута следующей командой: [root@asterisk ~]# touch /etc/sysconfig/network-scripts/route-eth1 [root@asterisk ~]# vim /etc/sysconfig/network-scripts/route-eth1 В файл добавляем следующую строчку: 33.33.44.44/30 via 11.22.33.45 dev eth1 Делаем рестарт сетевой службы командой service network restart и проверяем маршруты: [root@asterisk ~]# ip route 33.33.44.44/30 via 11.22.33.45 dev eth1 Отлично, у нас появился нужный нам маршрут. Проверить его так же можно сделав трассировку, командой traceroute 33.33.44.45 Настройка транка в FreePBX После того, как мы настроили маршруты и интерфейсы в операционной системе CentOS, переходим к настройке транка в графическом интерфейса FreePBX. Для этого, перейдем в раздел настроек Connectivity → Trunks и нажмем + Add Trunk, добавив SIP – транк. Заполняем любое значение в поле Trunk Name вкладки General и переходим к вкладке SIP Settings → Outgoing. Здесь, в поле Trunk Name укажите out, а в разделе PEER Details следующие параметры: type=peer port=5060 insecure=invite,port host=33.33.44.45 //IP софтсвича Вашего провайдера dtmfmode=rfc2833 context=from-trunk canreinvite=no allow=alaw,ulaw qualify=yes Нажимаем Submitи Apply Config. На этом все, остается только настроить маршрутизацию вызовов и можно звонить :) Возможные проблемы Если при звонке на номер вы слышите короткие гудки, а в логах и дебаге Вы видите следующее сообщение: [2017-01-13 18:12:40] NOTICE[25200] res_pjsip/pjsip_distributor.c: Request 'INVITE' from '<sip:9251234567@33.33.44.45;user=phone>' failed for 33.33.44.45:5060' (callid: bj0zumbjn89299ssddjj991nx9uk8m@Some) - No matching endpoint found То перейдите в раздел настроек Settings → Asterisk SIP Settings, выберите вкладку Chan SIP Settings и убедитесь, что параметр Bind Port указан как 5060.
img
В статье пошагово расскажем о том, как интегрировать Active Directory (AD) с Cisco Unified Communications Manager (CUCM). Подобная интеграция поможет централизовать управление пользователями и позволит синхронизировать пользовательские атрибуты от LDAP (Lightweight Directory Access Protocol) сервера. Одной из наиболее популярных LDAP баз является Microsoft Active Directory (AD), с ней мы и будем производить наш опыт :) Создаем учетную запись в AD Безусловно, особый акцент в этой статье будет сделано на работе с CUCM. Мы предполагаем, что в вашей организации существует отдел поддержки серверных решений, который сделает эту часть работ за вас. Энивэй, мы хотим очень рассказать о том, как сделать нужную учетную запись. Порядок следующий: Подключаемся к Windows Server; Запускаем Active directory users and computers; Переходим в Active Directory → Users; Выбираем пользователя Administrator; Нажимаем на него правой кнопкой мыши и жмем Copy; Даем пользователю новое имя и пароль - например, ldap.cucm@domain.ru; Включаем сервис DirSync Переходим в интерфейс Cisco Unified Service Ability → Tools → Service Activation: Включаем сервис DirSync и нажимаем Save. Статус должен быть Activated. Идем дальше. Включаем синхронизацию LDAP Возвращаемся в интерфейс Cisco Unified CM Administration. Идем по пути System → LDAP → LDAP System: Делаем следующие опции: Отмечаем галочкой Enable Synchronization from LDAP Server LDAP Server Type: Microsoft Active Directory LDAP Attribute of User ID: sAMAccountName Нажимаем Save. Конфигурация директории LDAP В интерфейсе Cisco Unified CM Administration переходим в System → LDAP → LDAP Directory: Нажимаем Add New и указываем следующие параметры: LDAP Configuration Name - LDAP_CUCM; LDAP Manager Distinguished Name - ldap.cucm@domain.ru (создавали ранее); LDAP Password: пароль для ldap.cucm@domain.ru; Confirm password - еще раз пароль; LDAP User Search Space - OU=SOME, DC=TEST, DC=COM. Указываем, где искать запроса для пользователей; LDAP User Search Space - OU=SOME, DC=TEST, DC=COM. Указываем, где искать запроса для пользователей; Phone number - выбираем как ipPhone; Внизу указываем адрес LDAP – сервера: Сохраняем. Делаем LDAP аутентификацию Делаем аутентификацию. Переходим в раздел System → LDAP → LDAP Authentication и добавляем новое подключение: Use LDAP Authentication for End Users - отмечаем галочкой; LDAP Manager Distinguished Name - ldap.cucm@domain.ru (создавали ранее); LDAP Password: пароль для ldap.cucm@domain.ru; Confirm password - еще раз пароль; LDAP User Search Space - OU=SOME, DC=TEST, DC=COM. Указываем, где искать запроса для пользователей; Host Name or IP Address for ServerRequired Field - адрес; Сохраняем. Синхронизация Делаем аутентификацию. Переходим в раздел System → LDAP → LDAP Directory и нажимаем Perform Full Sync Now: Отлично. Давайте проверим, что у нас получилось: переходим в раздел User Management → End User и нажимаем на Find:
img
Насколько часто вы попадаете в замкнутый цикл из ошибок при разработке приложения в PHP? Ошибка исчезает, а потом появляется в другом блоке кода, или баги постоянно сменяют друг друга. Самое неприятное обстоятельство - вернуться к багу, который был исправлен несколько часов назад. Когда отлаживание алгоритма начинает приносить раздражение - о конструктивном подходе к задаче можно забыть. Именно для того, чтобы не дать вам забросить перспективную разработку или просто выполнить поставленную задачу, существует возможность использовать PHPUnit тестирование. Что такое PHPUnit тестирование? С Unit или же "модулем" плотно связано понимание процесса тестирования. Модуль - это работающая часть кода, функционал которой можно протестировать автономно. Соответственно, PHPUnit тестирование представляет собой последовательную проверку всех модулей приложения на корректность выполнения их алгоритмов. Тесты можно прописать один раз и впоследствии использовать после внесения любых изменений. Преимущества модульного тестирования Вот несколько неоспоримых преимуществ Unit-тестирования: Оперативная проверка правок. Довольно удобно проверять работоспособность модуля немедленно после его изменения. Операция займет несколько секунд. Облегченная передача кода другому разработчику. Если вы прекратили разработку продукта и ее продолжит другой специалист, то процесс передачи пройдет намного легче. Безопасное редактирование. Если вы боитесь, что изменения модулей могут повлечь за собой глобальную проблему для системы в целом, то без предложенного Unit-тестирования обойтись будет очень сложно. Использование PHPUnit тестирования Использовать модульное тестирование достаточно просто. Ниже будет описано, как установить и запустить первый тест. Установка Элементарный способ установить библиотеку PHPUnit - выгрузить его по каналу PEAR. Для этого нужно вписать: "1 pear config-set auto_discover 1" "2 pear install pear.phpunit.de/PHPUnit" Для пользователей, которые хотят иметь углубленное понимание по этому процессу подойдет ручной вариант установки через официальный сайт PHPUnit. Запуск Любой тест запускается при помощи вызова команды phpunit. Укажите php-файл как в примере ниже: "1 phpunit /path/to/tests/RemoteConnectTest.php" После этого, запущенный тест вернет результат: "1 PHPUnit 2.5 by Aloizii MagaRich" "2 ." "3 Time: 1 second" "4 Tests: 1, Assertions: 1, Failures 0" Итог представляет из себя краткие статистические данные по работе теста, такие как время операции, количество тестов, утверждений и ошибок. Также во второй строке можно заметить знак ".", сигнализирующий о том, что тест завершился успешно. Это общий итог операции. Ниже представлены другие варианты вывода, если тест: "F" - не выполнен. "I" - невозможно закончить. "S" - пропущен. Стандартные тесты Также приведем список стандартных вариантов тестирования, которые можно использовать в 80% ситуаций. Название каждого теста начинается с упомянутого ранее утверждения или Assert: "True/AssertFalse". Используется для выявления корректности значений на соответствие true/false. "Equals". Проверяет равенство. "GreaterThan". Сопоставляет переменные (присутствует большее количество вариаций этого сравнения). "Contains". Тестирует правильность содержания переменной. "Type". Исследует тип переменной. "Null". Проверяет равенство null. "FileExists". Подтверждает существование файла. "RegExp". Тестирует регулярность выражения. Модульное тестирование: почему нет? Почему все разработчики не используют PHPUnit тестирование? Закономерный вопрос, когда дело касается такого эффективного инструмента. Вот несколько распространенных причин: Тестирование затратно по времени. Написание строк с тестом занимает время, которое можно было уделить построению общей структуры приложения. Однако в конечном счете продукт будет дополняться. Несколько часов добавления теста на раннем этапе сэкономит больше времени на стадии доработки или сопровождения. Использовать модульные тесты - скучно. Конечно, прогонять проверку каждого модуля в большой разработке - это рутина, особенно по сравнению с ее созданием. Но поддержка 100% работоспособности - это элемент такта, который может позволить себе только настоящий профессионал. Уверенность в то, что код будет работать без проверок. Возможно, что автор досконально знает свой код и может оперативно исправить любой баг. Однако если с приложением будет работать другой человек, то не факт, что он сможет вникнуть во все нюансы так же быстро. Как можно заметить, все причины, перечисленные выше, скорее, продиктованы ленью и непониманием предмета, нежели практичностью и здравым смыслом.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59