如何使用ejabberd实现bot?
我的想法是在我的(Debian 7.0 Wheezy)VPS上,我正在运行ejabberd,并且我有一个特殊的机器人Jabber用户,他可以运行有限的命令集。我们叫他butler@myvps.foo。
在另一个盒子(比如我的Android手机)上,我有一个Jabber客户端可能连接到我的帐户,可能是第三方服务器。我们称之为me@somewhere.bar。
现在我想要ejabberd:
只允许一个特定的Jabber ID,me @ somewhere.bar与此进行通信 butler@myvps.foo。
将所有内容输入与butler@myvps.foo聊天并传递给shell并执行 作为命令,可能在chrooted或其他受保护的环境中(例如使用 特定的有限用户)。 (当然,STDOUT + STDERR作为回复返回。)
我知道可能存在安全风险,但是现在我只想知道这是否可行。
答案 0 :(得分:1)
您可以简单地用任何语言编写机器人,并将其作为客户端连接到XMPP服务器。 XMPP client libraries can be found here。
列表机器人可以检查它收到的消息的“from”属性中的JID以验证身份。通常不可能在XMPP中伪造JID,因为服务器对其客户端以及彼此进行身份验证。实际上,它只与所使用的身份验证方法一样安全(并且服务器不包含错误)。
要执行命令并读取结果,PTY是一个很好的简单解决方案。有多种语言的PTY库,包括Python,Ruby和Lua。
对于任何系统来说,安全性都是一个问题。多年的努力已经用于保护ssh,偶尔也会出现问题。
值得注意的是,Google的XMPP服务器不支持服务器到服务器连接的加密,因此您的XMPP服务器和Google之间的网络上的某个人将能够看到您的消息,并可能修改和/或伪造它们完全。
最后,即使他们确实支持服务器到服务器链接的加密......谷歌自己在技术上也能够像你一样发送消息,而你的手机也可能是一个潜在的弱点。
隔离目标进程将消除许多安全问题。如果服务器在Linux上运行,LXC containers可能是一个很好的解决方案。
希望这涵盖了您问题的所有方面!