使用 ZNC 跟踪您的 IRC 聊天记录

在 IRC 和 Matrix 之间创建桥梁。
50 位读者喜欢这篇文章。
Chat bubbles

一年多以来,我一直在想是否有可能将开源 Matrix 通信网络连接到 Internet Relay Chat (IRC),以便我仍然可以使用我的 ZNC IRC 代理,而无需额外增加昵称。答案是肯定的,这很有趣。但首先,了解一些背景知识。

什么是 IRC?

IRC 自 1988 年 8 月以来就已存在,并且一直是实时通信的主要工具。它也是早期的开源项目之一,因为原始 IRC 服务器的代码最终被共享。多年来,它对于满足许多开发人员的实时通信需求非常有用,尽管并非没有其自身的争议。然而,它具有很强的适应性,并且尽管有更新的选择,但仍然被广泛使用。

进入代理

ZNC 解决了 IRC 上的一个特定问题:IRC 实际上是一个非常短暂的系统,因此不保存任何状态。当您登录到 IRC 服务器时,您除了当下正在发生的事情之外,什么也得不到——之前的事情没有,离开之后的事情也没有。这与更现代的系统形成对比,后者提供历史背景、回滚、可搜索性等。

其中一些可以通过持续运行的客户端来处理,但这并不理想。进入 IRC 代理。代理充当 IRC 连接的中间人。它连接到 IRC,并且可以代表用户登录。然后,它可以将聊天记录中继回客户端(或者在许多情况下是多个客户端)。这可以使它看起来像用户始终在线,从而提供一些上下文。

许多使用 IRC 的人要么使用代理,要么使用长期运行的客户端来保持上下文的连续性。ZNC 是一个相对流行且广为人知的 IRC 代理。像 IRCCloud 这样的其他服务可以提供此功能以及围绕 IRC 构建的其他功能,以使体验更愉快和可用。

构建桥梁

Matrix 是一个较新的标准,它实际上不是程序或代码库。它实际上是一个协议定义,特别适合桥接其他协议,并为实时加密聊天提供框架。它的参考实现之一称为 Synapse,并且碰巧是一个非常可靠的构建基础。它有一套丰富的预构建桥梁,包括 Slack、Gitter、XMPP 和电子邮件。虽然并非所有功能都可以在所有地方转换,但如此多优秀的桥梁存在这一事实表明社区强大且协议健壮。

问题的关键

我已经使用 IRC 26 或 27 年了;我的客户端按照我喜欢的方式设置,并且我习惯于在某些系统上以某些方式与之交互。这很好,直到我想在我拥有 Matrix、MattermostRocket.Chat 或其他系统运行时开始与 IRC 交互。传统上,这意味着每次我登录 IRC 时,最终都会得到一个额外的昵称。过了一段时间,username[m]、username[m]1、username[m]2 等等开始显得过时。想象一下每个人都尝试这样做,您就会明白这最终变得站不住脚。

我一直在运行带有桥梁的 Matrix 服务器。那么为什么我不能将 ZNC 桥接到 Matrix 中,从而获得两全其美的效果呢?

这是可行的,但需要一些先决条件和准备工作(我不会详细介绍,但如果您希望自行设置,则有相关文档)。

  • 您需要一个 Matrix 服务器,我正在使用 Synapse,这也是我接下来要假设的。您还需要管理员权限和对底层系统的访问权限。
  • 您需要一个 ZNC 服务器 正在运行,或者一个行为类似于 ZNC 的代理(尽管如果您不使用 ZNC,您的结果可能会有所不同)。您只需要一个 ZNC 帐户;您不需要管理员权限。
  • 您需要 Heisenbridge 的副本,这是一个用于 Matrix 的 IRC 桥,它与普通的 IRC 桥的工作方式不同。可以同时运行两者;我正在这样做,并且 Heisenbridge README 将帮助您做到这一点。您可能希望在运行 Synapse 的同一系统上运行 Heisenbridge,但这并非必需。

我假设您已经设置并运行了 Synapse 和一个可用的 IRC 代理。现在到了有趣的部分:将 Heisenbridge 安装到位。按照 Heisenbridge 安装指南进行操作,但在您重新启动 Synapse 并启动 Heisenbridge 之前,您需要对安装期间生成的配置文件进行一些小的更改。该配置文件看起来像这样

id: heisenbridge
url: http://127.0.0.1:9898
as_token: alongstringtoken
hs_token: anotherlongstringtoken
rate_limited: false
sender_localpart: heisenbridge
namespaces:
 users:
 - regex: '@irc_.*'
   exclusive: true
 aliases: []
 rooms: []
  • 更改它将使用的端口,因为 9898 也被其他桥梁首选。我选择了 9897。只要它在 Synapse 和桥梁中相同,您使用什么都无关紧要。
  • namespaces 部分中,记下用户的正则表达式。matrix-appservice-irc 系统使用相同的正则表达式,并且让它们都在同一个命名空间中运行会导致问题。我将我的从 @irc_ 更改为 @hirc
  • 您需要将 @heisenbridge:your.homeserver.tld 添加到您服务器上的管理员列表。最简单的方法是启动 Heisenbridge 一次,关闭它,然后编辑数据库以授予用户管理员权限(即,在该用户上设置 admin=1)。然后重新启动 Heisenbridge。

我更新后的配置文件如下所示

id: heisenbridge
url: http://127.0.0.1:9897
as_token: alongstringtoken
hs_token: anotherlongstringtoken
rate_limited: false
sender_localpart: heisenbridge
namespaces:
 users:
 - regex: '@hirc_.*'
   exclusive: true
 aliases: []
 rooms: []

然后,重新启动 Synapse,启动 Heisenbridge,然后从那里开始。我使用以下命令启动了我的

python3 -m heisenbridge -c /path/to/heisenbridge.yaml -p 9897

接下来,与您家庭服务器上的 Heisenbridge 用户交谈,并为您的代理设置网络和服务器。

如果要添加服务器,则有一些未记录的选项。如果要添加服务器名称和主机,请发出

addserver networkname hostname portnumber --tls

以您的用户身份打开网络。您将被邀请到一个房间,您可以在其中设置网络登录的密码(这可能是 ZNC 所需的),然后您可以连接。

安全警告: 密码将以明文形式存储,因此不要使用您不介意以这种方式存储的密码,并且不要在您不信任的机器上执行此操作。

在您点击连接后,您应该会看到一系列活动,因为您的 IRC 代理将其状态推送到 Matrix 中。应该就可以了!

接下来要阅读的内容
标签
User profile image.
John 在 VMware 的开源项目办公室工作,负责上游开源项目。在之前的工作中,他曾参与 MinnowBoard 开源硬件项目,领导 kernel.org 上的系统管理团队,并在桌面集群流行之前构建了它们。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.