戻る

IRC: plum + liece

[更新履歴]

03/07/10 … 自動応答について。

常時接続回線&常時稼動マシンってーことで、Debian で IRC に常駐する。
ここでやりたい事は、以下の通り。
  1. 複数サーバに接続
    通常はWide系サーバに接続しているが、一部グループが孤立サーバ(?)から出てこないため。複数サーバに対応してないクライアントだと接続しても、操作性が激減する。
  2. ロギング&ログの一元管理
    lieceだけで出来るかどうかわからんかった。また、複数のマシンから接続すると、ログファイルが各マシンに散乱するため。
  3. IRCサーバから見たクライアントを1箇所に集中
    …タイトル(?)をうまく表現できん(^_^; まぁ、Debianからつなごうが、Windowsからつなごうが、同時につなごうが、サーバから見て区別がつかないようにする。
  4. リモートから接続可能
    上の続きだけど、リモートから接続した際も、外からわかんなくなる。多分セキュリティが激減するけど(^_^;
2 〜 4 に関しては、madokaでも可能だけど、1 に関しては、plumじゃないと無理(っぽい)
ちなみに、公式サイト(?)には、あまり詳しいドキュメントはない。。。
なお、このドキュメントもかなり手抜きです。。。

インストール

apt
# apt-get install plum
# apt-get install liece
手抜き。。。?

設定

1. plum
$ mkdir ~/.plum
$ cd ~/.plum
$ cp /usr/share/doc/plum/examples/plum-default.conf plum.conf
$ emacs plum.conf   (viでもいいけど)
だいたい次のよーな感じ(抜粋)
plum.kanji: jis,euc
plum.nick: nick
plum.user: user name
plum.server: irc.fujisawa.wide.ad.jp:6667
plum.server: irc.kyoto.wide.ad.jp:6660,6661,6662,6663,6664,6665,6666,6668,6669
plum.server: irc.tokyo.wide.ad.jp:6660,6661,6662,6663,6664,6665,6666,6668,6669
plum.client: *:port password

# サーバに接続したときに指定したチャンネルに入る
+ channel/join/connect.plm
channel.join.connect.channel: #チャンネル1
channel.join.connect.channel: #チャンネル2

# 招待されたチャンネルに入る
+ channel/join/invite.plm
channel.join.invite.mask: *!*@* #チャンネル1
channel.join.invite.mask: *!*@* #チャンネル2

# チャンネルオペレータを復帰する
+ channel/mode/oper/get.plm

# 特定の人をチャンネルオペレータにする
+ channel/mode/oper/set.plm
channel.mode.oper.set.delay: 0
channel.mode.oper.set.mask: +nick1*!*username1@*.hoge.ne.jp #チャンネル1
channel.mode.oper.set.mask: +nick2*!*username2@*.hoge.ne.jp #チャンネル1
channel.mode.oper.set.mask: +nickA*!*usernameA@*.hoge.ne.jp #チャンネル2
channel.mode.oper.set.mask: +nickB*!*usernameB@*.hoge.ne.jp #チャンネル2

# チャンネルを作成したときにチャンネルモードを設定する
+ channel/mode/set.plm
channel.mode.set.mode: #チャンネル1 +sn
channel.mode.set.mode: #チャンネル2 +sn

# クライアントとの入出力で漢字コードを変換する
+ client/kanji.plm
client.kanji.input: jis

# メッセージをチャンネルごとのログとして保存する
+ log/channel.plm
log.channel.directory: ~/.plum/log
log.channel.file: channel1/%Y%m%d.txt;euc #チャンネル1
log.channel.file: cnannel2/%Y%m%d.txt;euc #チャンネル2
log.channel.header: %H:%M:%S
log.channel.mode: 0644
log.channel.command: privmsg,join,part,kick,invite,mode,nick,quit,topic,notice
(前はsjisにしてたけど、ktermでgrepが使えるeucの方がいいかも)

# クライアントを接続したときに最近のメッセージを送る
+ log/recent.plm
log.recent.header: %H:%M
log.recent.line: 50
log.recent.command: privmsg,join,part,kick,invite,mode,nick,quit,topic,notice

# plumをバックグラウンドで実行する
+ sys/background.plm

# plum.confが変更されると自動的に読み込み直す
+ sys/conf/update.plm

# 複数のサーバを単一のサーバのようにエミュレートする
+ sys/multicast.plm

# クライアントとの接続状態によってAWAYを設定する
+ user/away/client.plm
user.away.client.set: No connection IRC-Clients

# ニックネームを変更するとそれに対応するAWAYを設定する
+ user/away/nick.plm
user.away.nick.set: nick_slp,nick_zzz 寝た
user.away.nick.set: nick_bz,nick_buzy 忙しい
上記のような設定ファイルを、接続するサーバ毎(チャンネル毎じゃないぞ)に用意する。ここで、ポート番号は同じにしておき、"sys/multicast.plm"を有効にしておく。んで、IRCクライアントから、このホストの指定ポート番号へ接続すれば、各サーバのチャンネルが、同一サーバ(のように見えて)として接続できる。なお、FWでポートを空けていれば、外からも接続可能(そりゃそーだ)。

メインの設定ファイル(私の場合はWide系)を plum.conf、某孤立サーバを plum-hoge.conf とした場合は、.plum に移動し、以下のように実行する。たぶん。
$ cd .plum
$ plum hoge

2. liece
$ mkdir ~/.liece
$ cd ~/.liece
$ cp /usr/share/doc/liece/examples/init.el .
$ emacs init.el
変更点↓
(setq liece-server '(:host "localhost" :service Port))

(setq liece-beep-words-list '("keyword"))
ほとんどデフォルトだな。。

自動応答

7/10追記

誰かの特定の発言に対して、自動応答する設定。特に意味はない。つか、ドキュメント参照
+ auto/response.plm
 auto.response.file: response.txt
で、plum.conf と同じディレクトリに"response.txt"を用意する。
$ cat response.txt
pattern: (腹|はら)(へった|減った)
rate: 50
response: たしとけ          ┐(´.`)┌
response: たしなさい          ┐(´.`)┌

pattern: ^しまった
rate: 50
response: あけとけ          ┐(´.`)┌
response: あけなさい          ┐(´.`)┌
こんな感じ。全角文字を使う場合は、jisコードにする。

pattern: … どの発言に反応するか。正規表現可。例はハラが減ってそーな発言に反応
rate: … その発言に対して、どの割合で反応するか。例は全て50%
response: … こちらからの発言。例は減ったハラを足すように指示(くだらん) 複数行で選択肢を増やせる。

くれぐれも、「あきらかに自動応答である」ことがわかるよーにしておくこと(^^;