1# -*- tiarra-conf -*-
2# -----------------------------------------------------------------------------
3# $Id: all.conf.in 36552 2010-01-27 14:53:29Z drry $
4# -----------------------------------------------------------------------------
5# tiarra.conf サンプル
6# このファイルにはすべてのブロックの解説があります。
7# 必要なブロックがあればここからコピーしていってください。
8# -----------------------------------------------------------------------------
9
10# -----------------------------------------------------------------------------
11# generalブロック
12#
13# tiarra.conf自身の文字コードやユーザー情報などを指定するブロックです。
14# -----------------------------------------------------------------------------
15general {
16  # tiarra.conf自身の文字コード
17  # コード名はjis,sjis,euc,utf8,utf16,utf32等。(この値はEncodeまたはUnicode::Japaneseにそのまま渡されます)
18  # autoが指定された、または省略された場合は自動判別します。
19  conf-encoding: utf8
20
21  # ユーザー情報
22  # 省略不能です。
23  nick: tiarra
24  user: tiarra
25  name: Tiarra the "Aeon"
26
27  # どのようなユーザーモードでログインするか。+iwや+iのように指定する。
28  # 省略された場合はユーザーモードを特に設定しない。
29  #user-mode: +i
30
31  # Tiarraへの接続を許可するホスト名を表わすマスク。
32  # 制限をしないのであれば"*"を指定するか省略する。
33  client-allowed: *
34
35  # Tiarraが開くポート。ここに指定したポートへクライアントに接続させる。
36  # 省略されたらポートを開かない。
37  tiarra-port: 6667
38
39  # Tiarraがポートtiarra-portを開く際、IPv6とIPv4のどちらでリスニングを行なうか。
40  # 'v4'または'v6'で指定します。デフォルトは'v4'です。
41  # IPv6を使うためにはSocket6.pmが利用可能である必要があります。
42  #tiarra-ip-version: v4
43
44  # Tiarraがポートtiarra-portを開く際のローカルアドレス。
45  # 意味が分からなければ省略して下さい。
46  # デフォルトは、IPv4のはINADDR_ANY、IPv6のはin6addr_anyになります。
47  #tiarra-ipv4-bind-addr: 0.0.0.0
48  #tiarra-ipv6-bind-addr: ::0
49
50  # Tiarraにクライアントが接続する際に要求するパスワードをcryptした文字列。
51  # 空の文字列が指定されたり省略された場合はパスワードを要求しない。
52  # crypt は ./tiarra --make-password で行えます。
53  tiarra-password: xl7cflIcH9AwE
54
55  # 外部プログラムからTiarraをコントロールする為のUNIXドメインソケットの名前。
56  # 例えば"foo"を指定した場合、ソケット/tmp/tiarra-control/fooが作られる。
57  # 省略された場合はこの機能を無効とする。
58  # また、非UNIX環境ではそもそもUNIXドメインソケットが利用可能でないため、
59  # そのような場合にもこの機能は無効となる。
60  #control-socket-name: test
61
62  # IRCサーバーから送られる文字のコードと、IRCサーバーへ送る文字のコード。
63  # それぞれ省略された場合はjis。
64  server-in-encoding: utf8
65  server-out-encoding: utf8
66
67  # クライアントから受け取る文字のコードと、クライアントへ伝える文字のコード。
68  # それぞれ省略された場合はjis。
69  client-in-encoding: utf8
70  client-out-encoding: utf8
71
72  # Tiarraは標準出力に様々なメッセージを出力するが、その文字コードを指定する。省略時にはutf8となる。
73  # ただしtiarra.confのパースが完了するまでは文字コードの変換は行なわれない(つまりこの設定が有効にならない)ことに注意して下さい。
74  stdout-encoding: utf8
75
76  # Tiarraはエラーメッセージを標準出力に出力するが、その時に接続しているクライアントがあればクライアントにもNOTICEで送る事が出来る。
77  # この値を1にすると、その機能が有効になる。省略するか0を指定するとこの機能は無効になる。
78  notice-error-messages: 1
79
80  # Tiarraでチャンネルとユーザーのマスクを指定するときの形式。
81  # plum形式とTiarra形式が選択できます。
82  #-----------------
83  # plum形式: (channelには+や-は使えない。channelは省略すると*とみなす。)
84  #   + syntax: user[ channel[ channel[ ...]]]
85  #
86  #  mask: +*!*@*.example.com #{example}@ircnet +{example3}@ircnet
87  #  mask: -*!*@*.example.com #{example2}@2ch,+{example4}@2ch
88  #  mask: -*!*@*
89  #-----------------
90  # Tiarra形式: (channelにも+や-を使える。)
91  #   + syntax: channel user
92  #
93  #  mask: #{example}@ircnet,-#{example2}@2ch    +*!*@*.example.com
94  #  mask: ++{example3}@ircnet,-+{example4}@2ch  +*!*@*.example.com # +で始まるチャンネル。
95  #  mask: *                                     -*!*@*
96  #-----------------
97  # となります。この二つはまったく同じマスクを表しています。
98
99  # この値をplumにすると、plum形式、省略するかtiarraを指定すると、Tiarra形式になります。
100  chanmask-mode: tiarra
101
102  # サーバーに接続する際、ローカル側のどのアドレスにバインドするか。
103  # 意味が分からなければ省略して下さい。
104  # デフォルトは、IPv4のはINADDR_ANY、IPv6のはin6addr_anyになります。
105  #ipv4-bind-addr: 0.0.0.0
106  #ipv6-bind-addr: ::0
107
108  # Tiarra が、 001 や 002 や、 recent log を送信するときなどに使う prefix
109  # を指定します。 hostname や FQDN っぽいものを指定すると良いかもしれません。
110  # デフォルトは tiarra です。普通変える必要はありません。
111  #sysmsg-prefix: tiarra
112
113  sysmsg-prefix-use-masks {
114    # sysmsg-prefix を使用する場所を指定する。
115
116    # システムメッセージ(NumericReply など)。デフォルトは * です。
117    # ふつうこれを変更する必要はありません。
118    system: *
119
120    # 個人宛メッセージ(Notice,Privmsg の中で)。デフォルトはなし。
121    #priv:
122
123    # チャンネル宛メッセージ(Notice,Privmsg の中で)。デフォルトは * です。
124    # Ziciz などのクライアントを接続する場合は、
125    # -*::log を指定しておくといいかもしれません。
126    channel: *
127  }
128
129  # Tiarra が nick 変更時の衝突等を処理するモードを指定します。
130  # 0: Tiarra が接続時と同様に自動処理します。
131  # 1: クライアントにそのまま投げます。
132  #    複数のクライアントが nick 重複を処理する場合は非常に危険です。
133  #    (設定不足の IRC クライアントが複数つながっている場合も含みます)
134  # 2: 対応するエラーメッセージ付きの NOTICE に変換して、
135  #    クライアントに投げます。
136  # multi-server-mode 時のデフォルトは 0 、 single-server-mode 時のデフォルトは 1 です。
137  #nick-fix-mode: 0
138
139  # Tiarra がチャンネルに join する際の挙動を設定します。
140  # デフォルト設定で Excess Flood になってしまう場合に設定してください。
141  #
142  # irc.juggler.jp (2ch@IRC) にて 25 チャンネル以上 join している場合に
143  # Excess Flood になってしまった事例があるそうです。
144
145  # JOIN コマンドを送信する間隔 (秒)
146  # デフォルトは1秒です。
147  join-interval: 1
148
149  # 一つの JOIN コマンドで指定するチャンネルの数
150  # デフォルトは5チャンネルです。
151  join-channels-per-command: 5
152
153  messages {
154    # Tiarra が使用する、いくつかのメッセージを指定する。
155
156    quit {
157      # ネットワーク設定が変更され、再接続する場合の切断メッセージ
158      netconf-changed-reconnect: Server Configuration changed; reconnect
159
160      # ネットワーク設定が変更され、切断する場合の切断メッセージ
161      netconf-changed-disconnect: Server Configuration changed; disconnect
162    }
163  }
164}
165
166# -----------------------------------------------------------------------------
167# networksブロック
168#
169# Tiarraから接続するIRCネットワークの名称です。
170# 一つも定義しなかった場合やこのブロックを省略した場合は、
171# "main"というネットワークが一つだけ指定されたものと見做します。
172# -----------------------------------------------------------------------------
173networks {
174  # 複数のサーバーへの接続を可能にするかどうか。1(オン)と0(オフ)で指定。
175  # これを1にすると、次のnameを複数個定義する事が可能になり、
176  # 複数のサーバーに同時に接続出来るようになります。
177  # その一方、これを1にしている時は、チャンネル名にネットワーク名が付加される等、
178  # IRCの大部分のメッセージがTiarraによる改変を受けます。
179  # これを0にしている間は、次のnameを複数個定義する事は出来なくなります。
180  # マルチサーバーモードの設定を起動中に変えると、クライアントから見たチャンネル名が
181  # 変更になる為、全クライアントが一時的に全てのチャンネルからpartしたように見え、
182  # その直後にjoinし直したように見えます。
183  # デフォルトでは1です。
184  multi-server-mode: 1
185
186  # 接続するIRCネットワークに名前を付けます。この名前は後で使用します。
187  # 複数のネットワークに接続したい場合は多重定義して下さい。
188  name: ircnet
189  name: 2ch
190  #name: freenode
191  #name: ustream
192
193  # 通常Tiarraではチャンネル名を「#Tiarra@ircnet」のように表現します。
194  # これはネットワークircnet内の#Tiarraというチャンネルを表わします。
195  # @以降は省略可能ですが、省略された場合のデフォルトのネットワーク名をここで指定します。
196  # 省略した場合は最も始めに定義されたnameがデフォルトになります。
197  # (そしてnameが一つも無かった場合はmainがデフォルトになります)
198  #default: ircnet
199
200  # 上に述べた通り、デフォルトではTiarraはチャンネル名とネットワーク名を@で区切ります。
201  # この区切り文字は任意の文字に変更する事が出来ます。省略された場合は@になります。
202  #
203  # System::PrivTranslator モジュールを利用している場合、 prefix の nick 部分にも
204  # 利用されます。そのため、 ! や @ を含む文字列を利用するとクライアントが誤作動する
205  # 場合がありますので注意してください。
206  channel-network-separator: @
207
208  # 接続先のサーバーから切断された時に、joinしていたそのサーバーのチャンネルをどうするか。
209  # 1. "part-and-join"の場合は、切断されるとクライアントにはチャンネルからpartしたように見せ掛け、
210  #    再接続に成功すると再びjoinしたように見せ掛ける。最も負荷が高い。(これはplumに似た動作である)
211  # 2. "one-message"の場合は、切断されるとクライアントに宛ててTiarraがNOTICEでその旨を報告する。
212  #    再接続に成功すると再びNOTICEで報告する。JOINやPARTはしないので、
213  #    クライアントからはまだそのチャンネルに残っているかのように見える。
214  # 3. "message-for-each"の場合は、切断されるとクライアントに宛ててTiarraが
215  #    到達不能になった全てのチャンネルにNOTICEでその旨を報告する。
216  #    再接続に成功すると再びNOTICEで報告する。JOINやPARTはしない。
217  # 省略時のデフォルトはpart-and-joinです。
218  action-when-disconnected: message-for-each
219
220  # NICKを変更する度に、変更したサーバーでの新しいNICKをNOTICEで常に通知するかどうか。
221  # 1なら必ず通知し、0なら変更後のnickがローカルnick(クライアントが見る事の出来るnick)と違っている場合のみ通知する。
222  # デフォルトは0です。
223  always-notify-new-nick: 0
224
225  fixed-channels {
226    # Tiarra がクライアント接続時にチャンネル情報を送る順番を指定する。
227    # マッチしなかったチャンネルについては最後にまとめて
228    # (順番がごちゃごちゃになって)送られてきます。
229    channel: #てすとちゃんねる@ircnet
230    channel: #てすと@localserver
231    channel: *@localserver
232    channel: *@localserver:*.jp
233  }
234}
235
236# -----------------------------------------------------------------------------
237# 各ネットワークの設定
238#
239# networksブロックで定義した全てのネットワークについて、
240# そのアドレス、ポート、(必要なら)パスワードを定義します。
241# -----------------------------------------------------------------------------
242ircnet {
243  # サーバーのホストとポートを指定。複数行可。(host/port が指定されていない場合は)省略不可。
244  # 同じサーバの複数のポート指定は順番に試すので、大量に書かない方がよい。
245  server: irc.ircnet.ne.jp 6667
246  server: irc.media.kyoto-u.ac.jp 6662 6663
247  server: irc.huie.hokudai.ac.jp 6667
248
249  # サーバーのホストとポート。(server が指定されていない場合は)省略不可。
250  # server を指定した場合は server が優先されます。
251  #host: irc.media.kyoto-u.ac.jp
252  #port: 6663
253
254  # general/userで設定したユーザ名を使わずに、各ネットワークで独自のユーザ名を使用する事も可能。
255  # 省略されたら当然、general/userで設定したものが使われる。
256  #user: hoge
257
258  # general/nameで設定した本名(建前上)を使わずに、各ネットワークで独自の本名を使用可能。
259  #name: hoge
260
261  # このサーバーの要求するパスワード。省略可能。
262  #password: hoge
263
264  # general/setver-in/out-encodingで設定した文字のコードを使わずに、
265  # 各ネットワークで独自の文字コードを使用する事も可能。
266  # 省略されたら当然、generalで設定したものが使われる。
267  in-encoding: jis
268  out-encoding: jis
269
270  # general/(ipv4|ipv6)bind-addrで設定したローカルアドレスを使わずに、
271  # 各ネットワークで独自のbind_addrを使用する事も可能。
272  # 省略されたらgeneralで設定したものが使われる。
273  #ipv4-bind-addr: 0.0.0.0
274  #ipv6-bind-addr: ::0
275}
276
2772ch {
278  server: irc.2ch.net 6667
279  server: irc2.2ch.net 6667
280  server: irc.juggler.jp 6667
281
282  in-encoding: jis
283  out-encoding: jis
284}
285
286freenode {
287  server: chat.freenode.net 6667
288
289  # freenodeではパスワードとして「アカウント パスワード」のように、
290  # アカウントに空白とパスワードを続けたものを指定することで、
291  # NICKコマンドの前の接続の段階でidentifyすることができるため、
292  # nickの重複や異なるnick等、nickとは無関係に自動identifyが可能。
293  #password: account secret
294}
295
296ustream {
297  server: chat1.ustream.tv 6667
298
299  # Ustreamのloginをnickとuserに指定する。
300  #nick: ustreamer
301  #user: ustreamer
302
303  # Ustreamのパスワードを指定する。
304  #password: secret
305}
306
307# -----------------------------------------------------------------------------
308# 必須の設定は以上です。以下はモジュール(プラグイン)の設定です。
309# -----------------------------------------------------------------------------
310
311# +または-で始まる行はモジュール設定行と見做されます。
312# +で記述されたモジュールが使用され、-で記述されたモジュールは使用されません。
313# +や-の後の空白は幾つあっても無視されます。
314
315#   メッセージが各モジュールを通過する順番は、このconfファイルで記述された
316# 順番の通りになります。ログを取るモジュールなどはconfでも後の方に
317# 記述した方が良いということになります。
318
319#   モジュール名はperlのそれと同じようにディレクトリ区切り文字を「::」としたパスで表現されます。
320# 例えばモジュールChannel::Auto::Operの実体はファイルmodule/Channel/Auto/Oper.pm
321# でなければならず、そのpackage宣言もChannel::Auto::Operでなければなりません。
322#   Tiarraモジュールの名称は、perl標準モジュール群やmain/下の.pmファイルと重複しないように
323# 気を付けて下さい。Tiarraはモジュールが本当にModuleのサブクラスかどうかをチェックするので
324# 例えばIO::Socket::INETといったモジュールを置いても誤動作はしませんが、
325# そのようなモジュールはロード時にエラーを出して使用中止になります。
326
327# 一つのモジュールを複数回定義して、何度も同じモジュールをメッセージが通過するようには出来ません。
328
329# 幾つかのモジュールはパラメータとしてチャンネル名を必要とします。
330# ここで指定するチャンネル名は、ネットワーク名も含めた文字列でなければなりません。
331# 「#チャンネル」では駄目で「#チャンネル@ネットワーク」などとする必要があります。
332
333# マスクの書式:
334# ['+' / '-'] ( <マスク文字列> / "re:" 正規表現 )
335# これはカンマで幾つでも継ぐ事が出来ます。"\,"でカンマそのものを表します。
336# 先頭が+なら、それに続く部分にマッチするものが選ばれ、-なら除外されます。省略されたら+と見做されます。
337# マスク文字列とは"*"で0文字以上の任意の文字列を、"?"で1文字の任意の文字列を表す文字列です。
338# 例:
339# tiarra*  これはtiarraで始まる文字列を表す。
340# +*!*tiarra@*.jp,-re:\d  これは*!*tiarra@*.jpにマッチして、かつ文字列中に数字を含まないものを表す。
341
342
343- Auto::Alias {
344  # ユーザエイリアス情報の管理を行ないます。
345
346  # エイリアスは基本的にname,userの二つのフィールドから成っており、
347  # それぞれユーザー名、ユーザーマスクを表します。
348
349  # エイリアス定義ファイルのパスと、そのエンコーディング。
350  # このファイルは次のようなフォーマットである。
351  # 1. それぞれの行は「<キー>: <値>」の形式である。
352  # 2. 空の行で、各ユーザーを区切る。
353  # 3. <値>はカンマで区切られて複数の値とされる。
354  #
355  # エイリアス定義ファイルの例:
356  #
357  # name: sample
358  # user: *!*sample@*.sample.net
359  #
360  # name: sample2,[sample2]
361  # user: *!sample2@*.sample.net,*!sample2@*.sample2.net
362  #
363  alias: alias.txt
364  alias-encoding: euc
365
366  # この発言をした人のエイリアスが登録されていれば、それをprivで送る。
367  confirm: エイリアス確認
368
369  # 「<addで指定したキーワード> user *!*user@*.user.net」のようにして情報を追加。
370  # 発言をした人のエイリアスが未登録だった場合は、userのみ受け付けて新規追加とする。
371  add: エイリアス追加
372
373  # 「<removeで指定したキーワード> name ユーザー」のようにして情報を削除。
374  # userを全て削除されたエイリアスは他の情報(name等)も含めて消滅する。
375  remove: エイリアス削除
376
377  # メッセージが追加されたときの反応を指定します。
378  # ランダムなメッセージを発言する際のフォーマットを指定します。
379  # エイリアス置換が有効です。#(nick.now)、#(channel)は
380  # それぞれ相手のnick、チャンネル名に置換されます。
381  # #(key)、#(value)は、追加されたキーと値に置換されます。
382  added-format: #(name|nick.now): エイリアス #(key) に #(value) を追加しました。
383  add-failed-format: #(name|nick.now): エイリアス #(key) の追加に失敗しました。
384
385  # メッセージが削除されたときの反応を指定します。
386  # added-formatで指定できるものと同じです。
387  removed-format: #(name|nick.now): エイリアス #(key) から #(value) を削除しました。
388  remove-failed-format: #(name|nick.now): エイリアス #(key) からの削除に失敗しました。
389
390  # エイリアスの追加や削除が許されている人。省略された場合は「*!*@*」と見做される。
391  modifier: *!*@*
392}
393
394- Auto::Answer {
395  # 特定の発言に反応して対応する発言をする。
396
397  # Auto::Aliasを有効にしていれば、エイリアス置換を行ないます。
398
399  # 反応する発言と、それに対する返事を定義します。
400  # エイリアス置換が有効です。#(nick.now)と$(channel)はそれぞれ
401  # 相手の現在のnickとチャンネル名に置換されます。
402  #
403  # コマンド: reply
404  # 書式: <反応する発言のマスク> <それに対する返事>
405  # 例:
406  #reply: こんにちは* こんにちは、#(name|nick.now)さん。
407  # この例では誰かが「こんにちは」で始まる発言をすると、
408  # 発言した人のエイリアスを参照して「こんにちは、○○さん。」のように発言します。
409  #
410  # コマンド: channel-reply
411  # 書式: <反応するチャンネルのマスク> <反応する発言のマスク> <それに対する返事>
412  # 例:
413  #channel-reply: #あいさつ@ircnet こんにちは* こんにちは、#(name|nick.now)さん。
414  # この例では#あいさつ@ircnetで誰かが「こんにちは」で始まる発言をすると、
415  # 発言した人のエイリアスを参照して「こんにちは、○○さん。」のように発言します。
416  #
417  # コマンド: answer-to-myself
418  # 書式: <真偽値>
419  # 例:
420  #answer-to-myself: on
421  # 自分の発言にも反応するようになります。
422  # デフォルトは off です。
423}
424
425- Auto::Calc {
426  # Perlの式を計算させるモジュール。
427
428  # 反応する発言を指定します。
429  request: 計算
430
431  # 使用を許可する人&チャンネルのマスク。
432  # 例はTiarraモード時。 [default: なし]
433  mask: * +*!*@*
434  # [plum-mode] mask: +*!*@*
435
436  # 結果が未定義だったときに置き換えられる文字列。省略されると undef 。
437  #undef: (未定義)
438
439  # 正常に計算できたときのフォーマット
440  # method: 計算式, result: 結果, error: エラー, signal: シグナル
441  reply-format: #(method): #(result)
442
443  # エラーが起きたときのフォーマット
444  # method: 計算式, result: 結果, error: エラー, signal: シグナル
445  error-format: #(method): エラーです。(#(error))
446
447  # シグナルが発生したときのフォーマット
448  #signal-format: #(method): シグナルです。(#(signal))
449
450  # signal-$SIGNALNAME-format 形式。
451  # $SIGNALNAME には現状 alarm/sigfpe があります。
452  # 該当がなければ signal-format にフォールバックします。
453
454  # いくつかの例を挙げます。
455  #signal-alarm-format: #(method): 時間切れです。
456  #signal-sigfpe-format: #(method): 浮動小数点計算例外です。
457
458  # タイムアウトする秒数を指定します。 alarm に渡されます。
459  # 再帰を止めるのに使えますが、どうもメモリリークしていそうな雰囲気です。
460  timeout: 1
461
462  # サブルーチン定義を許可するかどうかを指定する。
463  # 再帰定義が可能なので、許可する場合はこのモジュール専用の
464  # Tiarra を動かすことをお勧めします。
465  permit-sub: 0
466
467  # 初期化する発言を指定します。
468  # このモジュールでは現状変数や関数定義などを行えます。
469  # このコマンドが発行されるとそれらをクリアします。
470  init: 計算初期化
471
472  # 初期化を許可する人&チャンネルのマスク。
473  # 例はTiarraモード時。 [default: なし]
474  init-mask: * +*!*@*
475  # [plum-mode] mask: +*!*@*
476
477  # 再初期化したときの発言を指定します。
478  init-format: 初期化しました。
479
480  # 別の shared-mode な System::WebClient からの発言に対応(yes/no).
481  # 自分自身の発言は未対応.
482  # [default: no]
483  #support-shared-webclient: no
484}
485
486- Auto::ChannelWithoutOper {
487  # チャンネルオペレータ権限がなくなってしまったときに発言する。
488
489  # +で始まらない特定のチャンネルで、+aモードでも+rモードでもないのに
490  # 誰もチャンネルオペレータ権限を持っていない状態になっている時、
491  # そこに誰かがJOINする度に特定のメッセージを発言するモジュールです。
492
493  # 書式: <チャンネル名> <メッセージ>
494  #channel: #IRC談話室@ircnet なると消失しました。
495}
496
497- Auto::FetchTitle {
498  # 発言に含まれるURLからタイトルを取得.
499
500  # リクエストタイムアウトまでの時間(秒).
501  timeout: 3
502
503  # 有効にするチャンネルとオプションとURLの設定.
504  # 書式: mask: <channel> [<&conf>...] <url>
505  #
506  # mask: #test@ircnet &test http://*
507  # mask: * http://*
508  mask: * http://*
509
510  # &test と設定すると conf-test ブロックの中身が使われる.
511  #conf-test {
512  #  auth-test1 {
513  #    url:  http://example.com/*
514  #    url:  http://example.org/*
515  #    user: test
516  #    #pass: test
517  #    pass: {BASE64}dGVzdAo=
518  #  }
519  #  filter-xx {
520  #    url:  http://example.com/*/xx/*
521  #    type: xx
522  #  }
523  #}
524
525  # お返事の前や後ろにつける字句.
526  reply-prefix: "(FetchTitle) "
527  reply-suffix: " [AR]"
528
529  # デバッグフラグ.
530  #debug: 0
531  #debug-mask: #debug-chan your_nick!~you@example.com
532  #debug-dumpfile: fetchtitle.log
533
534  # NOTE:
535  #  利用するにはCodeReposから
536  #  module/Tools/HTTPClient.pm     rev.8220
537  #  main/Tiarra/Socket/Buffered.pm rev.8219
538  #  以降が必要です.
539}
540
541- Auto::FetchTitle::Plugin::ExtractHeading {
542  # 本文から見出しを抽出するFetchTitleプラグイン.
543
544  # Auto::FetchTitle { ... } での設定.
545  # + Auto::FetchTitle {
546  #     plugins {
547  #       ExtractHeading {
548  #         extra: name1 name2 ...
549  #         extra-name1 {
550  #           url:        http://www.example.com/*
551  #           recv_limit: 10*1024
552  #           extract:    re:<div id="title">(.*?)</div>
553  #         }
554  #       }
555  #    }
556  #  }
557}
558
559- Auto::FetchTitle::Plugin::Mixi {
560  # Mixiにログインして見出し抽出出来るようにするFetchTitleプラグイン.
561
562  # Auto::FetchTitle { ... } での設定.
563  #
564  # + Auto::FetchTitle {
565  #    mask: #* &mixi http://*
566  #    plugins {
567  #      Mixi {
568  #        mixi-user: xxx
569  #        mixi-pass: yyy
570  #      }
571  #    }
572  #    conf-mixi {
573  #      filter-mixi {
574  #        url: http://mixi.jp/*
575  #        url: http://news.mixi.jp/*
576  #        type: mixi
577  #        timeout: 10
578  #        #閲覧可能なコミュニティの指定.
579  #        #mixi-community: 0
580  #        #閲覧可能なユーザの指定.
581  #        #指定したユーザには足跡踏んで見に行きます.
582  #        #mixi-friend:    0
583  #        #閲覧可能にしていないページを表示したときのメッセージ.
584  #        #要求されたページを #(url) で展開できます.
585  #        #mixi-noperm-msg: not permitted #(url).
586  #      }
587  #    }
588  #  }
589  #
590  # アカウント情報は plugins Mixi に記述.
591  # mixi-pass には {B}bbbb でBASE64エンコード値も可能.
592  #
593  # newsだけしか使わない場合でも, ログイン処理が必要なので
594  # mixi.jp 内のいくつかのURLはこのプラグインで処理する必要があります.
595  #   url: http://news.mixi.jp/*
596  #   url: http://mixi.jp/issue_ticket.pl?*
597  #   url: http://mixi.jp/login.pl
598  #   url: http://mixi.jp/check.pl?*
599  # (それぞれ, ニュースページ, ログイン処理, エラー検出, 途中経路になります.)
600}
601
602- Auto::Im {
603  # 名前が呼ばれると、その発言をim.kayac.comに送信する
604
605  # 反応する人のマスクを指定します。
606  # 省略すると全員に反応します。
607  mask: * *!*@*
608
609  # 反応するキーワードを正規表現で指定します。
610  # 複数指定したい時は複数行指定してください。
611  #regex-keyword: (?i:fugahoge)
612
613  # 反応するキーワードを指定します。
614  # 複数指定したい時は,(コンマ)で区切るか、複数行指定してください。
615  keyword: hoge
616
617  # im.kayac.com に送るメッセージのフォーマットを指定します。
618  # デフォルト値: [tiarra][#(channel):#(nick.now)] #(text)
619  # #(channel) のかわりに #(raw_channel) を利用するとネットワーク名がつきません。
620  format: [tiarra][#(channel):#(nick.now)] #(text)
621
622  # im.kayac.comで登録したユーザ名を入力します。
623  # im.kayac.comについては http://im.kayac.com/#docs を参考にしてください。
624  user: username
625
626  # im.kayac.comで秘密鍵認証を選択した場合は設定してください。
627  # 省略すると認証なしになります。
628  #secret: some secret
629
630  # im.kayac.comでパスワード認証を選択した場合は設定してください。
631  # 省略すると認証なしになります。
632  # secret と両方指定した場合は secret が優先されています。
633  #password: some password
634}
635
636- Auto::Joined {
637  # 特定のチャンネルに誰かがJOINする度に特定のメッセージを発言する。
638
639  # Auto::Aliasを有効にしていれば、エイリアス置換を行ないます。
640
641  # 発言を行なうチャンネルと、その内容を定義します。
642  # #(nick.now)と$(channel)は、それぞれ相手の現在のnickとチャンネル名に置換されます。
643  #
644  # 書式: <チャンネル名> <発言内容>
645  #channel: #チャンネル@ircnet   「#ちゃんねる」に移転しました。
646}
647
648- Auto::MesMail {
649  # 伝言をメールとして送信する。
650
651  # メールアドレスはエイリアスの mail を参照します。
652
653  # Fromアドレス。[default: OSのユーザ名]
654  from: example1@example.jp
655
656  # 送信用のキーワード [default: mesmail_send]
657  send: 速達伝言
658
659  # 使用を許可する人&チャンネルのマスク。
660  # 例はTiarraモード時。 [default: なし]
661  mask: * +*!*@*
662  # [plum-mode] mask: +*!*@*
663
664  # maskで拒否されたときのメッセージ [default: なし]
665  deny: 伝言したくない。
666
667  # 一度に送れる宛先の量 [default: 無制限]
668  max-send-address: 5
669
670  # 宛先を探すエイリアスエントリ [default: なし]
671  alias-key: name
672  alias-key: nick
673
674  # 宛先の人を判別出来なかったときのメッセージ [default: なし]
675  unknown: #(who)さんと言うのは誰ですか?
676
677  # メールの日付形式
678  date: %H:%M:%S
679
680  # エイリアスは見付かったけれどメールアドレスが登録されていなかったときのメッセージ。 [default: なし]
681  #none-address: #(who)さんはアドレスを登録していません。
682
683  # SMTPのホスト [default: localhost]
684  #smtphost: localhost
685
686  # SMTPのポート [default: smtp(25)]
687  #smtpport: 25
688
689  # SMTPで自ホストのFQDN [default: localhost]
690  #smtpfqdn: localhost
691
692  # SMTPのユーザ。指定されれば SMTP Auth を行う [default: なし]
693  #smtpuser: example1
694
695  # SMTPのパスワード [default: 空パスワード('')]
696  #smtppass: test-password
697
698  # 送信するメールの既定件名(エイリアス使用不可) [default: Message from IRC]
699  #subject: Message from IRC
700
701  # 送信するメールの本文 [default: #(date) << #(from.name|from.nick|from.nick.now) >> #(message)]
702  #format: #(date)に#(from.name|from.nick|from.nick.now)さんから#(message)という伝言です。
703
704  # 送信したときのメッセージ。 [default: なし]
705  accept: #(who)さんに#(message)と伝言しておきました。
706
707  # ---- POP before SMTP の指定 ----
708  # POP before SMTPを使う。 [default: no]
709  #use-pop3: yes
710
711  # POP before SMTPのタイムアウト時間(分)。分からない場合は指定しなくて良い。 [default: 0]
712  #pop3-expire: 4
713
714  # POPのホスト。 [default: localhost]
715  #pop3host: localhost
716
717  # POPのポート。 [default: pop(110)]
718  #pop3port: 110
719
720  # POPのユーザ [default: OSのユーザ名]
721  #pop3user: example1
722
723  # POPのパスワード [default: 空パスワード('')]
724  #pop3pass: test-password
725
726  # ---- エラーメッセージの設定 ----
727
728  # 一般エラー。
729  # error-[state] と言う形式で詳細エラーメッセージを指定できる。
730  # [state]は、
731  #    * mailfrom(メールの送信者を指定しようとしてエラー)
732  #    * rcptto(メールの送信先を指定しようとしてエラー)
733  #    * norcptto(メールの送信先が全部無くなった)
734  #    * data(メールの中身を送信しようとしてエラー)
735  #    * finish(メールの中身を送信したらエラー)
736  # がある。特に欲しくなければerror-[state]は指定しなくても構わない。
737  # メッセージを出したくないなら中身の無いエントリを指定すれば良い。
738  # error-[state]が指定されてない場合は代わりに error を使う。 [default: 未定義]
739
740  #error-rcptto:
741  #error-norcptto: #(who)さんには送れませんでした。送信できるメールアドレスがありません。
742  #error-data: メールが送信できません。DATAコマンドに失敗しました。#(line;サーバ応答:%s|;)
743  #error: メール送信エラーです。#(line;サーバ応答:%s|;)#(state; on %s|;)
744
745  # 致命的なエラー。メールに個別なエラーではないので送信者(のprefix)毎に1メッセージ送られる。
746  # fatalerror-[state]
747  # [state]:
748  #    * first(接続エラー)
749  #    * helo(SMTPセッションを開始出来ない)
750  # がある。特に欲しくなければfatalerror-[state]は指定しなくても構わない。
751  # メッセージを出したくないなら中身の無いエントリを指定すれば良い。
752  # fatalerror-[state]が指定されてない場合は代わりに fatalerror を使う。 [default: 未定義]
753
754  #fatalerror-first: SMTPサーバに接続できません。
755  #fatalerror: SMTPセッションで致命的なエラーがありました。#(line; サーバ応答:%s|;)#(state; on %s|;)
756}
757
758- Auto::Notify {
759  # 名前が呼ばれると、その発言をim.kayac.comに送信する
760
761  # 反応する人のマスクを指定します。
762  # 省略すると全員に反応します。
763  mask: * *!*@*
764
765  # 反応するキーワードを正規表現で指定します。
766  # 複数指定したい時は複数行指定してください。
767  #regex-keyword: (?i:fugahoge)
768
769  # 反応するキーワードを指定します。
770  # 複数指定したい時は,(コンマ)で区切るか、複数行指定してください。
771  keyword: hoge
772
773  # メッセージのフォーマットを指定します。
774  # デフォルト値: [tiarra][#(channel):#(nick.now)] #(text)
775  # #(channel) のかわりに #(raw_channel) を利用するとネットワーク名がつきません。
776  format: [tiarra][#(channel):#(nick.now)] #(text)
777
778  # 使用するブロックを指定します
779  #blocks: im prowl
780
781  im {
782
783    # 通知先のタイプを指定します。
784    type: im_kayac
785
786    # im.kayac.comで登録したユーザ名を入力します。
787    # im.kayac.comについては http://im.kayac.com/#docs を参考にしてください。
788    user: username
789
790    # im.kayac.comで秘密鍵認証を選択した場合は設定してください。
791    # 省略すると認証なしになります。
792    #secret: some secret
793
794    # im.kayac.comでパスワード認証を選択した場合は設定してください。
795    # 省略すると認証なしになります。
796    # secret と両方指定した場合は secret が優先されています。
797    #password: some password
798
799  }
800
801  prowl {
802
803    # 通知先のタイプを指定します。
804    type: prowl
805
806    # 通知先ごとにフォーマットを指定できます。
807    # この例では先頭に時刻を追加しています。
808    #format: #(date:%H:%M:%S) [#(channel):#(nick.now)] #(text)
809
810    # Prowl で表示された apikey を入力します。
811    # Prowl については http://prowl.weks.net/ を参考にしてください。
812    #apikey: XXXXXX
813
814    # http://forums.cocoaforge.com/viewtopic.php?f=45&t=20339
815    priority: 0
816    application: tiarra
817    event: keyword
818
819  }
820}
821
822- Auto::Oper {
823  # 特定の文字列を発言した人を+oする。
824
825  # Auto::Aliasを有効にしていれば、エイリアス置換を行ないます。
826
827  # +oを要求する文字列(マスク)を指定します。
828  request: なると寄越せ
829
830  # チャンネルオペレータ権限を要求した人と要求されたチャンネルが
831  # ここで指定したマスクに一致しなかった場合は
832  # denyで指定した文字列を発言し、+oをやめます。
833  # 省略された場合は誰にも+oしません。
834  # 書式は「チャンネル 発言者」です。
835  # マッチングのアルゴリズムは次の通りです。
836  # 1. チャンネル名にマッチするmask定義を全て集める
837  # 2. 集まった定義の発言者マスクを、定義された順にカンマで結合する
838  # 3. そのようにして生成されたマスクで発言者のマッチングを行ない、結果を+o可能性とする。
839  # 例1:
840  # mask: *@2ch* *!*@*
841  # mask: #*@ircnet* *!*@*.hoge.jp
842  # この例ではネットワーク 2ch の全てのチャンネルで誰にでも +o し、
843  # ネットワーク ircnet の # で始まる全てのチャンネルでホスト名 *.hoge.jp の人に+oします。
844  # #*@ircnetだと「#hoge@ircnet:*.jp」などにマッチしなくなります。
845  # 例2:
846  # mask: #hoge@ircnet -*!*@*,+*!*@*.hoge.jp
847  # mask: *            +*!*@*
848  # 基本的に全てのチャンネルで誰にでも +o するが、例外的に#hoge@ircnetでは
849  # ホスト名 *.hoge.jp の人にしか +o しない。
850  # この順序を上下逆にすると、全てのチャンネルで全ての人を +o する事になります。
851  # 何故なら最初の* +*!*@*が全ての人にマッチするからです。
852  mask: * *!*@*
853
854  # +oを要求した人を実際に+oする時、ここで指定した発言をしてから+oします。
855  # #(name|nick)のようなエイリアス置換を行います。
856  # エイリアス以外でも、#(nick.now)を相手のnickに、#(channel)を
857  # そのチャンネル名にそれぞれ置換します。
858  message: 了解
859
860  # +oを要求されたが+oすべき相手ではなかった場合の発言。
861  # 省略されたら何も喋りません。
862  deny: 断わる
863
864  # +oを要求されたが相手は既にチャンネルオペレータ権限を持っていた場合の発言。
865  # 省略されたらdenyに設定されたものを使います。
866  oper: 既に@を持っている
867
868  # +oを要求されたが自分はチャンネルオペレータ権限を持っていなかった場合の発言。
869  # 省略されたらdenyに設定されたものを使います。
870  not-oper: @が無い
871
872  # チャンネルに対してでなく自分に対して+oの要求を行なった場合の発言。
873  # 省略されたらdenyに設定されたものを使います。
874  private: チャンネルで要求せよ
875
876  # チャンネルの外から+oを要求された場合の発言。+nチャンネルでは起こりません。
877  # 省略されたらdenyに設定されたものを使います。
878  out: チャンネルに入っていない
879}
880
881- Auto::Outputz {
882  # チャンネルの発言文字数を outputz に送信する
883
884  # 復活の呪文。
885  key: some secret
886
887  # 送信対象にするコマンドの設定。
888  # 省略された場合は PRIVMSG 。
889  # パラメータ1が送信先、パラメータ2が本文でなければ動作しないので、
890  # 動作するコマンドは PRIVMSG/NOTICE/TOPIC/PART 程度。
891  #command: PRIVMSG
892
893  # 各チャンネルのURIの設定。
894  # 記述された順序で検索されるので、全てのチャンネルにマッチする"*"などは最後に書かなければならない。
895  # フォーマットは次の通り。
896  # channel: <URI> (<チャンネル名> / 'priv')@<ネットワーク名>
897  # #(channel) はチャンネル名に、 #(channel_short) はネットワークなしの
898  # チャンネル名に、 #(network) はネットワーク名にそれぞれ置き換えられる。
899  # また、危険な文字は自動的にエスケープされる。
900  channel: http://#(network).irc.example.com/#(channel_short) *
901}
902
903- Auto::Random {
904  # 特定の発言に反応してランダムな発言をします。
905
906  # Auto::Aliasを有効にしていれば、エイリアス置換を行ないます。
907
908  # 使用するブロックの定義。
909  blocks: wimikuji
910
911  wimikuji {
912    # ランダムに発言するメッセージの書かれたファイルと、その文字コードを指定します。
913    # ファイルの中では一行に一つのメッセージを書いて下さい。
914    file: random.txt
915    file-encoding: euc
916
917    # 反応する発言を表すマスクを指定します。
918    request: ゐみくじ
919
920    # メッセージの登録数を返答するキーワードを指定します。
921    count-query: ゐみくじ登録数
922
923    # メッセージの登録数を返答するときの反応を指定します。
924    # formatで指定できるものと同じです。#(count)は登録数になります。
925    count-format: ゐみくじは#(count)件登録されています。
926
927    # ランダムなメッセージを発言する際のフォーマットを指定します。
928    # エイリアス置換が有効です。#(message)、#(nick.now)、#(channel)は
929    # それぞれメッセージ内容、相手のnick、チャンネル名に置換されます。
930    # 何も登録されていないときのために、#(message|;無登録)のように指定すると良いでしょう。
931    format: #(name|nick.now)の運命は#(message)
932
933    # 反応する人のマスク。
934    mask: * *!*@*
935    # plum: mask: *!*@*
936
937    # メッセージが追加されたときの反応を指定します。
938    # formatで指定できるものと同じです。#(message)は追加されたメッセージになります。
939    added-format: #(name|nick.now): ゐみくじ #(message) を追加しました。
940
941    # メッセージが削除されたときの反応を指定します。
942    # formatで指定できるものと同じです。#(message)は削除されたメッセージになります。
943    removed-format: #(name|nick.now): ゐみくじ #(message) を削除しました。
944
945    # 発言に反応する確率を指定します。百分率です。省略された場合は100と見做されます。
946    rate: 100
947
948    # メッセージを追加するキーワードを指定します。
949    # ここで指定したキーワードを発言すると、新しいメッセージを追加します。
950    # 実際の追加方法は「<addで指定したキーワード> <追加するメッセージ>」です。
951    add: ゐみくじ追加
952
953    # メッセージを削除するキーワードを指定します。
954    # 実際の削除方法は「<removeで指定したキーワード> <削除するキーワード>」です。
955    remove: ゐみくじ削除
956
957    # addとremoveを許可する人。省略された場合は誰も変更できません。
958    modifier: * *!*@*
959    # plum: modifier: *!*@*
960  }
961}
962
963- Auto::Reply {
964  # 特定の発言に反応して発言をします。
965
966  # Auto::Aliasを有効にしていれば、エイリアス置換を行ないます。
967
968  # 使用するブロックの定義。
969  # 省略すると std を使用.
970  # 複数個の blocks の指定も可能.
971  blocks: std
972
973  std {
974    # 1つの応答ブロックの定義.
975    # 一応全ての項目が省略可能ではあるけれど,
976    # 通常は最低限 file と file-encoding を使用する.
977    # IRCで応答の追加削除等を行いたいときにはそれに更に設定を追加する形.
978    # (IRC上で応答の追加削除は行うが保存はしない時に限ってfileを省略可能.)
979
980    # 機能:
981    # - 通常応答(mask)
982    # - 登録数確認(count-query/mask)
983    # - 反応確認(request/modifier)
984    # - 反応追加(add/modifier)
985    # - 反応削除(remove/modifier)
986    # 通常応答以外は設定を省略することで機能を無効にできます。
987
988    # データファイルと文字コードを指定します。
989    # ファイルの中では一行に一つの"反応マスク:メッセージ"を書いて下さい。
990    file: reply.txt
991    file-encoding: euc
992
993    # 1つの発言で複数の反応マスクにマッチする場合,
994    # どれにマッチするかは未定義です.
995    # ただ, どちらか1つにのみマッチします.
996
997    # 同じ反応マスクに複数個のメッセージが記述してあった場合の処理.
998    # multivalue: random #==> ランダムに1つ選択.
999    # multivalue: all    #==> 全て返す.
1000    # multivalue: seq    #==> 順番に1つずつ返す.
1001    # 省略時及び認識できなかったときは random.
1002    #multivalue: random
1003    # 返す最大行数.
1004    # multivalue: all の時のみ有効.
1005    # (それ以外の時は1行しか返さない)
1006    # デフォルトは 5 行まで.
1007    #multivalue-limit: 5
1008
1009    # 反応する人のマスク。
1010    # 通常応答と登録数の返答時にチェックされる。
1011    mask: * *!*@*
1012    # plum: mask: *!*@*
1013
1014    # マッチした1つの反応マスクが実際に発言に反応する確率を指定します。
1015    # 百分率です。省略された場合は100と見做されます。
1016    rate: 100
1017
1018    # メッセージの登録数を返答するキーワードを指定します。
1019    # 省略するとこの機能は無効になります。
1020    # 指定したときだけこの機能が有効になります。
1021    # mask で許可された人(通常応答を返す人)が使えます。
1022    count-query: 反応登録数
1023
1024    # メッセージの登録数を返答するときの反応を指定します。
1025    # formatで指定できるものと同じです。#(count)は登録数になります。
1026    # count-query を指定したときのみ必要。
1027    count-format: 反応は#(count)件登録されています。
1028
1029    # メッセージを追加するキーワードを指定します。
1030    # ここで指定したキーワードを発言すると、新しいメッセージを追加します。
1031    # 実際の追加方法は「<addで指定したキーワード> <追加するメッセージ>」です。
1032    # 省略するとこの機能は無効になります。
1033    # 指定したときだけこの機能が有効になります。
1034    # modifier で許可された人だけ使えます。
1035    #add: 反応追加
1036
1037    # 反応が追加されたときの反応を指定します。
1038    # formatで指定できるものと同じです。#(message)は追加されたメッセージになります。
1039    added-format: #(name|nick.now): #(key) に対する反応 #(message) を追加しました。
1040
1041    # メッセージを削除するキーワードを指定します。
1042    # 実際の削除方法は「<removeで指定したキーワード> <削除するキーワード>」です。
1043    # 省略するとこの機能は無効になります。
1044    # 指定したときだけこの機能が有効になります。
1045    # modifier で許可された人だけ使えます。
1046    #remove: 反応削除
1047
1048    # メッセージが削除されたときの反応を指定します。
1049    # formatで指定できるものと同じです。#(message)は削除されたメッセージになります。
1050    removed-format: #(name|nick.now): #(key) #(message;に対する反応 %s|;) を #(count) 件削除しました。
1051
1052    # 反応の確認を行うためのキーワードを指定します。
1053    # 通常応答と違って, multivalue-limit の制限を受けずに全てのマッチした応答を返します。
1054    # 実際の指定方法は、「<requestで指定したキーワード> <チェックしたい発言>」です。
1055    # 省略するとこの機能は無効になります。
1056    # 指定したときだけこの機能が有効になります。
1057    # modifier で許可された人だけ使えます。
1058    request: 反応チェック
1059
1060    # request に反応するときのフォーマットを指定します。
1061    # #(key) がキーワード、 #(message) が発言に置換されます。
1062    # request を指定したときのみ必要。
1063    reply-format: 「#(key)」という発言に「#(message)」と反応します。
1064
1065    # request に反応する最大個数(反応マスクの数)を指定します。
1066    # (1つの反応マスクに対応するメッセージの数は制限されません。)
1067    # あまり大きな値を指定すると、アタックが可能になったり、ログが流れて邪魔なので注意してください。
1068    # 通常の反応には関与しません。また、応答の行数ではありません。
1069    max-reply: 5
1070
1071    # 編集系コマンド, add とremove と request を許可する人。
1072    # 省略された場合は「* *!*@*」(全員許可)と見做します。
1073    modifier: * *!*@*
1074
1075    # 正規表現拡張を許可するか。省略された場合は禁止します。
1076    use-re: 1
1077  }
1078}
1079
1080- Auto::Response {
1081  # データファイルの指定にしたがって反応する。
1082
1083  # 大量の反応データを定義するのに向いています。
1084
1085  # データファイルのフォーマット
1086  # | pattern: re:^(こん(に)?ちは)
1087  # | rate: 90
1088  # | mask: * *!*@*
1089  # | #plum: mask: *!*@*
1090  # | response: こんにちは。
1091  # | response: いらっしゃいませ。
1092  # |
1093  # | pattern: おやすみ
1094  # | rate: 20
1095  # | response: おやすみなさい。
1096  # patternは一行しか書けません。(手抜き
1097  # maskもrateも省略できます。省略した場合はmaskは全員、rateは100となります。
1098  # responseは複数書いておけばランダムに選択されます。
1099
1100  # データファイル
1101  file: response.txt
1102
1103  # 文字コード
1104  charset: euc
1105
1106  # 使用を許可する人&チャンネルのマスク。
1107  mask: * *!*@*
1108  # plum: mask: +*!*@*
1109}
1110
1111- CTCP::ClientInfo {
1112  # CTCP CLIENTINFOに応答する。
1113
1114  # CTCP::Versionのintervalと同じ。
1115  interval: 3
1116}
1117
1118- CTCP::DCC::RewriteAddress {
1119  # クライアントが送信した CTCP DCC のアドレスを変換する。
1120
1121  # CTCP DCC に指定されているアドレスを、 Tiarra で取得したものに
1122  # 書き換えます。(EXPERIMENTAL)
1123  #
1124  # IPv4 のみサポートしています。
1125  #
1126  # このモジュールは一旦 CTCP DCC メッセージを破棄するので、
1127  # 別のクライアントには送信されません。
1128
1129  # 変換する DCC タイプ。 [デフォルト値: CHAT SEND]
1130  type: CHAT SEND
1131
1132  # 変換用アドレスの取得方法を選択する。デフォルト値はありません。
1133  # 以下の取得方法(server-socket client-socket dns http)から
1134  # 必要なもの(複数可)を指定してください。
1135  resolver: client-socket server-socket dns http
1136
1137
1138  # 取得方法と設定
1139  # なにも設定がないときはブロック自体を省略することもできます。
1140
1141  server-socket {
1142    # サーバソケットのローカルアドレスを取ります。
1143    # client <-> tiarra[this address] <-> server
1144  }
1145
1146  client-socket {
1147    # クライアントソケットのリモートアドレスを取ります。
1148    # client [this address]<-> Tiarra <-> server
1149  }
1150
1151  dns {
1152    # DNS を引いて決定します。IPアドレスの指定も可能です。
1153    host: example.com
1154  }
1155
1156  http {
1157    # 現状では単純な GET しかサポートしていません。
1158
1159    # アクセス先 URL
1160    url: http://checkip.dyndns.org/
1161
1162    # IP アドレス取得用 regex
1163    regex: Current IP Address: (\d+\.\d+\.\d+\.\d+)
1164  }
1165
1166  # リゾルバの選び方
1167  #
1168  #  * Tiarra を動作させているサーバとインターネットの間にルータ等があり、
1169  #    グローバルアドレスがない場合
1170  #      *-socket は役に立ちません。 http を利用してください。
1171  #      適当な DDNS を持っていればdns も良いでしょう。
1172  #
1173  #  * Tiarra がレンタルサーバなどLAN上にないサーバで動作している場合
1174  #      server-socket, http は役に立ちません。
1175  #      client-socket がお勧めです。
1176  #
1177  #  * Tiarra がLAN上にあり、グローバルアドレスのついているホストで
1178  #    動作している場合
1179  #      client-socket は役に立ちません。
1180  #      server-socket がお勧めです。
1181}
1182
1183- CTCP::Ping {
1184  # CTCP PINGに応答する。
1185
1186  # CTCP::Versionのintervalと同じ。
1187  interval: 3
1188}
1189
1190- CTCP::Time {
1191  # CTCP TIMEに応答する。
1192
1193  # CTCP::Versionのintervalと同じ。
1194  interval: 3
1195}
1196
1197- CTCP::UserInfo {
1198  # CTCP USERINFOに応答する。
1199
1200  # CTCP::Versionのintervalと同じ。
1201  interval: 3
1202
1203  # USERINFOとして返すメッセージ。
1204  message: テスト
1205}
1206
1207+ CTCP::Version {
1208  # CTCP VERSIONに応答する。
1209
1210  # 連続したCTCPリクエストに対する応答の間隔。単位は秒。
1211  # 例えば3秒に設定した場合、一度応答してから3秒間は
1212  # CTCPに一切応答しなくなる。デフォルトは3。
1213  #
1214  # なお、CTCP受信時刻の記録は、全てのCTCPモジュールで共有される。
1215  # 例えばCTCP VERSIONを送った直後にCTCP CLIENTINFOを送ったとしても、
1216  # CTCP::ClientInfoのintervalで設定された時間を過ぎていなければ
1217  # 後者は応答しない。
1218  interval: 3
1219}
1220
1221- Channel::Freeze {
1222  # 特定のチャンネルの発言を、一時的に受信するのをやめる。
1223
1224  # ログを取っているなら、ログには記録される。
1225
1226  # チャンネルの凍結に用いるコマンド名。
1227  # 省略時は freeze であり、/freeze #channel@network のように使う。
1228  # チャンネル名を省略すると、現在フリーズされているチャンネルのリストを表示する。
1229  freeze-command: freeze
1230
1231  # 凍結解除に用いるコマンド名。
1232  # 省略時は defrost であり、/defrost #channel@network のように使う。
1233  defrost-command: defrost
1234
1235  # 凍結しているチャンネルが存在する時、一定時間毎にその旨を報告する事も可能。
1236  # この機能は凍結した事を忘れないようにする為にある。
1237  # 単位は分、デフォルトはゼロ(報告しない)。
1238  reminder-interval: 30
1239}
1240
1241- Channel::Ignore {
1242  # 指定されたチャンネルの存在を、様々なメッセージから消去する。
1243
1244  # 対象となったチャンネルのJOIN、PART、INVITE、QUIT、NICK、NAMES、NJOINは消去される。
1245
1246  # 注意点
1247  # - この機能はまだ実装途中です。いろいろな不具合があるかもしれません。むしろきっとあります。
1248  # - サーバがわとの通信に割り込みますのでログにもとられません。
1249  # - この機能を使っている Tiarra より上流に multi-server-mode な Tiarra を置かないでください。
1250
1251  # チャンネルの定義。
1252  # また、privの場合は「priv@ネットワーク名」という文字列をチャンネル名の代わりとしてマッチングを行なう。
1253  # 書式: mask: <チャンネルのマスク>
1254  mask: #example@example
1255}
1256
1257- Channel::Join::Connect {
1258  # サーバーに初めて接続した時、指定したチャンネルに入るモジュール。
1259
1260  # 書式: <チャンネル1>[,<チャンネル2>,...] [<チャンネル1のキー>,...]
1261  #     コンマの直後のスペースは無視されます。
1262  #
1263  # 例:
1264  #   「#aaaaa@ircnet」に「aaaaa」というキーで入る。
1265  #channel: #aaaaa@ircnet aaaaa
1266  #
1267  #   「#aaaaa@ircnet」、「#bbbbb@ircnet:*.jp」、「#ccccc@ircnet」、「#ddddd@ircnet」の4つのチャンネルに入る。
1268  #channel: #aaaaa@ircnet,#bbbbb@ircnet:*.jp, #ccccc@ircnet
1269  #channel: #ddddd@ircnet
1270
1271  # join 送出の間隔(秒)
1272  # この設定は obsolete です。 general/join-interval を利用してください。
1273  # 設定されていた場合は general/join-interval に優先されます。
1274  #interval: 1
1275}
1276
1277- Channel::Join::Invite {
1278  # 招待されたらそのチャンネルに入る。
1279
1280  # 許可するユーザ/チャンネルのマスク。
1281  mask: * *!*@*
1282  # plum: *!*@*
1283
1284  # 招待されたチャンネルに流すメッセージのフォーマット。
1285  #message: こんばんわ〜。
1286}
1287
1288- Channel::Join::Kicked {
1289  # 特定のチャンネルからkickされた時に、自動で入りなおす。
1290
1291  # 対象となるチャンネル名のマスク
1292  channel: *
1293}
1294
1295- Channel::Mode::Get {
1296  # チャンネルにJOINした時、そのチャンネルのモードを取得します。
1297
1298  # Channel::Mode::Set等が正しく動くためには
1299  # チャンネルのモードをTiarraが把握しておく必要があります。
1300  # 自動的にモードを取得するクライアントであれば必要ありませんが、
1301  # そうでなければこのモジュールを使うべきです。
1302
1303  # 設定項目は無し。
1304}
1305
1306- Channel::Mode::Oper::Grant {
1307  # 特定のチャンネルに特定の人間がjoinした時に、自分がチャンネルオペレータ権限を持っていれば+oする。
1308
1309  # splitからの復帰などで+o対象の人が一度に大量に入って来ても+oは少しずつ実行します。
1310  # Excess Floodにはならない筈ですが、本格的な防衛BOTに使える程の物ではありません。
1311
1312  # 対象の人間がjoinしてから実際に+oするまで何秒待つか。
1313  # 省略されたら待ちません。
1314  # 5-10 のように指定されると、その値の中でランダムに待ちます。
1315  wait: 2-5
1316
1317  # チャンネルと人間のマスクを定義。Auto::Operと同様。
1318  #mask: * example!~example@*.example.ne.jp
1319}
1320
1321- Channel::Mode::Set {
1322  # チャンネルを作成した時に自動的にモードを設定するモジュール。
1323
1324  # 書式は<チャンネル名にマッチするマスク> <設定するモード>[,<設定するモード>,...]です。
1325  # #IRC談話室@ircnetなら+t+nを、それ以外なら+nを設定する例。
1326  #channel: #IRC談話室@ircnet +t
1327  #channel: *                +n
1328  # LimeChat 標準設定を模倣する設定例。
1329  #channel: * +sn
1330}
1331
1332- Channel::Rejoin {
1333  # チャンネルオペレータ権限を無くしたとき、一人ならjoinし直す。
1334
1335  # +チャンネルや+aされているチャンネル以外でチャンネルオペレータ権限を持たずに
1336  # 一人きりになった時、そのチャンネルの@を復活させるために自動的にjoinし直すモジュール。
1337  # トピック、モード、banリスト等のあらゆるチャンネル属性をも保存します。
1338
1339  # +b,+I,+eリストの復旧を行なうかどうか。
1340  # あまりに長いリストを取得するとMax Send-Q Exceedで落とされるかも知れません。
1341  save-lists: 1
1342}
1343
1344- Client::Cache {
1345  # データをキャッシュしてサーバに問い合わせないようにする
1346
1347  # キャッシュを使用しても、使われるのは接続後最初の一度だけです。
1348  # 二度目からは通常通りにサーバに問い合わせます。
1349  # また、クライアントオプションの no-cache を指定すれば動きません。
1350
1351  # mode キャッシュを使用するか
1352  use-mode-cache: 1
1353
1354  # who キャッシュを使用するか
1355  use-who-cache: 1
1356}
1357
1358+ Client::Conservative {
1359  # サーバが送信するような IRC メッセージを作成するようにする
1360
1361  # サーバが実際に送信しているようなメッセージにあわせるようにします。
1362  # 多くのクライアントの設計ミスを回避でき(ると思われ)ます。
1363}
1364
1365- Client::Cotton {
1366  # Cotton の行うおかしな動作のいくつかを無視する
1367
1368  # 該当クライアントのオプション client-type に cotton や unknown と指定するか、
1369  # Client::GetVersion を利用してクライアントのバージョンを取得するように
1370  # してください。
1371
1372  # part shield (rejoin 時に自動で行われる part の無視)を使用するか
1373  use-part-shield: 1
1374}
1375
1376- Client::Eval {
1377  # クライアントから Perl 式を実行できるようにする。
1378
1379  # eval を実行するコマンド名。省略されるとコマンドを追加しません。
1380  # この時コマンドはTiarraが握り潰すので、IRCプロトコル上で定義された
1381  # コマンド名を設定すべきではありません。
1382  command: eval
1383
1384  # hex eval を実行するコマンド名。省略されるとコマンドを追加しません。
1385  # この時コマンドはTiarraが握り潰すので、IRCプロトコル上で定義された
1386  # コマンド名を設定すべきではありません。
1387  hex-command: hexeval
1388
1389  # 表示する最大行数を指定します。省略するとすべての行を表示します。
1390  max-line: 30
1391}
1392
1393+ Client::GetVersion {
1394  # クライアントに CTCP Version を発行してバージョン情報を得る
1395
1396  # オプションはいまのところありません。
1397  # (開発者向け情報: 取得した情報は remark の client-version に設定され、
1398  #                  Client::Guess から使用されます。)
1399}
1400
1401- Client::List {
1402  # Clientの一覧を取得.
1403
1404  # 接続しているクライアントを一覧.
1405  # /clientlist を投げると, その時に接続しているクライアントの一覧を返す.
1406  # 出力例:
1407  # clientlist
1408  #   *** 1 client
1409  #   *** [1] 127.0.0.1:23695
1410
1411
1412  # 一覧を返すトリガーとするコマンド.
1413  #command: clientlist
1414}
1415
1416- Client::PatchworkMessage {
1417  # IRC メッセージにちょっと変更を加えて、クライアントのバグを抑制する
1418
1419  # 特に注意書きがない場合はデフォルトで有効です。
1420  # また、 Client::GetVersion も同時に入れておくと便利です。
1421  # とりあえず obsolete です。このモジュールで実装されていた機能は
1422  # Client::Conservative によって実現できます。
1423  # Client::Conservative で実装してはいけないようなものがあった場合のみ
1424  # このモジュールで対処します。
1425
1426  # WoolChat:
1427  #  対応しているメッセージ:
1428  #   NICK(コロンが必須)
1429  #  説明:
1430  #   NICK は接続直後にも発行されるため、 Client::GetVersion での判別まで
1431  #   待てません。該当クライアントのオプション client-type に woolchat と
1432  #   指定してください。実名欄に $client-type=woolchat$ と書けば OK です。
1433  enable-woolchat: 1
1434
1435  # X-Chat:
1436  #  対応しているメッセージ:
1437  #   RPL_WHOISUSER(コロンが必須)
1438  #  説明:
1439  #   WHOIS の realname にスペースが入っていないと最初の一文字が削られます。
1440  enable-xchat: 1
1441}
1442
1443- Client::ProtectMyself {
1444  # 意図せず自分のニックが変わってしまうのを防止する
1445
1446  # {nick,part,quit,join}-format: それぞれのメッセージのフォーマットを指定します。
1447  # {nick,user,host,prefix}.now などはどこでも使えます。
1448  # そのほかには
1449  #  target   : 表示するチャンネル(またはニック)。
1450  #  nick.new : nick-format のみ。新しいニック。
1451  #  message  : part と quit 。メッセージ。
1452
1453  nick-format: Nick changed #(nick.now) -> #(nick.new)
1454  part-format: Part #(nick.now) (#(message)) from #(target)
1455  quit-format: Quit #(nick.now) (#(message))
1456  join-format: Join #(nick.now) (#(prefix.now)) to #(target)
1457}
1458
1459- Client::Rehash {
1460  # 全チャンネル分の names の内部キャッシュをクライアントに送信する。
1461
1462  # もともとはクライアントの再初期化目的に作ったのですが、 names を送信しても
1463  # 更新されないクライアントが多いので、主に multi-server-mode な Tiarra の
1464  # 下にさらに Tiarra をつないでいる人向けにします。
1465
1466  # names でニックリストを更新してくれるクライアント:
1467  #   Tiarra
1468  # してくれないクライアント: (括弧内は確認したバージョンまたは注釈)
1469  #   LimeChat(1.18)
1470
1471  # nick rehash に使うコマンドを指定します。
1472  # 第二パラメータとして現在クライアントが認識している nick を指定してください。
1473  command-nick: rehash-nick
1474
1475  # names rehash に使うコマンドを指定します。
1476  command-names: rehash-names
1477
1478  # チャンネルとチャンネルの間のウェイトを指定します。
1479  interval: 2
1480}
1481
1482- Client::ShowNick {
1483  # show network
1484
1485}
1486
1487- Debug::Core {
1488  # Tiarra の内部構造の追跡.
1489
1490  # Tiarra の内部構造を出力します.
1491
1492  # トリガー用コマンド.
1493  # デフォルトは debugcore
1494  command: debugcore
1495
1496  # [top commands]
1497  # help   - show this usage.
1498  # bbs    - show BulletinBoard info.
1499  # socket - show internal sockets.
1500  # module - show module info.
1501
1502  # [sub commands]
1503  # help:
1504  # bbs:
1505  #   keys - show keys in BulletinBoard.
1506  # socket:
1507  #   help      - show this usage.
1508  #   list      - show installed socket.
1509  #   get       - show socket in detail.
1510  #   uninstall - uninstall detached socket.
1511  # module:
1512  #   help    - show this usage.
1513  #   summary - show module summary.
1514  #   list    - show module list in detail.
1515  #   dep     - show module dependency.
1516}
1517
1518- Debug::RawLog {
1519  # 標準出力にクライアントやサーバとの通信をダンプする。
1520
1521  # 0 または省略で表示しない。 1 で表示する。
1522  # クライアントオプションの logname によって、ダンプに使う名前を指定できます。
1523
1524  # サーバからの入力
1525  enable-server-in: 1
1526
1527  # サーバへの出力
1528  enable-server-out: 1
1529
1530  # クライアントからの入力
1531  enable-client-in: 0
1532
1533  # クライアントへの出力
1534  enable-client-out: 0
1535
1536  # PING/PONG を無視する
1537  ignore-ping: 1
1538
1539  # NumericReply の名前を解決して表示する(ちゃんとした dump では無くなります)
1540  resolve-numeric: 1
1541}
1542
1543- Log::Channel {
1544  # チャンネルやprivのログを取るモジュール。
1545
1546  # Log系のモジュールでは、以下のように日付や時刻の置換が行なわれる。
1547  # %% : %
1548  # %Y : 年(4桁)
1549  # %m : 月(2桁)
1550  # %d : 日(2桁)
1551  # %H : 時間(2桁)
1552  # %M : 分(2桁)
1553  # %S : 秒(2桁)
1554
1555  # ログを保存するディレクトリ。Tiarraが起動した位置からの相対パス。~指定は使えない。
1556  directory: log
1557
1558  # ログファイルの文字コード。省略されたらjis。
1559  charset: utf8
1560
1561  # 各行のヘッダのフォーマット。省略されたら'%H:%M'。
1562  header: %H:%M:%S
1563
1564  # ファイル名のフォーマット。省略されたら'%Y.%m.%d.txt'
1565  filename: %Y.%m.%d.txt
1566
1567  # ログファイルのモード(8進数)。省略されたら600
1568  mode: 600
1569
1570  # ログディレクトリのモード(8進数)。省略されたら700
1571  dir-mode: 700
1572
1573  # ログを取るコマンドを表すマスク。省略されたら記録出来るだけのコマンドを記録する。
1574  command: privmsg,join,part,kick,invite,mode,nick,quit,kill,topic,notice
1575
1576  # PRIVMSGとNOTICEを記録する際に、自分の発言と他人の発言でフォーマットを変えるかどうか。1/0。デフォルトで1。
1577  distinguish-myself: 1
1578
1579  # 各ログファイルを開きっぱなしにするかどうか。
1580  # このオプションは多くの場合、ディスクアクセスを抑えて効率良くログを保存しますが
1581  # ログを記録すべき全てのファイルを開いたままにするので、50や100のチャンネルを
1582  # 別々のファイルにログを取るような場合には使うべきではありません。
1583  # 万一 fd があふれた場合、クライアントから(またはサーバへ)接続できない・
1584  # 新たなモジュールをロードできない・ログが全然できないなどの症状が起こる可能性が
1585  # あります。limit の詳細については OS 等のドキュメントを参照してください。
1586  #keep-file-open: 1
1587
1588  # keep-file-open 時に各行ごとに flush するかどうか。
1589  # open/close の負荷は気になるが、ログは失いたくない人向け。
1590  # keep-file-open が有効でないなら無視され(1になり)ます。
1591  #always-flush: 0
1592
1593  # keep-file-openを有効にした場合、発言の度にログファイルに追記するのではなく
1594  # 一定の分量が溜まってから書き込まれる。そのため、ファイルを開いても
1595  # 最近の発言はまだ書き込まれていない可能性がある。
1596  # syncを設定すると、即座にログをディスクに書き込むためのコマンドが追加される。
1597  # 省略された場合はコマンドを追加しない。
1598  sync: sync
1599
1600  # 各チャンネルの設定。チャンネル名の部分はマスクである。
1601  # 個人宛てに送られたPRIVMSGやNOTICEはチャンネル名"priv"として検索される。
1602  # 記述された順序で検索されるので、全てのチャンネルにマッチする"*"などは最後に書かなければならない。
1603  # 指定されたディレクトリが存在しなかったら、Log::Channelはそれを勝手に作る。
1604  # フォーマットは次の通り。
1605  # channel: <ディレクトリ名> (<チャンネル名> / 'priv')
1606  # 例:
1607  # filename: %Y.%m.%d.txt
1608  # channel: IRCDanwasitu #IRC談話室@ircnet
1609  # channel: others *
1610  # この例では、#IRC談話室@ircnetのログはIRCDanwasitu/%Y.%m.%d.txtに、
1611  # それ以外(privも含む)のログはothers/%Y.%m.%d.txtに保存される。
1612  # #(channel) はチャンネル名に展開される。
1613  # (古いバージョンだと展開されずにそのままディレクトリ名になってしまいます。)
1614  # IRCのチャンネル名は大文字小文字が区別されず、サーバからは各送信者が指定した通りの
1615  # チャンネル名が送られてきます。そのため、大文字小文字が区別されるファイルシステムでは
1616  # 同じチャンネルが別々のディレクトリに作られることになります。
1617  # この問題を回避するため、チャンネル名を小文字に統一した #(lc_channel) が利用できます。
1618  channel: priv priv
1619  channel: #(lc_channel) *
1620  #channel: others *
1621
1622  # ファイル名のエンコーディング.
1623  # 指定可能な値は, utf8, sjis, euc, jis, ascii.
1624  # ascii は実際には utf8 と同等で8bit部分が全てquoted-printableされる.
1625  # デフォルトはWindowsではsjis, それ以外では utf8.
1626  #filename-encoding: utf8
1627}
1628
1629- Log::ChannelList {
1630  # チャンネルリストをテンプレートに沿って HTML 化します。
1631
1632  # list コマンドが実行された際に動作します。
1633
1634  # 出力したいファイル名、ネットワーク名、使う設定のブロックを指定します。。
1635  networks: ircnet.html ircnet ircnet
1636
1637
1638  ircnet {
1639    # テンプレートファイルを指定します。
1640    template: channellist.html.tmpl
1641
1642    # 出力とテンプレートファイルの文字コードを指定します。
1643    charset: euc
1644
1645    # 取得を開始/終了した時刻のフォーマットを指定します。
1646    fetch-starttime: %Y年%m月%d日 %H時%M分(日本時間)
1647    fetch-endtime: %Y年%m月%d日 %H時%M分(日本時間)
1648
1649    # 表示するチャンネルの mask を指定します。
1650    mask: *
1651    mask: -re:^\&(AUTH|SERVICES|LOCAL|HASH|SERVERS|NUMERICS|CHANNEL|KILLS|NOTICES|ERRORS)
1652
1653    # 出力するファイルのモードを指定します。
1654    mode: 644
1655  }
1656}
1657
1658- Log::Raw {
1659  # サーバとの生の通信を保存する
1660
1661  # Log系のモジュールでは、以下のように日付や時刻の置換が行なわれる。
1662  # %% : %
1663  # %Y : 年(4桁)
1664  # %m : 月(2桁)
1665  # %d : 日(2桁)
1666  # %H : 時間(2桁)
1667  # %M : 分(2桁)
1668  # %S : 秒(2桁)
1669
1670  # ログを保存するディレクトリ。Tiarraが起動した位置からの相対パス。~指定は使えない。
1671  directory: rawlog
1672
1673  # 各行のヘッダのフォーマット。省略されたら'%H:%M'。
1674  header: %H:%M:%S
1675
1676  # ファイル名のフォーマット。省略されたら'%Y.%m.%d.txt'
1677  filename: %Y-%m-%d.txt
1678
1679  # ログファイルのモード(8進数)。省略されたら600
1680  mode: 600
1681
1682  # ログディレクトリのモード(8進数)。省略されたら700
1683  dir-mode: 700
1684
1685  # 使っている文字コードがよくわからなかったときの文字コード。省略されたらutf8。
1686  # たぶんこの指定が生きることはないと思いますが……。
1687  charset: jis
1688
1689  # NumericReply の名前を解決して表示する(ちゃんとした dump では無くなります)
1690  resolve-numeric: 1
1691
1692  # ログを取るコマンドを表すマスク。省略されたら記録出来るだけのコマンドを記録する。
1693  command: *,-ping,-pong
1694
1695  # 各ログファイルを開きっぱなしにするかどうか。
1696  # このオプションは多くの場合、ディスクアクセスを抑えて効率良くログを保存しますが
1697  # ログを記録すべき全てのファイルを開いたままにするので、50や100のチャンネルを
1698  # 別々のファイルにログを取るような場合には使うべきではありません。
1699  # 万一 fd があふれた場合、クライアントから(またはサーバへ)接続できない・
1700  # 新たなモジュールをロードできない・ログが全然できないなどの症状が起こる可能性が
1701  # あります。limit の詳細については OS 等のドキュメントを参照してください。
1702  #keep-file-open: 1
1703
1704  # keep-file-open 時に各行ごとに flush するかどうか。
1705  # open/close の負荷は気になるが、ログは失いたくない人向け。
1706  # keep-file-open が有効でないなら無視され(1になり)ます。
1707  #always-flush: 0
1708
1709  # keep-file-openを有効にした場合、発言の度にログファイルに追記するのではなく
1710  # 一定の分量が溜まってから書き込まれる。そのため、ファイルを開いても
1711  # 最近の発言はまだ書き込まれていない可能性がある。
1712  # syncを設定すると、即座にログをディスクに書き込むためのコマンドが追加される。
1713  # 省略された場合はコマンドを追加しない。
1714  sync: sync
1715
1716  # 各サーバの設定。サーバ名の部分はマスクである。
1717  # 記述された順序で検索されるので、全てのサーバにマッチする"*"などは最後に書かなければならない。
1718  # 指定されたディレクトリが存在しなかったら、勝手に作られる。
1719  # フォーマットは次の通り。
1720  # channel: <ディレクトリ名> <サーバ名マスク>
1721  # 例:
1722  # filename: %Y-%m-%d.txt
1723  # server: ircnet ircnet
1724  # server: others *
1725  # この例では、ircnetのログはircnet/%Y.%m.%d.txtに、
1726  # それ以外のログはothers/%Y.%m.%d.txtに保存される。
1727  server: ircnet ircnet
1728  server: others *
1729}
1730
1731- Log::Recent {
1732  # クライアントを接続した時に、保存しておいた最近のメッセージを送る。
1733
1734  # クライアントオプションの no-recent-logs が指定されていれば送信しません。
1735
1736  # 各行のヘッダのフォーマット。省略されたら'%H:%M'。
1737  header: %H:%M:%S
1738
1739  # ログをチャンネル毎に何行まで保存するか。省略されたら10。
1740  line: 15
1741
1742  # PRIVMSGとNOTICEを記録する際に、自分の発言と他人の発言でフォーマットを変えるかどうか。1/0。デフォルトで1。
1743  distinguish-myself: 1
1744
1745  # どのメッセージを保存するか。省略されたら保存可能な全てのメッセージを保存する。
1746  command: privmsg,notice,topic,join,part,quit,kill
1747}
1748
1749+ Network::Freenode {
1750  # Freenode サポート
1751
1752  # 現状では ChanServ の検出以外の機能はありません。
1753  # drop による状況の変化についてもサポートしていません。
1754
1755  # Channel::Rejoin では、このモジュールによってチャンネルが
1756  # ChanServ の管理下にあると検出した時には Rejoin 動作を
1757  # 行わなくなります。
1758
1759  # 設定はありません。
1760  # また、 freenode 以外のネットワークでこのモジュールが
1761  # 有効になっていても不都合はないはずです。
1762}
1763
1764- Skeleton {
1765  # Skeleton for tiarra-module.
1766
1767  # モジュールの説明をこのあたりに書く.
1768  # 詳細はこのソースみれば分かると思われ.
1769  # 書式は tiarra.conf にそのままコピーできる形式.
1770
1771  # もにゅもにゅ
1772  mask: *!*@*
1773  mask: ...
1774}
1775
1776+ System::Error {
1777  # サーバーからのERRORメッセージをNOTICEに埋め込む
1778
1779  # これをoffにするとクライアントにERRORメッセージがそのまま送られます。
1780  # クライアントとの間ではERRORメッセージは主に切断警告に使われており、
1781  # そのまま流してしまうとクライアントが混乱する可能性があります。
1782  #   設定項目はありません。
1783
1784  # このモジュールを回避してERRORメッセージをクライアントに送りたい場合は、
1785  # remarkのsend-error-as-is-to-clientを指定してください。
1786}
1787
1788- System::LivePatch {
1789  # Live Patch.
1790
1791  # main/* に対する実行時パッチ
1792  # 起動/ロード時に確認は行われるが, 実際の適用は指示があるまで行われない.
1793
1794  # 対応している箇所.
1795  # ModuleManager / reload_modules_if_modified / r3004 => r8809
1796  # LinedINETSocket / connect / r3004 => r8930
1797  # Configuration::Block / equals / r3004 => r11868
1798
1799  # /livepatch check で確認.
1800  # /livepatch apply で適用.
1801  command: livepatch
1802}
1803
1804- System::Macro {
1805  # 新規にコマンドを追加し、そのコマンドが使われた時に特定の動作をまとめて実行します。
1806
1807  # 書式: <コマンド> <動作>
1808  # コマンド"switch"を追加して、それが使われると
1809  # #a@ircnet,#b@ircnet,#c@ircnetにjoinして、
1810  # #d@ircnet,#e@ircnet,#f@ircnetからpartする例。
1811  #macro: switch join #a@ircnet,#b@ircnet,#c@ircnet
1812  #macro: switch part #d@ircnet,#e@ircnet,#f@ircnet
1813}
1814
1815- System::NotifyIcon::Win32 {
1816  # タスクトレイにアイコンを表示する。
1817
1818  # タスクトレイにアイコンを表示します。
1819  # クリックすると表示非表示を切り替えることができ、右クリックすると
1820  # Reload と Exit ができるコンテキストメニューを表示します。
1821  # 多少反応が鈍いかもしれませんがちょっと待てば出てくると思います。
1822
1823  # Win32::GUI を必要とします。
1824  # コンテキストメニューは表示している間処理をブロックしています。
1825
1826  # Win32 イベントループを処理する最大間隔を指定します。
1827  #interval: 2
1828
1829  # 通知領域に表示するアイコンを指定します。
1830  # Win32::GUI の制限でちゃんとしたアイコンファイルしか指定できません。
1831  iconfile: guiperl.ico
1832
1833  # モジュールが読み込まれたときにコンソールウィンドウを隠すかどうかを
1834  # 指定します。
1835  hide-console-on-load: 1
1836}
1837
1838+ System::Pong {
1839  # サーバーからのPINGメッセージに対し、自動的にPONGを返す。
1840
1841  # これをoffにするとクライアントが自らPINGに応答せざるを得なくなりますが、
1842  # クライアントからのPONGメッセージはデフォルトのサーバーへ送られるので
1843  # デフォルト以外のサーバーからはPing Timeoutで落とされるなど
1844  # 全く良い事がありません。
1845  #   設定項目はありません。
1846}
1847
1848+ System::PrivTranslator {
1849  # クライアントからの個人的なprivが相手に届かなくなる現象を回避する。
1850
1851  # このモジュールは個人宛てのprivmsgの送信者のnickにネットワーク名を付加します。
1852  # また、最後に声をかけられてから5分以内の nick 変更をクライアントに伝えます。
1853  # 設定項目はありませんが、 networks/channel-network-separator を ! や @ 以外に
1854  # 変更することをおすすめします。
1855}
1856
1857- System::Raw {
1858  # マスクで指定したサーバーにIRCメッセージを加工せずに直接送る。
1859
1860  # 例えばQUITを送る事で一時的な切断が可能。
1861
1862  # この機能を利用するためのコマンド名。デフォルトは「raw」。
1863  # 「/raw ircnet quit」のようにして使う。
1864  # 一つ目のパラメータは送り先のネットワーク名。ワイルドカード使用可能。
1865  # CHOCOA の場合、 raw がクライアントで使われてしまうので、
1866  # コマンド名を変えるか、 /raw raw ircnet quit のようにする必要がある。
1867  command: raw
1868}
1869
1870+ System::Reload {
1871  # confファイルやモジュールの更新をリロードするコマンドを追加する。
1872
1873  # リロードを実行するコマンド名。省略されるとコマンドを追加しません。
1874  # 例えば"load"を設定すると、"/load"と発言しようとした時にリロードを実行します。
1875  # この時コマンドはTiarraが握り潰すので、IRCプロトコル上で定義された
1876  # コマンド名を設定すべきではありません。
1877  command: load
1878
1879  # command と同じですが、サーバにもブロードキャストします。
1880  #broadcast-command: load-all
1881
1882  # confファイルをリロードしたときに通知します。
1883  # モジュールの設定が変更されていた場合は、ここでの設定にかかわらず、
1884  # モジュールごとに表示されます。1または省略された場合は通知します。
1885  conf-reloaded-notify: 1
1886}
1887
1888- System::RemoteControl {
1889  # 特定の発言が送られてきたとき、それに反応してIRCコマンドを実行します。
1890
1891  # 実行を許可する人間を表すマスク。
1892  #mask: *!*example@example.net
1893
1894  # 構文: + <nick> <IRC Message>
1895  # <nick>は反応するbotのnickを表すマスク。
1896  # <Tiarra::IRC::Message>はサーバーに向けて発行するIRCメッセージ。
1897  #
1898  # 例:
1899  # + hoge NICK [hoge]
1900  # hogeというBOTが[hoge]にnickを変更する。
1901}
1902
1903- System::Shutdown {
1904  # Tiarraを終了させる。
1905
1906  # クライアントから特定のコマンドが実行された時や、
1907  # 誰かから個人的に(privで)特定の発言が送られた時に
1908  # Tiarra を終了させます。
1909
1910  # 追加するコマンド。省略された場合はコマンドでのシャットダウンは無効になります。
1911  #command: shutdown
1912
1913  # Tiarraをシャットダウンさせるprivの発言。
1914  # 省略された場合はprivでのシャットダウンは無効になります。
1915  # パラメータとして shutdown メッセージを指定できます。
1916  #message: shutdown
1917
1918  # privでのシャットダウンを許可する人。
1919  # 省略された場合はprivでのシャットダウンは無効になります。
1920  # 複数のマスクを指定した場合は、一つでもマッチするものがあればシャットダウンします。
1921  #mask: example!example@*.example.jp
1922}
1923
1924- System::WebClient {
1925  # ブラウザ上でログを見たり発言したりできます.
1926
1927  # WebClient を起動させる場所の指定.
1928  bind-addr: 127.0.0.1
1929  bind-port: 8667
1930  path: /irc
1931  css: /irc/style/style.css
1932  # 上の設定をapacheでReverseProxyさせる場合, httpd.conf には次のように設定.
1933  #  ProxyPass        /irc/ http://localhost:8667/irc/
1934  #  ProxyPassReverse /irc/ http://localhost:8667/irc/
1935  #  <Location /irc/>
1936  #  ...
1937  #  </Location>
1938
1939  # ReverseProxy 利用時の追加設定.
1940  # 接続元が全部プロキシサーバになっちゃうのでその対応.
1941  # ReverseProxy 使わず直接公開の場合は不要.
1942  #extract-forwarded-for: 127.0.0.1
1943
1944  # 利用する接続設定の一覧.
1945  #
1946  # 空白区切りで評価する順に記述.
1947  # 使われる設定は,
1948  # - 接続元 IP が一致する物.
1949  # - user/passが送られてきていない(認証前/anonymous):
1950  #   - 認証不要の設定があればその設定を利用.
1951  #   - 認証不要の設定がなければ 401 Unauthorized.
1952  # - user/passが送られてきている.
1953  #   - 一致する設定を利用.
1954  #   - 一致する設定がなければ 401 Unauthorized.
1955  allow: private public
1956
1957  # 許可する接続の設定.
1958  allow-private {
1959    # 接続元IPアドレスの制限.
1960    host: 127.0.0.1
1961    # 認証設定.
1962    # auth: <user> <pass>
1963    # auth: :basic <user> <pass>
1964    # auth: :softbank <端末ID>
1965    # auth: :softbank <UID>
1966    # auth: :au <SUBNO>
1967    # 各値(<pass>等)には {MD5}xxxx や {B}xxx や {CRYPT}xxx を利用可能.
1968    # そのままべた書きも出来るけれど.
1969    auth: :basic user pass
1970    # 公開するチャンネルの指定.
1971    mask: #*@*
1972    mask: *@*
1973  }
1974  allow-public {
1975    host: *
1976    auth: :basic user2 pass2
1977    mask: #公開チャンネル@ircnet
1978  }
1979
1980  # デバッグフラグ.
1981  #debug: 0
1982
1983  # 保存する最大行数.
1984  #max-lines: 100
1985
1986  # クライアントモード.
1987  # owner か shared.
1988  # mode: owner
1989
1990  # ログの方向.
1991  # asc (旧->新) か desc (新->旧).
1992  # sort-order: asc
1993
1994  # name-default 設定は VERSION 0.05 で廃止されました.
1995  # # 発言BOXで名前指定しなかったときのデフォルトの名前.
1996  # # mode: shared の時に使われる.
1997  # -name-default: (noname)
1998
1999  # 外部にTiarraさんを使っているときに, そこのネットワークを切り出して表示する.
2000  # exteact-network: <netname> <remote-sep>
2001  # <netname> ::= このTiarraさんから見たときの外部Tiarraさんのネットワーク名.
2002  #               (このtiarra.confで指定しているネットワーク名)
2003  # <remote-sep> ::= 外部Tiarraさんで使っているセパレータ.
2004  #                  (こっちはこのtiarra.confのではないです)
2005  #                  省略すると @ と仮定.
2006  #exteact-network: tiarra
2007  #exteact-network: tiarra @
2008}
2009
2010- User::Away::Client {
2011  # クライアントが一つも接続されていない時にAWAYを設定します。
2012
2013  # どのようなAWAYメッセージを設定するか。省略された場合はAWAYを設定しません。
2014  #away: 居ない。
2015}
2016
2017- User::Away::Nick {
2018  # ニックネーム変更に応じて AWAY を設定します。
2019
2020  # ニックネームを変更したときに、そのニックネームに対応するAWAYが
2021  # 設定されていれば、そのAWAYを設定します。そうでなければAWAYを取り消します。
2022
2023  # 書式: <nickのマスク> <設定するAWAYメッセージ>
2024  #
2025  # nickをhoge_zzzに変更すると、「寝ている」というAWAYを設定する。
2026  # hoge_workまたはhoge_zzzに変更した場合は、「仕事中」というAWAYを設定する。
2027  # それ以外のnickに変更した場合はAWAYを取り消す。
2028  # 後者は正規表現を利用して「away: re:hoge_(work|zzz) 仕事中」としても良い。
2029  #away: hoge_zzz           寝ている
2030  #away: hoge_work,hoge_zzz 仕事中
2031}
2032
2033- User::Filter {
2034  # 指定された人物からのPRIVMSGやNOTICEを書き換える。
2035
2036  # 人物のマスクと、置換パターンを定義。
2037  # 置換パターン中の#(message)は、発言内容に置換されます。
2038  # 人物が複数のマスクに一致する場合は、最初に一致したものが使われます。
2039  pattern: *!*@* #(message)
2040}
2041
2042- User::Ignore {
2043  # 指定された人間からのPRIVMSGやNOTICEを破棄してクライアントへ送らないようにするモジュール。
2044
2045  # 対象となるコマンドのマスク。省略時には"privmsg,notice"が設定されている。
2046  # ただしprivmsgとnotice以外を破棄してしまうと、(Tiarraは平気でも)クライアントが混乱する。
2047  command: privmsg,notice
2048
2049  # maskは複数定義可能。定義された順番でマッチングが行なわれます。
2050  mask: example!*@*.example.net
2051}
2052
2053- User::Nick::Detached {
2054  # クライアントが接続されていない時に、特定のnickに変更します。
2055
2056  # クライアントが接続されていない時のnick。
2057  # このnickが既に使われていたら、適当に変更が加えられて使用されます。
2058  # クライアントが再び接続されると、切断前のローカルnickに戻ります。
2059  detached: PHO_d
2060}
2061
2062- User::ServerOper {
2063  # 特定のネットワークに接続した時、OPERコマンドを発行します。
2064
2065  # 書式: <ネットワーク名> <オペレータ名> <オペレータパスワード>
2066  #
2067  # ネットワーク"local"に接続した時、オペレータ名oper、
2068  # オペレータパスワードoper-passでOPERコマンドを発行する例。
2069  #oper: local oper oper-pass
2070}
2071
2072- User::Vanish {
2073  # 指定された人物の存在を、様々なメッセージから消去する。
2074
2075  # 対象となった人物の発行したJOIN、PART、INVITE、QUIT、NICKは消去され、NAMESの返すネームリストからも消える。
2076  # また、対象となった人物のNJOINも消去される。
2077
2078  # Vanish対象が発行したMODEを消去するかどうか。デフォルトで0。
2079  # 消去するとは云え、本当にMODEそのものを消してしまうのではなく、
2080  # そのユーザーの代わりに"HIDDEN!HIDDEN@HIDDEN.BY.USER.VANISH"がMODEを実行した事にする。
2081  drop-mode-by-target: 1
2082
2083  # Vanish対象を対象とするMODE +o/-o/+v/-vを消去するかどうか。デフォルトで1。
2084  drop-mode-switch-for-target: 1
2085
2086  # Vanish対象が発行したKICKを消去するかどうか。デフォルトで0。
2087  # 本当に消すのではなく、"HIDDEN!HIDDEN@HIDDEN.BY.USER.VANISH"がKICKを実行した事にする。
2088  drop-kick-by-target: 1
2089
2090  # Vanish対象を対象とするKICKを消去するかどうか。デフォルトで0。
2091  drop-kick-for-target: 0
2092
2093  # Vanish対象が発行したTOPICを消去するかどうか。デフォルトで0。
2094  # 本当に消すのでは無いが、他の設定と同じ。
2095  drop-topic-by-target: 1
2096
2097  # チャンネルとVanish対象の定義。
2098  # 特定のチャンネルでのみ対象とする、といった事が可能。
2099  # また、privの場合は「#___priv___@ネットワーク名」という文字列をチャンネル名の代わりとしてマッチングを行なう。
2100  # 書式: mask: <チャンネルのマスク> <ユーザーのマスク>
2101  mask: #example@example  example!exapmle@example.com
2102}
2103
2104