InspIRCdをいじり中。
このサーバはすごく綺麗に作られていて、拡張も考慮されています。
それ以外にも、epoll、kqueueとかにも対応していて、
大量の接続もさばけるようになっています。
たとえば、過去ログをログインした時に/NOTICEで送って欲しければ、
src/modules以下に、m_kakolog.cppというファイルを作って、
Moduleクラスを継承したクラスで、
OnUserMessageをオーバーライドして、
/PRIVMSG,/NOTICEが飛んできたら、発言を保存するSQLを発行。
OnUserJoinをオーバーライドして、
過去ログを/NOTICEとしてがばっと送る。
というのをとりあえず作ってみた。
基本は、src/modules/extra/m_sqllog.cppが
IRC全体での各種動きを保存するモジュールとなっているので、
これをパクれば、2時間くらいでできました。
あとは、SQLもAPIとして標準化されている(ついでに、非同期に動きます)ので、
MySQL,Psql,sqlite3であれば、コードを書き換えることなく使えます。
(m_sqlv2.so,m_sqlutils.soを有効にする必要アリ。)
うわぁ、楽しくなってきた!
仲間内IRCはこれをベースなおうちサーバに移行しようかしら。
bot置いておいて、過去ログとかAutoOperとかより
全然スマートにサーバサイドだけその手の処理ができる、ってのは良い気が。
こつこつと
0 件のコメント:
コメントを投稿