ZNCでISO-2022-JPなサーバの日本語チャンネルを登録する方法

注意

この方法はイケてないです。
きっと正しいやり方が他にあると思ってるんですけど、ちょっと見た感じでは見当たらなかったので、知ってる方がいたら教えてくれると嬉しいです。

ZNCについて

ZNC

上記リンクを見ていただくのが早いですね。
IRC bouncerの一つで、これをサーバで走らせておくことで、チャンネルに常駐してログをとったりできるわけです。

問題になったパターン

今回問題になったのは、IRCNet-JPなどの文字コードISO-2022-JPのネットワークでチャンネル名が日本語の場合。
ZNCではznc.confにjoinするチャンネル名の一覧が記載されますが、ここに日本語チャンネル名をそのまま書くと文字化けします。
ZNCはUTF-8でチャンネル名を解釈しているので、文字化けするのは当然ですが、ではどうやって日本語名のチャンネルにjoinするか、という問題が出てきます。

対応方法

以下のコマンドとモジュールを組み合わせて対応しました。

Enablechan

これはIRCクライアントからZNCに新たなチャンネルへjoinしてもらうためのコマンドです。
これを使うことで文字化けせずに正しく日本語名のチャンネルにjoinできます。
(もちろんIRCクライアント側での文字コードの設定が正しいことが前提です)

SaveConfig

SaveConfigは、IRCクライアント側での設定をznc.confに反映させるためのコマンドです。
Enablechanで目的のチャンネルにjoinしてSaveConfigすることで、znc.confに反映させよう、という目論みです。

が、この方法では上手くいきません。
なぜなら、SaveConfigがチャンネル情報をznc.confに反映させないからです。

chansaver

そこで、chansaverというモジュールを導入します。
これを使えばチャンネル情報がznc.confに反映されます。

まとめ

つまり、chansaver→Enablechan→SaveConfigでznc.confに目的のチャンネルを追加することができるのです。
もちろん、その結果として、znc.confには文字化けしたチャンネル名が記録されてしまいますが、この状態でZNCを再起動しても、問題なくそのチャンネルにjoinできます。

たとえばtiarraでは接続するサーバごとに文字コードを設定できたので、ZNCでも同様の設定ができればなあ、と思うのですがそれっぽいのが見当たらず……。

charsetモジュールが解決してくれそうな気がしましたが、試しに使ってみても上手く文字化けが解消されませんでした。使い方が悪いのかな……。