Codename IRCat - a lightweight IRCd in Python https://ircat.xyz
Find a file
2024-12-12 13:19:48 -08:00
.gitignore Initial commit 2024-12-08 14:03:09 -08:00
config.yml Update config.yml 2024-12-11 13:12:40 -08:00
ircat-invert.svg invert logo 2024-12-11 21:12:34 -08:00
ircat.svg add logo 2024-12-11 21:10:21 -08:00
LICENSE Initial commit 2024-12-08 14:03:09 -08:00
README.md Update README.md 2024-12-11 21:17:19 -08:00
requirements.txt Add requirements.txt 2024-12-08 22:34:06 -08:00
server.py Update server.py 2024-12-12 13:19:48 -08:00

IRCat Logo

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
    • Change of hostnames
    • Away
  • Data file with SQLite
  • 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 <usermask> (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)
    • Link PRIVMSG *serv to *serv
  • Extra (not planned) features
    • ident support
  • Authentication
    • Make the server able to change the client's host
    • Store credentials in an SQLite3 file.
    • Map NickServ IDENTIFY
    • Map PASS
    • Mock SASL PLAIN
  • SSL/TLS
    • Use a thread to accept connections on SSL port 6697
    • Automatically reload the certificate if defined in config.
  • Add IRCv3 features.
    • List capabilities (CAP LS 302)
    • away-notify
    • tls (STARTTLS)
    • Will research later.

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