irc2.11 の新機能・仕様変更点について

08740, Today: 004, Yesterday: 002 Hits
2004.01.24 作成
2004.07.08 修正
2005.01.06 修正、+Rについて加筆
2005.02.18 +Rについて修正

注意: このドキュメントは、irc2.11の新機能を追っかけただけに過ぎません。また、これらの仕様が変更されるかもしれませんし、間違ったことを書いているかもしれません。もし、間違い等の発見等が有りましたら、連絡を頂けると幸いです。

新機能について

【 [X] UID solution 】

UID とは何か

 irc2.11 には 色々な機能が盛り込まれています。changelog や roadmap を見ると色々な機能が有るのが分かります。目立った新機能と言えば Unique ID (UID) が生成されることでしょう。Unique ID とは、サーバのPrefix(SID) + サーバ内の固有の数字(UID) という 16進9桁の組合せから出来ています。この Unique ID とは色々なところで利用されるようになります。

XXXYZZZZZ  の16進9桁

Server ID
   X... ISO3166 Country Code 
   Y... Server Number
User ID
   Z... Serial Number

 尚、Server ID の Country Prefix には、ISO3166 countrycodeに基づき国別に分類されます。

"2768ABC78" UID. In this example 276 is the ISO3166 code for Germany, 8 the ID of the german server and "ABC78" the random string generated by the server.

The Server ID on IRCnet is 4 characters long and begins with 3 digits that are assigned based on the geographical location via ISO3166 countrycode and ends with an identifier of the server in the TLD.
                            参照: New features in the IRCnet ircd 2.11

 また、サーバに接続すると、以下のように表示された行が有り、メッセージ番号042と言うのが新設されています。

:<server name> 042 <nick> 392AAAAA6 :your unique ID

どういう場面で使用されるか

ユーザから見て、どういうところで活躍しているか見てみましょう。

自分のUIDを調べる方法 [X] NICK 0 to get UID-nick

* Clients can use "NICK 0" to get their UID as a nick. Works during
  registration, too.

nick 0 とコマンドを入力すると、以下のようなメッセージを返します。

Example: nick 0
:tomocha!~tomocha@ThinkPad-X31.local.tomocha.net NICK :392AAAABB

 これは、irc2.11.x 以降では `nickname 0' が特別扱いされ、自分自身のUnique ID を見ることが出来ます。尚、irc2.11.x 以前のバージョンで有れば、エラーとなり、以下のようなメッセージを返します。また、IRCでは数字から始まるニックネームは利用出来ません。ちなみに、IRCクライアントがこの機能を実装していないと、ニックネームの変更に失敗したとみなされ、ニックネームの最後に “_”や“0”を付けたりしてしまう可能性があります。LimeChatではこの問題が発生しました。

:<server name> 432 <nick> - :Erroneous Nickname

【 +R (Reop Hints) 】

* New channel list type: R (aka reop hints). With the same syntax and
  behaviour as beI, it serves as a hint list for reopping opless
  channels.
* Clients cannot set +R. (This restriction will be removed in 2.11.1)

irc2.11.0 時点では、サーバオペレータ のみが利用できるようになっています。尚、irc2.11.1 からはユーザが利用できるようになる予定です。

セーフチャンネル等で、サーバreopチャンネルフラグ(+r)の立っているチャンネルで、opless(オペレータ権限の無くなったチャンネル)になった際、サーバから一定の法則に基づき、チャンネルオペレータ権限をユーザに付ける機能があります(RFC2811 5.2.5 サーバReopメカニズム参照)。この機能を改良したものにあたるのが、+R(Reop Hints)となります。+R機能は、セーフチャンネルでなくとも使用可能(#から始まるチャンネルも可能)になります。また、oplessになってから約90分後にサーバ側よりチャンネルオペレータ権限が配布されます。使用方法は、+b/+e/+I と同じように、`nick!user@host'と記述します。

尚、reop hintが動作し、チャンネルにオペレータ権限が復帰したとき、以下のようにチャンネルにnoticeで表示されます。

:<server name> NOTICE <channel> :Enforcing channel mode +R (214)

現在の設定の一覧を取得するには、以下のように入力すれば取得できます。

Example: mode <channel> +R

【 +beIRのマスクの記述方法に追加 】

* CIDR support in +beIR channelmodes.

 今までは、ホスト部分には、IP or ホスト名でマスクを記述していましたが、サブネットマスク単位(CIDR)でも記述することが可能になりました。それに加え、UIDの構成の一部であるSIDでも ban を書けることが出来るようになったため、望まないユーザを確実に追い出すことが可能となります。

Example: mode <channel> +b 380*!*@*)
Example: mode <channel> +b *!*@*.it

bans, ban exceptions, invite に対して、CIDR 表記が対応。 
Example: mode <channel> +b *!*@10.1.2.0/24 

 すなわち、今までで有れば、* [アスタリスク]を利用し、広範囲のマスクを記述していたが、的を的確に絞ることが可能となったという事になります。

【 その他 】

 その他の詳細は、 ROADMAP を参照してください。色々と修正された部分等が公開されています。また、ChangeLogも公開されていますし、公式サイトにも「New features in the IRCnet ircd 2.11」が公開されていますので、興味のある方は直接オリジナルを参照下さいませ。

【 irc2.11 から hemp-patch に取り込まれた機能(若しくは逆) 】

詳細は hemp-patch の項を参照

変更点について

【 Nickname で使用できる文字列の制限 】

 irc2.11.0 では Nickname で次の文字列が使用出来なくなりました。特にNicknameに顔文字を使用されておられる方々は注意が必要となります(2.11.1 では使用出来るようになります)。また、日本のサーバ (WIDEパッチ)では、もともと記号等は使えないようになってる場合があります。

  [|]{\}

doc/2.11-New

irc2.11.0 に添付されている doc/2.11-New のファイルの中身です。

All:
	* Nicknames cannot contain [|]{\} chars. (This restriction will be
	  removed in 2.11.1)
	* Channel names cannot contain {\}~ chars. If used (or from remote),
	  they will be changed to [|]^ accordingly. (This restriction will be
	  removed in 2.11.1)
	* New channel list type: R (aka reop hints). With the same syntax and
	  behaviour as beI, it serves as a hint list for reopping opless
	  channels.
	* Clients cannot set +R. (This restriction will be removed in 2.11.1)
	* CIDR support in +beIR channelmodes.
	* +beIR channelmodes have new wildcard `#' matching any digit; note
	  that if ban starts with digit, it will match on UID, if with '#',
	  it will match on nickname.
	* New stats k to show tklines (stats K shows klines).

Client:
	* When collision occurs, clients get their nicks forcefully changed
	  to their UIDs. (Note: this requires no 2.10 server on the path
	  between these two clients!)
	* Clients can use "NICK 0" to get their UID as a nick. Works during
	  registration, too.
	* Channels now keep information who and when set the topic.
	* LIST (if allowed) does not disconnect if client's sendQ fills.
	* WHOIS now shows the time user signed on.
	* LUSERS (and USERS, if defined) shows local and global usercount and
	  maximums.
	* INVITE overriding ban shows inviter's n!u@h in channel notice.
	* Support for text representation of user modes in USER command
	  during registration.

Operator:
	* New server to server protocol, based on Unique IDs
	* Operator broadcast message syntax has been changed to:
		$$*.mask - message all users matching given server mask
		$#*.mask - message all users matching given hostname mask
	* Essential notices were moved from &LOCAL to &NOTICES
	* Possibility of using port "0" in manual CONNECTs (even remote);
	  ircd will use port from ircd.conf
	* Added DelayedKill feature to make ircd more responsible on rehash
	  on big servers with many clients and many klines.
	* New server channel &CLIENTS with clients connects, quits and nick
	  changes (may be undefined during compilation).
	* New command: TKLINE (syntax: TKLINE seconds user@host :reason),
	  available for services and (depending on O: flag) opers.

Admin:
	* File layout changed slightly:
	  - localstatedir defaults to $(prefix)/var (autoconf did that!)
	  - logdir defaults to $(localstatedir)/log, not $(prefix)/var/log
	  - ircd_var_dir (where .pid and .tune are kept) defaults to
	    $(localstatedir)/run
	  - log files are no longer in $(prefix)/var/log/ircd/, instead
	    they are in $(logdir)
	  - log file names changed from $(logdir)/{users,rejects,auth}
	    to $(logdir)/ircd.{users,rejects,auth}
	  - config and log file names depend on $(IRCD) name.
	* Ability to specify outgoing IP in C: line.
	* I:line now requires both addr and name fields to match.
	* I:line flags
		D - restricted, when client has no reverse DNS.
		E - client is exempted from K: lines.
		e - client is exempted from X: lines.
		F - fall-through to next I: if password did not match.
		I - restricted, when client has no ident.
		N - disable resolved hostname to be used.
		M - disable resolved hostname to be shown.
		R - restricted.
	* Reject reason sent to client can be specified in iauth.conf.
	* Client's username and hostname are checked for valid chars.
	* C:lines can have negative ports to disable autoconnects; these
	  will be used when CONNECT with port "0" is used.
	* STATS ? shows quick information about connected servers.
	* STATS f, avaible to local operators only, shows detailed
	  information about client TCP connection.
	* -t option (foreground mode) is now avaible even without DEBUGMODE
	* Added SET command which makes possible to fine-tune certain
	  ircd values during runtime (like dbuf poolsize, autoconnect and client
	  accepting).
	* Stats Z no longer computes real memory statistics unless DEBUGMODE
	  set.
	* Stats l/L shows count in Bytes, not kBytes.
	* SERVICE command changed, it uses SID now.
	* O:line flags for better control
		L - local operator (disables all remote functions)
		P - removes penalty
		p - allows flooding
		& - allows joining &CLIENTS
		A - enables all flags below
		K - allows KILL (local and remote)
		k - allows only local KILL
		S - allows SQUIT (local and remote)
		s - allows only local SQUIT
		C - allows CONNECT (local and remote)
		c - allows only local CONNECT
		l - allows CLOSE
		h - allows HAZH
		d - allows DNS
		r - allows REHASH
		R - allows RESTART
		D - allows DIE
		e - allows SET
		T - allows TKLINE
		t - enables full TRACE and STATS L
	* New config X-line.
	* New module to iauth: mod_webproxy.
	* socks and webproxy modules can connect to different ports.
	* "delayed" execution mode for iauth.
Copyright (C) 1998-2005 tomocha
Last update: 2005-01-06
tomo@gyojya.jp