Irssi

来自 ArchWiki

Irssi 是一个模块化的、基于 ncurses 的 IRC (Internet Relay Chat) 客户端。它也通过插件支持 SILCICB 协议。

安装

安装 irssi 软件包。

AUR 中提供了几个脚本,位于 irssi-script 下,以及 Irssi 脚本仓库 中。

用法

有关详细介绍,请参阅 官方文档

注意: 本节假设您已经了解 IRC 的基本知识,并且过去使用过其他客户端

推荐使用 终端复用器,例如 tmuxGNU Screen。它允许用户轻松断开和重新连接会话,并且诸如 nicklist.pl 之类的脚本依赖于辅助窗口。要启动 irssi,请运行

$ irssi

另请参阅 irssi(1)

命令

Irssi 命令以斜杠开头,并且不区分大小写。支持 Tab 补全。您可以使用内置的 /help 页面了解它们,这些页面也 在线可用

命令 描述
/help 列出所有命令或描述给定命令。
/network 管理您的 IRC 网络。
/server 管理您的 IRC 服务器。
/connect 连接到服务器或网络。
/disconnect 关闭当前与服务器的连接。
ALT+(1-0,q-p,etc) 更改当前活动窗口。Ctrl+n 循环到下一个窗口,Ctrl+p 循环到上一个窗口。
/window 管理您的 irssi 窗口。
/layout 保存或删除您的窗口配置。
/statusbar 管理状态栏。
/set 查看或更改设置。
/alias 管理您的别名。

配置

Irssi 将其默认配置安装到 /etc/irssi.conf,如果不存在,则将其复制到 ~/.irssi/config。默认配置包含多个服务器、聊天网络和频道。您可以使用 --config 标志使用备用配置文件启动 irssi

  • 您可以使用 /save 将当前配置保存到配置文件。
  • 您可以通过输入 /layout save 来保存当前打开的窗口的位置

使用 SASL 认证

此文章或章节的事实准确性存在争议。

原因: -ssl_capath 真的需要吗?(在 Talk:Irssi 中讨论)

Irssi 支持 简单身份验证和安全层 (SASL)。

您可以按如下方式添加具有 SASL 机制的网络

/SERVER ADD -ssl -ssl_verify -ssl_capath /etc/ssl/certs -network liberachat -port 6697 irc.libera.chat
/NETWORK ADD -sasl_mechanism plain -sasl_username username -sasl_password password liberachat
注意
  • 确保网络名称的大小写正确。
  • 第一行命令行用于添加具有 #TLS 连接 的服务器
  • 如果您有现有网络,则仅键入第二行命令行。
  • 如果您的密码包含 $,则必须在其前面加上另一个 $,以便 irssi 正确解析它。

重启 Irssi,连接网络并查找 SASL authentication succeeded

启动时自动连接到 #archlinux

启动 Irssi,然后在其中键入以下内容

/server add -auto -network liberachat irc.libera.chat

liberachat 可以替换为任何首选词,例如常用缩写 lc

确保 SASL 配置正确。您可以手动将 NickServ 与 -autosendcmd 一起使用,而不是 SASL,但这会在自动加入频道时导致竞争条件。如果需要,请使用 SSL 证书而不是带有 NickServ 的密码进行身份验证。

/channel add -auto #archlinux liberachat
/channel add -auto #archlinux-offtopic liberachat

TLS 连接

Libera.chat 使用端口 6697 进行 SSL/TLS 连接(不是 6667)。要通过 TLS 连接到 Libera.chat IRC 网络,您必须设置新连接。启动 irssi 并运行

/server add -auto -tls -tls_verify -network liberachat -port 6697 irc.libera.chat

使用以下命令保存您的新设置

/save

如果一切正常,您将看到 "Z" 模式已设置。它应该看起来像这样:“Mode change (+Zi) for user your-nick”

客户端证书

Libera Chat 和 OFTC 支持使用 TLS 证书进行身份验证,从而提供密码的替代方案。请遵循他们自己的关于使用 CertFP 的指南:Libera.chat, OFTC。以下说明适用于更一般的情况,可能不反映这些 IRC 网络建议的做法。

通用指南

要创建有效期为 730 天的无密码证书(当要求输入州甚至通用名称 (CN) 等详细信息时,您可以填写任何您想要的内容)

$ openssl req -newkey rsa:4096 -days 730 -x509 -keyout irssi.key -out irssi.crt -nodes 
$ cat irssi.crt irssi.key > ~/.irssi/irssi.pem
$ chmod 600 ~/.irssi/irssi.pem
$ rm irssi.crt irssi.key

接下来,找出相应的指纹

$ openssl x509 -sha512 -fingerprint -noout -in ~/.irssi/irssi.pem | sed -e 's/^.*=//;s/://g;y/ABCDEF/abcdef/'

这将把 SHA512 指纹写入 stdout。如果您需要 SHA1 指纹,请将 -sha512 替换为 -sha1。sed 命令用于通过删除不需要的文本和字符来正确格式化指纹。

复制指纹字符串,您稍后将在 Irssi 中注册它。

irssi 中,断开与网络的连接并添加客户端证书和密钥。如果您的证书是在没有密码的情况下构建的,请省略 -ssl_pass 选项

/disconnect liberachat
/server add -ssl_cert ~/.irssi/irssi.pem  -ssl_pass irssi.pem_password -network liberachat irc.libera.chat 6697

现在连接(不是 /reconnect)并注册您的指纹

/connect liberachat
/msg NickServ identify YOUR_PASSWORD
/msg NickServ cert add YOUR_FINGERPRINT

此时,您可以从配置文件中删除密码(如果您已将其保存在那里),并使用以下命令保存您的配置

/save

自动日志记录

/SET autolog ON
/save

隐藏加入、离开和退出消息

为了忽略显示所有频道的用户加入、离开和退出,请在 irssi 中键入以下内容

/ignore * joins parts quits

请参阅 smartfilter 以将加入消息限制为活跃用户。

鼠标滚动

要启用鼠标,请在 irssi 中键入以下内容

/run scriptassist
/script install mouse.pl

您可能需要安装 perl-lwp-protocol-https 才能使上述操作生效。

要在启动时永久启用它

/script autorun mouse.pl

如果上述方法不起作用,您可以手动从 ~/.irssi/scripts~/.irssi/scripts/autorun 加载脚本,如下所示

/script load mouse.pl

技巧和窍门

HTTP 代理

要在 HTTP 代理后面使用 irssi,需要以下命令

/SET use_proxy ON
/SET proxy_address <Proxy host address>
/SET proxy_port <Proxy port>
/SET -clear proxy_string
/SET proxy_string_after conn %s %d
/EVAL SET proxy_string CONNECT %s:%d HTTP/1.0\n\n

然后 irssi 应该相应地更改其配置文件;如果不需要代理,只需将 use_proxy 设置为 OFF。

如果代理需要密码,请尝试

/SET proxy_password your_pass

否则

/SET -clear proxy_password
注意: 在代理后面的 SSL 将会因这些设置而失败。

在 tmux 中使用带 nicklist 的 Irssi

irssi 插件 'nicklist' 提供添加一个窗格,列出当前查看的频道上的用户。它有两种方法可以做到这一点

  • screen,它只是将列表添加到 irssi 的右侧,但缺点是每次 irssi 打印一行时,整个窗口都会被重绘。
  • fifo,顾名思义,它将列表写入 fifo,然后可以使用例如 cat ~/.irssi/nicklistfifo 连续读取。

nicklist 将使用更高效的 fifo,命令如下

/NICKLIST FIFO

此 fifo 可用于 tmux 窗口中,该窗口与 irssi 在其左窗格中垂直拆分,而上面的 cat 在其右侧的小窗格中。由于窗格依赖于其创建 tmux 会话的几何形状,因此具有不同几何形状的后续会话需要重新创建它(这也意味着在 irssi 窗口中切换以重新填充 fifo)。

例如,以下脚本首先检查正在运行的 irssi,假定它是由先前的自身执行运行的。除非找到,否则它会创建一个新的 tmux 会话,一个以 irssi 命名并运行的窗口,然后是带有 cat 的窗格。但是,如果找到 irssi,它只会附加到会话并重新创建 cat 窗格。

#!/bin/sh

T3=$(pgrep -u "$USER" -x irssi)

irssi_nickpane() {
    tmux setw main-pane-width $(( $(tput cols) - 21));
    tmux splitw -v "cat ~/.irssi/nicklistfifo";
    tmux selectl main-vertical;
    tmux selectw -t irssi;
    tmux selectp -t 0;
}

irssi_repair() {
    tmux selectw -t irssi
    [ "$(tmux lsp | wc -l)" -gt 1 ] && tmux killp -a -t 0
    irssi_nickpane
}

if [ -z "$T3" ]; then
    tmux new-session -d -s main;
    tmux new-window -t main -n irssi irssi;
    irssi_nickpane ;
fi
    tmux attach-session -d -t main;
    irssi_repair ;
exit 0
提示: 与其完成所有这些工作,此插件 完成了在 tmux 内创建漂亮 nicklist 所需的所有工作。

虚拟主机名 (vhost)

vhost 可用于在连接到 IRC 服务器时更改您的主机名,通常在加入/离开或执行 whois 时查看。这通常在具有静态 IP 地址的服务器上完成。如果没有 vhost,在执行 'whois' 时,它通常看起来像这样

nick@123.456.78.90.isp.com

如果您有可用的域 example.com,则成功的 vhost 的结果可能如下所示

nick@example.com

请记住,并非每个 IRC 服务器都支持使用 vhost。这可能在服务器之间单独设置,而不是在网络中设置,因此如果您在一个服务器上遇到问题,请尝试同一网络上的另一个服务器。

所需预配置

只要已设置所需的配置,Irssi 就支持使用 vhost。这尤其包括您的主机支持使用 指针记录 (PTR)反向 DNS 查找 (rDNS)。此外,您应该在您的 /etc/hosts 文件中添加适当的行。

要查看这是否有效,请使用 host(1) DNS 查找实用程序进行测试,该实用程序包含在 bind 中,如下所示(其中 ip 是普通的 IPv4 地址)

$ host ip

如果这返回类似这样的内容,那么您就知道您的 rDNS 正在工作。

ip.in-addr.arpa domain name pointer example.com

启用 vhost

有几种方法可以使用给定的主机名连接到服务器。一种是使用带有 -host 参数的 'server' 命令,如下所示

/server -host example.com irc.libera.chat

另一种方法是使用 'set' 命令设置您的主机名 (vhost),这会将您的主机名保存到 ~/.irssi/config

/set hostname example.com
/save
/server irc.libera.chat

参见