mysql - Kannel Sqlbox 不工作(尝试连接到 SQL Server 而不是 MySQL)?

标签 mysql sms-gateway smpp kannel

我有一个 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-2build1kannel-sqlbox 0.7.2-4build1 均通过 apt 安装。

最佳答案

问题

日志中描述的主要问题是:

2017-08-03 14:02:21 [55982] [0] PANIC:SQLBOX:MSSql:未指定 ID“sqlbox-db”的连接设置!

其实你用的版本有问题(apt-get包是旧版本,你不能用),我在开头遇到了同样的问题年。

我是这样实现的。


解决方案

第 1 步 - 卸载所有以前的 Kannel 软件包,清理一切

如果您已经使用 apt-get 软件包安装了 Kannel,则必须先清理您的机器。

这里有一些线索可以帮助您找到必须移除的元素。 我首先检查了每个发现“kannel”的地方:

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 需要,否则您将收到“配置:错误:您必须拥有 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: error: ld returned 1 exit status make: *** [test/test_http] 错误 1 ​​")

获取Kannel资源

您必须从 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 sources root folder 上。 如 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

完成后,您可以尝试从命令行运行 Kannel:

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

第 3 步 - 从源安装最新的 Kannel-sqlbox 版本

注意:您需要安装 Kannel(第 2 步)才能编译 sqlbox。

sqlbox 包含在 Kannel trunk 中:导航到文件夹:

cd addons/sqlbox

补丁引导文件

您可能必须修补 Bootstrap 文件以匹配您的 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

我们完成了!

还有一点:如果你想在Kannel启动时添加Sqlbox启动:

sudo gedit /etc/default/kannel
Add "START_SQLBOX=1" line at the end

关于mysql - Kannel Sqlbox 不工作(尝试连接到 SQL Server 而不是 MySQL)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45486238/

相关文章:

java - 如何在 Mac os x 中将 Java 应用程序与本地数据库连接

sms - 如何从 GOIP 发送/检索短信

java - 使用本地电话调制解调器作为短信网关从 php 发送短信

短信网关 SMSC/ESME TON/NPI

mysql - 在联接的派生表查询中使用 LIMIT

mysql - 我的 SQL 子查询 - 返回 Blob,需要文本值

sms - 如何以编程方式发送短信?

java - 在Java中对法语字符进行编码?

java - SMPP 服务器 CloudHopper - 创建传送报告

mysql - 使用相同的计算值更新同一查询中的两个字段