#ifndef COMMON_H #define COMMON_H // This file is part of Cmdr. // Cmdr is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Cmdr is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Cmdr under the LICENSE.md file. If not, see // . #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "cmd_objs/long_txt.h" #define DEFAULT_HIST_LIMIT 100 #define DEFAULT_MAX_LINES 5000 #define RDBUFF 128000 #define CMD_ESCAPE '#' #define TXT_CODEC "UTF-16LE" #define BOOKMARK_FOLDER "bookmarks" #define CONFIG_FILENAME "config.json" #define APP_NAME "Cmdr" #define APP_TARGET "cmdr" #define APP_VERSION "1.0.0" #define MRCI_VERSION "1.0.0" enum TypeID { GEN_FILE = 30, TEXT = 31, ERR = 32, PRIV_TEXT = 33, IDLE = 34, HOST_CERT = 35, FILE_INFO = 36, PEER_INFO = 37, MY_INFO = 38, PEER_STAT = 39, P2P_REQUEST = 40, P2P_CLOSE = 41, P2P_OPEN = 42, BYTES = 43, SESSION_ID = 44, NEW_CMD = 45, CMD_ID = 46, BIG_TEXT = 47 }; enum ChannelMemberLevel { OWNER = 1, ADMIN = 2, OFFICER = 3, REGULAR = 4, PUBLIC = 5 }; enum UserIOFlags { HOST_HOOK = 1, LOCAL_HOOK = 1 << 2, GEN_HOOK = 1 << 3, HIDDEN = 1 << 4 }; void setupTextSettings(QJsonObject *data); void loadTextSettings(QJsonObject *data, QWidget *widget); void saveLocalData(QJsonObject *obj); void loadLocalData(QJsonObject *obj); void wordWrap(const QString &label, QTextStream &txtOut, const QString &txtIn, QWidget *measureWid); bool argExists(const QString &key, const QStringList &args); QByteArray wrInt(quint64 num, int numOfBits); QByteArray wrFrame(quint16 cmdId, const QByteArray &data, uchar dType); QByteArray toTEXT(const QString &txt); QStringList parseArgs(const QByteArray &data, int maxArgs); QStringList parseArgs(const QString &line); QString fromTEXT(const QByteArray &txt); QString appDataDir(); QString getParam(const QString &key, const QStringList &args); QString extractCmdName(const QByteArray &data); QString boolText(bool state); QString verText(quint16 maj, quint16 min, quint16 patch); quint64 rdInt(const QByteArray &bytes); class Command; class CmdLine; class Genfile; class MainWindow; class Session; class TextBody; class ContextReloader; class Shared : public QObject { Q_OBJECT public: static bool *connectedToHost; static QByteArray *sessionId; static ushort *servMajor; static ushort *servMinor; static ushort *servPatch; static QString *hostAddress; static QString *clientHookedCmd; static quint16 *hostPort; static QStringList *hookBypass; static QSslSocket *socket; static QHash *clientCmds; static QHash *hostCmds; static QHash *genfileCmds; static QJsonObject *localData; static quint16 *termCmdId; static CmdLine *cmdLine; static Genfile *genFile; static MainWindow *mainWin; static Session *session; static TextBody *textBody; static ContextReloader *contextReloader; static QWidget *mainWidget; explicit Shared(QObject *parent = nullptr); }; class ContextReloader : public QObject { Q_OBJECT public: explicit ContextReloader(QObject *parent = nullptr); public slots: void reloadCmdLine(); }; #endif // COMMON_H