阳光烂灿的日子

--记录所有碎碎念

Ejabberd服务器transport网关j2j扩展折腾记

| Comments

ejabberd服务器,xmpp协议服务器。
今天我要折腾的就是给这个服务器加个j2j扩展。那啥是j2j呢,就是jabber to jabber. 本来大家都是用xmpp协议,只要服务器开通了s2s特性,就能互联。比如以前的jabber.org连gtalk,说到这,又要责怪一下google放弃xmpp协议搞hangouts啥的了,你搞就搞,关闭xmpp协议干鸟啊,少了互联特性,一点也不geek了。
好了,说回来,这个j2j的transport就是为了那些不开放s2s,各自为政的xmpp协议服务的。比如新浪微博,它私信用的是xmpp,但不支持s2s,所以只要有j2j扩展,就可以把gtalk连到新浪微博上, yes i can.

操作步骤参考wifi : http://wiki.jrudevels.org/Eng:J2J:AdminGuide

首先安装好依赖:python > 2.3, python-mysqldb, Twisted 等等。

下载源码:

svn co svn://svn.jrudevels.org/j2j/trunk j2j/

设置数据库:
可以使用postgresql或mysql, 我这里使用mysql

 mysql -h localhost -u root -p -e "CREATE DATABASE j2j;"
mysql -h localhost -u root -p -e "GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON j2j.* TO 'j2j'@'localhost' IDENTIFIED BY 'yourpassword';"

然后这句,说是导入数据库结构。

mysql -h localhost -u root -p -e "use j2j; \. mysql.schema"

至此数据库设置完毕。

ejabberd服务器配置:
英文文档里少了这一步,害我折腾了好久,在ejabberd的配置eajbberd.cfg里要把transport的配置打开,一般它的位置是 /opt/ejabberd-2.1.11/conf/eajbberd.cfg

  {8888, ejabberd_service, [
                            {access, all},
                    {shaper_rule, fast},
                    {ip, {127, 0, 0, 1}},
                    {hosts, ["j2j.example.org"],
                     [{password, "xxxxx"}]
                            }
                           ]},

当然example.org是你ejabberd的服务器域名,并且把j2j.example.org的子域名设置好。编辑完配置则重启服务。

网关配置:
回到j2j的源码目录,编辑j2j.conf

cat j2j.conf
[component]
JID=j2j.example.org
Host=127.0.0.1
Port=8888
Password=xxxxx
Send_probes=True

[process]
Pid=/var/run/j2jt/j2jt.pid ; pid file

[database]
Host=localhost
Type=mysql ;or mysql
User=j2j
Name=j2j
Password=数据库密码
Prefix=j2j_
mysql_ping_period=2 ; ping period for mysql in hours. 0 for none

[admins]
List=lerosua@gmail.com,admin2@example.net,admin3@some.net
Registrations_notify=True

[debug]
logfile=/var/log/j2j/j2j.log
registrations=yes
logins=yes

xml_logging=/var/log/j2j/xml.log
component_xml=no
clients_xml=no
clients_jids_to_log=All ;or user1@server,user2@server

主要配置好component这一段问题就不大了。

最后运行:

sudo ./main.py

用root权限去跑。

验证:
使用psi,用服务发现去找服务器:即可看见j2j的扩展,如图:

Comments