Codename IRCat - a lightweight IRCd in Python https://ircat.xyz
Find a file
2024-12-08 20:19:10 -08:00
.gitignore Initial commit 2024-12-08 14:03:09 -08:00
config.yml Add ISUPPORT 2024-12-08 20:02:59 -08:00
LICENSE Initial commit 2024-12-08 14:03:09 -08:00
README.md Update README.md 2024-12-08 20:19:10 -08:00
server.py Fix connection not completing 2024-12-08 20:06:57 -08:00

IRCat

Lightweight IRCd in Python

TODO:

  • Implement the base of an IRCd, using Libera.Chat as a reference
    • Add the (full) connection process
    • Add join/part, and it's requirements (WHO, etc)
    • Implement proper PRIVMSG
    • Broadcast QUIT
    • DNS lookup
    • Identity management
    • WallOps
    • Channel invite system
    • Wildcard logic (for +b and +q)
    • Send PING and wait for PONG
    • Reply PONG if received PING
    • Change of nicknames
  • User Flags
    • i (invisible)
    • o (IRCOP)
    • w (gets wallops)
  • Channel Flags
    • o <user> (CHANOP)
    • v <user> (voice)
    • m (moderated, only let voice or op talk)
    • s (don't show in LIST)
    • i (invite-only)
    • t (topic lock)
    • n (no outside msgs, people have to join first)
    • l <num> (user limit)
    • b <usermask> (ban a user)
    • k <key> (password lock)
    • EXTRAS q (Quiet)
  • Destructive features for CHANOPS
    • KICK
    • MODE <channel>
  • Destructive features for IRCOPS
    • KILL <user> <comment>
    • MODE <external user>
    • RESTART
  • Extra commands
    • USERS
    • WHOIS
    • WHOWAS
  • Implement services.
    • Nickserv
    • ChanServ
    • GitServ (Custom user for pull/restart)
    • Link PRIVMSG *serv to *serv
  • Add IRCv3 features.
    • Will research later.

I am going to fully read RFC 1459 soon and add each part to the TODO.