-*- outline -*-
$Id: conf-main.tdoc 36723 2010-02-11 18:26:27Z topia $

perlのソースに使うpodパーサを流用しているので、package文と=pod〜=cutで書く必要があります。
ヘッダのinfo-is-ommitedとno-switchはどちらも値を真に定義しなければなりません。

* general
package general;
=pod
info: conf自身の文字コードやユーザー情報などを指定する
info-is-omitted: 1
no-switch: 1

# tiarra.conf自身の文字コード
# コード名はjis,sjis,euc,utf8,utf16,utf32等。(この値はEncodeまたはUnicode::Japaneseにそのまま渡されます)
# autoが指定された、または省略された場合は自動判別します。
conf-encoding: utf8

# ユーザー情報
# 省略不能です。
nick: tiarra
user: tiarra
name: Tiarra the "Aeon"

# どのようなユーザーモードでログインするか。+iwや+iのように指定する。
# 省略された場合はユーザーモードを特に設定しない。
-user-mode: +i

# Tiarraへの接続を許可するホスト名を表わすマスク。
# 制限をしないのであれば"*"を指定するか省略する。
client-allowed: *

# Tiarraが開くポート。ここに指定したポートへクライアントに接続させる。
# 省略されたらポートを開かない。
tiarra-port: 6667

# Tiarraがポートtiarra-portを開く際、IPv6とIPv4のどちらでリスニングを行なうか。
# 'v4'または'v6'で指定します。デフォルトは'v4'です。
# IPv6を使うためにはSocket6.pmが利用可能である必要があります。
-tiarra-ip-version: v4

# Tiarraがポートtiarra-portを開く際のローカルアドレス。
# 意味が分からなければ省略して下さい。
# デフォルトは、IPv4のはINADDR_ANY、IPv6のはin6addr_anyになります。
-tiarra-ipv4-bind-addr: 0.0.0.0
-tiarra-ipv6-bind-addr: ::0

# Tiarraにクライアントが接続する際に要求するパスワードをcryptした文字列。
# 空の文字列が指定されたり省略された場合はパスワードを要求しない。
# crypt は ./tiarra --make-password で行えます。
tiarra-password: xl7cflIcH9AwE

# 外部プログラムからTiarraをコントロールする為のUNIXドメインソケットの名前。
# 例えば"foo"を指定した場合、ソケット/tmp/tiarra-control/fooが作られる。
# 省略された場合はこの機能を無効とする。
# また、非UNIX環境ではそもそもUNIXドメインソケットが利用可能でないため、
# そのような場合にもこの機能は無効となる。
-control-socket-name: test

# IRCサーバーから送られる文字のコードと、IRCサーバーへ送る文字のコード。
# それぞれ省略された場合はjis。
server-in-encoding: utf8
server-out-encoding: utf8

# クライアントから受け取る文字のコードと、クライアントへ伝える文字のコード。
# それぞれ省略された場合はjis。
client-in-encoding: utf8
client-out-encoding: utf8

# Tiarraは標準出力に様々なメッセージを出力するが、その文字コードを指定する。省略時にはutf8となる。
# ただしtiarra.confのパースが完了するまでは文字コードの変換は行なわれない(つまりこの設定が有効にならない)ことに注意して下さい。
stdout-encoding: utf8

# Tiarraはエラーメッセージを標準出力に出力するが、その時に接続しているクライアントがあればクライアントにもNOTICEで送る事が出来る。
# この値を1にすると、その機能が有効になる。省略するか0を指定するとこの機能は無効になる。
notice-error-messages: 1

# Tiarraでチャンネルとユーザーのマスクを指定するときの形式。
# plum形式とTiarra形式が選択できます。
#-----------------
# plum形式: (channelには+や-は使えない。channelは省略すると*とみなす。)
#   + syntax: user[ channel[ channel[ ...]]]
#
#  mask: +*!*@*.example.com #{example}@ircnet +{example3}@ircnet
#  mask: -*!*@*.example.com #{example2}@2ch,+{example4}@2ch
#  mask: -*!*@*
#-----------------
# Tiarra形式: (channelにも+や-を使える。)
#   + syntax: channel user
#
#  mask: #{example}@ircnet,-#{example2}@2ch    +*!*@*.example.com
#  mask: ++{example3}@ircnet,-+{example4}@2ch  +*!*@*.example.com # +で始まるチャンネル。
#  mask: *                                     -*!*@*
#-----------------
# となります。この二つはまったく同じマスクを表しています。

# この値をplumにすると、plum形式、省略するかtiarraを指定すると、Tiarra形式になります。
chanmask-mode: tiarra

# サーバーに接続する際、ローカル側のどのアドレスにバインドするか。
# 意味が分からなければ省略して下さい。
# デフォルトは、IPv4のはINADDR_ANY、IPv6のはin6addr_anyになります。
-ipv4-bind-addr: 0.0.0.0
-ipv6-bind-addr: ::0

# Tiarra が、 001 や 002 や、 recent log を送信するときなどに使う prefix
# を指定します。 hostname や FQDN っぽいものを指定すると良いかもしれません。
# デフォルトは tiarra です。普通変える必要はありません。
-sysmsg-prefix: tiarra

sysmsg-prefix-use-masks {
  # sysmsg-prefix を使用する場所を指定する。

  # システムメッセージ(NumericReply など)。デフォルトは * です。
  # ふつうこれを変更する必要はありません。
  system: *

  # 個人宛メッセージ(Notice,Privmsg の中で)。デフォルトはなし。
  -priv:

  # チャンネル宛メッセージ(Notice,Privmsg の中で)。デフォルトは * です。
  # Ziciz などのクライアントを接続する場合は、
  # -*::log を指定しておくといいかもしれません。
  channel: *
}

# Tiarra が nick 変更時の衝突等を処理するモードを指定します。
# 0: Tiarra が接続時と同様に自動処理します。
# 1: クライアントにそのまま投げます。
#    複数のクライアントが nick 重複を処理する場合は非常に危険です。
#    (設定不足の IRC クライアントが複数つながっている場合も含みます)
# 2: 対応するエラーメッセージ付きの NOTICE に変換して、
#    クライアントに投げます。
# multi-server-mode 時のデフォルトは 0 、 single-server-mode 時のデフォルトは 1 です。
-nick-fix-mode: 0

# Tiarra がチャンネルに join する際の挙動を設定します。
# デフォルト設定で Excess Flood になってしまう場合に設定してください。
#
# irc.juggler.jp (2ch@IRC) にて 25 チャンネル以上 join している場合に
# Excess Flood になってしまった事例があるそうです。

# JOIN コマンドを送信する間隔 (秒)
# デフォルトは1秒です。
join-interval: 1

# 一つの JOIN コマンドで指定するチャンネルの数
# デフォルトは5チャンネルです。
join-channels-per-command: 5

messages {
  # Tiarra が使用する、いくつかのメッセージを指定する。

  quit {
    # ネットワーク設定が変更され、再接続する場合の切断メッセージ
    netconf-changed-reconnect: Server Configuration changed; reconnect

    # ネットワーク設定が変更され、切断する場合の切断メッセージ
    netconf-changed-disconnect: Server Configuration changed; disconnect
  }
}
=cut

* networks
package networks;
=pod
info: Tiarraから接続するネットワークの定義、その他
info-is-omitted: 1
no-switch: 1

# 複数のサーバーへの接続を可能にするかどうか。1(オン)と0(オフ)で指定。
# これを1にすると、次のnameを複数個定義する事が可能になり、
# 複数のサーバーに同時に接続出来るようになります。
# その一方、これを1にしている時は、チャンネル名にネットワーク名が付加される等、
# IRCの大部分のメッセージがTiarraによる改変を受けます。
# これを0にしている間は、次のnameを複数個定義する事は出来なくなります。
# マルチサーバーモードの設定を起動中に変えると、クライアントから見たチャンネル名が
# 変更になる為、全クライアントが一時的に全てのチャンネルからpartしたように見え、
# その直後にjoinし直したように見えます。
# デフォルトでは1です。
multi-server-mode: 1

# 接続するIRCネットワークに名前を付けます。この名前は後で使用します。
# 複数のネットワークに接続したい場合は多重定義して下さい。
name: ircnet
name: 2ch
#name: freenode
#name: ustream

# 通常Tiarraではチャンネル名を「#Tiarra@ircnet」のように表現します。
# これはネットワークircnet内の#Tiarraというチャンネルを表わします。
# @以降は省略可能ですが、省略された場合のデフォルトのネットワーク名をここで指定します。
# 省略した場合は最も始めに定義されたnameがデフォルトになります。
# (そしてnameが一つも無かった場合はmainがデフォルトになります)
-default: ircnet

# 上に述べた通り、デフォルトではTiarraはチャンネル名とネットワーク名を@で区切ります。
# この区切り文字は任意の文字に変更する事が出来ます。省略された場合は@になります。
#
# System::PrivTranslator モジュールを利用している場合、 prefix の nick 部分にも
# 利用されます。そのため、 ! や @ を含む文字列を利用するとクライアントが誤作動する
# 場合がありますので注意してください。
channel-network-separator: @

# 接続先のサーバーから切断された時に、joinしていたそのサーバーのチャンネルをどうするか。
# 1. "part-and-join"の場合は、切断されるとクライアントにはチャンネルからpartしたように見せ掛け、
#    再接続に成功すると再びjoinしたように見せ掛ける。最も負荷が高い。(これはplumに似た動作である)
# 2. "one-message"の場合は、切断されるとクライアントに宛ててTiarraがNOTICEでその旨を報告する。
#    再接続に成功すると再びNOTICEで報告する。JOINやPARTはしないので、
#    クライアントからはまだそのチャンネルに残っているかのように見える。
# 3. "message-for-each"の場合は、切断されるとクライアントに宛ててTiarraが
#    到達不能になった全てのチャンネルにNOTICEでその旨を報告する。
#    再接続に成功すると再びNOTICEで報告する。JOINやPARTはしない。
# 省略時のデフォルトはpart-and-joinです。
action-when-disconnected: message-for-each

# NICKを変更する度に、変更したサーバーでの新しいNICKをNOTICEで常に通知するかどうか。
# 1なら必ず通知し、0なら変更後のnickがローカルnick(クライアントが見る事の出来るnick)と違っている場合のみ通知する。
# デフォルトは0です。
always-notify-new-nick: 0

fixed-channels {
  # Tiarra がクライアント接続時にチャンネル情報を送る順番を指定する。
  # マッチしなかったチャンネルについては最後にまとめて
  # (順番がごちゃごちゃになって)送られてきます。
  channel: #てすとちゃんねる@ircnet
  channel: #てすと@localserver
  channel: *@localserver
  channel: *@localserver:*.jp
}
=cut


* ircnet
package ircnet;
=pod
info: ネットワーク定義例 (IRCnet)
info-is-omitted: 1
no-switch: 1


# サーバーのホストとポートを指定。複数行可。(host/port が指定されていない場合は)省略不可。
# 同じサーバの複数のポート指定は順番に試すので、大量に書かない方がよい。
server: irc.ircnet.ne.jp 6667
server: irc.media.kyoto-u.ac.jp 6662 6663
server: irc.huie.hokudai.ac.jp 6667

# サーバーのホストとポート。(server が指定されていない場合は)省略不可。
# server を指定した場合は server が優先されます。
-host: irc.media.kyoto-u.ac.jp
-port: 6663

# general/userで設定したユーザ名を使わずに、各ネットワークで独自のユーザ名を使用する事も可能。
# 省略されたら当然、general/userで設定したものが使われる。
-user: hoge

# general/nameで設定した本名(建前上)を使わずに、各ネットワークで独自の本名を使用可能。
-name: hoge

# このサーバーの要求するパスワード。省略可能。
-password: hoge

# general/setver-in/out-encodingで設定した文字のコードを使わずに、
# 各ネットワークで独自の文字コードを使用する事も可能。
# 省略されたら当然、generalで設定したものが使われる。
in-encoding: jis
out-encoding: jis

# general/(ipv4|ipv6)bind-addrで設定したローカルアドレスを使わずに、
# 各ネットワークで独自のbind_addrを使用する事も可能。
# 省略されたらgeneralで設定したものが使われる。
-ipv4-bind-addr: 0.0.0.0
-ipv6-bind-addr: ::0
=cut

* 2ch
package 2ch;
=pod
info: ネットワーク定義例 (2ch)
info-is-omitted: 1
no-switch: 1


server: irc.2ch.net 6667
server: irc2.2ch.net 6667
server: irc.juggler.jp 6667

in-encoding: jis
out-encoding: jis
=cut

* freenode
package freenode;
=pod
info: ネットワーク定義例 (freenode)
info-is-omitted: 1
no-switch: 1


server: chat.freenode.net 6667

# freenodeではパスワードとして「アカウント パスワード」のように、
# アカウントに空白とパスワードを続けたものを指定することで、
# NICKコマンドの前の接続の段階でidentifyすることができるため、
# nickの重複や異なるnick等、nickとは無関係に自動identifyが可能。
-password: account secret
=cut

* ustream
package ustream;
=pod
info: ネットワーク定義例 (Ustream)
info-is-omitted: 1
no-switch: 1


server: chat1.ustream.tv 6667

# Ustreamのloginをnickとuserに指定する。
-nick: ustreamer
-user: ustreamer

# Ustreamのパスワードを指定する。
-password: secret
=cut
