Implement Internet Relay Chat Server 📢
Implement a server that manages multiple clients as a single thread using I/O multiplexing
The server get messages from clients and send these messages to channel(s)/client(s) who is currently connected to this server
Should be accessed and used with several reference IRC clients (Follow the IRC RFC documentation) RFC 1492 / RFC 2812
make
./ircserv < port> < password>
To change server settings
You can change the server settings in the CommonValue.hpp file.
After changing the settings, enter "make re" to compile a new server.
SETTING
DEFAULT VALUE
MAX_NICKNAME_LEN
9
MAX_CHANNELNAME_LEN
31
MAX_USER_NUM
30
MAX_CHANNEL_NUM
30
SERVER_HOSTNAME
"cacaotalk.42seoul.kr"
DEFAULT_PART_MESSAGE
" leaved channel."
NEW_OPERATOR_MESSAGE
" is new channel operator."
Connect to server with client
You can connect to this server using reference IRC clients(such as irssi )
COMMAND
DESCRIPTION
PASS
used to set a 'connection password'
NICK
used to give user a nickname or change the existing one.
USER
used at the beginning of connection to specify the username, hostname and realname of a new user
JOIN
used by a user to request to start listening to the specific channel .
PRIVMSG
used to send private messages between users, as well as to send messages to channels.
NOTICE
used similarly to PRIVMSG. The difference is automatic replies never be sent in response to a NOTICE message.
KICK
used to request the forced removal of a user from a channel. (for channel operator only)
PART
used to leave from the channel user belong to.
QUIT
A client session is terminated with a quit message.
DCC (Direct Client-to-Client) support
With this function, you can chat or transfer files between clients without going through the server
Warning: DCC has no encryption
DCC Query Syntax
The initial CTCP ` DCC` query message has this format:
DCC < type> < argument> < host> < port>
It provides a function to randomly select one of the menus added by channel members.
Duplicate registration is possible, so you can weight it as needed.
COMMAND
DESCRIPTION
!addmenu
Add to the menu list following param(s). You can use space to add multiple things at the same time.
!deletemenu
Delete from the menu list following param(s). You can use space to delete multiple things at the same time.
!showmenu
Print a list of menus currently in the list.
!pickmenu
Recommend one of the menus in the current list randomly.