Commit Graph

134 Commits

Author SHA1 Message Date
tali a57d5b532a add KICK command and clean up KICK/PART/QUIT reason param 2024-01-30 19:34:43 -05:00
tali 4aaa96c6c1 make "Router.membership" easier to type 2024-01-30 19:21:47 -05:00
tali d8ef67310a create some basic server unit tests 2024-01-30 19:12:57 -05:00
tali 2d9aaff4ef TMC optimize List.flat_map 2024-01-30 19:05:35 -05:00
tali 7d4fa61935 refactor MODE reports errors about missing users 2024-01-30 18:56:44 -05:00
tali eec24d1602 write List.flat_map 2024-01-30 18:54:41 -05:00
tali 2ecef57faa improve mode parsing yet again, more graceful failures 2024-01-30 18:21:02 -05:00
tali 3ab60bc4c0 add member count, check +l or error on join 2024-01-30 17:32:00 -05:00
tali e7978a01f3 add validation of topics and protected topic mode 2024-01-27 15:56:11 -05:00
tali d5cdc71ac0 add validation of channel modes in some cases
- only +o may set channel mods
- only +v/+o may talk in moderated channels
- filter NAMES reply by channel +s and user +i
2024-01-27 15:34:30 -05:00
tali 5f573c98e7 disallow "*" as a channel key 2024-01-27 15:33:35 -05:00
tali c35c90fcb1 add handling +o/+v/-o/-v commands in channels 2024-01-25 18:55:03 -05:00
tali d66cd93152 parse priv (+o, +v) modes in chan mode strings 2024-01-25 18:53:30 -05:00
tali 2bea08d04f add Mode.Parse.chan_modes tests 2024-01-25 18:30:44 -05:00
tali b49b1db26b op users joining a fresh channel; list user prefixes 2024-01-24 13:17:59 -05:00
tali 5a463382d3 dont force :trailing on all 324 (RPL_CHANNELMODEIS) replies 2024-01-24 12:58:34 -05:00
tali 8e711970e7 clean up set_chan_* functions 2024-01-24 12:54:53 -05:00
tali 7d8807318b support "JOIN 0" command 2024-01-24 12:47:20 -05:00
tali 130f79163d add line to help remind me to add validation 2024-01-24 12:40:20 -05:00
tali 3658be9fe4 support TOPIC command 2024-01-24 12:38:20 -05:00
tali f057eb1648 get channel symbol correct in NAMES reply 2024-01-24 12:35:34 -05:00
tali 04ad9c6ed7 cover some edge cases such as join a channel twice 2024-01-24 12:12:44 -05:00
tali 67024c572e field accessors are ok, dont use methods in Server_info 2024-01-23 14:31:31 -05:00
tali 7dbd997b92 slight connection.welcome refactor 2024-01-23 14:28:57 -05:00
tali b58e690cfc remove Irc. prefix from everything!!!! 2024-01-23 14:24:35 -05:00
tali aeeefeaf04 move server info and config to Server_info 2024-01-23 14:21:43 -05:00
tali d3763b1204 add back Irc.Mode.of_list 2024-01-23 14:00:40 -05:00
tali 7f34e5643a add PART reason 2024-01-23 13:46:54 -05:00
tali 7762c40a22 fix User.is_registered !! 2024-01-23 13:46:48 -05:00
tali 4fca26cc8a refactor quit 2024-01-23 13:31:06 -05:00
tali d6385ab852 big huge refactor of channel join/part logic 2024-01-23 13:18:12 -05:00
tali 0cabfe5dc1 invert is_nick_available lol 2024-01-23 13:10:23 -05:00
tali ec0deb9667 refactor set_nick flow 2024-01-22 12:48:44 -05:00
tali 2ddd0bc827 move MODE handling above JOIN, make set_or_unset a polyvar 2024-01-22 12:37:20 -05:00
tali 6824f95a6f move on_msg_{nick,user} around, take set_mode out of welcome 2024-01-22 12:31:32 -05:00
tali 39de7303d2 split Router into Router_types + User + Chan 2024-01-21 15:04:08 -05:00
tali 7372227578 parse and set +k/+l flags 2024-01-20 11:19:29 -05:00
tali 3641f4c773 add basic get/set channel mode 2024-01-18 13:28:48 -05:00
tali f58de239fa add basic parsing of channel mode flags 2024-01-18 13:28:23 -05:00
tali 8db310e2b0 add verification to prevent get/set other users' modes 2024-01-18 13:28:21 -05:00
tali 11640e4aa1 fix logic for setting modes, initial mode, get mode reply 2024-01-18 12:29:36 -05:00
tali 5a355b1e45 add Router.Chan.mode, currently unused 2024-01-18 12:01:52 -05:00
tali 7f941a68a1 refactor Router.relay to allow sending to multiple targets at once 2024-01-14 13:21:16 -05:00
tali d399ea73de add preliminary changing user modes 2024-01-14 12:50:43 -05:00
tali fc54fe8599 implement "MODE <user>" functionality, refactor welcome message 2024-01-14 12:50:43 -05:00
tali 65fdddaac6 add mode field to user 2024-01-14 12:50:43 -05:00
tali de6ff7abf6 add algorithm parsing user mode strings 2024-01-14 12:50:43 -05:00
tali b46d808e1f add Irc.Mode.Set datastructure, backed by simple bit operations 2024-01-14 11:32:20 -05:00
tali 76b31627b2 more logging tweaks 2024-01-11 22:43:17 -05:00
tali b868915d64 correctly handle some BS edge cases for PRIVMSG 2024-01-11 22:14:23 -05:00
tali 8b76a2b6db add logging library 2024-01-11 22:14:11 -05:00
tali 925bf747e7 fixup remove comment 2024-01-11 00:29:38 -05:00
tali 12266e37e7 consider tab to be whitespace 2024-01-11 00:24:06 -05:00
tali 4d95927bfa fix 001 reply formatting 2024-01-11 00:22:23 -05:00
tali f383706931 parse comma separated targets into individual commands 2024-01-11 00:22:21 -05:00
tali 1f81abfad2 use global state for Outbox "Bcc" 2024-01-10 23:41:01 -05:00
tali f47a383fa1 use result monad for Connection 2024-01-10 23:38:25 -05:00
tali 4e3a86d21a remove Lwt syntax global imports 2024-01-10 23:26:42 -05:00
tali 7a101e0620 yet another user register flow refactor 2024-01-10 22:49:07 -05:00
tali ae8b837c56 add TODO comments for various features missing from message handling 2024-01-10 19:43:20 -05:00
tali 15a4475d3c new improved Irc.Mode.t utility 2024-01-10 19:13:15 -05:00
tali fbf9211b5f remove use of Irc.Mode.t 2024-01-10 18:58:22 -05:00
tali d17e573e41 add part; part on quit; broadcast messages 2024-01-09 22:01:21 -05:00
tali 17e3739cfe preliminary channels impl 2024-01-09 21:27:46 -05:00
tali 7fb44540d9 add bcc api to outbox 2024-01-09 21:19:22 -05:00
tali b3ea5e5e10 basic nick/channel name validation 2024-01-09 20:32:36 -05:00
tali 347d19df59 fix edge case with trailing parameter serialization 2024-01-09 20:10:12 -05:00
tali 9b144cb712 rename Irc_server to just Server 2024-01-09 19:38:02 -05:00
tali c4be8f45a8 outbox module + fix quit handling yet again 2024-01-09 19:35:03 -05:00
tali bdf31dac5b support MOTD command 2024-01-08 01:15:41 -05:00
tali d340708d4f fix quit logic; echo QUIT message 2024-01-08 01:13:14 -05:00
tali e7e641f266 echo nick change message 2024-01-08 01:04:53 -05:00
tali a4ab2f3650 add RPL_ISUPPORT to welcome text 2024-01-08 00:56:16 -05:00
tali d310d4ad6e refactor lowercase hash key handling 2024-01-08 00:55:53 -05:00
tali 7b72410498 fix nickname assignment logic for the 1000th time 2024-01-08 00:42:09 -05:00
tali bd5afe7ad1 add fake JOIN command 2024-01-08 00:31:05 -05:00
tali 4dc454e9a2 privmsg between users; better cleanup on quit 2024-01-08 00:05:01 -05:00
tali 5e2384b855 working on routing 2024-01-07 23:14:32 -05:00
tali 4dc0d1b8a0 beefed up Irc.Msg.prefix 2024-01-07 18:51:26 -05:00
tali f46522ba65 create irc user modes module Irc.Mode 2024-01-07 18:51:18 -05:00
tali 3d4f9a987e rename Irc_msg to Irc.Msg 2024-01-07 16:29:12 -05:00
tali 150d25b1e0 user registration logic 2024-01-07 15:54:39 -05:00
tali 4e43ecd20b new improved message parsing 2024-01-06 19:30:57 -05:00
tali 56dc7f2602 irc message parser/printer 2024-01-05 20:42:05 -05:00