LoginSignup
0
0

RFC2812 Internet Relay Chat: Client Protocolを読んでみた。(5.2 Error Replies)

Posted at

はじめに

どうも。こんにちは。
42tokyoといったところで、簡単なIRCサーバの実装を行なっています。

今回は、5.2 Error Repliesを読み、サーバの返信メッセージについて学んで行きたいと思います。

間違い等があれば、ご指摘ください。

5. Replies

  • この章では、3. Message Datails4. 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.

さいごに

今回の実装で使用しなかったエラーナンバーの解説は、随時追加していきます。
ありがとうございました!

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0