2013-05-09 86 views
0

如何使用ejabberd實現bot?用ejabberd創建一個bot類配置?

這個想法是,在我的(Debian 7.0 Wheezy)VPS上,我正在運行ejabberd,在那裏我有一個特殊的機器人Jabber用戶,他可以運行有限的一組命令。讓我們稱他爲[email protected]

在另一臺電腦(比如,我的Android手機),我有可能在第三方服務器連接到我的帳戶Jabber客戶端。我們稱之爲[email protected]

現在我想ejabberd到:

  • 只允許一個特定的Jabber ID,[email protected]永遠與這個 [email protected]通信。

  • 一切都輸入到聊天[email protected]傳遞到殼並執行 作爲命令,有可能在一個或chroot的另一受保護的環境(例如,使用一個 特定的受限用戶)。 (和標準輸出+ STDERR返回的答覆,當然。)

我的理解有可能存在安全隱患,但現在我只是想知道這是否要走的路。

回答

1

你可以簡單地寫在任何語言中的機器人,並把它連接到XMPP服務器作爲客戶端。清單XMPP client libraries can be found here

機器人程序可以檢查JID在「從」接收到驗證身份的消息的屬性。在XMPP中僞造一個JID通常是不可能的,因爲服務器對他們的客戶端以及彼此進行身份驗證。但實際上,它只與使用的身份驗證方法(以及不包含錯誤的服務器)一樣安全。

要執行的命令和讀取結果,一個PTY是一個很好的簡單的解決方案。有多種語言的PTY庫可用,包括PythonRubyLua

與對任何系統一樣,您是對的,安全是一個問題。多年的努力已經使ssh獲得了安全,偶爾還會出現問題。

值得注意的是,Google的XMPP服務器不支持加密服務器到服務器的連接,因此XMPP服務器和Google之間的網絡上的某個人將能夠看到您的消息,並且可能會修改和/或僞造他們完全。

最後,即使他們沒有支持加密服務器到服務器的鏈接...谷歌本身在技術上有發送郵件,你的能力,你的手機也將是一個潛在的薄弱點。

隔離目標進程會刪除大量的安全問題。如果服務器在Linux上運行,那麼LXC containers可能是一個很好的解決方案。

希望這涵蓋了您的問題的所有方面!