Implementing an IRC Server; which rfc? reddit / irc ---------------------------------------------------------------------- humbleharbinger · 2022-10-31 19:06 I'm planning to implement an IRC server in Python for a project. I see a couple of rfcs for irc, does anyone know which one is actually used? In general, I'd appreciate any tips or pitfalls to avoid when starting this project. ---------------------------------------------------------------------- anths · 2022-10-31 19:18 Start here: https://ircv3.net/irc/ As noted, the actual RFCs are out of date, but the ones listed there will get you started, and that has all the info on updates. ---------------------------------------------------------------------- humbleharbinger · 2022-10-31 20:52 Thanks, will check this out! ---------------------------------------------------------------------- I-am-fun-at-parties · 2022-10-31 21:16 Where 281\* and 1459 disagree, go with 281\*. Servers being strict about 1459 are rare these days (source: tested my pet IRC library on hundreds of networks) ---------------------------------------------------------------------- ProgVal · 2022-10-31 21:46 https://modern.ircdocs.horse/ is based on both 1459 and 2812, and describes the protocol shared by all current implementations. If you see any inaccuracy, please open a ticket at https://github.com/ircdocs/modern-irc/ so we can fix it. Also, I am working on a test suite for servers here: https://github.com/progval/irctest/ It is incomplete, but covers typical mistakes. ---------------------------------------------------------------------- EnterprisePaulaBeans · 2022-10-31 22:31 Seconding the modern.ircdocs.horse docs; they're excellent. Thanks for working on them! ---------------------------------------------------------------------- humbleharbinger · 2022-10-31 22:55 Thanks this will be very useful to use for testing! ---------------------------------------------------------------------- humbleharbinger · 2022-11-01 02:08 Hey I checked out your test suite, can you explain what the controller is needed for when testing servers? If I want to test my own server, will I need a controller? ---------------------------------------------------------------------- ferrybig · 2022-11-01 10:32 Looking though that test suit, some tests require logged in users. Using a controller allows the test suit to talk to your server to mak sure the required users are present with the correct passwords for the test The controller is also responsible for starting the IRC server executable as part of the testing You probably want to use th ExternalServerController controller if you want to keep your servr external ---------------------------------------------------------------------- ProgVal · 2022-11-01 12:54 > The controller is also responsible for starting the IRC server executable as part of the testing That's correct; it does all the server-specific stuff, so tests are independent of the server. The bare minimum is to write a config file and start the process. > You probably want to use th ExternalServerController controller if you want to keep your servr external That works, but writing your own controller is more convenient: because irctest starts the server itself, the server is properly reset between tests.