summary refs log tree commit diff
path: root/handle.c (follow)
Commit message (Collapse)AuthorAge
* Use Cold for away notices in queriesJune McEnroe2022-01-16
| | | | So that they can be hidden with M-+.
* Make the /ops response more flavourfulJune McEnroe2021-11-16
| | | | How did this normal sounding format string get in there!
* Handle RPL_WHOISSPECIALJune McEnroe2021-11-10
| | | | <https://modern.ircdocs.horse/index.html#rplwhoisspecial-320>
* Fix strptime decode for musl libcpsykose2021-10-26
| | | | | | | | | | | | POSIX does not define a %F for strptime[1], but does define %F for strftime[2]. Afaik most libc's implement %F for both, but musl is very standards-compliant and does not have %F on strptime, leading to unparsed message tag times, which causes all backlog sent from bouncer on startup to have a timestamp of the current time, instead of the actual timestamp sent. [1] https://pubs.opengroup.org/onlinepubs/9699919799/functions/strptime.html [2] https://pubs.opengroup.org/onlinepubs/9699919799/functions/strftime.html
* Correct handling of colons in SASL PLAINJune McEnroe2021-09-09
| | | | | | Only the first colon should be replaced with a null byte. Ported from pounce.
* Save invited channel for /joinJune McEnroe2021-07-02
|
* Handle "\1ACTION\1" empty actionsJune McEnroe2021-06-20
|
* Don't match actions in noticesJune McEnroe2021-06-20
|
* Add -m mode option to set user modesJune McEnroe2021-06-18
|
* Handle 338 as whois replyJune McEnroe2021-06-17
| | | | Used by Solanum for "actually using host".
* Reset formatting after realname in setnameJune McEnroe2021-06-12
| | | | Missed this one.
* Avoid trailing comma in whois channels listsJune McEnroe2021-06-10
| | | | The format of the reply is defined as "<nick> :{[@|+]<channel><space>}".
* Replace catf with seprintfJune McEnroe2021-06-09
|
* Use reverse video not colors for topic change when disabledKlemens Nanni2021-05-25
| | | | | | | | | | | | | | | | | `-H 0,0`/"hash = 0,0" makes catgirl mostly colorless which is great, but topic changes still hardcode brown/green colors to show differences which is usually not desired by users (like me) disabling colors. Go for a less eye stressing topic change message that shows both old and new in reverse video with default terminal colors. This isn't perfect, other parts of catgirl still hardcode colors and `-H 0,0`/"hash = 0,0" was never meant to disable colors completely, but topics change often enough that avoiding less readable^Waccessible topic diffs seems sensible enough. NB: parseHash() is brittle and "0,0" is not the only value disabling colors...
* Use color enum instead of hardcoded valueKlemens Nanni2021-05-25
|
* Don't require 4 parameters to ERR_USERONCHANNELJune McEnroe2021-05-20
| | | | It should have 4, but the handler only uses 3.
* Reset formatting after realnamesJune McEnroe2021-04-27
|
* Always show 341 RPL_INVITINGJune McEnroe2021-04-16
| | | | | | | | | At least in InspIRCd's implementation, you only get invite-notify INVITEs if you are op, so inviting with no op (where allowed by a channel mode) results in only a 341. On the other hand, inviting as an op produces both a 341 and an INVITE, so will be displayed twice, but showing something sometimes twice is better than not showing it at all.
* Skip STATUSMSG prefixesJune McEnroe2021-04-02
| | | | | This feature is rarely used, so just skip STATUSMSG prefixes in the target so messages get routed correctly.
* Use separate reply counts for automatic join topics/namesJune McEnroe2021-02-21
| | | | | | This restores showing the topic and names for automatic joined channels, while still avoiding touching the windows, by using Cold heat.
* Only treat a single -j join as explicitJune McEnroe2021-02-04
| | | | | | | | | | | In other words, only automatically switch to an automatically joined channel window if there's only one. Otherwise, stay on the <network> window and avoid touching the channel windows with their automatic topic and names replies. This fixes unintentionally clearing saved window unread counts when rejoining channels automatically by switching to them as they are joined.
* Add 335 to WHOIS responsesJune McEnroe2021-01-28
| | | | | This is used by InspIRCd to indicate if a user is a bot (if it set user mode +B).
* Use Warm heat for replies to user-initiated commandsJune McEnroe2021-01-26
| | | | | Otherwise they are invisible with M-+ and commands having no output is confusing.
* Add -I highlight option and /highlightJune McEnroe2021-01-16
|
* Rename ignore code to filterJune McEnroe2021-01-16
|
* Don't pass nick to urlScan for MOTD and helpJune McEnroe2021-01-11
|
* Factor out reply count checking and decrementingJune McEnroe2020-12-30
|
* Add /whowasJune McEnroe2020-12-30
|
* Show setnames like nick changesJune McEnroe2020-12-30
|
* Add /setname commandJune McEnroe2020-12-29
| | | | | | I'm not sure about that replies check in handleStandardReply. If more of those are added the reply counter system will definitely need refactoring.
* Handle so-called Standard RepliesJune McEnroe2020-12-29
|
* Handle 437 ERR_UNAVAILRESOURCE like ERR_NICKNAMEINUSEJune McEnroe2020-12-05
| | | | | Not totally clear under what conditions 437 is returned, but if it happens during registration, we should pick a new nick.
* Remove static buffer from colorMentionsJune McEnroe2020-11-08
|
* Remove static buffer from capListJune McEnroe2020-11-08
|
* Highlight changed portion of topicJune McEnroe2020-11-08
| | | | "%.*ls" is useless.
* Double up /help for server helpJune McEnroe2020-10-02
| | | | | | While the automatic search via LESS is neat, I don't think it's very useful. Just always open the manual to the COMMANDS section, and fix it to append to LESS rather than replace it.
* Use WHO for /opsJune McEnroe2020-09-30
| | | | Accumulate names in a buffer and show away status.
* Add /ops commandJune McEnroe2020-09-30
| | | | | | It's pretty awkward with large channels since NAMES isn't sorted by prefixes or anything... But having it accumulate names across many replies would require more reworking.
* Switch back to checking for server by nick with '.'June McEnroe2020-09-18
| | | | | | | | | | This fixes a bug where if you send a private message before joining any channels, your message will be routed to the <network> window. That happens because without a JOIN, self.user remains unset, which means that require will copy self.nick (set by echoMessage) to self.host. The easiest solution is to go back to checking for '.' and add a '.' to the default nick, so now if a server sends a NOTICE with no origin it will look like -*.*- which is kinda cute.
* Don't call completeTouch for ignored messagesJune McEnroe2020-09-02
|
* Match mentions case-sensitivelyJune McEnroe2020-08-18
| | | | | | The mention coloring code already matches case-sensitively, and any proper ping should be using tab-complete anyway so there's no reason for differing case. And the month of June should not ping me.
* Set origin fields to "*" if missingJune McEnroe2020-08-16
| | | | | | | | | | | | | | | | Also determine if a message is from the server by if the host field has been copied from the nick field. EFNet sends NOTICEs with no origin during registration. RFC 1459 has this to say: > If the prefix is missing from the message, it is assumed to have > originated from the connection from which it was received. I suppose a more correct implementation would be to set the origin to the hostname of the server, but we don't store that globally, so this is good enough.
* Say "OpenSSL" in additional permission noticesJune McEnroe2020-08-04
| | | | LibreSSL is "a modified version of that library".
* Replace catf with something that tracks lenJune McEnroe2020-07-30
| | | | Also the old catf would be broken with -DNDEBUG oops!
* Remove use of strlcatJune McEnroe2020-07-30
| | | | catf is not better though and should really be replaced.
* Add current topic to tab-complete so it can editedJune McEnroe2020-07-13
|
* Don't scan ignored messages for URLsJune McEnroe2020-07-09
|
* Bump ParamCap to 254June McEnroe2020-06-24
| | | | | | | | | | | | Apparently IRCds have decided that the 15-parameter limit doesn't matter anymore. 254 is the maximum number of single-byte parameters (following a single-byte command) which fit in a 512-byte CR-LF-terminated line. When everyone decides that the 512-byte line length limit doesn't matter either, I will delete my software and people can use some JavaScript garbage instead. This makes struct Message 2080 bytes, but there's only ever one or two of them around at once. Avoid passing it by value to handle.
* Color mentions up to first ": " rather than just ":"June McEnroe2020-06-16
| | | | Avoids coloring everything up to a ":)".
* Add additional permission for linking with LibreSSLJune McEnroe2020-06-08
| | | | https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs