はじめに
どうも。こんにちは。
42tokyoといったところで、簡単なIRCサーバの実装を行なっています。
今回は、5.2 Error Repliesを読み、サーバの返信メッセージについて学んで行きたいと思います。
間違い等があれば、ご指摘ください。
5. Replies
- この章では、3. Message Datailsや4. Optional featuresで出てくるコマンドへの応答として生成されるnumeric repliesについて説明する
- 各数字には、番号、名前、返信文字列が与えられている
5.2 Error Replies
- 400〜599の数値は、エラー値として使用する
401
401 ERR_NOSUCHNICK
"<nickname> :No such nick/channel"
- コマンドに与えられた<nickname>パラメータが現在使われていないことを示す
402
402 ERR_NOSUCHSERVER
"<server name> :No such server"
- <server name>パラメータが、現在存在しないことを示す
403
403 ERR_NOSUCHCHANNEL
"<channel name> :No such channel"
- <channel name>パラメータの値が無効であることを示す
404
404 ERR_CANNOTSENDTOCHAN
"<channel name> :Cannot send to channel"
- (a)か(b)のどちらかに該当するユーザ、または、チャンネルへの参加が禁止されているユーザが、そのチャネルにPRIVMSGコマンドを実行した場合に送信する
- (a) 送信先のユーザが、mode +n が設定されているチャネルに居ない
- (b) 送信先のユーザが、mode +m が設定されているチャネルの chanop(または mode +v)でない
405
405 ERR_TOOMANYCHANNELS
"<channel name> :You have joined too many channels"
- ユーザ参加できるチャンネル数を超えて、別のチャンネルに参加しようとしたときに送信する
406
406 ERR_WASNOSUCHNICK
"<nickname> :There was no such nickname"
※ 今のところ使用していないので、解説は省略
407
407 ERR_TOOMANYTARGETS
"<target> :<error code> recipients. <abort message>"
- このエラーは、以下のような状態でPRIVMSG/NOTICEコマンドを実行したクライアントに返す
- PRIVMSG/NOTICEコマンドの送信先を示すパラメータのフォーマットが「user@host」で、「user@host」に一致する送信先が複数ある場合
- 送信先が多すぎる場合
- このエラーは、短縮名を使用して安全なチャンネルにJOINしようとしたクライアントに返す?
本文
Returned to a client which is attempting to JOIN a safe channel using the shortname when there are more than one such channel.
408
408 ERR_NOSUCHSERVICE
"<service name> :No such service"
※ 今のところ使用していないので、解説は省略
409
409 ERR_NOORIGIN
":No origin specified"
- PING/PONGコマンドにパラメータが与えられていないときに送信する
411 ~ 415
411 ERR_NORECIPIENT
":No recipient given (<command>)"
412 ERR_NOTEXTTOSEND
":No text to send"
413 ERR_NOTOPLEVEL
"<mask> :No toplevel domain specified"
414 ERR_WILDTOPLEVEL
"<mask> :Wildcard in toplevel domain"
415 ERR_BADMASK
"<mask> :Bad Server/host mask"
- 412 ~ 415 は、PRIVMSGコマンドが返すエラー
- 何らかの理由でメッセージが届かなかったことを示す
- ERR_NOTOPLEVEL と ERR_WILDTOPLEVEL は、 "PRIVMSG $<server>" や "PRIVMSG #<host>" などのマスクを不正に使用した場合に返されるエラー
421
421 ERR_UNKNOWNCOMMAND
"<command> :Unknown command"
- サーバにとって不明なコマンドであることを示す。登録済みのクライアントに返す
422
422 ERR_NOMOTD
":MOTD File is missing"
※ 今のところ使用していないので、解説は省略
423
423 ERR_NOADMININFO
"<server> :No administrative info available"
※ 今のところ使用していないので、解説は省略
424
424 ERR_FILEERROR
":File error doing <file op> on <file>"
※ 今のところ使用していないので、解説は省略
431
431 ERR_NONICKNAMEGIVEN
":No nickname given"
- パラメータにニックネームが与えられていないことを示す
432
432 ERR_ERRONEUSNICKNAME
"<nick> :Erroneous nickname"
- <nick>に使用可能ではない文字が含まれている、NICKメッセージを受信したサーバが返す
- <nick>で使用可能な文字は、2.3.1 Message format in Augmented BNFを参照
433
433 ERR_NICKNAMEINUSE
"<nick> :Nickname is already in use"
- ユーザが既に使用されているニックネームへ変更しようとした場合に返す
436
436 ERR_NICKCOLLISION
"<nick> :Nickname collision KILL from <user>@<host>"
- 他サーバが管理するユーザのニックネームと、同じニックネームへ変更しようした場合に返す
437
437 ERR_UNAVAILRESOURCE
"<nick/channel> :Nick/channel is temporarily unavailable"
- 「チャンネル遅延メカニズム?」によって、現在ユーザのJOINコマンドをブロックしているチャンネルに、JOINしようとするユーザに対してサーバが返す値
- 「ニックネーム遅延メカニズム?」によって、使用できないニックネームに変更しようとするユーザに対してサーバが返す
441
441 ERR_USERNOTINCHANNEL
"<nick> <channel> :They aren't on that channel"
- コマンドがターゲットとするユーザが、指定されたチャンネルにいないとき、サーバが返す
442
442 ERR_NOTONCHANNEL
"<channel> :You're not on that channel"
- クライアントがメンバーではないchannelに影響を与えるコマンドを実行したとき、サーバが返す
443
443 ERR_USERONCHANNEL
"<user> <channel> :is already on channel"
- 招待した<user>が既に<channel>へ参加しているとき、サーバが返す
444
444 ERR_NOLOGIN
"<user> :User not logged in"
※ 今のところ使用していないので、解説は省略
445
445 ERR_SUMMONDISABLED
":SUMMON has been disabled"
※ 今のところ使用していないので、解説は省略
446
446 ERR_USERSDISABLED
":USERS has been disabled"
※ 今のところ使用していないので、解説は省略
451
451 ERR_NOTREGISTERED
":You have not registered"
- クライアントにユーザ情報が登録されていないことを示すためにサーバが返す
- クライアントは、サーバが詳細な解析をクライアントへ許可する前に、登録しなければならない [MUST]
461
461 ERR_NEEDMOREPARAMS
"<command> :Not enough parameters"
- パラメータが足りないことを示す。多数のコマンドでサーバが返す値
462
462 ERR_ALREADYREGISTRED
":Unauthorized command (already registered)"
- パスワードなどのユーザ情報や登録情報の変更に失敗したとき、サーバが返す
463
463 ERR_NOPERMFORHOST
":Your host isn't among the privileged"
※ 今のところ使用していないので、解説は省略
464
464 ERR_PASSWDMISMATCH
":Password incorrect"
- パスワードが必要な通信で、クライアントがパスワードを送らなかった、またはパスワードが間違っていた場合に返す
465
465 ERR_YOUREBANNEDCREEP
":You are banned from this server"
※ 今のところ使用していないので、解説は省略
466
466 ERR_YOUWILLBEBANNED
※ 今のところ使用していないので、解説は省略
467, 471 ~ 478, 481
467 ERR_KEYSET
"<channel> :Channel key already set"
471 ERR_CHANNELISFULL
"<channel> :Cannot join channel (+l)"
472 ERR_UNKNOWNMODE
"<char> :is unknown mode char to me for <channel>"
473 ERR_INVITEONLYCHAN
"<channel> :Cannot join channel (+i)"
474 ERR_BANNEDFROMCHAN
"<channel> :Cannot join channel (+b)"
475 ERR_BADCHANNELKEY
"<channel> :Cannot join channel (+k)"
476 ERR_BADCHANMASK
"<channel> :Bad Channel Mask"
477 ERR_NOCHANMODES
"<channel> :Channel doesn't support modes"
478 ERR_BANLISTFULL
"<channel> <char> :Channel list is full"
481 ERR_NOPRIVILEGES
":Permission Denied- You're not an IRC operator"
- オペレータ権限が必要な操作をするコマンドで発生したエラーに使用する [MUST]
482
482 ERR_CHANOPRIVSNEEDED
"<channel> :You're not channel operator"
- channel operatorではないユーザが、channel operator権限を必要とするコマンドを実行した場合、サーバが返す [MUST]
483
483 ERR_CANTKILLSERVER
":You can't kill a server!"
※ 今のところ使用していないので、解説は省略
484
484 ERR_RESTRICTED
":Your connection is restricted!"
- 制限付きのユーザ(「+r」 flag)が、制限を超えたコマンドを実行したとき、サーバが返す
参考:RFC2812 3.1.5 User mode message
485
485 ERR_UNIQOPPRIVSNEEDED
":You're not the original channel operator"
※ 今のところ使用していないので、解説は省略
491
491 ERR_NOOPERHOST
":No O-lines for your host"
- オペレータとしての接続を許可していないホストに所属するクライアントから、OPERメッセージが来た場合、このエラーを返す [MUST]
501
501 ERR_UMODEUNKNOWNFLAG
":Unknown MODE flag"
- サーバの知らないモードフラグが送られてきたとき、サーバが返す
502
502 ERR_USERSDONTMATCH
":Cannot change mode for other users"
- 自分以外のユーザーモードを表示、または変更しようとしたとき、サーバが返す
5.3 Reserved numerics
- 本節では、以下の理由から上記で解説されていないリプライナンバーを取り上げる
- もう使用されていない
- 将来的に使用する予定がある
- 現在使用されているが、一般的ではない
492 ERR_NOSERVICEHOST
12.Full Copyright Statement
Copyright (C) The Internet Society (2000). All Rights Reserved.
This document and translations of it may be copied and furnished to others,
and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any kind,
provided that the above copyright notice and this paragraph are included on
all such copies and derivative works.
However, this document itself may not be modified in any way,
such as by removing the copyright notice or references to the Internet Society
or other Internet organizations, except as needed for the purpose of developing
Internet standards in which case the procedures for copyrights defined in
the Internet Standards process must be followed, or as required to
translate it into languages other than English.The limited permissions granted above are perpetual and will not be revoked by
the Internet Society or its successors or assigns.This document and the information contained herein is provided on an "AS IS" basis and
THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.Acknowledgement
Funding for the RFC Editor function is currently provided by the Internet Society.
さいごに
今回の実装で使用しなかったエラーナンバーの解説は、随時追加していきます。
ありがとうございました!
参考