真正困扰我的 IRC:Slack

作者:Kyle Rankin

了解如何使用 Bitlbee libpurple 插件重新连接到 Slack 的 IRC。

我是一个 IRC 爱好者。我欣赏纯文本聊天的简洁性、表情符号而不是 emoji,以及各种各样的 IRC 客户端和服务器可供选择,包括托管您自己的服务器的选项。我的所有互动交流都通过 IRC 进行,要么是通过原生 IRC 频道(如 Freenode 上的 #linuxjournal),要么是使用本地 Bitlbee 实例作为其他聊天协议的 IRC 网关。由于我的 IRC 客户端支持同时连接到多个网络,因此我能够从一个窗口管理我所有的个人聊天、群组聊天和工作聊天,并且可以从我的任何计算机连接到该窗口。

在我升级到 IRC 之前,我的第一次聊天体验是在 1990 年代后期在一个基于 Web 的 Java 聊天小程序上,虽然我对基于 Web 的聊天怀有一些怀旧之情,因为我是在那个网络上遇到了我的妻子,但通过 Web 浏览器聊天似乎只是在互联网上发送文本的一种缓慢而痛苦的方式。此外,在我们相遇后不久,该网络的维护者决定关闭整个网络,而且由于它是一个专有网络,拥有专有服务器和客户端,当他们关闭它时,所有这些聊天室和群组都消失了。

旧事物又焕然一新。我们用 JavaScript 代替了 Java,现在的孩子们喜欢把他们的 Web 浏览器当作 Emacs,所以每个应用程序都必须作为 Web 应用程序运行。这导致了最新的聊天趋势:Slack。我说最新趋势,是因为不久之前 Hipchat 还很流行,再往前,甚至 Yammer 也曾风光一时。过去,一个软件项目可能会在许多公共或私有 IRC 服务器之一上建立一个频道,但现在,每个人似乎都想将他们的项目整合到 Slack 的基础设施下。这意味着,如果您加入了一家公司或一个在过去几年开始的软件项目,那么您很可能需要使用 Slack。

我是几个 Slack 网络的一份子,直到最近,我才真正认真地考虑 Slack,因为与其他一些专有聊天网络不同,Slack 有意识地提供了 IRC 和 XMPP 网关。这意味着您不需要使用其笨重的 Web 应用程序,而是可以使用您喜欢的任何客户端,但仍然可以连接到 Slack 网络。当然,我的基于文本的 IRC 客户端没有显示动画 Giphy 图像或连续 20 个 party-parrot gif,但在我看来,这是一个优点。不幸的是,Slack 无法再证明将 Web 聊天功能反向移植到 IRC 和 XMPP 的工程工作是合理的,因此该公司宣布将关闭其 IRC 和 XMPP 网关。

当 Slack 首次宣布将关闭 IRC 网关时,我不确定我会怎么做。我知道我不会使用 Web 应用程序,所以我想,如果找不到替代方案,我就像旧的 Java 聊天关闭时一样,忘记我加入的 Slack 网络。幸运的是,FLOSS 社区拯救了局面,有人编写了一个插件,该插件使用了 libpurple 库(一种 Rosetta stone 插件框架,用于 Pidgin 和 Bitlbee 等程序,允许访问 ICQ、MSN、Yahoo 和其他已死的专有聊天网络)。虽然使用直接 IRC 网关更容易,但在 Bitlbee 上设置它也不算太糟。因此,在本文中,我将介绍如何做到这一点。

为什么不选择 Weechat?

我知道许多基于控制台的聊天爱好者已经切换到 Weechat 作为他们的 IRC 客户端,并且它有一个原生的 Slack 插件。这很棒,但我已经使用 Irssi 大约 15 年了,所以我不会仅仅为了 Slack 而切换客户端。无论如何,使用 Bitlbee 程序,您可以使用您喜欢的 IRC 客户端连接到 Slack,无论是 Irssi、Xchat 还是甚至是 MIRC(不做评判)。

安装 Bitlbee 的 Slack libpurple 插件

由于 Slack Bitlbee 插件使用 libpurple,因此第一步是确保您安装的 Bitlbee 包内置了 libpurple。在基于 Debian 的发行版上,这意味着如果您尚未安装,则将基本的 bitlbee 包替换为 bitlbee-libpurple。此软件包应自动设置一个监听 IRC 端口的本地网络服务。我在我过去的文章 “真正困扰我的 IRC:即时通讯” 中详细介绍了如何使用 Bitlbee,所以我建议您参考该文章了解更多详细信息。

连接到 Bitlbee 后,您应该能够发出 help purple 命令并获得已安装的现有 libpurple 插件列表


19:23 @greenfly| help purple
19:23 @    root| BitlBee libpurple module supports the
 ↪following IM protocols:
19:23 @    root|
19:23 @    root| * aim (AIM)
19:23 @    root| * bonjour (Bonjour)
19:23 @    root| * gg (Gadu-Gadu)
19:23 @    root| * novell (GroupWise)
19:23 @    root| * icq (ICQ)
19:23 @    root| * irc (IRC)
19:23 @    root| * msn (MSN)
19:23 @    root| * loubserp-mxit (MXit)
19:23 @    root| * myspace (MySpaceIM)
19:23 @    root| * simple (SIMPLE)
19:23 @    root| * meanwhile (Sametime)
19:23 @    root| * jabber (XMPP)
19:23 @    root| * yahoo (Yahoo)
19:23 @    root| * yahoojp (Yahoo JAPAN)
19:23 @    root| * zephyr (Zephyr)
19:23 @    root|

请注意,Slack 尚未在此列表中。下一步是在您的机器上构建和安装 Slack libpurple 插件。为此,请确保您的系统上安装了通用构建工具(对于基于 Debian 的系统,build-essential 软件包负责此项)。然后安装 libpurple-devel 或 libpurple-dev 软件包,具体取决于您的发行版。最后,从 GitHub 拉取插件的最新版本并构建它


$ git clone https://github.com/dylex/slack-libpurple.git
$ cd slack-libpurple
$ sudo make install

(注意:如果您没有系统级访问权限,您可以运行 make install-user 而不是 sudo make install 以在本地安装插件。)

安装完成后,您应该在 /usr/lib/purple-2/libslack.so 中有一个新的库文件。重启 Bitlbee,您应该会在列表中看到一个新的插件


19:23 @greenfly| help purple
19:23 @    root| BitlBee libpurple module supports the
 ↪following IM protocols:
19:23 @    root|
19:23 @    root| * aim (AIM)
19:23 @    root| * bonjour (Bonjour)
19:23 @    root| * gg (Gadu-Gadu)
19:23 @    root| * novell (GroupWise)
19:23 @    root| * icq (ICQ)
19:23 @    root| * irc (IRC)
19:23 @    root| * msn (MSN)
19:23 @    root| * loubserp-mxit (MXit)
19:23 @    root| * myspace (MySpaceIM)
19:23 @    root| * simple (SIMPLE)
19:23 @    root| * meanwhile (Sametime)
19:23 @    root| * slack (Slack)
19:23 @    root| * jabber (XMPP)
19:23 @    root| * yahoo (Yahoo)
19:23 @    root| * yahoojp (Yahoo JAPAN)
19:23 @    root| * zephyr (Zephyr)
19:23 @    root|

在 Bitlbee 中配置 Slack

设置好 Slack 模块后,下一步是像配置任何其他 Bitlbee 网络一样配置它。首先,从 Bitlbee 控制台创建一个与您的 Slack 帐户对应的新 Bitlbee 帐户


account add slack username@networkname.slack.com

接下来,您需要添加 Slack 所谓的 Legacy API token(旧版 API 令牌),这告诉我 Slack 迟早会弃用它,并将我们再次抛在寒冷中。为此,请确保您已在 Web 浏览器中登录 Slack,然后访问 https://api.slack.com/custom-integrations/legacy-tokens。在该页面上,您将能够为您作为成员的任何 Slack 网络生成 API 令牌。获得 API 令牌后,返回到您的 Bitlbee 控制台并设置它


account slack set api_token xoxp-jkdfaljieowajfeiajfiawlefje
account slack on

如果这是您创建的唯一 Slack 帐户,它会将其标记为“slack”,您可以这样称呼它。否则,您需要在 Bitlbee 控制台中键入 account list 并查看 Bitlbee 如何编号您的 slack 帐户,然后在上面的命令中将 slack 替换为与该帐户关联的编号。

不幸的是,与 IRC 网关不同,此插件不会自动将您连接到您活跃的任何频道。相反,一旦您的 Bitlbee 客户端连接,您需要告知 Bitlbee 您要加入的任何特定频道。您可以使用标准的 Bitlbee chat add 命令来执行此操作。例如,要添加和加入大多数 Slack 网络都拥有的 #general 频道,您需要键入


chat add slack general
/join #general

请注意,与之前的其他命令一样,如果您定义了多个 Slack 网络,您可能需要将 slack 替换为与您的帐户关联的编号。

如果您希望 Bitlbee 在每次连接时自动重新加入特定房间,您可以键入


channel general set auto_join true

对您要自动加入的任何其他频道重复此操作。

结论

好吧,所以也许这篇文章与我写的其他文章相比有点苦涩。我忍不住。当公司利用他们对专有软件、网络或服务的控制来删除人们依赖的功能时,我真的很困扰。我也看到过很多专有聊天网络来来去去,而 IRC 却一直存在,我只是希望人们能坚持使用 IRC,即使他们没有得到那个转圈的动画笑脸 emoji。我非常感谢有一个可靠的开发者社区,他们愿意仔细研究 API 文档,以便在必要时构建新的第三方插件。

Kyle Rankin 是 Linux Journal 的技术编辑和专栏作家,也是 Purism 的首席安全官。他是 Linux Hardening in Hostile Networks, DevOps Troubleshooting, The Official Ubuntu Server Book, Knoppix Hacks, Knoppix Pocket Reference, Linux Multimedia HacksUbuntu Hacks 的作者,也是许多其他 O'Reilly 书籍的撰稿人。Rankin 经常就安全和开源软件发表演讲,包括在 BsidesLV、O'Reilly Security Conference、OSCON、SCALE、CactusCon、Linux World Expo 和 Penguicon 上。您可以在 @kylerankin 上关注他。

加载 Disqus 评论