Gaim 2.0.0beta1 连接 Gtalk 时必须要在帐号文件 accounts.xml 中存储密码,不然就用空密码去登陆,自然失败。虽然 Unix 的文件权限机制不错,但像我这样在 NIS 域里面简直就形同虚设,别人可以从 root 切换到我的帐号,访问我的 HOME,虽然是非法,但总算得上是没有控制的。
看了 Gaim 主页上 关于password 问题的 FAQ ,它说 Gaim 现在不对 accounts.xml 里面存储的密码进行加密,将来的版本中应该也不会这么做,原因是多方面的……,我看了半天,不知道是不是理解错误,总觉得他的解释很牵强。
那只好不要在文件中保存密码了。登陆 MSN 时,会先弹出窗口输入密码,偏偏登陆 Gtalk 时就很白痴的直接用空密码去登陆。看了一会源码加上 gdb,终于找到问题。从源码看,Jabber 协议中密码是可选的,因此没设密码时照样登陆。解决的办法就简单了,从
src/protocols/jabber/jabber.c 中去掉这个选项:
1425 static GaimPluginProtocolInfo prpl_info =
1426 {
1427 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME|1428OPT_PROTO_PASSWORD_OPTIONAL,
如果之前已经 make install 过,只要重新编译后把 src/protocols/jabber/jabber/.libs/ 下的 libjabber.la 和 libjabber.so 覆盖到放 plugin 的目录($prefix/lib/gaim/)下就好了。这样就能像登陆 MSN 一样,弹出窗口来输入密码。调试时发现该目录下所有的插件都会装载,移走不需要的插件显然能增加启动速度和减少占用资源。
开源就是好啊。
Update: 2.0.0beta2 出来了,fix 正是和我的一样 ;-)
0 Comments so far