Event backend porting
[quassel.git] / src / core / ircserverhandler.cpp
index 12c41b6..382fd96 100644 (file)
@@ -89,11 +89,12 @@ void IrcServerHandler::handleServerMsg(QByteArray msg) {
   QString foo = serverDecode(params.takeFirst());
 
   // with SASL, the command is 'AUTHENTICATE +' and we should check for this here.
+  /* obsolete because of events
   if(foo == QString("AUTHENTICATE +")) {
     handleAuthenticate();
     return;
   }
-
+  */
   // a colon as the first chars indicates the existence of a prefix
   if(foo[0] == ':') {
     foo.remove(0, 1);
@@ -129,33 +130,15 @@ void IrcServerHandler::handleServerMsg(QByteArray msg) {
 
 
 void IrcServerHandler::defaultHandler(QString cmd, const QString &prefix, const QList<QByteArray> &rawparams) {
-  // we assume that all this happens in server encoding
-  QStringList params = serverDecode(rawparams);
-  uint num = cmd.toUInt();
-  // numeric commands are handled by the event system now
-  if(!num) {
-    emit displayMsg(Message::Error, BufferInfo::StatusBuffer, "", QString("Unknown: ") + cmd + " " + params.join(" "), prefix);
-    //qDebug() << prefix <<":"<<cmd<<params;
-  }
+  // many commands are handled by the event system now
+  Q_UNUSED(cmd)
+  Q_UNUSED(prefix)
+  Q_UNUSED(rawparams)
 }
 
 //******************************/
 // IRC SERVER HANDLER
 //******************************/
-void IrcServerHandler::handleInvite(const QString &prefix, const QList<QByteArray> &params) {
-  if(!checkParamCount("IrcServerHandler::handleInvite()", params, 2))
-    return;
-//   qDebug() << "IrcServerHandler::handleInvite()" << prefix << params;
-
-  IrcUser *ircuser = network()->updateNickFromMask(prefix);
-  if(!ircuser) {
-    return;
-  }
-
-  QString channel = serverDecode(params[1]);
-
-  emit displayMsg(Message::Invite, BufferInfo::StatusBuffer, "", tr("%1 invited you to channel %2").arg(ircuser->nick()).arg(channel));
-}
 
 void IrcServerHandler::handleJoin(const QString &prefix, const QList<QByteArray> &params) {
   if(!checkParamCount("IrcServerHandler::handleJoin()", params, 1))
@@ -186,28 +169,6 @@ void IrcServerHandler::handleJoin(const QString &prefix, const QList<QByteArray>
   }
 }
 
-void IrcServerHandler::handleKick(const QString &prefix, const QList<QByteArray> &params) {
-  if(!checkParamCount("IrcServerHandler::handleKick()", params, 2))
-    return;
-
-  network()->updateNickFromMask(prefix);
-  IrcUser *victim = network()->ircUser(params[1]);
-  if(!victim)
-    return;
-
-  QString channel = serverDecode(params[0]);
-  victim->partChannel(channel);
-
-  QString msg;
-  if(params.count() > 2) // someone got a reason!
-    msg = QString("%1 %2").arg(victim->nick()).arg(channelDecode(channel, params[2]));
-  else
-    msg = victim->nick();
-
-  emit displayMsg(Message::Kick, BufferInfo::ChannelBuffer, channel, msg, prefix);
-  //if(network()->isMe(victim)) network()->setKickedFromChannel(channel);
-}
-
 void IrcServerHandler::handleMode(const QString &prefix, const QList<QByteArray> &params) {
   if(!checkParamCount("IrcServerHandler::handleMode()", params, 2))
     return;
@@ -319,33 +280,6 @@ void IrcServerHandler::handleMode(const QString &prefix, const QList<QByteArray>
   }
 }
 
-void IrcServerHandler::handleNick(const QString &prefix, const QList<QByteArray> &params) {
-  if(!checkParamCount("IrcServerHandler::handleNick()", params, 1))
-    return;
-
-  IrcUser *ircuser = network()->updateNickFromMask(prefix);
-  if(!ircuser) {
-    qWarning() << "IrcServerHandler::handleNick(): Unknown IrcUser!";
-    return;
-  }
-  QString newnick = serverDecode(params[0]);
-  QString oldnick = ircuser->nick();
-
-  QString sender = network()->isMyNick(oldnick)
-    ? newnick
-    : prefix;
-
-
-  // the order is cruicial
-  // otherwise the client would rename the buffer, see that the assigned ircuser doesn't match anymore
-  // and remove the ircuser from the querybuffer leading to a wrong on/offline state
-  ircuser->setNick(newnick);
-  coreSession()->renameBuffer(network()->networkId(), newnick, oldnick);
-
-  foreach(QString channel, ircuser->channels())
-    emit displayMsg(Message::Nick, BufferInfo::ChannelBuffer, channel, newnick, sender);
-}
-
 void IrcServerHandler::handleNotice(const QString &prefix, const QList<QByteArray> &params) {
   if(!checkParamCount("IrcServerHandler::handleNotice()", params, 2))
     return;
@@ -387,49 +321,11 @@ void IrcServerHandler::handleNotice(const QString &prefix, const QList<QByteArra
 
 }
 
-void IrcServerHandler::handlePart(const QString &prefix, const QList<QByteArray> &params) {
-  if(!checkParamCount("IrcServerHandler::handlePart()", params, 1))
-    return;
-
-  IrcUser *ircuser = network()->updateNickFromMask(prefix);
-  QString channel = serverDecode(params[0]);
-  if(!ircuser) {
-    qWarning() << "IrcServerHandler::handlePart(): Unknown IrcUser!";
-    return;
-  }
-
-  ircuser->partChannel(channel);
-
-  QString msg;
-  if(params.count() > 1)
-    msg = userDecode(ircuser->nick(), params[1]);
-
-  emit displayMsg(Message::Part, BufferInfo::ChannelBuffer, channel, msg, prefix);
-  if(network()->isMe(ircuser)) network()->setChannelParted(channel);
-}
-
 void IrcServerHandler::handlePing(const QString &prefix, const QList<QByteArray> &params) {
   Q_UNUSED(prefix);
   putCmd("PONG", params);
 }
 
-void IrcServerHandler::handlePong(const QString &prefix, const QList<QByteArray> &params) {
-  Q_UNUSED(prefix);
-  // the server is supposed to send back what we passed as param. and we send a timestamp
-  // but using quote and whatnought one can send arbitrary pings, so we have to do some sanity checks
-  if(params.count() < 2)
-    return;
-
-  QString timestamp = serverDecode(params[1]);
-  QTime sendTime = QTime::fromString(timestamp, "hh:mm:ss.zzz");
-  if(!sendTime.isValid()) {
-    emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", "PONG " + serverDecode(params).join(" "), prefix);
-    return;
-  }
-
-  network()->setLatency(sendTime.msecsTo(QTime::currentTime()) / 2);
-}
-
 void IrcServerHandler::handlePrivmsg(const QString &prefix, const QList<QByteArray> &params) {
   if(!checkParamCount("IrcServerHandler::handlePrivmsg()", params, 1))
     return;
@@ -503,73 +399,6 @@ void IrcServerHandler::handleQuit(const QString &prefix, const QList<QByteArray>
   }
 }
 
-void IrcServerHandler::handleTopic(const QString &prefix, const QList<QByteArray> &params) {
-  if(!checkParamCount("IrcServerHandler::handleTopic()", params, 1))
-    return;
-
-  IrcUser *ircuser = network()->updateNickFromMask(prefix);
-  if(!ircuser)
-    return;
-
-  IrcChannel *channel = network()->ircChannel(serverDecode(params[0]));
-  if(!channel)
-    return;
-
-  QString topic;
-  if(params.count() > 1) {
-    QByteArray rawTopic = params[1];
-#ifdef HAVE_QCA2
-    rawTopic = decrypt(channel->name(), rawTopic, true);
-#endif
-    topic = channelDecode(channel->name(), rawTopic);
-  }
-
-  channel->setTopic(topic);
-
-  emit displayMsg(Message::Topic, BufferInfo::ChannelBuffer, channel->name(), tr("%1 has changed topic for %2 to: \"%3\"").arg(ircuser->nick()).arg(channel->name()).arg(topic));
-}
-
-void IrcServerHandler::handleCap(const QString &prefix, const QList<QByteArray> &params) {
-    // for SASL, there will only be a single param of 'sasl', however you can check here for
-    // additional CAP messages (ls, multi-prefix, et cetera).
-
-    Q_UNUSED(prefix);
-
-    if(params.size() == 3) {
-        QString param = serverDecode(params[2]);
-        if(param == QString("sasl")) {  // SASL Ready
-            network()->putRawLine(serverEncode("AUTHENTICATE PLAIN"));  // Only working with PLAIN atm, blowfish later
-        }
-    }
-}
-
-void IrcServerHandler::handleAuthenticate() {
-    QString construct = network()->saslAccount();
-    construct.append(QChar(QChar::Null));
-    construct.append(network()->saslAccount());
-    construct.append(QChar(QChar::Null));
-    construct.append(network()->saslPassword());
-    QByteArray saslData = QByteArray(construct.toAscii().toBase64());
-    saslData.prepend(QString("AUTHENTICATE ").toAscii());
-    network()->putRawLine(saslData);
-}
-
-/* RPL_WELCOME */
-void IrcServerHandler::handle001(const QString &prefix, const QList<QByteArray> &params) {
-  network()->setCurrentServer(prefix);
-
-  if(params.isEmpty()) {
-    emit displayMsg(Message::Error, BufferInfo::StatusBuffer, "", QString("%1 didn't supply a valid welcome message... expect some serious issues..."));
-  }
-  // there should be only one param: "Welcome to the Internet Relay Network <nick>!<user>@<host>"
-  QString param = serverDecode(params[0]);
-  QString myhostmask = param.section(' ', -1, -1);
-
-  network()->setMyNick(nickFromMask(myhostmask));
-
-  emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", param, prefix);
-}
-
 /* RPL_ISUPPORT */
 // TODO Complete 005 handling, also use sensible defaults for non-sent stuff
 void IrcServerHandler::handle005(const QString &prefix, const QList<QByteArray> &params) {