从Jabberd2迁移到Openfire(一)


最近,把在公司运行了一年多的XMPP聊天服务器从Jabberd2迁移到了Openfire,为什么做这样的迁移,基于以下几点考虑:

  1. Jabberd2没有图形界面的后台管理程序,添加删除用户时,需要SSH登录到Linux服务器,然后命令行操作Mysql,对管理人员的要求比较高。
    Openfire基于Web方式后台管理,简单明了,不熟悉Linux和Mysql的人员也能迅速上手,并且服务器端能够控制用户组……。
  2. 在Jabberd2下面,一直没能实现帐号的密码加密,聊天帐号的密码都是明文存储在authreg表中,这样不是非常安全。
    Openfire密码默认加密存储,并且通过鼠标简单的点击几下就能启用SSL。
  3. Jabberd2未实现XEP-0096: SI File Transfer协议支持,并且开发缓慢,而在应用的环境中,存在服务器支持文件传输功能的需求(实现跨网段文件传送)
    Openfire实现了XEP-0096: SI File Transfer协议,配合使用Spark时,可以发送文件,并且截屏发送。
  4. 通过插件的支持Openfire还能支持视频,语音,以及和普通电话语音等等。

Openfire已知问题

  1. 如果需要能够支持中文、日文等,除了在连接Mysql的JDBC驱动之后增加
    ?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
    还需要在创建数据库的时候指定数据库的默认字符编码集为UTF8
    mysql> Create database openfire default character set UTF8;

下面说一下迁移的思路。
从Jabberd2迁移到Openfire主要是把用户基本细心及用户的联系人列表这些数据移到新的环境。Jabberd2使用Mysql保存了这些数据,Openfire也可以选择使用Mysql保存用户的数据。

  1. 首先在Openfire安装一个User Import Export插件,这个插件支持用户数据以XML格式导入导出。
  2. 把Jabberd2中的数据做成符合User Import Export插件要求的XML格式,这块自己写了一个Java小工具,下面主要讲讲这个小工具的实现思路。

需要导出的用户基本信息有用户名,密码,昵称,昵称这块,由于设置不规范,分散在nickname,n_family,n_given,n_middle四个字段中。
用户列表信息有所有者,jid,用户自定义的name,所属组名

User Import Export要求的XML格式如下:

<Openfire>
<User>
<Username>leo</Username>
<Password>leopwd</Password>
<Email>shaohu.xie@gmail.com</Email>
<Name>Xie Shaohu</Name>
<CreationDate>1252398257423</CreationDate>
<ModifiedDate>0</ModifiedDate>
<Roster>
<Item jid=”wendy@im.uniqueme.cn” askstatus=”-1″ recvstatus=”-1″ substatus=”3″ name=”Wendy”>
<Group>Family</Group>
<Group>Other</Group>
</Item>
<Item jid=”bob@im.uniqueme.cn” askstatus=”-1″ recvstatus=”-1″ substatus=”3″ name=”Bob”>
<Group>Other</Group>
</Item>
</Roster>
</User>
</Openfire>

从上面的XML格式可以看出每个<User>标签下面都包含了用户的用户名、密码、用户列表等信息。每个用户的用户列表下标明了列表中的每个用户的jid以及昵称,及所属组。

Advertisements

从Jabberd2迁移到Openfire(一)》上有2条评论

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s