/***************************************************************************
- * Copyright (C) 2005-2013 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include "coreirclisthelper.h"
#include "corenetwork.h"
#include "coresession.h"
+#include "coretransfer.h"
#include "coretransfermanager.h"
#include "ctcpevent.h"
#include "ircevent.h"
#include "ircuser.h"
+#include "logger.h"
#include "messageevent.h"
#include "netsplit.h"
#include "quassel.h"
-#include "transfer.h"
#ifdef HAVE_QCA2
# include "keyevent.h"
construct.append(net->saslAccount());
construct.append(QChar(QChar::Null));
construct.append(net->saslPassword());
- QByteArray saslData = QByteArray(construct.toAscii().toBase64());
+ QByteArray saslData = QByteArray(construct.toLatin1().toBase64());
saslData.prepend("AUTHENTICATE ");
net->putRawLine(saslData);
#ifdef HAVE_SSL
// additional CAP messages (ls, multi-prefix, et cetera).
if (e->params().count() == 3) {
- if (e->params().at(2).startsWith("sasl")) { // Freenode (at least) sends "sasl " with a trailing space for some reason!
- // FIXME use event
- // if the current identity has a cert set, use SASL EXTERNAL
+ if (e->params().at(1) == "NAK") {
+ // CAP REQ sasl was denied
+ coreNetwork(e)->putRawLine("CAP END");
+ }
+ else if (e->params().at(1) == "ACK") {
+ if (e->params().at(2).startsWith("sasl")) { // Freenode (at least) sends "sasl " with a trailing space for some reason!
+ // FIXME use event
+ // if the current identity has a cert set, use SASL EXTERNAL
#ifdef HAVE_SSL
- if (!coreNetwork(e)->identityPtr()->sslCert().isNull()) {
- coreNetwork(e)->putRawLine(coreNetwork(e)->serverEncode("AUTHENTICATE EXTERNAL"));
- } else {
+ if (!coreNetwork(e)->identityPtr()->sslCert().isNull()) {
+ coreNetwork(e)->putRawLine(coreNetwork(e)->serverEncode("AUTHENTICATE EXTERNAL"));
+ } else {
#endif
- // Only working with PLAIN atm, blowfish later
- coreNetwork(e)->putRawLine(coreNetwork(e)->serverEncode("AUTHENTICATE PLAIN"));
+ // Only working with PLAIN atm, blowfish later
+ coreNetwork(e)->putRawLine(coreNetwork(e)->serverEncode("AUTHENTICATE PLAIN"));
#ifdef HAVE_SSL
- }
+ }
#endif
+ }
}
}
}
/* RPL_WELCOME */
-void CoreSessionEventProcessor::processIrcEvent001(IrcEvent *e)
+void CoreSessionEventProcessor::processIrcEvent001(IrcEventNumeric *e)
{
- if (!checkParamCount(e, 1))
- return;
-
- QString myhostmask = e->params().at(0).section(' ', -1, -1);
e->network()->setCurrentServer(e->prefix());
- e->network()->setMyNick(nickFromMask(myhostmask));
+ e->network()->setMyNick(e->target());
}
// http://en.wikipedia.org/wiki/Direct_Client-to-Client
void CoreSessionEventProcessor::handleCtcpDcc(CtcpEvent *e)
{
+ // DCC support is unfinished, experimental and potentially dangerous, so make it opt-in
+ if (!Quassel::isOptionSet("enable-experimental-dcc")) {
+ quInfo() << "DCC disabled, start core with --enable-experimental-dcc if you really want to try it out";
+ return;
+ }
+
// normal: SEND <filename> <ip> <port> [<filesize>]
// reverse: SEND <filename> <ip> 0 <filesize> <token>
QStringList params = e->param().split(' ');
}
// TODO: check if target is the right thing to use for the partner
- Transfer *transfer = new Transfer(Transfer::Receive, e->target(), filename, address, port, size, this);
+ CoreTransfer *transfer = new CoreTransfer(Transfer::Receive, e->target(), filename, address, port, size, this);
coreSession()->signalProxy()->synchronize(transfer);
coreSession()->transferManager()->addTransfer(transfer);
}
void CoreSessionEventProcessor::handleCtcpVersion(CtcpEvent *e)
{
e->setReply(QString("Quassel IRC %1 (built on %2) -- http://www.quassel-irc.org")
- .arg(Quassel::buildInfo().plainVersionString).arg(Quassel::buildInfo().buildDate));
+ .arg(Quassel::buildInfo().plainVersionString).arg(Quassel::buildInfo().commitDate));
}