added some more ctcp handlers
[quassel.git] / core / server.h
index 3f2ea31..d4fbfd2 100644 (file)
@@ -49,6 +49,8 @@ class Server : public QThread {
     QString getNetwork() { return network; }
     QStringList providesUserHandlers();
 
+    enum CtcpType {CtcpQuery, CtcpReply};
+
   public slots:
     // void setServerOptions();
     void sendState();
@@ -109,6 +111,7 @@ class Server : public QThread {
     void handleUserSay(QString, QString);
     void handleUserTopic(QString, QString);
     void handleUserVoice(QString, QString);
+    void handleUserMe(QString, QString);
 
     /* void handleServer(QString, QStringList); */
     void handleServerJoin(QString, QStringList);
@@ -131,8 +134,13 @@ class Server : public QThread {
     void handleServer432(QString, QStringList);   // ERR_ERRONEUSNICKNAME
     void handleServer433(QString, QStringList);   // ERR_NICKNAMEINUSE
 
+    void handleCtcpAction(CtcpType, QString, QString, QString);
+    void handleCtcpPing(CtcpType, QString, QString, QString);
+    void handleCtcpVersion(CtcpType, QString, QString, QString);
+
     void defaultServerHandler(QString cmd, QString prefix, QStringList params);
     void defaultUserHandler(QString buf, QString cmd, QString msg);
+    void defaultCtcpHandler(CtcpType ctcptype, QString prefix, QString cmd, QString target, QString param);
 
   private:
     QString network;
@@ -150,6 +158,18 @@ class Server : public QThread {
     void handleServerMsg(QString rawMsg);
     void handleUserInput(QString buffer, QString usrMsg);
 
+    // CTCP Stuff
+    QString XDELIM;
+    QHash<QString, QString> ctcpMDequoteHash;
+    QHash<QString, QString> ctcpXDelimDequoteHash;    
+    QString ctcpDequote(QString);
+    QString ctcpXdelimDequote(QString);
+    QStringList parseCtcp(CtcpType, QString, QString, QString);    
+
+    QString ctcpPack(QString ctcpTag, QString message);
+    void ctcpQuery(QString bufname, QString ctcpTag, QString message);
+    void ctcpReply(QString bufname, QString ctcpTag, QString message);
+    
     QString updateNickFromMask(QString mask);
 
     class ParseError : public Exception {