Kannel Sqlbox не работает (пытается подключиться к SQL Server вместо MySQL)?

У меня есть Kannel и работает на Ubuntu 16.04 с локальным хранилищем MySQL DLR. Я хочу добавить sqlbox для очереди входящих SMS в той же базе данных.

Когда я пытаюсь запустить sqlbox sqlbox.conf, вот что я получаю.

  2017-08-03 14:02:21 [55982] [0] INFO: Starting to log to file /var/log/kannel/kannel-sqlbox.log level 0
  2017-08-03 14:02:21 [55982] [0] INFO: Added logfile `/var/log/kannel/kannel-sqlbox.log' with level `0'.
  2017-08-03 14:02:21 [55982] [0] PANIC: SQLBOX: MSSql: connection settings for id 'sqlbox-db' are not specified!
  2017-08-03 14:02:21 [55982] [0] PANIC: sqlbox(gw_backtrace+0xce) [0x42d07e]
  2017-08-03 14:02:21 [55982] [0] PANIC: sqlbox(gw_panic+0x16f) [0x42d1ff]
  2017-08-03 14:02:21 [55982] [0] PANIC: sqlbox(sqlbox_init_mssql+0x11e) [0x40dffe]
  2017-08-03 14:02:21 [55982] [0] PANIC: sqlbox(sqlbox_init_sql+0x9) [0x413239]
  2017-08-03 14:02:21 [55982] [0] PANIC: sqlbox(main+0x31d) [0x40c24d]
  2017-08-03 14:02:21 [55982] [0] PANIC: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0) [0x7fbb36421830]
  2017-08-03 14:02:21 [55982] [0] PANIC: sqlbox(_start+0x29) [0x40c4d9]

Вот два файла конфигурации sqlbox.conf:

group = sqlbox
id = sqlbox-db
smsbox-id = sqlbox-db
global-sender = "My Sender"
bearerbox-host = "192.168.1.2"
bearerbox-port = 14001
smsbox-port = 14005
#smsbox-port-ssl = false
sql-log-table = sent_sms
sql-insert-table = send_sms
log-file = "/var/log/kannel/kannel-sqlbox.log"
log-level = 0

group = mysql-connection
id = sqlbox-db
host = localhost
username = "user"
password = "pwd"
database = "kannel"

и kannel.conf

group = core
admin-port = 14000
admin-password = pwd
status-password = pwd
# admin-deny-ip = "*.*.*.*"
admin-allow-ip = 192.168.1.2
access-log = "/var/log/kannel/access/log"
log-file = "/var/log/kannel/kannel.log"
box-allow-ip = 192.168.1.2
log-level = 0
smsbox-port= 14001
dlr-storage = mysql

# SMSBOX SETUP

group = smsbox
smsbox-id = sqlbox-id
bearerbox-host = 192.168.1.2
sendsms-port = 14002
global-sender = My Sender
sendsms-chars = "0123456789 +-"
log-file = "/var/log/kannel/smsbox.log"

# SENDING SMS

group = sendsms-user
username = test
password = test
concatenation = true
max-messages = 1

# SMSC 
#The sms part

# SQL BOX CONFIG

group = mysql-connection
id = sqlbox-db
host = localhost
username = user
password = pwd
database = kannel

# DLR SETUP

group = mysql-connection
id = mydlr
host = localhost
username = user
password = pwd
database = kannel
group = dlr-db
id = mydlr
table = dlr
field-smsc=smsc
field-timestamp=ts
field-destination=destination
field-source=source
field-service=service
field-url=url
field-mask=mask
field-status=status
field-boxc-id=boxc

В чем хитрость? Спасибо

Использование: kannel 1.4.4-2build1 и kannel-sqlbox 0.7.2-4build1 оба установлены через apt.


person dev93    schedule 03.08.2017    source источник
comment
Можете ли вы добавить более подробную информацию о версии kannel и sqlbox, которую вы используете (номер версии, происхождение: установлено с помощью apt-get или перекомпилировано на вашей стороне?)   -  person Nicolas R    schedule 11.10.2017
comment
пожалуйста, посмотрите мое редактирование @NicolasR   -  person dev93    schedule 12.10.2017
comment
Я думаю, что kannel 0.7.2-4build1 это kannel-sqlbox 0.7.2-4build1, верно?   -  person Nicolas R    schedule 12.10.2017
comment
Да @NicolasR точно. Я починил это.   -  person dev93    schedule 12.10.2017
comment
Хорошо, я опубликовал свой долгий ответ. Как видите, я потратил некоторое время, чтобы исправить это в этом году!   -  person Nicolas R    schedule 13.10.2017
comment
Спасибо. Я попробую. Считаете ли вы версию достаточно стабильной? Какие-то проблемы с этим? Мне интересно, является ли проблемой тот факт, что kannel не очень активно поддерживается.   -  person dev93    schedule 14.10.2017
comment
С 1.5.0 пока проблем нет, меньше проблем, чем с 1.4.4!   -  person Nicolas R    schedule 14.10.2017
comment
Держи меня в курсе, как только попробуешь   -  person Nicolas R    schedule 16.10.2017


Ответы (1)


Проблема

Основная проблема, как показано в журнале, заключается в следующем:

2017-08-03 14:02:21 [55982] [0] PANIC: SQLBOX: MSSql: connection settings for id 'sqlbox-db' are not specified!

На самом деле проблема в той версии, которую вы используете (пакеты apt-get — это старые версии, которые вы не можете там использовать), у меня была такая же проблема в начале года.

Вот как я заставил это работать.


Решение

Шаг 1. Удалите все предыдущие пакеты Kannel, очистите все.

Если вы уже установили Kannel с пакетами apt-get, вам нужно сначала очистить свой компьютер.

Вот несколько подсказок, чтобы найти элементы, которые вы должны удалить. Сначала я проверил каждое место, где был найден «каннел»:

sudo find / -name "*kannel*"
sudo find / -name "*Kannel*"

Затем я выполнил следующие команды (некоторые из них могут быть бесполезны для вас, в зависимости от ваших настроек и т. д.):

sudo apt-get autoremove --purge kannel
sudo rm -rf /etc/kannel/
sudo apt-get autoremove --purge kannel-sqlbox
sudo rm /var/cache/apt/archives/kannel-sqlbox_0.7.2-4build1_amd64.deb
sudo rm /var/cache/apt/archives/kannel-extras_1.4.4-2build1_amd64.deb
rm /home/nico/www-dev/kannelStore/kannel.store*
sudo rm -rf /usr/local/include/kannel
sudo rm -rf /usr/local/kannel
sudo rm -rf /usr/local/lib/kannel
rm /var/tmp/kannel.swp
sudo rm /usr/local/share/man/man8/kannel.8
sudo rm /usr/local/share/man/man8/run_kannel_box.8

А также sudo rm -rf /usr/local/sbin/ (но здесь будьте осторожны, в зависимости от того, что у вас уже есть в папке!)


Шаг 2. Установите последнюю версию Kannel из источника.

Примечание: вам придется использовать версию 1.5.0

Получить зависимости

Сначала добавьте все пакеты, которые вам нужны для будущих команд:

  • sudo apt-get install libxml2-dev (необходимо для шага ./configure, иначе вы получите сообщение «configure: error: у вас ДОЛЖНА быть установлена ​​библиотека libxml2 (также известная как gnome-xml)»)

  • sudo apt-get install libmysqlclient-dev (необходимо для ./configure --with-mysql)

  • sudo apt-get install bison (необходимо для make)

  • sudo apt-get install libssh-dev libssl-dev (необходимо для make, чтобы избежать этой ошибки: "collect2: ошибка: ld вернул 1 статус выхода make: *** [test/test_http] Error 1")

Получить исходники Каннеля

Вам нужно будет получить исходники из репозитория svn. Так:

  • sudo apt install subversion, если у вас еще нет subversion (вы можете проверить, запустив svn --version: если нет ответа, используйте команду)

Затем:

  • Перейдите в папку, в которой будут размещаться исходники локально. Например, на стороне m: cd ~/www-dev/nicopushkannel/Kannel/Kannel-Source

  • Получить исходники Kannel из репозитория: svn co https://svn.kannel.org/gateway/trunk

Соберите и установите Kannel

Из предыдущего шага вы должны быть в корневом дураке источников Kannel. Как описано в документации Kannel, запустите:

cd trunk
./bootstrap
./configure --with-mysql --with-mysql-dir=/var/lib/mysql
make

Здесь важны параметры, добавленные в ./configure: --with-mysql --with-mysql-dir=/var/lib/mysql

Затем установите:

sudo make bindir=/usr/local/kannel install

Выполнить Каннель

Как только это будет сделано, вы можете попробовать запустить Kannel из командной строки:

cd /usr/local/sbin
./bearerbox -v 0 /etc/kannel/kannel.conf

Шаг 3. Установите последнюю версию Kannel-sqlbox из исходного кода.

Примечание. Для компиляции sqlbox необходимо установить Kannel (шаг 2).

sqlbox включен в магистраль Kannel: перейдите в папку:

cd addons/sqlbox

Исправить загрузочный файл

Возможно, вам придется исправить файл начальной загрузки, чтобы он соответствовал вашей версии autoconf (для меня это была 1.15), так как код не понимает, что 1.15 > 1.11...

Измените следующее значение, чтобы оно соответствовало вашей версии autoconf:

if automake-1.11 --version >/dev/null 2>&1; then
  amvers="-1.11"

Так для меня стало:

if automake-1.15 --version >/dev/null 2>&1; then
  amvers="-1.15"

Собрать и установить sqlbox

./bootstrap
./configure
make
sudo make install

Мы сделали!

Еще одно: если вы хотите добавить запуск Sqlbox при запуске Kannel:

sudo gedit /etc/default/kannel
Add "START_SQLBOX=1" line at the end
person Nicolas R    schedule 13.10.2017
comment
Для тех, у кого есть проблемы с версией automake: с kannel.org/pipermail/users. /2016-May/022864.html, Для установки sqlbox скрипт начальной загрузки не нужен. Просто введите ./configure, а затем сделайте. - person kadamb; 24.10.2018
comment
Скомпилировано и установлено нормально, но libgwlib.so был помещен в /usr/local/lib и не был найден исполняемым файлом в Ubuntu 20.04. Решено с помощью stackoverflow.com/a/17892806/6449978 - person GabrielVasile; 22.09.2020