LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 876|回复: 0

安装同时支持ICQ/MSN/yahoo的server

[复制链接]
发表于 2004-8-4 10:06:52 | 显示全部楼层 |阅读模式
 Jabber有一个QQ、MSN、ICQ等常见IM所不具备的功能,它可以做为一个代理来帮助Jabber的客户在Jabber上同时使用其它的IM系统,也就是说你只要打开jabber的客户端就可以登录到象ICQ、MSN、yahoo.message上面,并且能和它们收发信息。这样你以后可以不用打开几种不同的IM客户端,只要打开Jabber的客户端就行了.
  下面就开始介绍如何安装一个IM。这个IM将有聊天室功能、同时也支持ICQ、MSN、yahoo.message。

  安装环境

  Jabber可以安装在多种操作系统上面。笔者用的是RedHat7.3,当然其它的Linux也可以安装Jabber的。另外如果你仅仅是想试试安装的话,至少要两台联网的电脑,否则的话,你需要要有一个真正的网络,Internet或者局域网都可以。如果是在internet上安装,需要有自己的域名和IP,这样就可以向Internet上的所有人提供Jabber服务了   
  Jabber相关的软件可以在jabber.org找到,或者通过google搜索。最好下载最新的版本,因为经常会有新的功能加入。这里用到以下软件。

  jabber-1.4.2.tar.gz        jabber服务器本身
  JabberSetup.EXE          jabber的客户端之一,运行在window上
  konverse-0.2-1_rh7.i386.rpm    jabber的客户端之一,运行在Linux上

  conference-0.4.tar.gz
  jud-0.4.tar.gz
  autojud.tar.gz

  icqv7-t-0.3.0pre2.tar.gz
  libicq2000-0.3.1.tar.gz
  libsigc++-1.0.3-5.i386.rpm
  libsigc++-devel-1.0.3-5.i386.rpm
  msn-transport-stable.tar.gz
  yahoo-t-2.0.0-RC6.tar.gz

  安装Jabber Server

  Jabber的服务器端是用C写的,你需要用root的权限进行编译,因为它可能要用到一些只有root才能使用的库。

  tar -xzpvf jabber-1.4.2.tar.gz -C /usr/local/
  cd /usr/local/jabber-1.4.2/
  ../configure
  make
  ln -s /usr/local/jabber-1.4.2 /usr/local/jabber

  Jabber Server的主要配置文件是jabber.xml。它需要做一些设定,比如

  <host>localhost</host>:服务器的主机名
  <welcome/>:登录jabber服务器的欢迎信息
  <update><jabberd:cmdline
  flag="h">localhost</jabberd:cmdline></update>:自动更新,这里删除一行

  为了安全,我们不以root的身份来运行jabber,而是创建一个名为jabber的用户。

  #adduser jabber
  #chown jabber.jabber -R jabber-1.4.2/

  以jabber身份启动Jabber Server

  su - jabber -c "/usr/local/jabber/jabberd/jabberd & "

安装Jabber Client

  Jabber有很多种Client,可以运行在各种平台下。

  下载的Windows下的客户端软件,只要双击就开始安装了,不需要额外做设置已经可以用了。
在Linux平台下可以用GAIM或konverse.
安装聊天室的支持

  这里笔者把conference翻译成聊天室,这样好象会有且助于QQ用户对比QQ的聊天室功能来理解。conference其实正是象QQ聊天室一样的东西。你需要安装conference才能实现此项功能。

  tar -xzpvf conference-0.4.tar.gz -C /usr/local/jabber
  cd conference-0.4/
  make

  make完了之后,能看到conference-0.4/目录中生成一个文件conference.so.。这表示这次编译已经成功了。接下来就是对jabber.xml进行配置,加入conference服务。

  conference分公用和私用两种,在type属性上指定。

  在<jsm>的<browse/>项中加入声明一个本地的conference,大约是第220行左右。

  定义一个私用的conference服务

  <conference type="private" jid="private.localhost" name="rivate Conferencing"/>

  在<browse>之外定义服务

  <service id='private.localhost'>
   <load><conference>./conference-0.4/conference.so</conference></load>
  <conference xmlns="jabberd:config:conference">
   <private/>
  <history>30</history>
  <vCard>
   <FN>Private Conferences</FN>
   <DESC>This service is for private conferencing rooms.</DESC>
   <URL>http://foo.bar/</URL>
  </vCard>
  <notice>
   <join> has become available</join>
   <leave> has left</leave>
   <rename> is now known as </rename>
  </notice>
 </conference>
</service>
 定义一个公用的conference服务,与私用的conference服务有些不同。你可以把会议室定义上去

<service id='conference.localhost'>
 <load><conference>./conference-0.4/conference.so</conference></load>
 <conference xmlns="jabberd:config:conference">
  <public/>
  <vCard>
   <FN>Public Chatrooms</FN>
   <DESC>This service is for public chatrooms.</DESC>
   <URL>http://foo.bar/</URL>
  </vCard>
  <history>20</history>
  <notice>
   <join> has become available</join>
   <leave> has left</leave>
   <rename> is now known as </rename>
  </notice>
  <room jid="help@conference.localhost">
   <name>Assistance Zone</name>
   <privacy/>
  </room>
  <room jid="admin@conference.localhost">
   <name>Adminz only</name>
   <secret>con0r</secret>
   <notice>
    <join> just rocks!</join>
    <leave> gets lost</leave>
    <rename> feels it is more important to be known as </rename>
   </notice>
  </room>
 </conference>
</service>

  在<browse>项中增加以下行:

  <conference type="public" jid="conference.localhost" name="ublic Chatrooms"/>
   
  上面就定义了一个公用的聊天室服务,并开了两个聊天室。

  重启Jabber Server,conference服务才能生效。

  安装用户目录JUD

  JUD是指Jabber用户目录,顾名思义,它提供了关于Jabber服务上注册用户的目录服务,通过它,可查询某个用户是否在某个jabber上注册过,或者他(她)的详细注册信息。

  tar -xzpvf jud-0.4.tar.gz -C /usr/local/jabber
  cd /usr/local/jabber/jud-0.4/
  make

  make完了之后,能看到jud-0.4/目录中生成一个文件jud.so。这表示这次编译已经成功了。接下来就是对jabber.xml进行配置,加入JUB服务。

  在<jsm>的<browse/>项中加入声明一个本地的Jud,大约是第220行左右。

<browse>
 ...
 <service type="jud" jid="jud.localhost" name="localhost User
Directory">
  <ns>jabber:iq:search</ns>
  <ns>jabber:iq:register</ns>
 </service>
 ...
</browse>
  在文后加入

<service id="jud">
 <host>jud.localhost</host>
 <load><jud>./jud-0.4/jud.so</jud></load>
 <jud xmlns="jabber:config:jud">
  <vCard>
   <FN>User Directory on localhost</FN>
   <DESC>This service provides a simple user directory
service.</DESC>
   <URL>http://localhost/</URL>
  </vCard>
  </jud>
</service>

  重启Jabber Server,JUD才能生效。

  安装自动用户目录Autojud

  autojud是一个perl编写的脚本。可以自动构造一个包含完整jabber注册用户列表的Jabber用户目录。对于一个企业内部的定期维护升级用户信息有用。

  cd autojud

  编辑autojud,给变量$jabberdir和$servername赋上正确的值。

  $jabberdir = "/usr/local/jabber";
  $servername = "XXXXX.com";   #

  $userdir = "$jabberdir/spool/$servername";
  $juddir = "$jabberdir/spool/jud";

  $jabberpid = "jabber.pid";
  $judfile = "global.xdb";
  $judbackup = "global.xdb.backup";

  编辑Makefile,给变量INSTALLDIR赋上正确的值。

  INSTALLDIR=/usr/local/jabber/autojud
  make

  此过程实际是安装程序用到的perl modules,也可以手工做。如果有提示说某此perl的module已经安装,则不要安装。

  make install
  make clean

  在make时你可以要回答一些问题,整个过程实际是为autojud安装一些perl modules。make clean将清除一些无用的目录。

  #  @args = ( "kill -SIGINT `cat $jabberdir/$jabberpid`; sleep 1;" );
  @args = ( "/usr/local/jabber/stop.sh" );

  #  @args = ( "su - jabber -c \"$jabberdir/jabberd/jabberd -h $servername&\"" );
  @args = ( "/usr/local/jabber/start.sh ");

  运行autojub
  ../autojub

  其间autojub会先停止jabber server,生成新的JUD后,再重新启动Jabber Server。这个过程通常很快,对用户的影响很小
安装对ICQ的支持

  对其它IM的支持显然是Jabber的一个重要特点,这也是因为jabber是一个开放的开发平台,人们可以开发各种程序来扩充jabber的功能。正是有人开发了Icq的支持软件,所以我们才可以在jabber上使用icq。同理,如果你有兴趣,同样可以为现在jabber还不支持 的一些IM开发相应珠支持软件,比如QQ(官方网站上好象有一个QQ链接,不过好象打不开,强烈希望有了解QQ协议的朋友给jabber开发一个)。回到主题,对icq的支持相对要麻烦一些,因为它是依赖另外一些已有的icq的包。

  在安装前先要装libsigc++和libicq2000。libsigc++可以找到rpm包,libicq2000可以找到tar包。

  安装libsigc++

  rpm -ivh libsigc-xxx-xx.rpm
  rpm -ivh libsigc++-devel-1.0.3-5.i386.rpm

  安装libicq2000

  ../configure --prefix=/usr/local/libicq2000
  make
  make install

  安装icqv7

  icqv7-t-0.2.0pre2.tar.gz
  cd icqv7-t-0.2.0pre2
  ../configure --prefix=/usr/local/jabber/icqv7
  --with-jabberd=/usr/local/jabber
  --with-libicq2000-prefix=/usr/local/libicq2000
  make
  make check
  make install

  修改jabber.xml
启动对icq的支持,要通过单独一个命令进行:

  /usr/local/jabber/icqv7/bin/icqv7ext -n icqv7ext -s password -h hostname
-p 7000 -m sms.localhost

  安装对MSN的支持

  tar -xzpvf msn-transport.tar.gz
  cd msn-tarnsport
  ../bootstarp

  run ./bootstrapvi /usr/local/jabber/jabberd/jabberd.h +42
  before configure/make

  vi /usr/local/jabber/jabberd/jabberd.h +42

  >#include <pth.h>

  #include "pth-1.4.0/pth.h"

  ../configure --prefix=/usr/local/msn --with-jabberd=/usr/local/jabber

  MSN-t uses TCP port 1863 for incoming connections so you have to open this port if you use a firewall.

  make

  根据README进行配置,建议以独立的进程运行。

  安装对yahoo!message的支持

  安装对yahoo!message的支持相对于icq、MSN要简单的多,不容易出错。安装中我只遇到过一次说是需要glib-devel包,我加装上去就顺利用完成了(所以建议大家在不熟悉的情况下,采用完全安装的Linux,这样出现找不到某个包的情况就会减少)。

  tar -xzpvf yahoo-t-2.0.0-RC6.tar.gz -C /usr/local/jabber
  make

  根据README进行配置,建议以独立的进程运行

  安装到现在,所有的服务已经安装好了,执行以下脚本来启动jabber及相关的icq/msn/yaho!oMessage服务

  #!/bin/bash
  # start.sh
  echo "Start Jabber ..."
  killall icqv7ext
  killall jabberd
  /usr/local/jabber/jabberd/jabberd &
  /usr/local/jabber/icq02/bin/icqv7ext  -n icqv7ext -s password -h
  hostname -p 7000 -m sms.51jabber.com &
  /usr/local/jabber/jabberd/jabberd -c /usr/local/jabber/msn-trans.xml &
  /usr/local/jabber/jabberd/jabberd -c /usr/local/jabber/yahoo-jabber.xml
  &
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表