2024-12-11 21:17:19 -08:00
|
|
|
![IRCat Logo](https://git.swee.codes/swee/IRCat/raw/branch/main/ircat-invert.svg)
|
2024-12-08 14:03:09 -08:00
|
|
|
|
2024-12-08 15:37:25 -08:00
|
|
|
Lightweight IRCd in Python
|
2024-12-08 14:55:08 -08:00
|
|
|
|
2024-12-09 15:50:02 -08:00
|
|
|
* [Mastodon tag (for updates)](https://mastodon.swee.codes/tags/CodenameIRCat)
|
2024-12-09 15:50:26 -08:00
|
|
|
* [Issue tracker](https://discuss.swee.codes/c/12)
|
2024-12-09 15:50:02 -08:00
|
|
|
|
2024-12-13 23:06:48 -08:00
|
|
|
# To-Do list
|
2024-12-08 14:55:08 -08:00
|
|
|
- [ ] Implement the base of an IRCd, using Libera.Chat as a reference
|
2024-12-09 17:23:12 -08:00
|
|
|
- [x] Add the (full) connection process
|
2024-12-08 15:58:23 -08:00
|
|
|
- [x] Add join/part, and it's requirements (WHO, etc)
|
|
|
|
- [x] Implement proper PRIVMSG
|
|
|
|
- [x] Broadcast QUIT
|
2024-12-09 17:25:16 -08:00
|
|
|
- [x] DNS lookup
|
|
|
|
- [x] Identity management
|
2024-12-08 15:58:23 -08:00
|
|
|
- [ ] WallOps
|
|
|
|
- [ ] Channel invite system
|
2024-12-08 20:19:10 -08:00
|
|
|
- [ ] Wildcard logic (for +b and +q)
|
2024-12-09 17:23:12 -08:00
|
|
|
- [x] Send PING and wait for PONG
|
2024-12-08 21:44:32 -08:00
|
|
|
- [x] Reply PONG if received PING
|
2024-12-12 13:57:40 -08:00
|
|
|
- [x] Change of nicknames
|
2024-12-09 16:03:30 -08:00
|
|
|
- [ ] Change of hostnames
|
2024-12-10 22:10:27 -08:00
|
|
|
- [ ] Away
|
2024-12-11 14:24:31 -08:00
|
|
|
- [ ] [Data file with SQLite](https://discuss.swee.codes/t/41/2)
|
2024-12-08 15:58:23 -08:00
|
|
|
- [ ] 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)
|
2024-12-10 22:08:47 -08:00
|
|
|
- [ ] EXTRAS q \<usermask\> (Quiet)
|
2024-12-08 15:58:23 -08:00
|
|
|
- [ ] Destructive features for CHANOPS
|
|
|
|
- [ ] `KICK`
|
|
|
|
- [ ] `MODE <channel>`
|
2024-12-08 16:10:40 -08:00
|
|
|
- [ ] Destructive features for IRCOPS
|
|
|
|
- [ ] `KILL <user> <comment>`
|
|
|
|
- [ ] `MODE <external user>`
|
|
|
|
- [ ] `RESTART`
|
|
|
|
- [ ] Extra commands
|
|
|
|
- [ ] `USERS`
|
2024-12-09 16:03:30 -08:00
|
|
|
- [x] `WHOIS`
|
2024-12-08 16:10:40 -08:00
|
|
|
- [ ] `WHOWAS`
|
2024-12-08 15:37:25 -08:00
|
|
|
- [ ] Implement services.
|
2024-12-08 15:58:23 -08:00
|
|
|
- [ ] Nickserv
|
|
|
|
- [ ] ChanServ
|
2024-12-09 18:28:54 -08:00
|
|
|
- [x] GitServ (Custom user for pull)
|
2024-12-08 20:17:51 -08:00
|
|
|
- [ ] Link `PRIVMSG *serv` to `*serv`
|
2024-12-09 17:25:16 -08:00
|
|
|
- [ ] Extra (not planned) features
|
|
|
|
- [ ] ident support
|
2024-12-10 22:39:56 -08:00
|
|
|
- [ ] 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.
|
2024-12-08 15:37:25 -08:00
|
|
|
- [ ] Add IRCv3 features.
|
2024-12-09 09:30:43 -08:00
|
|
|
- [x] List capabilities (`CAP LS 302`)
|
2024-12-09 13:35:10 -08:00
|
|
|
- [ ] `away-notify`
|
2024-12-10 22:39:56 -08:00
|
|
|
- [ ] `tls` (STARTTLS)
|
2024-12-08 15:58:23 -08:00
|
|
|
- Will research later.
|
2024-12-08 15:48:39 -08:00
|
|
|
|
|
|
|
I am going to fully read [RFC 1459](https://datatracker.ietf.org/doc/html/rfc1459) soon and add each part to the TODO.
|