/irc_server

irc server by rust

Primary LanguageRust

A toy example for irc server in rust

This is a irc server implmentation in rust & rfc1459 & modern irc protocol.

TODO

Main feature

  • Use tcplisten to listen irc port (6667)

  • Implment most command in single thread

    • NICK
    • USER
    • PING
    • LIST
    • JOIN
    • TOPIC
    • NAMES
    • PART
    • USERS
    • PRIVMSG
    • QUIT
  • Implment necessary numeric commands

    • (001) RPL_MYINFO
    • (002) RPL_CREATED
    • (003) RPL_YOURHOST
    • (004) RPL_WELCOME
    • (005) RPL_ISUPPORT
    • (321) RPL_LISTSTART
    • (322) RPL_LIST
    • (323) RPL_LISTEND
    • (331) RPL_NOTOPIC
    • (332) RPL_TOPIC
    • (353) RPL_NAMREPLY
    • (366) RPL_ENDOFNAMES
    • (372) RPL_MOTD
    • (375) RPL_MOTDSTART
    • (376) RPL_ENDOFMOTD
    • (392) RPL_USERSSTART
    • (393) RPL_USERS
    • (394) RPL_ENDOFUSERS
    • (401) ERR_NOSUCHNICK
    • (402) ERR_NOSUCHSERVER
    • (403) ERR_NOSUCHCHANNEL
    • (409) ERR_NOORIGIN
    • (411) ERR_NORECIPIENT
    • (412) ERR_NOTEXTTOSEND
    • (421) ERR_UNKNOWNCOMMAND
    • (431) ERR_NONICKNAMEGIVEN
    • (436) ERR_NICKCOLLISION
    • (442) ERR_NOTONCHANNEL
    • (461) ERR_NEEDMOREPARAMS
    • (451) ERR_NOTREGISTERED

Advanced feature

  • maby add async support by using tokio, or mio, not decided yet, or multi-thread

Other cool to have feature

  • migrate to ircs (6697) and remove support for irc (6667)