По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В интернете всегда можно легко найти информацию о веб-службах, которые базируются на SOAP и XML-RPC, а вот REST, почему-то, обделен вниманием. В рамках этой статьи будет рассмотрен базис этой архитектуры и ее практическое применение. REST: что это? REST является стилем архитектуры ПО для систем распределения (пример - всем известная www). Обычно с его помощью строят веб-службы. Рой Филдинг, который имеет прямое отношение к созданию протокола HTTP, ввел термин REST в начале века. После этого любую систему, которая поддерживала его, стали называть RESTFul. Доступный интерфейс контроля без ненужных слоев - вот что из себя представляет эта архитектура. Глобальный ID, а именно URL, определяет каждую очередную информационную единицу. Сам же URL характеризуется форматом, который находится в жестких рамках. Что такое API REST на практике Если нет пустых прослоек, данные будут переданы в виде, аналогичном им самим. "Заворачивание" информации в XML не происходит, как в случае с SOAP и XML-RPC, также не используется и AMF, как это бывает с Flash. По сути, происходит чистая передача. URL, на деле, является базовым ключом для единицы данных. Пример: вторая книга из стопки, лежащей на столе, будет интерпретирована как /book/2, а 145 страница в этой книге - /book/2/page/145. Это достаточно жесткий формат. Самое интересное, что он может присутствовать в любом внешнем источнике, будь то HTML или doc-файл. Контроль информации сервиса Протокол передачи данных - основа контроля и управления. Самый часто используемый протокол - это, само собой, HTTP, и для него команды действий выглядят так: GET (получение); PUT (добавление); POST (изменение); DELETE (удаление). Поэтому Create/Read/Update/Delete-действия будут выполнены и с 4 указанными алгоритмами, и посредством GET и POST. Это позволит в некоторых случаях обойти негативные эффекты с использованием непринятых PUT и DELETE. REST в построении веб-сервисов Веб-сервис - приложение, которое работает в www с доступом, предоставленным через HTTP-протокол. Информационный обмен в рамках веб-сервиса осуществляется посредством формата XML. А это значит, что все данные из тела запросов будут всегда в аналогичном формате. Для любой информационной единицы можно задать 5 вариантов действия: GET /info/ (Index) используется для получения списка объектов. Конечно, полученный список будет ограничен заданным идентификатором. GET /info/{id} (View) позволяет получить всю информацию об объекте. PUT /info/ или POST /info/ (Create) осуществляет создание нового объекта. POST /info/{id} или PUT /info/{id} (Edit) производит замену данных, соответствующих введенному идентификатору. DELETE /info/{id} (Delete) удаляет данные, выделенные идентификатором. Итоги Очевидно, что REST, как архитектура, обладает интуитивными алгоритмами и отличается простотой в использовании. Если запрос получен, то определить, что именно он делает, можно немедленно, без форматных разбирательств. При передаче не используются дополнительные слои, что обеспечивает REST особую ресурсоемкость. Для чего можно использовать? Основное достоинство сервисов REST - дружественность. Рабочая связка с сайтом, flash, программой? Не важно, ведь алгоритмы парсинга XML и обработка запросов HTTP есть буквально везде. REST значительно упрощает все связанные с этим задачи. Конечно, на практике описанных здесь алгоритмов недостаточно, так как отсутствует защита данных. Но ввести в систему авторизацию и аутентификацию всегда можно при помощи HTTP Authentication.
img
Привет! В этой статье мы рассмотрим Partitions и Calling Search Space (CSS) в Cisco Unified Communications Manager (CUCM) , которые являются частью механизма Class of Control и применяются при разграничении доступов. /p> Partitions можно рассматривать как набор маршрутов, паттернов, номеров DN, каждый из которых может принадлежать к определенным разделам. CSS же представляет собой упорядоченный список Partitions. Чтобы совершить вызов Partition вызываемой стороны должен принадлежать CSS вызывающей стороны. При попытке выполнить вызов CUCM просматривает CSS вызывающей стороны и проверяет, принадлежит ли вызываемая сторона Partition’у в CSS. Если это так, вызов направляется в Translation Pattern. Если нет, то вызов отклоняется или Translation Pattern игнорируется. Подробнее про маршрутизацию и Translation Pattern’ы можно прочить в наших статьях. Можно назначить разные CSS IP-телефонам, номерам DN, переадресации всех вызовов (Call Forwarding All – CFA), переадресации без ответа (Call Forwarding No Answer - CFNA), переадресации вызовов в случае занятости (Call Forwarding Busy - CFB), шлюзов и паттернам Translation Pattern. Разделы и CSS облегчают маршрутизацию вызовов, поскольку они делят план маршрутизации на логические подмножества на основе организации, местоположения и/или типа вызова. Чтобы лучше понять, как все это работает, рассмотрим пример. Пример использования Partitions и CSS Этот пример иллюстрирует, как можно разграничить маршрутизацию звонка между пользователями в пределах организации. Допустим, у нас имеется три группы пользователей: Стажеры (могут звонить только на внутренние номера) Работники (могут звонить на внутренние номера и совершать междугородние звонки) Руководство (могут звонить на внутренние номера, совершать междугородние и международные звонки) Для каждого направления необходимо иметь Partition: Внутренние номера –Partition_1 Междугородние звонки – Partition_2 Международные звонки – Partition_3 Эти разделы отражают все возможные направления звонков. Все телефоны (номера DN) мы поместим в раздел Partition_1 (внутренние номера). На шлюзе сконфигурировано два паттерна Route Patterns: Все звонки кроме международных (поместим в раздел Partition_2) Международные звонки (поместим в раздел Partition_3) На основании этих ограничений создаем три CSS: CSS1 содержит разделы: Partition_1 CSS2 содержит разделы: Partition_1, Partition_2 CSS3 содержит разделы: Partition_1, Partition_2, Partition_3 Настраиваем телефоны: На телефонах стажеров указываем CSS1 На телефонах работников указываем CSS2 На телефонах руководства указываем CSS3 Теперь совершим тестовые звонки с заданными настройками. Тест 1: Звонок с телефона стажера Набран внутренний номер: Вызываемый абонент: Partition_1 Разделы CSS вызывающего абонента: Partition_1 Результат: Вызов выполнится (раздел Partition_1 включен в CSS) Набран междугородний номер: Вызываемый абонент: Partition_2 Разделы CSS вызывающего абонента: Partition_1 Результат: Вызов не выполнится (раздел Partition_2 не включен в CSS) Набран международный номер: Вызываемый абонент: Partition_3 Разделы CSS вызывающего абонента: Partition_1 Результат: Вызов не выполнится (раздел Partition_3 не включен в CSS) Тест 2: Звонок с телефона работника Набран внутренний номер: Вызываемый абонент: Partition_1 Разделы CSS вызывающего абонента: Partition_1, Partition_2 Результат: Вызов выполнится (раздел Partition_1 включен в CSS) Набран междугородний номер: Вызываемый абонент: Partition_2 Разделы CSS вызывающего абонента: Partition_1, Partition_2 Результат: Вызов выполнится (раздел Partition_2 включен в CSS) Набран международный номер: Вызываемый абонент: Partition_3 Разделы CSS вызывающего абонента: Partition_1, Partition_2 Результат: Вызов не выполнится (раздел Partition_3 не включен в CSS) Тест 3: Звонок с телефона руководства Набран внутренний номер: Вызываемый абонент: Partition_1 Разделы CSS вызывающего абонента: Partition_1, Partition_2, Partition_3 Результат: Вызов выполнится (раздел Partition_1 включен в CSS) Набран междугородний номер: Вызываемый абонент: Partition_2 Разделы CSS вызывающего абонента: Partition_1, Partition_2, Partition_3 Результат: Вызов выполнится (раздел Partition_2 включен в CSS) Набран международный номер: Вызываемый абонент: Partition_3 Разделы CSS вызывающего абонента: Partition_1, Partition_2, Partition_3 Результат: Вызов выполнится (раздел Partition_3 включен в CSS) Таким образом, получается, что вызовы совершать можно, только если раздел Partition вызываемого абонента находится в CSS вызывающего. Настройка Начнем с настройки Partitions. В Cisco Call Manager Administration переходим во вкладку Call Routing → Class of Control → Partition и нажимаем Add New. Здесь в поле Name указываем название для раздела и нажимаем Save. Теперь перейдем к созданию CSS. Для этого выберем вкладку Call Routing → Class of Control → Calling Search Space. Тут указываем имя в поле Name, из поля Available Partitions перенесем в поле Selected Partitions разделы, которые должен содержать CSS. Перенос осуществляется при помощи стрелочек. После чего нажимаем кнопку Save для сохранения. После того как мы создали CSS и Partitions на наших серверах, применим их к устройствам. Рассмотрим это на примере настройки телефона. Для этого выбираем телефон, который мы хотим настроить во вкладке Device → Phone. В его настройках выбираем желаемую линию и нажимаем на нее, например Line [1] . В открывшемся окне в строке Route Partition в выпадающем списке выбираем раздел для этой линии. После этого нажимаем Save и возвращаемся назад. Теперь нам осталось применить к телефону CSS. Здесь, в настройках телефона в поле Device Information находим строчку Calling Search Space и в выпадающем меню выбираем созданный ранее CSS. Затем сохраняем и применяем настройки. Аналогично мы можем настраивать Partitions и CSS на других устройствах, паттернах и номерах.
img
OpenSIPS - это SIP-прокси-сервер с открытым исходным кодом операторского уровня, используемый для сигнализации SIP, и может обрабатывать все типы операций SIP. Он используется многими провайдерами телекоммуникационных услуг, телефонии и операторами связи из-за его надежности и производительности. Итак, если вы, ребята, хотите обрабатывать тысячи одновременных вызовов и SIP-сессий, тогда OpenSIPS - ваш выход. Существует множество различных сценариев, в которых openSIPS может хорошо играть в вашей инфраструктуре. Некоторые из них: OpenSIPS как SIP Edge Proxy OpenSIPS в качестве среднего регистратора или главного сервера регистрации OpenSIPS как входящий и исходящий шлюз OpenSIPS как балансировщик нагрузки И многое другое Примечание: OpenSIPS обрабатывает только SIP-сигнализацию, а не медиа. Для обработки мультимедиа вы можете использовать RTPPROXY или RTPENGINE. Как установить OpenSIPS 3 из исходного кода на Debian 9 Являясь модульным, мощным и гибким SIP-сервером, OpenSIPS можно установить на все основные дистрибутивы Linux. В этом уроке мы будем использовать Debian 9 в качестве базовой операционной системы. Итак, вот шаги, которым мы должны следовать, чтобы запустить наш первый экземпляр OpenSIPS и запустить его: Установите все необходимые зависимости Склонируйте последнюю версию репозитория OpenSIPS Скомпилируйте это Создайте файлы конфигурации Настройте сервис OpenSIPS Настройте OpenSIPS-CLI Создайте базу данных OpenSIPS Запустите сервер OpenSIPS 3 Поэтому, прежде чем мы начнем устанавливать зависимости, нам нужно сначала понять, как мы будем настраивать наш экземпляр OpenSIPS. Что ж, базовому серверу OpenSIPS не нужно много библиотек или зависимостей, но мы будем использовать панель управления OpenSIPS позже вместе с поддержкой MySQL, поэтому мы установим некоторые другие зависимости, чтобы мы могли легко скомпилировать некоторые дополнительные модули OpenSIPS. Шаг 1: Установка всех зависимостей Давайте обновим все списки пакетов, которые у нас есть. apt update Теперь давайте установим все зависимости вместе с сервером MySQL (MariaDB). apt install git gcc bison flex make openssl perl libdbi-perl libdbd-mysql-perl libdbd-pg-perl libfrontier-rpc-perl libterm-readline-gnu-perl libberkeleydb-perl mysql-server ssh libxml2 libxml2-dev libxmlrpc-core-c3-dev libpcre3 libpcre3-dev subversion libncurses5-dev git ngrep libssl-dev net-tools После того, как мы установили все эти пакеты, нам нужно установить пакеты devel для сервера MySQL. Для MariaDB: apt install libmariadbclient-dev-compat sudo Для сервера MySQL: apt install libmysqlclient-dev Теперь нам нужно установить зависимости для сервера micro httpd, который OpenSIPS будет использовать для прослушивания соединений JSON RPC. apt install libmicrohttpd-dev pkg-config libjsoncpp-dev libjson-c-dev ln -s /usr/include/jsoncpp/json/ /usr/include/json wget http://ftp.us.debian.org/debian/pool/main/j/json-c/libjson-c3_0.12.1-1.1_amd64.deb dpkg -i libjson* Все зависимости должны быть установлены сейчас, и теперь мы готовы клонировать исходный код openSIPS 3. Примечание: не забудьте установить имя пользователя и пароль root для msyql, используя - mysql_secure_installation Шаг 2: Клонирование репозитория OpenSIPS Мы будем клонировать последнюю версию репозитория OpenSIPS 3 в /usr/src cd /usr/src ; git clone https://github.com/OpenSIPS/opensips.git -b 3.0 opensips-3.0 Шаг 3: Скомпилируйте исходный код Чтобы сначала скомпилировать модули OpenSIPS или исходный код, перейдите в каталог opensips-3.0. cd /usr/src/opensips-3.0 Теперь наберите make menuconfig Откроется главное меню конфигурации OpenSIPS. Из этого меню мы можем скомпилировать OpenSIPS и сгенерировать наши конфигурационные скрипты. Поэтому, прежде чем мы скомпилируем, нам нужно включить дополнительный модуль, который нам нужен для поддержки MySQL и JSON. Теперь давайте выберем несколько дополнительных модулей, которые нам нужны. Итак, перейдите к Configure Compile Options -> Configure Excluded Module (Настройка параметров компиляции -> Настройка исключенного модуля). Мы должны выбрать 4 модуля - db_mysql, dialplan, json, httpd Примечание: если вы хотите выбрать или скомпилировать какой-либо другой модуль, обязательно установите его зависимости. Теперь вернитесь, используя клавишу со стрелкой влево и сохраните изменения. И как только мы выберем наши модули для компиляции, тогда просто выберите Compile and Install OpenSIPS Компиляция началась, и если вы правильно установили все зависимости, то ошибок быть не должно. После успешной компиляции вам будет предложено нажать любую клавишу, чтобы вернуться в главное меню. Шаг 4: Генерация скрипта конфигурации OpenSIPS. Скрипт конфигурации OpenSIPS - это мозг сервера OpenSIPS, он контролирует всю маршрутизацию, обработку SIP-трафика, регистрации и почти все операции SIP. Поэтому для нас очень важно создать его из меню конфигурации. После компиляции всех модулей, перейдите к Generate OpenSIPS Script. Мы можем сгенерировать 3 типа скриптов из меню конфигурации: Residential Script - обеспечивает регистрацию пользователя. Trunking Script - Подходит для предоставления услуги транкинга. Он не поддерживает регистрацию. Load-Balancer Script - используется для балансировки нагрузки входящих и исходящих вызовов. Примечание. Эти конфигурационные файлы будут иметь базовую конфигурацию. Вам всегда нужно редактировать эти файлы, чтобы они работали в соответствии с вашим сценарием. Для этой установки мы будем использовать Trunking Script. Теперь перейдите к настройке скрипта Configure Script Выберите функции, которые вы хотите добавить в свой скрипт. После выбора всех необходимых параметров сохраните сценарий и выберите Generate Trunking Script. Это все. Теперь вернитесь и сохраните все изменения - Exit & Save All Changes. Шаг 5: Настройка сервиса OpenSIPS Очень важно понять файловую структуру OpenSIPS и важные каталоги, прежде чем начать работу над ней. Вот некоторые основные каталоги, над которыми мы будем работать во всей этой установке. /usr/local/etc/opensips/ - Каталог файлов конфигурации OpenSIPS по умолчанию /usr/local/lib64/opensips/modules/ - Каталог модулей OpenSIPS /etc/init.d/ - Каталог файлов сервиса OpenSIPS /etc/default/opensips - Файл конфигурации службы OpenSIPS Мы можем найти файл opensips.init и opensips.default в каталоге /usr/src/opensips-3.0/packaging/debian/. Поэтому нам нужно скопировать эти файлы в каталог /etc/init.d/ и /etc/default/. cp /usr/src/opensips-3.0/packaging/debian/opensips.init /etc/init.d/opensips cp /usr/src/opensips-3.0/packaging/debian/opensips.default /etc/default/opensips chmod 755 /etc/init.d/opensips update-rc.d opensips defaults 99 mkdir -p /var/run/opensips Теперь у нас все настроено и готово запустить наш первый сервис OpenSIPS, но прежде чем мы это сделаем, нам нужно скопировать наш файл конфигурации в каталог /usr/local/etc/opensips/, который мы создали из меню конфигурации OpenSIPS. Этот файл конфигурации находится в /usr/src/opensips-3.0/etc/ ls /usr/src/opensips-3.0/etc/ Теперь мы скопируем этот конфигурационный файл транкинга в /usr/local/etc/opensips/ mv /usr/src/opensips-3.0/etc/opensips_trunking* /usr/local/etc/opensips/opensips_trunk.cfg Теперь вы можете видеть, что у нас есть opensips_trunk.cfg в каталоге /usr/local/etc/opensips, и мы будем использовать этот же файл для нашего сервера OpenSIPS, поэтому мы должны указать путь к нему в файле инициализации opensips. Примечание: мы также должны убедиться, что у нас есть правильный двоичный путь OpenSIPS в файле инициализации opensips. nano /etc/init.d/opensips Мы должны добавить путь к скрипту и демону в переменную DAEMON и CFGFILE. Шаг 6: Настройка OpenSIPS-CLI Начиная с OpenSIPS 3, мы будем использовать инструмент OpenSIPS-CLI для управления экземплярами OpenSIPS. Ранее мы использовали для работы со скриптом opensipsctl, но он был удален из OpenSIPS версии 3. Мы будем использовать это приложение для выполнения всех видов различных операций, таких как отправка команд MI, создание базы данных и многое другое. Давайте клонируем репозиторий opensips-cli в /usr/src/ cd /usr/src && git clone https://github.com/OpenSIPS/opensips-cli.git Теперь давайте установим все зависимости, которые нам нужны для этого удобного небольшого приложения. sudo apt install python3 python3-pip python3-dev gcc default-libmysqlclient-dev sudo pip3 install mysqlclient sqlalchemy sqlalchemy-utils pyOpenSSL Как только мы установим все зависимости, пришло время установить OpenSIPS-CLI. cd /usr/src/opensips-cli sudo python3 setup.py install clean После успешной установки мы сможем выполнить команду opensips-cli. Примечание. Когда opensips-cli запускается, она всегда ищет файл opensips-cli.cfg в каталоге /etc/. Если файл отсутствует, она запустится с настройками по умолчанию. Теперь мы создадим файл opensips-cli.cfg в каталоге /etc/. nano /etc/opensips-cli.cfg [opensips-1] log_level: WARNING prompt_name: opensips-cli prompt_intro: Welcome to OpenSIPS at SECUREVOIP prompt_emptyline_repeat_cmd: False history_file: ~/.opensips-cli.history history_file_size: 1000 output_type: pretty-print communication_type: fifo fifo_file: /tmp/opensips_fifo database_path: /usr/src/opensips-3.0/scripts/ database_url: mysql://root:password@localhost database_name: opensips Мы должны добавить вышеуказанный блок в файл opensips-cli.cfg. Вы можете настроить все параметры в файле конфигурации. Синтаксис и значение каждой переменной следующие: [opensips-1] - Имя экземпляра log_level - Уровень сообщений лога prompt_name - Имя оболочки prompt_intro - Приветственное сообщение оболочки history_file - Где хранить историю opensips-cli output_type - Параметры вывода, вы также можете использовать json communication_type - Тип связи - fifo, json database_path - Путь к сценариям базы данных database_url - URL вашей базы данных MySQL database_name - База данных, которая будет использоваться Теперь давайте запустим opensips-cli с нашим новым файлом конфигурации. opensips-cli -i [instance_name] -f [config file] Шаг 7: Создание базы данных OpenSIPS Наконец, пришло время создать базу данных OpenSIPS. Мы будем использовать бэкэнд MySQL, и если вы захотите использовать другой бэкэнд, такой как PostgreSQL, вам, возможно, придется установить некоторые зависимости. Сначала откройте файл opensips-cli и выполните следующие действия: Запустите OpenSIPS-CLI Выполните - database create Введите URL базы данных MySQL Теперь давайте проверим базу данных и таблицы opensips, войдя в MySQL. Примечание. Рекомендуется создать отдельного пользователя mysql для доступа к базе данных opensips. Шаг 8: Запуск сервера OpenSIPS 3 Теперь пришло время наконец запустить наш сервер OpenSIPS, но прежде чем мы это сделаем, нам нужно настроить некоторые параметры в файле opensips_trunk.cfg. nano /usr/local/etc/opensips/opensips_trunk.cfg Нам необходимо обновить URL-адрес MySQL всех модулей в скрипте, указав имя пользователя и пароль MySQL. Примечание. Если после запуска службы opensips вы получаете сообщение об ошибке отказа в доступе на стороне сервера MySQL, создайте нового пользователя MySQL только для базы данных opensips. Нам нужно убедиться, что у нас указан правильный путь к модулю в скрипте конфигурации. Обновите переменную PATH в файле /etc/init.d/opensips. PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin Как только мы это сделаем, последний шаг - установить для переменной RUN_OPENSIPS значение yes. nano /etc/default/opensips Примечание. Убедитесь, что в вашей ОС существует пользователь opensips, или вы можете добавить его с помощью - useradd -r opensips. После обновления конфигурации в файле default нам нужно выполнить systemctl daemon-reload. Итак, теперь мы готовы запустить наш сервис opensips. Во-первых, давайте удостоверимся, что в нашем конфигурационном файле OpenSIPS нет неправильной конфигурации. opensips -C -f /usr/local/etc/opensips/opensips_trunk.cfg Теперь давайте запустим сервис OpenSIPS systemctl start opensips systemctl enable opensips Если вы выполнили все шаги и установили все зависимости, вы увидите, что сервер opensips работает и прослушивает порт 5060. Примечание. По умолчанию OpenSIPS использует файл /var/log/syslog для ведения журнала. Поэтому, если вы получаете какие-либо ошибки при запуске службы opensips, обратитесь к этому файлу логов для устранения неполадок. Мы можем убедиться, что сервер OpenSIPS работает или нет по-разному. Проверяя файл opensips_fifo в каталоге /tmp. Выполняя команды MI через opensips-cli Поздравляем! Вы успешно установили свой первый сервер OpenSIPS, и мы желаем вам всего наилучшего в вашем путешествии по VoIP.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59