# 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) - [ ] Change of hostnames - [x] Away - [ ] Multi-server support - [ ] [Data file with SQLite](https://discuss.swee.codes/t/41/2) - [ ] User Flags - [ ] i (invisible) - [ ] o (IRCOP) - [ ] w (gets wallops) - [ ] Channel Flags - [ ] o \ (CHANOP) - [ ] v \ (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 \ (user limit) - [ ] b \ (ban a user) - [ ] k \ (password lock) - [ ] EXTRAS q \ (Quiet) - [ ] Destructive features for CHANOPS - [ ] `KICK` - [ ] `MODE ` - [ ] Destructive features for IRCOPS - [ ] `KILL ` - [ ] `MODE ` - [ ] `RESTART` - [ ] Extra commands - [ ] `USERS` - [x] `WHOIS` - [ ] `WHOWAS` - [ ] Implement services. - [ ] Nickserv - [ ] ChanServ - [x] 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 - [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) - 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.