Irssi
Irssi 是一个模块化的、基于ncurses的IRC(Internet Relay Chat)客户端。它还通过插件支持SILC和ICB协议。
安装
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支持Simple Authentication and Security Layer(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中使用带昵称列表的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的窗口并运行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。这尤其包括您的主机支持使用反向DNS查找(rDNS),并且使用指针记录(PTR)。此外,您应该在/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 – 含义
- (Wayback Machine)awesome Wiki Irssi技巧
- irssi systemd unit GitHub gist