![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Cyr |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
Научите парсить CSTA сообщения.
Нашёл библиотеку NET::CSTA. С помощью такого:
Смог получить голую ASN.1 структуру:
Как её заполнить CSTA директивами? Чтобы получить это:
Это сообщение отредактировал(а) Cyr - 7.4.2014, 12:56 |
||||||
|
|||||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
похоже, вы в $pdu длину потеряли
|
|||
|
||||
| Cyr |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
arto, нет. с чего вы так решили?
Это сообщение отредактировал(а) Cyr - 7.4.2014, 14:24 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
длина вашего pdu 55 байтов, а первые октеты у вас A1 34.
Или я ошибаюсь? |
|||
|
||||
| Cyr |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
длина pdu - 54 байта, а длина сообщения после первого октета равна 52 (34h).
так что там всё нормал. |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
# print A1 34 02 01 03 02 01 15 30 2C 55 04 01 11 00 12 A0 24 B0 22 6B 11 30 0F 80 04 30 30 37 35 A1 07 30 05 80 03 31 31 31 63 07 30 05 80 03 31 31 31 4E 01 01 0A 01 16 | perl -0777 -MData::Dumper -MNet::CSTA::ASN=CSTAapdu -lne 'print Dumper($CSTAapdu->decode(pack"H*",s#\s+##gsr))'
$VAR1 = { 'svcRequest' => { 'serviceArgs' => undef, 'serviceID' => 21, 'invokeID' => 3 } }; # попытайтесь найти нормальную asn.1 грамматику для csta |
|||
|
||||
| Cyr |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
нашёл, 274 файла... все части CSTA. около 700 килобайт. Видимо надо использовать только Convert::ASN1 и подсовывать туда эти файлы? Это сообщение отредактировал(а) Cyr - 8.4.2014, 14:34 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
Посмотрите как сделано в Net::CSTA::ASN, там неполохой пример.
|
|||
|
||||
| Cyr |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
arto, в принципе в Net::CSTA::ASN практически тоже самое что и в полном CSTA. Почему же оно полностью не парсится? Как определить, где конкретно (в каком месте) затык? Это сообщение отредактировал(а) Cyr - 12.4.2014, 15:06 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
в модуле написано, что "this module currently implements CSTA phase I - mostly because my PBX (MD110 with
Application Link 4.0) only supports phase I. Supporting multiple versions will require some thought since the versions are largly incompatible." у вас какая версия csta? |
|||
|
||||
| Cyr |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
arto, csta phase 3. но я смотрел определения(грамматику) и не смог найти отличия конкретно для моего примера.
Это сообщение отредактировал(а) Cyr - 14.4.2014, 08:57 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
попробуйте вручную распарсить ваш pdu
|
|||
|
||||
| Cyr |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
arto, парсится он нормально.
но видимо заставить делать это на perl для меня - не судьба. Хочу пойти другим путём. Как можно в цикле вывести ASN.1 теги и их значения? Буду обрабатывать их через if ... else Это сообщение отредактировал(а) Cyr - 15.4.2014, 11:16 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
вам распарсить грамматику?
|
|||
|
||||
| Cyr |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
arto, нет.
Мне просто в цикле надо пройти pdu и получить: CONTEXT=1 INTEGER = 3 INTEGER = 21 SEQUENCE ... И т.д. А я уже через if ... else буду выводить, что это за информация и её значение. |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |