GameRC (IRC Server)  1.0.0
C++98 기반 IRC 서버 프로젝트
로딩중...
검색중...
일치하는것 없음
IRC.hpp 파일 참조

IRC 매크로 및 IRC 클래스 정의 헤더 파일. 더 자세히 ...

#include "common.hpp"
#include "UserManager.hpp"
#include "ChannelManager.hpp"

이 파일의 소스 코드 페이지로 가기

클래스

class  grc::IRC
 IRC 로직을 수행하는 정적 클래스. 더 자세히 ...
 

네임스페이스

namespace  grc
 

매크로

#define IRC_VERSION   "v0.1"
 IRC 서버의 버전을 나타내는 매크로.
 
#define CRLF   "\r\n"
 Carriage Return Line Feed(CRLF)를 나타내는 매크로.
 
#define ERR_NOSUCHNICK   "401"
 해당 nick을 가진 유저가 없는 경우 응답하는 에러 코드.
 
#define ERR_NOSUCHCHANNEL   "403"
 해당 channel name을 가진 채널이 없는 경우 응답하는 에러 코드.
 
#define ERR_NORECIPIENT   "411"
 PRIVMSG에 받는 사람이 없는 경우 응답하는 에러 코드.
 
#define ERR_NOTEXTTOSEND   "412"
 PRIVMSG에 전달할 메시지 내용이 없는 경우 응답하는 에러 코드.
 
#define ERR_CANNOTSENDTOCHAN   "404"
 PRIVMSG / NOTICE 메시지가 주어진 채널에 전달될 수 없을 때 응답하는 에러 코드.
 
#define ERR_NOMOTD   "422"
 서버의 Message of the Day(MOTD) 파일이 존재하지 않는 경우 응답하는 에러 코드.
 
#define ERR_NONICKNAMEGIVEN   "431"
 nick이 꼭 필요한 메시지에 nick이 없는 경우 응답하는 에러 코드.
 
#define ERR_ERRONEUSNICKNAME   "432"
 NICK 메시지의 nick에 사용할 수 없는 문자가 들어있는 경우 응답하는 에러 코드.
 
#define ERR_NICKNAMEINUSE   "433"
 NICK 메시지의 nick을 이미 다른 유저가 사용하고 있는 경우 응답하는 에러 코드.
 
#define ERR_USERNOTINCHANNEL   "441"
 channel + nick의 조합을 사용하는 메시지에서, 해당 nick이 채널에 없는 경우 응답하는 에러 코드.
 
#define ERR_NOTONCHANNEL   "442"
 user가 속하지 않은 채널에 특정 메시지를 전달하려고 하는 경우 응답하는 에러 코드.
 
#define ERR_USERONCHANNEL   "443"
 채널에 이미 있는 nick을 초대했을 경우 응답하는 에러 코드.
 
#define ERR_NEEDMOREPARAMS   "461"
 메시지에 필요한 매개변수가 부족한 경우 응답하는 에러 코드.
 
#define ERR_ALREADYREGISTERED   "462"
 연결 등록이 되지 않은 user로부터 메시지를 받은 경우 응답하는 에러 코드.
 
#define ERR_PASSWDMISMATCH   "464"
 연결 등록을 위한 password가 다른 경우 응답하는 에러 코드.
 
#define ERR_CHANNELISFULL   "471"
 유저가 가득찬 채널에 입장하려고 하는 경우 응답하는 에러 코드.
 
#define ERR_INVITEONLYCHAN   "473"
 유저가 초대를 받지 않고 초대 전용 채널에 입장하는 경우 응답하는 에러 코드.
 
#define ERR_BADCHANNELKEY   "475"
 채널 입장에 필요한 key(password)가 없거나 다른 경우 응답하는 에러 코드.
 
#define ERR_CHANOPRIVSNEEDED   "482"
 operator 권한이 없는 user가 operator 권한이 필요한 메시지를 사용하는 경우 응답하는 에러 코드.
 
#define RPL_WELCOME   "001"
 user가 등록되면 첫 번째로 응답하는 메시지이며, 해당 user의 정보를 알려준다.
 
#define RPL_YOURHOST   "002"
 user가 등록되면 두 번째로 응답하는 메시지이며, 해당 user가 연결된 서버의 정보를 알려준다.
 
#define RPL_CREATED   "003"
 user가 등록되면 세 번째로 응답하는 메시지이며, 해당 user가 연결된 서버가 생성된 날짜를 알려준다.
 
#define RPL_MYINFO   "004"
 user가 등록되면 네 번째로 응답하는 메시지이며, 서버 이름 및 version을 알려준다.
 
#define RPL_ISUPPORT   "005"
 user가 등록되면 다섯 번째로 응답하는 메시지이며, 서버에서 지원 가능한 목록들을 알려준다.
 
#define RPL_CHANNELMODEIS   "324"
 현재 채널에 어떤 mode가 적용되어 있는지 알려준다.
 
#define RPL_NOTOPIC   "331"
 유저가 채널에 입장했을 때, 채널에 topic이 없는 경우 topic이 설정되어 있지 않다고 알려준다.
 
#define RPL_TOPIC   "332"
 유저가 채널에 입장했을 때, 채널에 topic이 있는 경우 topic을 알려준다.
 
#define RPL_INVITING   "341"
 유저가 특정 유저를 채널에 초대했을 때, 정상적으로 초대했음을 알려준다.
 
#define RPL_NAMREPLY   "353"
 채널의 모든 유저 목록을 알려준다.
 
#define RPL_ENDOFNAMES   "366"
 채널의 모든 유저 목록의 끝을 알려준다.
 

상세한 설명

IRC 매크로 및 IRC 클래스 정의 헤더 파일.

작성자
Taeil-Nam (nam03.nosp@m.14@g.nosp@m.mail..nosp@m.com)
버전
0.1
날짜
2024-03-31

매크로 문서화

◆ IRC_VERSION

#define IRC_VERSION   "v0.1"

IRC 서버의 버전을 나타내는 매크로.

◆ CRLF

#define CRLF   "\r\n"

Carriage Return Line Feed(CRLF)를 나타내는 매크로.

◆ ERR_NOSUCHNICK

#define ERR_NOSUCHNICK   "401"

해당 nick을 가진 유저가 없는 경우 응답하는 에러 코드.

메시지 형식: "<client> <nick> :No such nick/channel"

◆ ERR_NOSUCHCHANNEL

#define ERR_NOSUCHCHANNEL   "403"

해당 channel name을 가진 채널이 없는 경우 응답하는 에러 코드.

메시지 형식: "<channel name> :No such channel"

◆ ERR_NORECIPIENT

#define ERR_NORECIPIENT   "411"

PRIVMSG에 받는 사람이 없는 경우 응답하는 에러 코드.

메시지 형식: "<client> :No recipient given (<command>)"

◆ ERR_NOTEXTTOSEND

#define ERR_NOTEXTTOSEND   "412"

PRIVMSG에 전달할 메시지 내용이 없는 경우 응답하는 에러 코드.

메시지 형식: "<client> :No text to send"

◆ ERR_CANNOTSENDTOCHAN

#define ERR_CANNOTSENDTOCHAN   "404"

PRIVMSG / NOTICE 메시지가 주어진 채널에 전달될 수 없을 때 응답하는 에러 코드.

유저가 채널에 메시지를 보낼 수 있는 권한이 없거나, 채널에 입장되어 있는 상태가 아닌 경우에 해당된다.

메시지 형식: "<client> <channel> :Cannot send to channel"

◆ ERR_NOMOTD

#define ERR_NOMOTD   "422"

서버의 Message of the Day(MOTD) 파일이 존재하지 않는 경우 응답하는 에러 코드.

메시지 형식: "<client> :MOTD File is missing"

◆ ERR_NONICKNAMEGIVEN

#define ERR_NONICKNAMEGIVEN   "431"

nick이 꼭 필요한 메시지에 nick이 없는 경우 응답하는 에러 코드.

메시지 형식: ":No nick given"

◆ ERR_ERRONEUSNICKNAME

#define ERR_ERRONEUSNICKNAME   "432"

NICK 메시지의 nick에 사용할 수 없는 문자가 들어있는 경우 응답하는 에러 코드.

메시지 형식: "<nick> :Erroneus nick"

◆ ERR_NICKNAMEINUSE

#define ERR_NICKNAMEINUSE   "433"

NICK 메시지의 nick을 이미 다른 유저가 사용하고 있는 경우 응답하는 에러 코드.

메시지 형식: "<nick> :nick is already in use"

◆ ERR_USERNOTINCHANNEL

#define ERR_USERNOTINCHANNEL   "441"

channel + nick의 조합을 사용하는 메시지에서, 해당 nick이 채널에 없는 경우 응답하는 에러 코드.

메시지 형식: "<client> <nick> <channel> :They aren't on that channel"

◆ ERR_NOTONCHANNEL

#define ERR_NOTONCHANNEL   "442"

user가 속하지 않은 채널에 특정 메시지를 전달하려고 하는 경우 응답하는 에러 코드.

메시지 형식: "<client> <channel> :You're not on that channel"

◆ ERR_USERONCHANNEL

#define ERR_USERONCHANNEL   "443"

채널에 이미 있는 nick을 초대했을 경우 응답하는 에러 코드.

메시지 형식: "<client> <nick> <channel> :is already on channel"

◆ ERR_NEEDMOREPARAMS

#define ERR_NEEDMOREPARAMS   "461"

메시지에 필요한 매개변수가 부족한 경우 응답하는 에러 코드.

메시지 형식: "<command> :Not enough parameters"

◆ ERR_ALREADYREGISTERED

#define ERR_ALREADYREGISTERED   "462"

연결 등록이 되지 않은 user로부터 메시지를 받은 경우 응답하는 에러 코드.

메시지 형식: ":You may not reregister"

◆ ERR_PASSWDMISMATCH

#define ERR_PASSWDMISMATCH   "464"

연결 등록을 위한 password가 다른 경우 응답하는 에러 코드.

메시지 형식: ":Password incorrect"

◆ ERR_CHANNELISFULL

#define ERR_CHANNELISFULL   "471"

유저가 가득찬 채널에 입장하려고 하는 경우 응답하는 에러 코드.

메시지 형식: "<channel> :Cannot join channel (+l)"

◆ ERR_INVITEONLYCHAN

#define ERR_INVITEONLYCHAN   "473"

유저가 초대를 받지 않고 초대 전용 채널에 입장하는 경우 응답하는 에러 코드.

메시지 형식: "<channel> :Cannot join channel (+i)"

◆ ERR_BADCHANNELKEY

#define ERR_BADCHANNELKEY   "475"

채널 입장에 필요한 key(password)가 없거나 다른 경우 응답하는 에러 코드.

메시지 형식: "<channel> :Cannot join channel (+k)"

◆ ERR_CHANOPRIVSNEEDED

#define ERR_CHANOPRIVSNEEDED   "482"

operator 권한이 없는 user가 operator 권한이 필요한 메시지를 사용하는 경우 응답하는 에러 코드.

메시지 형식: "<client> <channel> :You're not channel operator"

◆ RPL_WELCOME

#define RPL_WELCOME   "001"

user가 등록되면 첫 번째로 응답하는 메시지이며, 해당 user의 정보를 알려준다.

메시지 형식: "<nick> :Welcome to the <networkname> Network, <nick>[!<user>@<host>]"

◆ RPL_YOURHOST

#define RPL_YOURHOST   "002"

user가 등록되면 두 번째로 응답하는 메시지이며, 해당 user가 연결된 서버의 정보를 알려준다.

메시지 형식: "<nick> :Your host is <servername>, running version <version>"

◆ RPL_CREATED

#define RPL_CREATED   "003"

user가 등록되면 세 번째로 응답하는 메시지이며, 해당 user가 연결된 서버가 생성된 날짜를 알려준다.

메시지 형식: "<nick> :This server was created <datetime>"

◆ RPL_MYINFO

#define RPL_MYINFO   "004"

user가 등록되면 네 번째로 응답하는 메시지이며, 서버 이름 및 version을 알려준다.

메시지 형식: "<nick> <servername> <version> <available user modes> ""

◆ RPL_ISUPPORT

#define RPL_ISUPPORT   "005"

user가 등록되면 다섯 번째로 응답하는 메시지이며, 서버에서 지원 가능한 목록들을 알려준다.

메시지 형식: "<nick> <1-13 tokens> :are supported by this server"

◆ RPL_CHANNELMODEIS

#define RPL_CHANNELMODEIS   "324"

현재 채널에 어떤 mode가 적용되어 있는지 알려준다.

메시지 형식: "<nick> <channel> <modestring> <mode arguments>..."

◆ RPL_NOTOPIC

#define RPL_NOTOPIC   "331"

유저가 채널에 입장했을 때, 채널에 topic이 없는 경우 topic이 설정되어 있지 않다고 알려준다.

메시지 형식: "<nick> <channel> :No topic is set"

◆ RPL_TOPIC

#define RPL_TOPIC   "332"

유저가 채널에 입장했을 때, 채널에 topic이 있는 경우 topic을 알려준다.

메시지 형식: "<nick> <channel> :<topic>"

◆ RPL_INVITING

#define RPL_INVITING   "341"

유저가 특정 유저를 채널에 초대했을 때, 정상적으로 초대했음을 알려준다.

메시지 형식: "<client> <target nick> <channel>"

◆ RPL_NAMREPLY

#define RPL_NAMREPLY   "353"

채널의 모든 유저 목록을 알려준다.

메시지 형식: "<client> <symbol> <channel> :[[@|+]<nick> [[@|+]<nick> [...]]]"

◆ RPL_ENDOFNAMES

#define RPL_ENDOFNAMES   "366"

채널의 모든 유저 목록의 끝을 알려준다.

RPL_NAMREPLY 메시지의 뒤에 따라온다.

메시지 형식: "<client> <channel> :End of /NAMES list"