Age | Commit message (Collapse) | Author |
|
Fixes a problem where the field would end up as a negative number when
exposed to the perl scripts.
And move it near the other bit-packed fields so we take advantage of the
packing.
|
|
SASL: handle fragmentation
|
|
The IRCv3 SASL extension says that AUTHENTICATION payloads of exactly
400 bytes in length indicate that the message is fragmented and will
continue in a subsequent message. Handle the reassembly and splitting of
these messages so that we are compliant with the specification.
|
|
This fixes two issues:
- IRCNet doesn't have STATUSMSG, but it supports +channels, and
including + in the default value meant processing those incorrectly
- The "bahamut hack", for old servers that support but don't advertise
STATUSMSG, didn't work since ischannel_func doesn't use the default.
The choice of @ intentionally leaves out support for other STATUSMSG
(for example, AzzurraNet's bahamut 1.4 fork seemed to support + and % in
any order, contradicting the comment in the code).
I think this is a decent tradeoff, given how those servers are uncommon
and relying on +# or %# is even less common than @#.
Fixes #531
|
|
Clean up misc.c
|
|
|
|
|
|
|
|
The only difference was that the former returned 1 if the buffer was
overflown, but the return value was never checked.
|
|
There's a typo in 'sasl_fail', the signal that's emitted should be
'server sasl failure' and not 'server sasl fail'.
|
|
This reverts commit 4beebe3238dda96efd4c3a0a6f6002ad5afc96e7.
|
|
Do not assume any default value for statusmsg.
|
|
If sasl_timeout is never initialized with a valid timeout id then
calling /disconnect on the server calls g_source_remove() with 0 as tag,
causing an harmless error message to be printed.
Beside that, the sasl_timeout field is defined as a unsigned int.
We can use 0 as sentiel since g_timeout_add returns tags that are always
greater than zero.
|
|
|
|
If the server didn't send it then just skip the check, the old value it
defaulted to was possibly overlapping with the CHANTYPES leading to an
incorrect behaviour. Fixes #435.
|
|
|
|
The "AUTHENTICATE" command is always required – it's part of the IRCv3
SASL framing. RFC 4422 only documents the Base64 payload.
|
|
|
|
As per #175 if a -botcmd is specified for a given channel without a
-bots parameter then the command is sent right after joining the
channel.
|
|
/knockout uses /ban to set bans but calls ban_remove() directly to
remove them. This commit makes it use /unban instead. This allows
scripts that hook ban/unban to work automatically with /knockout.
|
|
|
|
Turns out it confuses inspircd, making it reply a NAK with empty
parameter. The rest is ACKed anyway. I've already whined at saberuk
and there's a pending pull request over there fixing this issue.
And, of course, this is cleaner.
|
|
Use the same approach used in 'irc_channels_join'.
Remove 'irc_nick_strip' since it was unused.
|
|
|
|
|
|
Save the sasl state in the session
|
|
Thanks to Jilles and dx.
Fixes #309
|
|
Fixes FS#919
|
|
This is seemingly required to have irssi re-authenticate after a
restart.
|
|
Allow the user to set and modify the SASL parameters
|
|
The /NETWORK ADD command now is able to modify the SASL mechanism, the
username and the password on a chatnet basis.
|
|
Turns out event_names_list() in irc-nicklist.c already handles this.
event_who() just ignores it, which is probably a good idea since some of
the irc servers I tested this with have a bug that results in sending
multiple prefixes in the NAMES reply but not in the WHO one (they were
forks of ircd-hybrid before 7.3.0)
And NAMES always happens, anyway. WHO is omitted sometimes for huge
channels.
|
|
Add expandos for hostname
|
|
SASL support
|
|
Add some copyright headers here and there too.
|
|
|
|
|
|
|
|
|
|
Closes #169
|
|
"if the mechanism is unknown, 908 is optional, 904 (or equivalent error condition) is required"
|
|
So that in case of SASL failure the user sees a nice error message.
|
|
|
|
|
|
On error show the user the message sent by the server.
|
|
|
|
Replace G_SOURCE_REMOVE with FALSE for the compatibility sake.
Zero the timeout id after g_source_remove and when exipred.
Save the sasl_* options in sig_chatnet_saved().
|
|
The only supported methods are PLAIN and EXTERNAL, the latter is untested as of
now.
The code gets the values from the keys named sasl_{mechanism,username,password}
specified for each chatnet.
|
|
Implement CHANTYPES support
|
|
irc-cap.c has now a licence header.
A minor style fix in misc.c
|