Разработчики Asterisk встроили проверку, которая предотвращает загрузку модуля от другой бинарной сборки, поскольку это может привести к сбоям в работе PBX Asterisk. Алгоритм проверки проверяет значение константы AST_BUILDOPT_SUM в которую на этапе компиляции модуля заноситься хеш-сумма, которая позволяет однозначно идентифицировать каждую бинарную сборку. Выглядит она, как 32 идущих подряд шестнадцатеричных цифры: c03a66cc29fb79f47c469d2b0a362e5e. Есть два способа обойти проверку.
Способ первый:
Необходимо найти такую строку в любом из модулей, шедших в поставке вашей инсталляции IP-PBX Asterisk. Она расположена чаще к концу файла. Очень удобно для таких вещей пользоваться шестнадцатеричными редакторами. Например для Hex Workshop: Tools —> Find Strings… , задаем минимальную длину 32 символа и получаем набор строк. Интересующая нас хеш-сумма неслучайно находиться рядом с информацией о версии компилятора:
В среде Linux извлечь хеш-сумму также можно следующей командой:
1 |
grep -Eao "[0-9abcdef]{32}" /usr/lib64/asterisk/modules/res_config_mysql.so |
Скопируйте эту строку и вставьте в модуль, который хотите загрузить, на место хеш-суммы. Сохраните файл и скопируйте в папку с остальными модулями (обычно /usr/{lib,lib64}/asterisk/modules). В консоли Asterisk выполните:
1 2 3 4 |
asterisk*CLI> module load res_config_mysql.so Loaded res_config_mysql.so == Parsing '/etc/asterisk/res_config_mysql.conf': == Found Loaded res_config_mysql.so |
Модуль загружен.
Способ второй:
В файле «include/asterisk/buildopts.h» исправляем значение константы AST_BUILDOPT_SUM. Пересобираем модули:
1 |
make |
Вновь копируем в каталог с остальными модулями IP-PBX Asterisk и подгружаем:
1 2 3 4 |
asterisk*CLI> module load res_config_mysql.so Loaded res_config_mysql.so == Parsing '/etc/asterisk/res_config_mysql.conf': == Found Loaded res_config_mysql.so |
Обратите внимание, что вносить правки в файл «include/asterisk/buildopts.h» следует каждый раз, после выполнения «make menuselect».