MVTS
ALOE Systems is a new identity of MERA Systems
MVTS (MERA VoIP Transit Softswitch) - это полнофункциональный пограничный контроллер сессий, предназначенный для гибкого управления VoIP-трафиком в сетях операторского класса. Основная задача MVTS — концентрация и коммутация VoIP-потоков, трансляция их между сетями с разнородной сигнализацией.
- Вывести из командной строки версии всех модулей MVTS
$ echo "select product,version,product_title from version;" | mysql -uroot mvtspro product version product_title logic 2.0.0-77 Logic mvtspro 1.5.0-81 MVTS Pro ts 4.0.1-51 TS webdb 1.5.0-65 WEB+DB webengine 1.5.0-45 WEBENGINE
Использование регулярных выражений в MVTS
Регулярные выражения используются при задании значений следующим конфигурационным параметрам:
dialpeer.cfg:
- - dst_pattern=, src_pattern=,
- - dst_translate=, src_translate=
- - dst_bill_translate=, src_bill_translate=
- - user_translate=
- - display_ie_translate=
user.cfg; gateway.cfg
- - dst_pattern=, src_pattern=,
- - dst_translate=, src_translate=,
- - in_dst_translate=, in_src_translate=
При необходимости указания пустого номера в описании объектов набора (dialpeer) используется ключевое слово «empty».
- Пример: При значении параметра src_translate=empty/123456, MVTS преобразует полученный пустой номер вызывающего абонента в номер 123456. Данное ключевое слово также может использоваться для трансформации информационного элемента «display» (параметр display_ie_translate=), в случае, если оно отсутствует в получаемом пакете SETUP. MVTS проверяет регулярные выражения в правилах преобразования номеров на присутствие запрещенных символов и при обнаружении удаляет их.
При возникновении ошибки (недопустимый символ в регулярном выражении) результат проверки выводится в трассировочный журнал, который записывается в файл с названием mp.kernel.sh.log-<date>
- ПРЕФИКСЫ ПОЛЕЙ DST_PATTERN И SRC_PATTERN
Наиболее часто используемые конструкции:
dst_pattern=777[0-9]+
Комментарий: номера, начинающиеся с 777 и состоящие далее любого количества цифр от 0 до 9. удачные примеры: 77711, 777922 неудачные примеры: 77811, 7767
dst_pattern=777[0-5]{1}[0-9]+
Комментарий: номера начинающиеся с 777, далее следует любая цифра в диапазоне от 0 до 5 и затем любое количество цифр от 0 до 9. удачные примеры: 77711, 777422 неудачные примеры: 777, 77811, 77761, 7775
dst_pattern=...... или dst_pattern=.{6}
Комментарий: шесть любых знаков, включая все разрешенные цифры и знаки – например, символ # удачные примеры: 123456, 976065, 123#56 неудачные примеры: 1111111, 111, 123456#
Трансляция номеров
Основной целью преобразования (трансляции) является приведение телефонных номеров к определенному формату. Для трансляции номеров наиболее часто используются такие операции как добавление, удаление или замена отдельных частей телефонного номера. Регулярные выражения, используемые для преобразования номеров, состоят из буквенно-числовых символов и метасимволов, описание которых приведено ниже:
- символ «/» делит регулярное выражение трансляции на две части: шаблон поиска и строка замены. Все, что находится слева от символа «/» является шаблоном поиска (все номера, подходящие под шаблон поиска, подлежат дальнейшему преобразованию). Все, что находится справа от символа «/», является строкой замены (т.е. тем, на что будет заменен номер, подошедший под шаблон в левой части выражения).
- символ «|» делит шаблон поиска на несколько логических частей
- символ «\» ставится в правой части регулярного выражения. Следующая за этим знаком цифра обозначает какую часть шаблона, разделенного символами «|» следует использовать для формирования нового номера
- символ «&» обозначает все выражение, подошедшее под шаблон поиска. Данный символ употребляется в правой части выражения.
- символ «.» означает любой знак (включая цифры, буквы и символы)
- выражение в квадратных скобках [] используется только в шаблоне поиска и означает одну любую цифру из заданного в скобках интервала или последовательности цифр. Например: [0-9] означает одну любую цифру от 0 до 9. [1234] означает одну цифру от 1 до 4, [1236-9] означает одну любую цифру из следующих: 1,2,3,6,7,8,9.
- Число в фигурных скобках означает количество повторений предшествующего символа (цифры, буквы, символа или выражения). Например: .{4} означает четыре любых символа. [0-9]{2} означает два повторения выражения [0-9], т.е. [0-9] [0-9]
- символ «*» означает любое количество повторений предшествующего символа (включая цифры, буквы или выражения). Например: [0-9]* означает любое количество цифр от 0 до 9. .* означает любое количество любых знаков.
Примеры преобразования номеров
- Операции добавления
Задача 1: добавить префикс 78 к номеру 12345:
dst_translate = 12345/78&
результат: 12345 → 7812345
Задача 2: добавить префикс 78312 к любому шестизначному номеру:
dst_pattern=.{6} dst_translate =.{6}/78312&
результат: 123456 → 78312 123456 результат: 654321 → 78312 654321
Задача 3: добавить префикс 78312 к номеру, начинающемуся с 777:
dst_pattern=<.*> dst_translate=777.*/78312&
результат: 777123456 → 78312777123456 результат: 777121212 → 78312777121212
Задача 4: добавить последовательность символов 77 в конец строки
dst_translate=.*/&77
результат: 1234 → 123477
- Операции удаления
Задача 1: из любого номера с префиксом 095 удалять префикс
dst_pattern=.* dst_translate=095|.*/\2
результат: 095123456# → 095 | 123456# → 123456#
Комментарий: выражение 095|.*/ в данном случае является шаблоном поиска, поэтому преобразованию подлежат только номера, начинающиеся с 095 + любое количество любых символов. Символ «|» делит шаблон поиска на две логические части. Строка замены состоит лишь из выражения «\2», что означает «взять вторую логическую часть из разделенного шаблона поиска».
Задача 2: из любого номера с префиксом 8182 удалять префикс
dst_pattern= .* dst_translate=8182|[0-9]*/\2
результат: 8182123456 → 8182 | 123456 → 123456
Задача 3: удалять символ # из середины строки
dst_translate=[0-9]*|#|[0-9]*/\1\3
результат: 123#45 → 123 | # | 45 → 12345
Комментарий: в данном регулярном выражении шаблон поиска делится двумя символами «|» на три части: [0-9]* - любое количество цифр от 0 до 9. # - символ «решетка». [0-9]* - любое количество цифр от 0 до 9. Из синтаксиса строки замены данного регулярного выражения видно, что для создания нового номера берется только первая и третья логические части из трех выделенных в шаблоне поиска.
- Операции замены
Задача 1: заменять префикс 8182 в любых номерах с таким префиксом на 777
dst_pattern= .* dst_translate=8182|[0-9]*/777\2
результат: 8182123456 → 8182 | 123456 → 777 123456
Комментарий: как и в предыдущих случаях, шаблон поиска делится на две логические части символом «|» (8182 – первая логическая часть, [0-9]* - вторая логическая часть). В данном случае строка замены содержит дополнительную подстроку (777), которая будет подставлена перед второй логической частью ([0-9]*), т.е. фактически вместо первой логической части (8182). Таким образом, мы осуществляем замену первой логической части шаблона дополнительной подстрокой.
Задача 2 заменять префикс 1212 в любых номерах с таким префиксом на 1718
dst_pattern= .* bill_translate=1212|.*/1718\2
результат: 121212345 → 1212 | 12345 → 1718 | 12345 → 171812345
Задача 3: заменять символ # в середине строки на последовательность цифр 555
dst_translate=[0-9]*|#|[0-9]*/\1 555\3
результат: 123#45 → 123 | # | 45 → 123 | 555 | 45 →12355545
Примечание: обратите внимание на пробел между \1 и 555. Отсутствие пробела будет воспринято системой как выражение \1555 – «взять одна тысяча пятьсот пятьдесят пятую логическую часть из шаблона поиска»
Задача 4: заменять символ # в конце строки на последовательность цифр 123
dst_bill_translate=[0-9]*|#/\1 123
результат: 123456# → 123456 | # → 123456123
Комментарий: Символ «|» делит шаблон поиска на две логические части, причем символ «решетка» находится во второй. Строка замены использует только первую логическую часть и добавляет к ней 123.
Примечание: обратите внимание на пробел между \1 и 123. Отсутствие пробела будет воспринято системой как выражение \1123 – «взять одна тысяча сто двадцать третью логическую часть из строки поиска».
Примеры
Задача. Добавить префикс к исходящему номеру.
Out DST translate - на выходе со свича. В таком виде терминатор получает B-номер. dst_translate=[0-9]*/0030#&
, где
- символ «/» делит регулярное выражение трансляции на две части: шаблон поиска и строка замены. Все, что находится слева от символа «/» является шаблоном поиска (все номера, подходящие под шаблон поиска, подлежат дальнейшему преобразованию). Все, что находится справа от символа «/», является строкой замены (т.е. тем, на что будет заменен номер, подошедший под шаблон в левой части выражения).
- символ «&» обозначает все выражение, подошедшее под шаблон поиска. Данный символ употребляется в правой части выражения.
- выражение в квадратных скобках [] используется только в шаблоне поиска и означает одну любую цифру из заданного в скобках интервала или последовательности цифр. Например: [0-9] означает одну любую цифру от 0 до 9. [1234] означает одну цифру от 1 до 4, [1236-9] означает одну любую цифру из следующих: 1,2,3,6,7,8,9.
- символ «*» означает любое количество повторений предшествующего символа (включая цифры, буквы или выражения). Например: [0-9]* означает любое количество цифр от 0 до 9. .* означает любое количество любых знаков.
Задача. Нужно удалить префикс 0030# из входящего номера.
Первый вариант In DST translate - входящий звонок на Меру dst_translate=0030#|.*/\2
результат: 0030#123456# → 0030# | 123456# → 123456#
Комментарий: выражение 0030#|.*/ в данном случае является шаблоном поиска, поэтому преобразованию подлежат только номера, начинающиеся с 0030# + любое количество любых символов. Символ «|» делит шаблон поиска на две логические части. Строка замены состоит лишь из выражения «\2», что означает «взять вторую логическую часть из разделенного шаблона поиска».
Второй вариант. Более правильный так как в преобразованном номере разрещает только цифры. In DST translate dst_translate=0030#|[0-9]*/\2
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!
7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах