jabberd2自带了的authreg支持mysql、sqlite、ldap、pipe等方式。通常情况下,你有一个网站为用户提供服务,用户在你的网站注册了,用户名和密码信息存储在网站服务器的数据库中。而现在你用jabberd2为用户搭建了一个xmpp聊天服务器,并且希望你的用户能够通过在你的网站上注册的用户名和密码登录聊天服务器,而不是在聊天服务器上创建新用户,那么你可以使用jabberd2自带的authreg_mysql模块。要使用authreg_mysql模块,你需要在c2s.xml的mysql节修改或添加如下配置:
<mysql>
<!-- 数据库服务器的地址和端口 -->
<host>localhost</host>
<port>3306</port>
<!-- 数据库名 -->
<dbname>jabberd2</dbname>
<!-- 数据库用户和密码 -->
<user>jabber</user>
<pass>jabber</pass>
<!-- table_name为数据库中存储用户表的表名 -->
<table>table_name</table>
<field>
<!-- username_field为表中用户名字段 -->
<username>username_field</username>
<!-- password_field为表中密码字段 -->
<username>password_field</username>
<!-- realm_filed,c2s.xml中配置的realm -->
<username>realm_filed</username>
</field>
</mysql>
如果你的用户表中,没有关于real的字段,所有的用户属于同一区域下,你可以使用下面这种配置:
<mysql>
<!-- 数据库服务器的地址和端口 -->
<host>localhost</host>
<port>3306</port>
<!-- 数据库名 -->
<dbname>jabberd2</dbname>
<!-- 数据库用户和密码 -->
<user>jabber</user>
<pass>jabber</pass>
<sql>
<!-- 替换_password,_usertable,_username,_realm为真实的名称,_realm与c2s.xml中配置的相同 -->
<select>select `_password` from `_usertable` where `_username` = '%s' and '%s' = '_realm'</select>
</sql>
</mysql>
更多信息请参考https://github.com/jabberd2/jabberd2/blob/master/storage/authreg_mysql.c。