Try to keep track of channel keys (Close Issue #108)
- Parses outgoing JOINs to try and guess keys before we get the MODE reply.
- Parsing algorithm based on Quakenet/Hybrid handling of keys.
- Keys are swallowed from the key-list for EVERY channel that is
to join, even if it is not needed, so you would need to use
"JOIN #Foo,#Bar,#Baz Foo,,Baz" to join keyed channels #Foo and #Baz.
- Key changes by mode +k and -k will be tracked.
- Ignores attempts to set the key as "*" if we know a "better" key.
- Side effect: If the key is actually set to "*" we can only learn it if that
is what we join with, or it gets changed to that from no-key.
When we moved to events, we stopped passing null in place of clients.
Instead, fake clients should be used. Apparently ProcessKick wasn't
properly updated.
Fixes issue #100
Just add a utility method to get the callback proxy instead.
Think this is a bit nicer, and is one less thing to have to change
if we switch to events.
All callbacks are now done through getCallback, which offers
type safety (gasp!) and is potentially extensible in the future
(wow!).
This means that nothing can depend on callbacks existing, so
there are two functional changes:
- the parser will no longer disconnect automatically on failed
pings; users have to listen for the event and handle it
themselves;
- the parser will no longer attempt to automatically use alt
nicknames or create new nicknames on connection; users have to
listen for the event and implement the logic themselves
Both of these were really weird anyway, as adding a listener (even
for debugging purposes) disabled the built-in behaviour.