Stop swimming against the tide and accept what most of the rest of
the world does.
While it adds an annoying depth to the actual source code, it makes
the root directory nicer (no more 'test-res' dirs), means we don't
have to override the gradle config, and makes it nicer to work in
IDEA 2016.1.
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.
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.
Make all package-private fields and methods they hackily touched
into public, for now.
Change-Id: Ica056a901535b0c0f503283d27ff5210fe625d26
Reviewed-on: http://gerrit.dmdirc.com/3952
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Greg Holmes <greg@dmdirc.com>
Add support for "away-notify" capability (http://ircv3.atheme.org/extensions/away-notify-3.1)
Add support for "account-notify" capability (http://ircv3.atheme.org/extensions/account-notify-3.1)
Add support for "extended-join" capability (http://ircv3.atheme.org/extensions/extended-join-3.1)
Don't bother negotiating UHNAMES or NAMESX using PROTOCTL if we have already enabled the userhost-in-names and multi-prefix capabilities with CAP
Don't bother asking for TSIRC using the TIMESTAMPEDIRC command if we have negotiated it using CAP
Rename "tsirc" capability to "dfbnc.com/tsirc" as a non-standard capability
From a DMDirc point of view, capabilities probably need exposing through the general interface somehow so that if (for example) away-notify is enabled, the client doesn't still send lots of WHOs.
Change-Id: Ice7a8ceae5595a364881e5a1fbe2d7fbdef9a639
Reviewed-on: http://gerrit.dmdirc.com/2544
Reviewed-by: Chris Smith <chris@dmdirc.com>
Automatic-Compile: DMDirc Build Manager
Ignore modes for clients not on the channel.
Change-Id: If5a89ca2450e2583005045af60bdfc00b2a88765
Reviewed-on: http://gerrit.dmdirc.com/2138
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Greg Holmes <greg@dmdirc.com>