plagger-irc-bot でちょっとハマった
現在新規プロジェクトの立ち上げ中で、Trac とか SVN とか設定しているところなんですが、Trac の RSS を社内 IRC に投げるところでちょっとハマったのでメモ。
前提
を参考に設定済み。変更点は plagger-bot の名称が plagger-ircbot に変わっていたことくらい。
IRC の雑談用チャンネルに、社内 Wiki の更新情報等が流れるようになってたりします。
やったこと
上記 URL の irc.yaml は、YAML 中にひとつの IRC チャンネルしか指定できないので、プロジェクト毎に .yaml ファイルを作成してやる必要がある。
なので、irc.yaml を irc-hoge.yaml みたいな名前でコピーして、
- url: <RSSフィードのURL>
daemon_port: 9999
nickname: <IRCのbotの名前>
- <ircチャンネルの名前>
この 4 行だけ書き換えてやれば OK!
・・・と思いきや、こんな感じで接続エラーに。
# ./bin/plagger-ircbot -c /etc/plagger/irc-hoge.yaml [msg] loading configuration /etc/plagger/irc-hoge.yaml [msg] creating daemon component [msg] creating irc component [msg] creating kernel session [msg] starting irc session [msg] starting the kernel [msg] attempting to connect to server [err] reconnect: xxx.xxx.xxx.xxx
特に疑わしい設定もないし、複数起動すると問題あったりするのかなー?とググってみるけど、それらしい記述はなし。IRC サーバ側でコネクション数とか制限してんじゃね?と疑って設定を変えてみたりもしたけど、こちらも効果なし。
原因特定
めげずに IRC の設定ファイル(ngircd.conf)を眺めてると、こんな記述が目に入って。
# Maximum length of an user nick name (Default: 9, as in RFC 2812). # Please note that all servers in an IRC network MUST use the same # maximum nick name length! ;MaxNickLength = 9
nickname の最大文字数って 9 文字?新しい設定ファイルは feeder_hoge みたいな nickname にしてるから、9 文字超えてるよ!
と、feeder2 みたいな名前に変更して再度 plagger-ircbot を起動すると・・・あっさり接続できました。
もっと早く原因を特定するには
妙に時間食っちゃったけど、エラーメッセージがわかりにくいのが原因なわけで。
デバッグメッセージを出力する方法はないのかな?と plagger-ircbot のソースを覗いてみると、$ENV{DEBUG} を参照している箇所があるっぽい。環境変数を設定してやればより詳細なエラーが拾えるのかな。
ということで、試してみると・・・
# env DEBUG=1 ./bin/plagger-ircbot -c /etc/plagger/irc-hoge.yaml [msg] loading configuration /etc/plagger/irc-hoge.yaml [msg] creating daemon component [msg] creating irc component [msg] creating kernel session [msg] starting irc session [msg] starting the kernel [msg] attempting to connect to server [err] unhandled irc_registered [err] - POE::Component::IRC=HASH(0x9dc1ec8) [err] unhandled irc_connected [err] - xxx.xxx.xxx.xxx [err] unhandled irc_isupport [err] - POE::Component::IRC::Plugin::ISupport=HASH(0x9dd367c) [err] unhandled irc_432 [err] - irc.the.net [err] - feeder_hoge :Erroneous nickname [err] - ARRAY(0x9ddbe54) [err] reconnect: xxx.xxx.xxx.xxx
ちゃんとエラーが拾えてました。今度から plagger-ircbot 周りでハマったら、まずこれを試そう。