特定のサーバ間のリンクが切れたとき、split-mode というモードに切り替わり、新 しくチャンネルを作成したときにチャンネルオペレータ権限を取得することが出来な くなります。何故このようなモードが出来たかというと、サーバ間のリンクが切れた 時に、各々のサーバが孤立し、今まで存在していたチャンネルに自分自身一人だけし か居ない状態になれば、rejoin することにチャンネルオペレータ権限を取得するこ とが出来ましたが、それが悪用され、チャンネルの乗っ取りに利用されることが有り ました。それを防ぐための機能です。 すなわち、スプリット時に新しくチャンネルを作成したとしても、チャンネルオペレ ータ権限を取得することが出来ません。
スプリットモードに入っている場合、サーバ接続時に以下のようにサーバからのメッ セージがあります。その際、接続しているサーバ名からあなた宛にメッセージが飛ん できたように見えます。また、接続中、スプリットが起こり、スプリットモードに入 った場合も同様です。
Server is currently in split-mode. You will NOT get channel operator status on new channels.
サーバの設定ファイル config.h に以下の項目があります。その閾値以下になると、 split-modeに入ります。
#define SPLIT_HANDLE /* defines minimum for GLOBAL channels */ #define SPLIT_SERV 16 #define SPLIT_USERS 24000
また、ユーザが閾値を確認する方法には、stats d というコマンドを使用し、情報取得 することにより、調べることが可能となります。
248 jv:LFsNdD5?MSoIvi Split Servers: 16 (44) Users: 24000
詳細は Denied Accessの「オープンプロキシ サーバとして判断されているケース」に詳細を記載しております。そちらをご覧下さ い。
チャンネルにJOINすると現在のTOPICだけではなく、何時、誰がトピックを付けたか の情報が得る事が出来るようになりました。
#channel topic was set at 2003/12/01 00:50:39 by nickname!~username@example.com
hemp-patch が当たっていない状態では、idle timeしか取得出来なかったのですが、 それが拡張され、サーバに接続してからどれだけ時間が経過したかも分かるようにな りました。 単位は秒なので、それを `60` で割ると、分に、 `3600` で割ると時間に変換するこ とが分かります。すなわち、逆算により、接続した日時も分かるようになりました。
118411 1069930016 :seconds idle, signon time
読み方は次の通りです。
idletime(秒) 接続してからの経過時間(秒) :seconds idle, signon time
hemp-patch 以前はネットワーク全体のユーザ数、サーバ数、オペレータ数、チャン
ネル数、そのサーバに繋がっているユーザ数しか得ることが出来ませんでしたが、パ
ッチが当たることにより、情報が拡張されました。dti の結果を見ていただければ分
かると思いますが、ユーザ数に対しての現在の接続数、接続最大数が表示されるよう
になりました。
以下のデータは同時刻に以下の二つのサーバで取得しました。
There are 115256 users and 4 services on 43 servers 190 :operators online 59239 :channels formed I have 74 users, 0 services and 1 servers
There are 115256 users and 4 services on 43 servers 190 :operators online 59239 :channels formed I have 556 users, 0 services and 1 servers Current local users: 556 Max: 721 Current global users: 115256 Max: 126943
IRCサーバに接続したとき、どのような制限があるのか情報が表示される ようになりました。
MAP PREFIX=(ov)@+ MODES=3 CHANTYPES=#&!+ MAXCHANNELS=20 NICKLEN=9 TOPICLEN=160 KICKLEN=160 NETWORK=IRCNet CHANMODES=beI,k,l,imnpstaqr :are supported by this server
+#ifdef SEND_ISUPPORT +/* 005 */ //{ RPL_ISUPPORT, "MAP PREFIX=(ov)@+ MODES=3 CHANTYPES=#&!+ MAXCHANNELS=%d NICKLEN=%d TOPICLEN=%d KICKLEN=%d NETWORK=%s CHANMODES=beI,k,l,imnpstaqr :are supported by this server" },
以下項目の説明
IRCサーバに向かって MAP というコマンドを送ることにより、サーバのリンク図がテ キストでわかりやすく表示されます。殆どのクライアントはコマンドの prefix が '/' でしょうから、 '/map' と入力することにより、表示出来るでしょう。
hemp.diff のソースを読むと、以下のようになっており、TOPIC の長さの最大が 80byte から 160byte に変更され拡張されています。hemp-patch の当たっていない 場合は TOPIC の長さが 80byte までの為、hemp-patch の当たっていないサーバから 見ると、後ろがきれた TOPIC になる事があります。また、80byte 未満の TOPIC で あれば問題なく表示できます。
diff -ur --new-file irc2.10.3p3/common/struct_def.h irc2.10.3p3+hemp/common/struct_def.h --- irc2.10.3p3/common/struct_def.h Mon May 14 14:02:08 2001 +++ irc2.10.3p3+hemp/common/struct_def.h Sat Nov 24 14:57:01 2001 @@ -47,7 +47,7 @@ */ #define USERLEN 10 #define REALLEN 50 -#define TOPICLEN 80 +#define TOPICLEN 160 #define CHANNELLEN 50 #define PASSWDLEN 20 #define KEYLEN 23
2002.11.01 現在 hemp-patch のあたったバージョンのIRCサーバが使用されておりま す。このホスト群から「 PortScan される/された 」という話をよく聞きますが、 hemp-patch の仕様として、open proxy のチェックを試みるという機能が有り、現在 の設定では、ユーザがIRCサーバに接続を試みたとき、port 80, 3128, 8080, 10080 をチェックするようになっています。 詳細は Denied Accessの「オープンプロキシ サーバとして判断されていませんか?」を参照してください。 hemp-patch が適用される前から socks proxy チェックのため 1080/TCP はチェック されていました。