This commit implements IRC v3 capability negotiation. A client
configuration option is provided to explicitly enable/disable IRC v3.
IRCv3 support will be enabled by default and may be enabled in specific
cases when IRC v3 support is explicitly not allowed. In case IRC v3
support is enabled, we will in all cases trigger capability negotiation,
though at this time, if we do not want to negotiate for SASL
authentication, there is no extension to negotiate for. In that case we
will issue CAP END to ensure that IRC server knows of our IRC v3
capabilities but do not engage in actual capability negotiation. If we
do not issue any command, there is a chance that an IRC server will
downgrade interoperation capabilities to the original RFC1459 feature
set.
There's this bug in irc-api where *every* channel message arrives as a
private message to the local user. This quickly results in lots of
notifications, a contact for every message sender and lots of new tabs
in the chat window. (See
http://lists.jitsi.org/pipermail/dev/2014-November/022755.html)
I believe that this is fixed now. The fix that is applied can be found
at https://code.google.com/p/irc-api/issues/detail?id=20 . While I am
waiting for upstream to incorporate the fix, I'll use this version and
ask George to test this out and see if the problem disappears.
A primitive implementation of CertificateService. Also includes a
modified version of irc-api that supports getting a custom SSL context
from the server parameters.
I have been able to confirm its workings by connecting to
'swiftco.dal.net' (certificate has a different CN.)
Initial support for secure connections has been introduced. An extra
package path has been added to the manifest in order to acquire
SSL-related classes. The IrcStack has been modified to receive an extra
parameter indicating whether or not to establish a secure connection.
A number of small UI tweaks have been made to the wizard. User id and
server entered into the "simple form" are now migrated to the full form.
An extra checkbox is added to indicate plaintext/secure connection. The
wizard currently defaults to secure. An appropriate default port is set
based on plaintext/secure type of connection. Registered new listeners
in order to evalute access to Next-button on every change.
Implementation for channel mode change 'l' (channel user limit).
Additionally, there exists a bug in the irc-api library that cuts off
the first character of the source IRC user. This has also been fixed,
and a patch has been included in the NOTICES file.