惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
D
DataBreaches.Net
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
Recent Announcements
Recent Announcements
The Register - Security
The Register - Security
S
Secure Thoughts
Y
Y Combinator Blog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 最新话题
V2EX - 技术
V2EX - 技术
腾讯CDC
GbyAI
GbyAI
G
Google Developers Blog
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
T
The Exploit Database - CXSecurity.com
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
Schneier on Security
Schneier on Security
Microsoft Security Blog
Microsoft Security Blog
Jina AI
Jina AI
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
Help Net Security
Help Net Security
K
Kaspersky official blog
P
Privacy & Cybersecurity Law Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
AI
AI
MongoDB | Blog
MongoDB | Blog
Scott Helme
Scott Helme
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
H
Heimdal Security Blog
H
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
云风的 BLOG
云风的 BLOG
Microsoft Azure Blog
Microsoft Azure Blog
S
Security Affairs
TaoSecurity Blog
TaoSecurity Blog
The GitHub Blog
The GitHub Blog
Hacker News: Ask HN
Hacker News: Ask HN
Martin Fowler
Martin Fowler
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Project Zero
Project Zero
T
The Blog of Author Tim Ferriss
Last Week in AI
Last Week in AI

依云's Blog

Wayfire支持不缩放Xwayland啦 - 依云's Blog 使用wayvnc远程访问无头Wayfire会话 - 依云's Blog pacfiles: 高速的 pacman -F 替代品 用 Android 手机当电脑的话筒 - 依云's Blog 使用 ffmpeg 对音频文件进行响度归一化 - 依云's Blog 使用 nftables 屏蔽大量 IP - 依云's Blog YubiKey 初体验 - 依云's Blog fcitx5 码表同步方案 - 依云's Blog 我正在使用的火狐扩展(2024年版) - 依云's Blog 使用 PipeWire 实现自动应用均衡器 如果你发现你的 OOM Killer 在乱杀进程 使用 atuin 管理 shell 命令历史 btrfs 元数据满了怎么办 btrfs 翻车记 在 nspawn 里运行 docker Linux 上的字体配置与故障排除 新的 PaddleOCR 部署方案 使用 EasyEffects 调整 Bose 音箱的体验 让离线软件真正离线 我所讨厌的网页行为 tmux 状态栏优化 Google Chrome 中的字体设置 从 getmail6 到 offlineimap 微信消息通知的困扰 Qt 的字体渲染问题 Wayfire 迁移进展(四):不那么 high 的 DPI Wayfire 迁移进展(二):Xwayland HiDPI 以及 waybar Wayfire 迁移进展 不同情况下的图形效果 Wayland 初体验 纯 CSS 实现倒三角箭头 倾听蓝牙耳机的按键事件 使用 bwrap 沙盒 一次失败的 KDE 尝试 i3 的 scratchpad 处理逻辑 HiDPI 配置记录 让 QEMU 使用 SPICE 协议 Python 小版本升级是怎么 break 已有项目的 让 Arch Linux 系统和最新的镜像同步,从最快的镜像下载 tar 归档的权限问题 Linux 的环境变量怎么设 终端色彩总结 桥接无线网卡! Linux 的进程优先级与 nice 值 Intel GVT-g 初体验 自制大上 Paperlike HD「驱动」 Python 3.8 升级记录 Poker II 键盘调教记 红黑树到底是个什么树 gdb 不肯加载调试信息怎么办? NVIDIA PRIME 配置笔记 寻找最快的 GitHub IP 火狐远程调试火狐 fcitx 扩展:使用键盘粘贴选区(以及X选区原理科普) T470p 使用N卡运行 Xorg 系统在解析哪些域名呢? 正确的隐藏挂载点的方法 迁移系统到 SSD 使用 cgroups net_cls 来让 docker 走代理 使用 cgroups 限制指定进程的内存使用 在 Linux 下整理磁盘碎片 docker 里几个基本概念的简单类比 解析 zxinc IPv6 数据库 Ant Design 彩蛋事件之我见 通过 Cloudflare DNS 验证来申请 Let's Encrypt 证书 正确地上传至 PyPI 并展示文档 与 Android 进行 WLAN Direct 连接 获得高精度环形镜子一枚 每次修 Python 代码的 bug 的时候总会想念 Rust 永远不要 tail -f 管道 人生苦短,我用 skim XZ2C: 没有 root 的日子(也还过得去) 使用 iptables 透明代理 TCP 与 UDP Linux 下获取文件的创建时间 递归遍历目录:Python vs Go vs Rust 这个博客要死了 Windows 10 中配置网络共享 小米 Note 3 令人失望地方 小米 Note 3 入手体验 使用 VirtualBox 启动本地磁盘上的其它系统 大上 Paperlike HD 电子墨水屏开箱体验 加固 systemd 服务 嗨 Win10,这是我的浏览器 在 Linux 下设置录音笔的时间 我正在使用的火狐扩展 使用 Python 读取火狐的 cookies WireGuard: 简单好用的 VPN To hup or not to hup 书签搜索:藏在书签里的搜索引擎 使用 Prince 转换 HTML 文档给 Kindle 阅读 放弃 you-get,转投 youtube-dl 等连上互联网之后再来找我吧 改了一下 GTK 3 的默认主题 新的火狐,新的旅程 师者不师,学生不学 谁又用掉了我的磁盘空间?——魔改 ncdu 来对比文件树大小变化 NeWifi 3.2.1.5900 root swapview 更新 nodejs 子进程的正确用法(你应该忽视函数名) 电脑被盗事件
基于 xmpptalk 的 XMPP 群搭建教程(以及对 Google Hangout 的吐槽)
依云 · 2013-06-23 · via 依云's Blog

目录

功能要点

  1. 自由开放的即时聊天协议。XMPP 服务和邮件服务一样,有服务器就可以搭建,服务器间可以相互通信。世界上有不少免费的 XMPP 服务器(列表Arch Linux CNDuckDuckGo)。
  2. 多人实时文本聊天。因为群组的实现由开发者完成,所以开发者可以附加上各种功能,比如暂时接收消息等。
  3. 因为是开放的协议,各种平台上都有不少客户端可用:Windows:Miranda IM;Linux/BSD:Pidgin、Empathy、kopete、kde-TelePathy、finch(终端);Android:xabberjabiru;Mac OS X:Adium 等;Web:jappix
  4. 因为是开放的协议,有各种编程语言的程序库,可方便、高效、光明正大地编写新的客户端或者聊天机器人。

一些缺陷

  1. XMPP 只适合传输文本。图片通常需要手工或者使用客户端插件贴到图床上,以链接的方式分享。
  2. 这是一个通过机器人(由程序控制的聊天客户端)模拟的群组。查看群成员信息等需要向群里发送特殊的命令。
  3. 暂不支持富文本(HTML)消息。这意味着你消息中的颜色、字体变化不会呈现给其他人。同时也意味着带链接的文本无法正常传输。通常,客户端会把链接地址写在相应的文本之后。不幸的是,从诸如维基百科直接复制的富文本包含大量链接,在「纯文本」化后的文本相当混乱。因此,多于一个的这样的链接会被 xmpptalk 去除。
  4. 群管理命令尚不完善,比如添加管理员需要直接修改数据库。
  5. 搭建过程比较麻烦和山寨。
  6. 目前仅支持在 Linux 系统上运行。

关于 Google Talk 及 Hangout

  1. Google Talk(Gtalk)是由 Google 公司提供的带自己的修改的 XMPP 服务,以及其 Windows 客户端和 Gmail 中内嵌聊天工具。它可以与 XMPP 群等通常使用非 Google 服务器的用户通讯
  2. Google Hangout (中文称「环聊」)是最近 Google 在配合 Google+ 服务推出的一种即时聊天服务,有 Google+ 网页版、Gmail 内嵌版(新版)、Android 客户端、iOS 客户端等。Hangout 不是 XMPP 服务。非 Google 用户能够看到使用 Hangout 在线的用户,但是发送的消息不会被 Hangout 接收到,只有当用户使用 XMPP 客户端登录时才能收到这些消息(如果用户没有禁用消息历史记录的话)。Google 用户之间发送的离线消息只会在 Hangout 和 Gmail 的聊天记录中出现,即使双方都使用 XMPP 客户端登录也不会收到这些离线消息。
  3. 「环聊」的意思就是,Google 画了个圈,圈子里边的 Google 用户才能够如预期地相互通信。「Hangout」的意思是,把不愿意使用 Hangout 的用户都「挂出去」,不缠他们玩儿了。

关于 Google 的 XMPP 服务的注意事项

  1. Google Apps 域名只能使用 Google 提供的 XMPP 服务。另建的 XMPP 服务会被 Google 拒绝建立服务器间连接。
  2. Google Apps 域名关于 XMPP 服务的设置页只说明了服务器间通讯(s2s)的 DNS 设置,缺乏 XMPP 客户端所需要的 DNS 设置。
  3. Google 的 XMPP 服务的设计目的是给人用的,不是给机器人用的。如果一个帐号在短时间内向单一联系人发送大量消息(上次测定是一分钟15条以上),那么之后的消息会被忽略。过一段时间后恢复。如果消息中包含链接或者「@」符号(邮件地址会包含的字符),那么限制更加严格,一分钟内只能外发几十条这样的消息(向任何数量的目标)。
  4. Google 的 XMPP 服务不允许用户向未订阅用户(互加好友的用户)发送消息。而一般 XMPP 服务允许此类消息,就像你有了对方的邮件地址就可以向其发送邮件一样。
  5. Google Talk 软件的「Remove」操作仅仅从好友列表中移除好友,并不会向对方发送取消订阅的消息。所以,Google Talk 用户在退出 xmpptalk 群时请使用专门的「-quit」命令。
  6. Google Talk 105 及以上版本(包括从官网下载的中文版、通过升级得到的中文版)实质使用的是 HTTP 协议明文传输数据。Google Talk 104 版本才会真正地使用加密版的 XMPP 协议。

搭建前的准备工作

  1. 需要一个给群机器人使用的 XMPP 帐号。基于已述的理由,强烈反对使用 Google 帐号搭建 XMPP 群。如果有自己的服务器,可自行搭建。推荐的 XMPP 服务端软件是 Prosody
  2. 需要一个长期在线的服务器或者 VPS。此服务器不需要能够响应外网请求。至少 50M 的空闲内存,以及约几百兆的磁盘空间。

软件安装

暴力安装法

运行 xmpptalk 中的scripts/quickinstall.sh即可。如果它没有中途出错而停下的话就恭喜你了!需要 root 权限,会从官方下载源码编译安装,东西会全部往/usr/local下装。不喜勿用,仅作参考。

MongoDB

MongoDB 是 xmpptalk 所使用的数据库。从软件源或者官方下载安装即可。

如果是从官方直接下载的,其配置可参考scripts/mongodb.conf.example文件。给mongod传递--fork参数作为服务在后台运行,传递--repair参数来从非正常关闭中恢复。

Python 及相关库

xmpptalk 需要 Python 3.2 或者以上版本。如果软件源中没有合适的版本,可从源码安装。编译方式可参考scripts/quick_install.sh脚本。

xmpptalk 依赖以下 Python 库。如果是手动安装,请使用准备运行 xmpptalk 的那个版本的 Python 来安装。注意手工安装的 Python 的话,你需要首先安装 distribute。手工安装时,可通过 easy_install(-3.2/-3.3) 来安装,也可手工安装。

  • pyxmpp2
  • dnspython
  • pymongo
  • mongokit

比如:

easy_install-3.3 pyxmpp2
easy_install-3.3 dnspython
easy_install-3.3 pymongo
easy_install-3.3 mongokit

MongoKit 不支持 Python 3,但是可以通过2to3程序来转换。在其安装目录执行2to3 -w .命令即可。例如:

dir=$(python3 -c 'import imp; print(imp.find_module("mongokit")[1])')
cd "$dir"
2to3 -w .

xmpptalk 的安装

xmpptalk 暂时还不支持安装 -_-|||

从仓库取回其源码即可使用。源码主页地址:github, bitbucket, geakit

直接克隆或者下载:

git clone https://github.com/lilydjwg/xmpptalk.git
# 或者
git clone https://geakit.com/lilydjwg/xmpptalk.git
# 或者从 github 下载源码包
wget https://github.com/lilydjwg/xmpptalk/tarball/master

配置和运行

请将 xmpptalk 源码中的config.py.example文件复制为config.py,然后使用文本编辑器修改。搜索「TODO」字样来寻找你非常可能需要修改的配置项。

在第一次运行前,需要对数据库进行初始化。首先启动 MongoDB,然后运行以下命令(该命令可反复运行,因此如果出错,在修正错误后再次运行即可):

python3 dbman.py

运行 xmpptalk 群。如果你不介意它占据一个终端的话(比如你有 tmux 或者 screen),可直接运行主文件。此种情况你可以看到日志消息,所以第一次运行使用此种方式以确定配置无误:

python3 main.py

如果需要后台运行,只需要加上--fork参数。

在它运行起来后,你就可以将群(使用你配置的 Jabber ID(JID))添加为好友啦。添加好友后请同意机器人添加你为好友,就会收到欢迎消息了,不需要发送任何额外的消息。让你的朋友们也加入进来吧!

常用命令简介

群使用一些减号「-」开头的字符串来进行一些操作。注意:减号前一定不能有空白字符。不小心忘了这些命令也没关系,大喊一声「help」群就会救你了 :-)

  • -nick XXX:将你自己在群里的昵称修改为XXX。直接发送-nick来查看自己当前的昵称。
  • -online:有哪些人在线呢?
  • -longhelp:查看完整的命令列表。

彩蛋:

  • test:测试群和你还能正常通信不(也许你已经掉线了?)
  • ping:类似test消息,但是同时还会告诉你当前(服务器的)日期和时间。如果暂停接收消息了,此消息会导致暂停状态被取消。

更多的内容就留给读者自行探索吧 ^_^

test@vim-cn.com 这个是 vim-cn 的技术群,讨论 Vim 或者编程技术,或者程序员的喜怒哀乐都可以来的哦 ^_^ (之所以叫「test」,是因为它最开始是 xmpptalk 的测试用群)