HackENTのネットワークロギングをIRCに出力するnadokaプラグイン

持ち込みカラオケシステム女医ハックの核をなすアプリケーション*1のHackENT。これにはHTTP経由で、現在歌っている曲の情報を送信する機能があります。マニュアルにはネットワークを利用した機能を使うのページで「ネットワークを利用したロギング」として紹介されています。

詳しい機能としては、指定されたURLの後に以下のような文字列をURLエンコードしてGETアクセスするものです。

[NowHacking] キミに届け / ふじのマナミ / pop'n music 7 CS / 伊勢 : '癒される名曲。'

このログは主な用途として、IRCボット(あるいはIRCプロクシ)という常駐プログラム経由でこのままIRCへ流して使うことが想定されているのですが、僕の使っている nadoka というRubyで書かれたIRCボットにはそういった機能がなさそうだったので、nadoka 標準添付のWebAという、HTTP経由でIRCに参加できるプラグインを改良して試験実装してました。

で。大阪で女医ハックがあったのですが、その際ずっとメインでホストしてくれてるやねしんさんMacBookが不調に。急遽僕が代打で僕がホストをすることになり、思いかけず実地デバッグができたので載せてみます。

WebA からの変更点は、HTTP GETでの機能を一度ばっさり削除して、 mes パラメータで入ってきた文字列をJISエンコードした後、設定されたチャンネルに NOTICE するようにしたのと、パラメータの調整です。オリジナルは nadoka の配布アーカイブの中に入ってます。

設定方法

http://half-done.net/bin/hddown.php?domain=iseebi&file=hackmessage.nb をダウンロードして、お手持ちの nadoka の plugins フォルダに入れてください。

次に、hackmessage.nb のヘッダを参考に、BotConfig に HackMessage の設定を追加して、nadoka の設定をリロードしてください。

nadoka の設定がうまくいったら、HackENTの環境設定「HTTP設定」の「再生中の曲情報をサーバに送る」にチェックをいれ、クエリ欄に以下のように入力します。

http://[:idの内容]:[:passwdの内容]@[サーバーのホスト名]:[:portの内容]/[:entryの内容]/?mes=

これで HackENT に予約を入れると、設定したチャンネルにNowHackingのメッセージが流れるようになります。

nadoka を動かしてるマシンでApacheが動いてて、そのマシンでは80番ポート以外あけたくない場合は、Apache に以下の設定を加えるといいでしょう。


ProxyPass /[:entryの内容]/ http://127.0.0.1:[:portの内容]/[:entryの内容]/

注意点

WebA や HackMessage などの、WEBrick を使うプラグインを利用した場合は、nadoka を起動したシェルは閉じてはいけないようです。僕はサーバー機のtty2で立ち上げてほったらかす方法をとっています。

なんかほかに方法もありそうだけど、できてるのでもうこのままにしてます。

*1:というか女医ハックそのもの?