ホーム > タグ > IRC Gateway

IRC Gateway

[ PHP ] IRC Gatewayでも作ってみようか(調査)

PHPです。
CakePHP勉強会で触発されたわけではありませんYO!!

何かというと、PHP製IRC Gatewayですね。
Perlはplumを始めいろいろとありますし、Rubyはnadokaがある。 PHPないじゃん!
PHPerとしてIRCしてる以上、どうせなら自分でメンテもしやすいであろうPHP製がいいよ、たぶん。 楽しそうだし。

で、調べてみたこと。

  • PEARにNet_SmartIRCというIRC Botライブラリがある(これは前から知ってた、というか使ってる)。
  • 過去のバージョンにはircg(IRC Gateway)という関数もあった。
  • ※ この関数はPECLに移動したというマニュアル記事を見かけたが現在はないようである。 さらにircgは商用を視野にいれたものがあるようだが、事実上開発はストップ。 対応バージョンもPHP 4.2.x/4.3.xだけで、さらにいうとソースコードも未公開である。

    とりあえずこんだけ。
    「作ってみようか」になったのはircgが使い物にならないから至ったわけです、はい。 思いつきです。 そのうち頓挫するかもしれません。

    で、Gatewayなんて(当然ですが)作ったことがない。
    IRCの仕様すらよく知らない。 以前にRFC読んだことあるけど斜め読み。
    のでNet_SmartIRCのソースコードを読んでみる。 接続まででわかったこと。

  • PHPのsocket_*でソケットを張ったり切ったり。
  • コマンドを送るにはsocket_write()を使っているだけ。
  • どうもこれだけらしい。 やり方(IRCのネットワークまでの接続方法)さえわかれば誰でも作れますね、Net_SmartIRC.(いや、全部見てないけど、接続さえしてしまえばあとはたぶんコマンド投げるだけっしょ?)

    調べたここまでです。
    ここまでをまとめると、「無人Botは簡単」

    現時点で懸念してるのは、まずここまででログの取得やメンバーの取得なんかはできそうなことがわかったが、問題はIRC Server< -> Gatewayではなくて、Gateway< -> Clientです。
    どうやるんだー!? まったくわかりません。
    たぶんGatewayは、Clientから送られてきたコマンドをただIRC Serverに流すだけだと思うけど・・・合ってるかな。 まったく予想がつかない。
    そういえば、LimeChatには送受信コマンド一覧表示とかっていう機能があった気がしてきた。 あとで調べておこう。

    まぁ、フェイドアウト間違いなしですが追い込むためにPOSTしてみましたとさ。 今日はここまで。

    Home > Tags > IRC Gateway

    Search
    Feeds
    Meta

    Return to page top