# To-Do list
- [ ] Implement the base of an IRCd, using Libera.Chat and RFC1459 as a reference
   -  [x] [Add the (full) connection process](https://mastodon.swee.codes/@swee/113659491393674897)
   -  [x] Add join/part, and it's requirements (WHO, etc)
   -  [x] Implement proper PRIVMSG
   -  [x] Broadcast QUIT
   -  [x] DNS lookup
   -  [x] Identity management
   -  [ ] WallOps
   -  [ ] Channel invite system
   -  [ ] Wildcard logic (for +b and +q)
   -  [x] Send PING and wait for PONG
   -  [x] Reply PONG if received PING
   -  [x] [Change of nicknames](https://mastodon.swee.codes/@swee/113642104470536887)
   -  [x] Away
   -  [ ] [Multi-server support](https://discuss.swee.codes/t/72)
   -  [x] `LIST`
   -  [ ] `TOPIC`
-  [ ] [Database support](https://discuss.swee.codes/t/71)
-  [ ] 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>`
   -  [x] `RESTART`
- [ ] Extra commands
   -  [x] `NAMES`
   -  [x] `WHOIS`
   -  [ ] `WHOWAS`
- [ ] [Implement services.](modules/pawserv.py)
   -  [ ] Nickserv
   -  [ ] ChanServ
   -  [x] CatServ (Outside of PawServ)
   -  [x] Link `PRIVMSG *serv` to `*serv`
- [x] Extra ~~(not planned)~~ features
   -  [x] ident support
- [ ] Authentication
   -  [x] Store credentials in an SQLite3 file.
   -  [x] Map NickServ IDENTIFY
   -  [ ] Map PASS
- [ ] SSL/TLS
   -  [x] [Use a thread to accept connections on SSL port 6697](https://mastodon.swee.codes/@swee/113762525145710774)
   -  [ ] Automatically reload the certificate if defined in config.
- [ ] Add IRCv3 features.
   -  [x] List capabilities (`CAP LS 302`)
   -  [ ] `away-notify`
   -  [ ] `tls` (STARTTLS)
   -  [ ] `sasl`
   -  Will research later.
I am going to fully read [RFC 1459](https://datatracker.ietf.org/doc/html/rfc1459) soon and add each part to the TODO.