#ifndef AXSCRIPTMANAGER_H #define AXSCRIPTMANAGER_H #include #include #include #include #include struct ExtensionFile; struct AxMenuItem; struct AxEvent; class AxScriptEngine; class AxScriptWorker; class AxUiFactory; class AdaptixWidget; class Agent; struct DataMenuFileBrowser { QString agentId; QString path; QString name; QString type; }; struct DataMenuProcessBrowser { QString agentId; QString pid; QString ppid; QString arch; QString session_id; QString context; QString process; }; struct DataMenuDownload { QString agentId; QString fileId; QString path; QString state; }; struct ServerScriptGroup { QString agentName; QString listenerType; int os; QString commandsJson; }; struct ServerScriptData { QString name; QString description; QString code; bool enabled; QList groups; }; enum class ConfigScriptType { Listener, Agent, Service }; struct ConfigScriptEntry { ConfigScriptType type; AxScriptEngine* engine; }; class AxScriptManager : public QObject { Q_OBJECT AdaptixWidget* adaptixWidget = nullptr; AxScriptEngine* mainScript = nullptr; AxUiFactory* uiFactory = nullptr; QMap scripts; QMap config_scripts; QMap server_scripts; QMap server_scripts_data; public: AxScriptManager(AdaptixWidget* main_widget, QObject *parent = nullptr); ~AxScriptManager() override; QJSEngine* MainScriptEngine(); AxUiFactory* GetUiFactory() const; void ResetMain(); void Clear(); QJSEngine* GetEngine(const QString &name); AdaptixWidget* GetAdaptix() const; QMap GetAgents() const; QVector GetCredentials() const; QVector GetListeners() const; QMap GetDownloads() const; QMap GetScreenshots() const; QVector GetTargets() const; QVector GetTunnels() const; QStringList GetInterfaces() const; QStringList ListenerScriptList(); void ListenerScriptAdd(const QString &name, const QString &ax_script); QJSEngine* ListenerScriptEngine(const QString &name); QStringList AgentScriptList(); void AgentScriptAdd(const QString &name, const QString &ax_script); QJSEngine* AgentScriptEngine(const QString &name); QJSValue AgentScriptExecute(const QString &name, const QString &code); QStringList ServiceScriptList(); void ServiceScriptAdd(const QString &name, const QString &ax_script); QJSEngine* ServiceScriptEngine(const QString &name); void ServiceScriptDataHandler(const QString &name, const QString &data); QStringList ScriptList(); bool ScriptAdd(ExtensionFile* ext); void ScriptRemove(const ExtensionFile &ext); void ServerScriptAdd(const ServerScriptData &data); void ServerScriptRemove(const QString &name); void ServerScriptSetEnabled(const QString &name, bool enabled); bool ServerScriptIsEnabled(const QString &name) const; QJSEngine* ServerScriptEngine(const QString &name); QList ServerScriptList() const; ServerScriptData ServerScriptGet(const QString &name) const; void GlobalScriptLoad(const QString &path); void GlobalScriptUnload(const QString &path); void GlobalScriptLoadAsync(const QString &path); void ExecuteAsync(const QString& code, const QString& name = "async"); void ExecuteSmart(const QString& code, const QString& name = "smart"); static bool containsUiCalls(const QString& code); void RegisterCommandsGroup(const CommandsGroup &group, const QStringList &listeners, const QStringList &agents, const QList &os); void EventRemove(const QString &event_id); QStringList EventList(); QList FilterMenuItems(const QStringList &agentIds, const QString &menuType, const bool &agentsNeed); QList FilterEvents(const QString &agentId, const QString &eventType); QList getAllEngines() const; QList collectMenuItems(const QString &menuType) const; QList collectEvents(const QString &eventType) const; void safeCallHandler(const AxEvent& event, const QJSValueList& args = QJSValueList()); int addMenuItemsToMenu(QMenu* menu, const QList& items, const QVariantList& context); void AppAgentHide(const QStringList &agents); void AppAgentRemove(const QStringList &agents); void AppAgentSetColor(const QStringList &agents, const QString &background, const QString &foreground, const bool reset); void AppAgentSetMark(const QStringList &agents, const QString &mark); void AppAgentSetTag(const QStringList &agents, const QString &tag); void AppAgentUpdateData(const QString &id, const QJsonObject &updateData); int AddMenuSession(QMenu* menu, const QString &menuType, QStringList agentIds); int AddMenuFileBrowser(QMenu* menu, QVector files); int AddMenuProcessBrowser(QMenu* menu, QVector processes); int AddMenuDownload(QMenu* menu, const QString &menuType, QVector files, const bool &agnetNeed); int AddMenuTask(QMenu* menu, const QString &menuType, const QStringList &tasks); int AddMenuTargets(QMenu* menu, const QString &menuType, const QStringList &targets); int AddMenuCreds(QMenu* menu, const QString &menuType, const QStringList &creds); public Q_SLOTS: void consolePrintMessage(const QString &message); void consolePrintError(const QString &message); void emitNewAgent(const QString &agentId); void emitFileBrowserDisks(const QString &agentId); void emitFileBrowserList(const QString &agentId, const QString &path); void emitFileBrowserUpload(const QString &agentId, const QString &path, const QString &localFilename); void emitProcessBrowserList(const QString &agentId); void emitReadyClient(); void emitDisconnectClient(); }; #endif