Irssi
Irssi 是一个模块化的、基于 ncurses 的 IRC (Internet Relay Chat) 客户端。它还通过插件支持 SILC 和 ICB 协议。
安装
安装 irssi 软件包。
AUR 中提供了一些脚本,位于 irssi-script 以及 Irssi 脚本仓库 中。
用法
详细介绍请参阅 官方文档。
建议使用 终端复用器,例如 tmux 或 GNU Screen。它允许用户轻松地断开并重新连接到会话,而且像 nicklist.pl 这样的脚本依赖于辅助窗口。要启动 irssi,请运行
$ irssi
另请参阅 irssi(1)。
命令
Irssi 命令以斜杠开头且不区分大小写。支持 Tab 补全。您可以通过内置的 /help 页面了解相关命令,这些页面也 在网上提供。
| 命令 | 描述 |
|---|---|
| /help | 列出所有命令或描述给定命令。 |
| /network | 管理您的 IRC 网络。 |
| /server | 管理您的 IRC 服务器。 |
| /connect | 连接到服务器或网络。 |
| /disconnect | 关闭当前与服务器的连接。 |
ALT+(1-0,q-p,等)
|
切换当前活动窗口。Ctrl+n 循环到下一个窗口,Ctrl+p 循环到上一个窗口。 |
| /window | 管理您的 irssi 窗口。 |
| /layout | 保存或删除您的窗口配置。 |
| /statusbar | 管理状态栏。 |
| /set | 查看或更改设置。 |
| /alias | 管理您的别名。 |
配置
Irssi 将其默认配置安装在 /etc/irssi.conf,如果 ~/.irssi/config 不存在,则将其复制到该位置。默认配置包含多个服务器、聊天网络和频道。您可以使用 --config 标志使用备用配置文件启动 irssi。
- 您可以使用
/save将当前配置保存到配置文件中。 - 您可以通过输入
/layout save来保存当前打开窗口的位置
使用 SASL 进行身份验证
Irssi 支持 简单身份验证和安全层 (SASL)。
您可以按照以下方式添加具有 SASL 机制的网络
/SERVER ADD -auto -tls -tls_verify -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 (SASL 身份验证成功) 提示。
启动时自动连接到 #archlinux
启动 Irssi 然后在其中输入以下内容
/server add -auto -network liberachat irc.libera.chat
liberachat 可以替换为任何您喜欢的词,例如常用的缩写 lc。
确保 SASL 配置正确。您可以使用 -autosendcmd 手动使用 NickServ 而不是 SASL,但这在自动加入频道时会导致竞态条件。如果需要,可以使用 SSL 证书而不是使用 NickServ 密码进行身份验证。
/channel add -auto #archlinux liberachat /channel add -auto #archlinux-offtopic liberachat
TLS 连接
客户端证书
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 指纹写入标准输出。如果您需要 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
在 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
虚拟主机名 (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
参见
- 官方网站
- 官方 Irssi 脚本仓库
- 设置 Irssi
- Matt Sparks 编写的 高效使用 Irssi 和 screen 指南
- Jason Ryan 编写的 使用 dzen2 实现 IRC 通知
- Aaron Toponce 编写的 Irssi 的 /channel, /network, /server 和 /connect —— 它们的含义
- 极棒的 Wiki Irssi 技巧 (Wayback Machine)
- irssi systemd unit GitHub gist