diff --git a/AdaptixClient/Headers/Agent/Agent.h b/AdaptixClient/Headers/Agent/Agent.h index 1f6bc264..b7352765 100644 --- a/AdaptixClient/Headers/Agent/Agent.h +++ b/AdaptixClient/Headers/Agent/Agent.h @@ -17,8 +17,7 @@ class Agent public: AdaptixWidget* adaptixWidget = nullptr; - AgentData data = {}; - BrowsersConfig browsers = {}; + AgentData data = {}; QImage imageActive = QImage(); QImage imageInactive = QImage(); @@ -70,11 +69,6 @@ public: void UnsetParent(const PivotData &pivotData); void AddChild(const PivotData &pivotData); void RemoveChild(const PivotData &pivotData); - - QString BrowserDisks() const; - QString BrowserProcess() const; - QString BrowserList(const QString &path) const; - QString BrowserUpload(const QString &path, const QString &content) const; }; #endif diff --git a/AdaptixClient/Headers/Client/AxScript/AxScriptEngine.h b/AdaptixClient/Headers/Client/AxScript/AxScriptEngine.h index 6442646a..3eec50ee 100644 --- a/AdaptixClient/Headers/Client/AxScript/AxScriptEngine.h +++ b/AdaptixClient/Headers/Client/AxScript/AxScriptEngine.h @@ -15,6 +15,15 @@ class BridgeMenu; class AbstractAxMenuItem; class AxScriptManager; +struct AxEvent { + QJSValue handler; + QString event_id; + QSet agents; + QSet listenerts; + QSet os; + QJSEngine* jsEngine; +}; + struct AxMenuItem { AbstractAxMenuItem* menu; QSet agents; @@ -28,6 +37,11 @@ struct ScriptContext { QList objects; QList actions; + QList eventFileBroserDisks; + QList eventFileBroserList; + QList eventFileBroserUpload; + QList eventProcessBrowserList; + QList menuSessionMain; QList menuSessionAgent; QList menuSessionBrowser; @@ -64,9 +78,12 @@ public: void registerObject(QObject* obj); void registerAction(QAction* action); + void registerEvent(const QString &type, const QJSValue &handler, const QSet &list_agents, const QSet &list_os, const QSet &list_listeners, const QString &id); + void removeEvent(const QString &id); void registerMenu(const QString &type, AbstractAxMenuItem* menu, const QSet &list_agents, const QSet &list_os, const QSet &list_listeners); bool execute(const QString &code); + QList getEvents(const QString &type); QList getMenuItems(const QString &type); public slots: diff --git a/AdaptixClient/Headers/Client/AxScript/AxScriptManager.h b/AdaptixClient/Headers/Client/AxScript/AxScriptManager.h index 963d2533..1c07dda1 100644 --- a/AdaptixClient/Headers/Client/AxScript/AxScriptManager.h +++ b/AdaptixClient/Headers/Client/AxScript/AxScriptManager.h @@ -7,6 +7,8 @@ #include struct ExtensionFile; +struct AxMenuItem; +struct AxEvent; class AxScriptEngine; class AdaptixWidget; class Agent; @@ -65,16 +67,23 @@ public: void GlobalScriptUnload(const QString &path); void RegisterCommandsGroup(const CommandsGroup &group, const QStringList &listeners, const QStringList &agents, const QList &os); - int AddMenuSession(QMenu* menu, const QString &menuType, QStringList agentIds) const; - int AddMenuFileBrowser(QMenu* menu, QVector files) const; - int AddMenuDownload(QMenu* menu, const QString &menuType, QVector files) const; + void RemoveEvent(const QString &event_id); + QList FilterMenuItems(const QStringList &agentIds, const QString &menuType); + QList FilterEvents(const QString &agentId, const QString &eventType); - - void emitAllEventTestClick(); + int AddMenuSession(QMenu* menu, const QString &menuType, QStringList agentIds); + int AddMenuFileBrowser(QMenu* menu, QVector files); + int AddMenuDownload(QMenu* menu, const QString &menuType, QVector files); public slots: void consolePrintMessage(const QString &message); void consolePrintError(const QString &message); + + 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); + }; #endif diff --git a/AdaptixClient/Headers/Client/AxScript/BridgeApp.h b/AdaptixClient/Headers/Client/AxScript/BridgeApp.h index 45dac28a..47ea4888 100644 --- a/AdaptixClient/Headers/Client/AxScript/BridgeApp.h +++ b/AdaptixClient/Headers/Client/AxScript/BridgeApp.h @@ -28,6 +28,7 @@ public slots: QObject* create_command(const QString &name, const QString &description, const QString &example = "", const QString &message = ""); QObject* create_commands_group(const QString &name, const QJSValue& array); void execute_alias(const QString &id, const QString &cmdline, const QString &command, const QString &message = "", const QJSValue &hook = QJSValue()) const; + void execute_browser(const QString &id, const QString &command) const; void execute_command(const QString &id, const QString &command, const QJSValue &hook = QJSValue()) const; QString file_basename(const QString &path) const; bool file_exists(const QString &path) const; @@ -46,6 +47,7 @@ public slots: void script_load(const QString &path); void script_unload(const QString &path); QString script_dir(); + void show_message(const QString &title, const QString &text); int ticks(); signals: diff --git a/AdaptixClient/Headers/Client/AxScript/BridgeEvent.h b/AdaptixClient/Headers/Client/AxScript/BridgeEvent.h index 0d491103..60901a68 100644 --- a/AdaptixClient/Headers/Client/AxScript/BridgeEvent.h +++ b/AdaptixClient/Headers/Client/AxScript/BridgeEvent.h @@ -11,16 +11,19 @@ class AxScriptEngine; class BridgeEvent : public QObject { Q_OBJECT AxScriptEngine* scriptEngine; - QWidget* widget; - QList eventHandlers; public: - BridgeEvent(AxScriptEngine* scriptEngine, QObject* parent = nullptr); + explicit BridgeEvent(AxScriptEngine* scriptEngine, QObject* parent = nullptr); ~BridgeEvent() override; + void reg(const QString &event, const QString &type, const QJSValue &handler, const QJSValue &agents, const QJSValue &os, const QJSValue &listeners, const QString &event_id); + public slots: - void on_event(const QJSValue &handler); - void emitEventTestClick(); + void on_filebrowser_disks(const QJSValue &handler, const QJSValue &agents, const QJSValue &os = QJSValue(), const QJSValue &listeners = QJSValue(), const QString &event_id = ""); + void on_filebrowser_list(const QJSValue &handler, const QJSValue &agents, const QJSValue &os = QJSValue(), const QJSValue &listeners = QJSValue(), const QString &event_id = ""); + void on_filebrowser_upload(const QJSValue &handler, const QJSValue &agents, const QJSValue &os = QJSValue(), const QJSValue &listeners = QJSValue(), const QString &event_id = ""); + void on_processbrowser_list(const QJSValue &handler, const QJSValue &agents, const QJSValue &os = QJSValue(), const QJSValue &listeners = QJSValue(), const QString &event_id = ""); + void remove(const QString &event_id); signals: void scriptError(const QString &msg); diff --git a/AdaptixClient/Headers/Client/AxScript/BridgeForm.h b/AdaptixClient/Headers/Client/AxScript/BridgeForm.h index 82c75270..e169be48 100644 --- a/AdaptixClient/Headers/Client/AxScript/BridgeForm.h +++ b/AdaptixClient/Headers/Client/AxScript/BridgeForm.h @@ -20,8 +20,6 @@ public: public slots: void connect(QObject* sender, const QString& signal, const QJSValue& handler); - void show_message(const QString &title, const QString &text); - /// Elements QObject* create_vlayout(); QObject* create_hlayout(); diff --git a/AdaptixClient/Headers/Client/Requestor.h b/AdaptixClient/Headers/Client/Requestor.h index 672de3a9..33859510 100644 --- a/AdaptixClient/Headers/Client/Requestor.h +++ b/AdaptixClient/Headers/Client/Requestor.h @@ -55,16 +55,6 @@ bool HttpReqTasksHook(const QByteArray &jsonData, AuthProfile profile, QString* bool HttpReqDownloadAction(const QString &action, const QString &fileId, AuthProfile profile, QString* message, bool* ok ); -///BROWSER - -bool HttpReqBrowserDisks(const QString &agentId, AuthProfile profile, QString* message, bool* ok ); - -bool HttpReqBrowserProcess(const QString &agentId, AuthProfile profile, QString* message, bool* ok ); - -bool HttpReqBrowserList(const QString &agentId, const QString &path, AuthProfile profile, QString* message, bool* ok ); - -bool HttpReqBrowserUpload(const QString &agentId, const QString &path, const QString &content, AuthProfile profile, QString* message, bool* ok ); - ///TUNNEL bool HttpReqTunnelStartServer(const QString &tunnelType, const QByteArray &jsonData, AuthProfile profile, QString* message, bool* ok); diff --git a/AdaptixClient/Headers/UI/Widgets/AdaptixWidget.h b/AdaptixClient/Headers/UI/Widgets/AdaptixWidget.h index 414005bb..dad5e4bf 100644 --- a/AdaptixClient/Headers/UI/Widgets/AdaptixWidget.h +++ b/AdaptixClient/Headers/UI/Widgets/AdaptixWidget.h @@ -29,7 +29,6 @@ typedef struct RegAgentConfig { QString listenerType; int os; Commander* commander; - BrowsersConfig browsers; bool valid; } RegAgentConfig; @@ -138,6 +137,11 @@ signals: void LoadGlobalScriptSignal(QString path); void UnloadGlobalScriptSignal(QString path); + void eventFileBrowserDisks(QString agentId); + void eventFileBrowserList(QString agentId, QString path); + void eventFileBrowserUpload(QString agentId, QString path, QString localFilename); + void eventProcessBrowserList(QString agentId); + public slots: void ChannelClose() const; void DataHandler(const QByteArray& data); diff --git a/AdaptixClient/Headers/UI/Widgets/ConsoleWidget.h b/AdaptixClient/Headers/UI/Widgets/ConsoleWidget.h index 4810ce49..0c363f9b 100644 --- a/AdaptixClient/Headers/UI/Widgets/ConsoleWidget.h +++ b/AdaptixClient/Headers/UI/Widgets/ConsoleWidget.h @@ -56,7 +56,7 @@ public: explicit ConsoleWidget(AdaptixWidget* w, Agent* a, Commander* c); ~ConsoleWidget() override; - void ProcessCmdResult(const QString &commandLine, CommanderResult cmdResult); + void ProcessCmdResult(const QString &commandLine, const CommanderResult &cmdResult, bool UI); void InputFocus() const; void AddToHistory(const QString& command); diff --git a/AdaptixClient/Headers/UI/Widgets/DownloadsWidget.h b/AdaptixClient/Headers/UI/Widgets/DownloadsWidget.h index a386066f..b67857ee 100644 --- a/AdaptixClient/Headers/UI/Widgets/DownloadsWidget.h +++ b/AdaptixClient/Headers/UI/Widgets/DownloadsWidget.h @@ -28,9 +28,6 @@ public slots: void actionSyncCurl() const; void actionSyncWget() const; void actionDelete() const; - void actionResume() const; - void actionPause() const; - void actionCancel() const; }; #endif \ No newline at end of file diff --git a/AdaptixClient/Headers/UI/Widgets/TasksWidget.h b/AdaptixClient/Headers/UI/Widgets/TasksWidget.h index 1fb1a9c7..024610a6 100644 --- a/AdaptixClient/Headers/UI/Widgets/TasksWidget.h +++ b/AdaptixClient/Headers/UI/Widgets/TasksWidget.h @@ -5,6 +5,7 @@ #include class Task; +class AdaptixWidget; class TaskOutputWidget : public QWidget { @@ -26,10 +27,10 @@ public: class TasksWidget : public QWidget { - QWidget* mainWidget = nullptr; - QGridLayout* mainGridLayout = nullptr; - QTableWidget* tableWidget = nullptr; - QShortcut* shortcutSearch = nullptr; + AdaptixWidget* adaptixWidget = nullptr; + QGridLayout* mainGridLayout = nullptr; + QTableWidget* tableWidget = nullptr; + QShortcut* shortcutSearch = nullptr; QWidget* searchWidget = nullptr; QHBoxLayout* searchLayout = nullptr; @@ -59,7 +60,7 @@ public: TaskOutputWidget* taskOutputConsole = nullptr; - explicit TasksWidget( QWidget* w ); + explicit TasksWidget( AdaptixWidget* w ); ~TasksWidget() override; void AddTaskItem(Task* newTask) const; diff --git a/AdaptixClient/Headers/main.h b/AdaptixClient/Headers/main.h index d5f461b0..f05685d3 100644 --- a/AdaptixClient/Headers/main.h +++ b/AdaptixClient/Headers/main.h @@ -168,12 +168,6 @@ ////////// -// ToDo: BrowserConfig -typedef struct BrowsersConfig { - bool FileBrowserDisks; - bool FileBrowserUpload; -} BrowsersConfig; - typedef struct SettingsData { QString MainTheme; QString FontFamily; diff --git a/AdaptixClient/Source/Agent/Agent.cpp b/AdaptixClient/Source/Agent/Agent.cpp index e8e8106d..d27ef203 100644 --- a/AdaptixClient/Source/Agent/Agent.cpp +++ b/AdaptixClient/Source/Agent/Agent.cpp @@ -123,7 +123,6 @@ Agent::Agent(QJsonObject jsonObjAgentData, AdaptixWidget* w) } auto regAgnet = this->adaptixWidget->GetRegAgent(data.Name, data.Listener, data.Os); - this->browsers = regAgnet.browsers; this->commander = regAgnet.commander; this->Console = new ConsoleWidget(adaptixWidget, this, regAgnet.commander); @@ -387,10 +386,7 @@ void Agent::UnsetParent(const PivotData &pivotData) this->item_Last->setText( QString::fromUtf8("\u221E \u221E") ); } -void Agent::AddChild(const PivotData &pivotData) -{ - this->childsId.push_back(pivotData.ChildAgentId); -} +void Agent::AddChild(const PivotData &pivotData) { this->childsId.push_back(pivotData.ChildAgentId); } void Agent::RemoveChild(const PivotData &pivotData) { @@ -401,49 +397,3 @@ void Agent::RemoveChild(const PivotData &pivotData) } } } - -/// BROWSER - -QString Agent::BrowserDisks() const -{ - QString message = QString(); - bool ok = false; - bool result = HttpReqBrowserDisks( data.Id, *(adaptixWidget->GetProfile()), &message, &ok); - if (!result) - return "Response timeout"; - - return message; -} - -QString Agent::BrowserProcess() const -{ - QString message = QString(); - bool ok = false; - bool result = HttpReqBrowserProcess( data.Id, *(adaptixWidget->GetProfile()), &message, &ok); - if (!result) - return "Response timeout"; - - return message; -} - -QString Agent::BrowserList(const QString &path) const -{ - QString message = QString(); - bool ok = false; - bool result = HttpReqBrowserList( data.Id, path, *(adaptixWidget->GetProfile()), &message, &ok); - if (!result) - return "Response timeout"; - - return message; -} - -QString Agent::BrowserUpload(const QString &path, const QString &content) const -{ - QString message = QString(); - bool ok = false; - bool result = HttpReqBrowserUpload( data.Id, path, content, *(adaptixWidget->GetProfile()), &message, &ok); - if (!result) - return "Response timeout"; - - return message; -} diff --git a/AdaptixClient/Source/Client/AxScript/AxElementWrappers.cpp b/AdaptixClient/Source/Client/AxScript/AxElementWrappers.cpp index 3a7320a6..2983b058 100644 --- a/AdaptixClient/Source/Client/AxScript/AxElementWrappers.cpp +++ b/AdaptixClient/Source/Client/AxScript/AxElementWrappers.cpp @@ -19,7 +19,6 @@ void AxActionWrapper::setContext(QVariantList context) { QObject::connect(pAction, &QAction::triggered, this, [this, context]() { triggerWithContext(context); }); } -// void AxActionWrapper::triggerWithContext(const QVariantMap &context) const { void AxActionWrapper::triggerWithContext(const QVariantList& arg) const { if (!handler.isCallable()) return; diff --git a/AdaptixClient/Source/Client/AxScript/AxScriptEngine.cpp b/AdaptixClient/Source/Client/AxScript/AxScriptEngine.cpp index 0dbcd460..7629ae82 100644 --- a/AdaptixClient/Source/Client/AxScript/AxScriptEngine.cpp +++ b/AdaptixClient/Source/Client/AxScript/AxScriptEngine.cpp @@ -65,6 +65,44 @@ void AxScriptEngine::registerObject(QObject *obj) { context.objects.append(obj); void AxScriptEngine::registerAction(QAction *action) { context.actions.append(action); } +///// + +void AxScriptEngine::registerEvent(const QString &type, const QJSValue &handler, const QSet &list_agents, const QSet &list_os, const QSet &list_listeners, const QString &id) +{ + QSet os; + if (list_os.contains("windows")) os.insert(1); + if (list_os.contains("linux")) os.insert(2); + if (list_os.contains("macos")) os.insert(3); + + AxEvent event = {handler, id, list_agents, list_listeners, os, jsEngine.get()}; + + if ( type == "FileBroserDisks") context.eventFileBroserDisks.append(event); + else if (type == "FileBroserList") context.eventFileBroserList.append(event); + else if (type == "FileBroserUpload") context.eventFileBroserUpload.append(event); + else if (type == "ProcessBrowserList") context.eventProcessBrowserList.append(event); +} + +QList AxScriptEngine::getEvents(const QString &type) +{ + if ( type == "FileBroserDisks") return context.eventFileBroserDisks; + else if (type == "FileBroserList") return context.eventFileBroserList; + else if (type == "FileBroserUpload") return context.eventFileBroserUpload; + else if (type == "ProcessBrowserList") return context.eventProcessBrowserList; + + return QList(); +} + +void AxScriptEngine::removeEvent(const QString &id) +{ + for (int i=0; i< context.eventFileBroserDisks.size(); i++) { + if (id == context.eventFileBroserDisks[i].event_id) { + context.eventFileBroserDisks.removeAt(i); + i--; + } + } +} + + ///// void AxScriptEngine::registerMenu(const QString &type, AbstractAxMenuItem *menu, const QSet &list_agents, const QSet &list_os, const QSet &list_listeners) diff --git a/AdaptixClient/Source/Client/AxScript/AxScriptManager.cpp b/AdaptixClient/Source/Client/AxScript/AxScriptManager.cpp index 5ca3e154..2873c090 100644 --- a/AdaptixClient/Source/Client/AxScript/AxScriptManager.cpp +++ b/AdaptixClient/Source/Client/AxScript/AxScriptManager.cpp @@ -159,12 +159,17 @@ void AxScriptManager::RegisterCommandsGroup(const CommandsGroup &group, const QS commander->AddAxCommands(group); } - -/// MENU - -int AxScriptManager::AddMenuSession(QMenu *menu, const QString &menuType, QStringList agentIds) const +void AxScriptManager::RemoveEvent(const QString &event_id) +{ + QList list = this->agents_scripts.values() + this->scripts.values(); + list.append(this->mainScript); + + for (const auto script : list) + script->removeEvent(event_id); +} + +QList AxScriptManager::FilterMenuItems(const QStringList &agentIds, const QString &menuType) { - QVariantList context; QSet agentTypes; QSet listenerTypes; QSet osTypes; @@ -173,28 +178,82 @@ int AxScriptManager::AddMenuSession(QMenu *menu, const QString &menuType, QStrin agentTypes.insert(mainWidget->AgentsMap[agent_id]->data.Name); osTypes.insert(mainWidget->AgentsMap[agent_id]->data.Os); listenerTypes.insert(mainWidget->AgentsMap[agent_id]->listenerType); + } + } + + QList list = this->agents_scripts.values() + this->scripts.values(); + list.append(this->mainScript); + + QList items; + for (const auto script : list) + items += script->getMenuItems(menuType); + + QList ret; + for (int i = 0; i < items.size(); ++i) { + AxMenuItem item = items[i]; + + if ( !item.agents.contains(agentTypes) ) + continue; + if (item.os.size() > 0 && !item.os.contains(osTypes)) + continue; + if (item.listenerts.size() > 0 && !item.listenerts.contains(listenerTypes)) + continue; + + ret.append(item); + } + return ret; +} + +QList AxScriptManager::FilterEvents(const QString &agentId, const QString &eventType) +{ + QList ret; + + if( !mainWidget->AgentsMap.contains(agentId) ) + return ret; + + QString agentType = mainWidget->AgentsMap[agentId]->data.Name; + QString listenerType = mainWidget->AgentsMap[agentId]->listenerType; + int osType = mainWidget->AgentsMap[agentId]->data.Os; + + QList list = this->agents_scripts.values() + this->scripts.values(); + list.append(this->mainScript); + + QList items; + for (const auto script : list) { + items += script->getEvents(eventType); + } + + for (int i = 0; i < items.size(); ++i) { + AxEvent event = items[i]; + + if ( !event.agents.contains(agentType) ) + continue; + if (event.os.size() > 0 && !event.os.contains(osType)) + continue; + if (event.listenerts.size() > 0 && !event.listenerts.contains(listenerType)) + continue; + + ret.append(event); + } + return ret; +} + + +/// MENU + +int AxScriptManager::AddMenuSession(QMenu *menu, const QString &menuType, QStringList agentIds) +{ + QVariantList context; + for (auto agent_id: agentIds) { + if (mainWidget->AgentsMap.contains(agent_id)) { context << agent_id; } } - - QList list = this->agents_scripts.values() + this->scripts.values(); - list.append(this->mainScript); - - QList items; - for (const auto script : list) - items += script->getMenuItems(menuType); - int count = 0; + QList items = this->FilterMenuItems(agentIds, menuType); for (int i = 0; i < items.size(); ++i) { AxMenuItem item = items[i]; - if ( !item.agents.contains(agentTypes) ) - continue; - if (item.os.size() > 0 && !item.os.contains(osTypes)) - continue; - if (item.listenerts.size() > 0 && !item.listenerts.contains(listenerTypes)) - continue; - item.menu->setContext(context); if (auto* item1 = dynamic_cast(item.menu)) menu->addAction(item1->action()); @@ -209,48 +268,28 @@ int AxScriptManager::AddMenuSession(QMenu *menu, const QString &menuType, QStrin return count; } -int AxScriptManager::AddMenuFileBrowser(QMenu *menu, QVector files) const +int AxScriptManager::AddMenuFileBrowser(QMenu *menu, QVector files) { - QVariantList context; - QSet agentTypes; - QSet listenerTypes; - QSet osTypes; + if (files.empty()) return 0; + QVariantList context; for (auto file : files) { if (mainWidget->AgentsMap.contains(file.agentId)) { - agentTypes.insert(mainWidget->AgentsMap[file.agentId]->data.Name); - osTypes.insert(mainWidget->AgentsMap[file.agentId]->data.Os); - listenerTypes.insert(mainWidget->AgentsMap[file.agentId]->listenerType); + QVariantMap map; + map["agent_id"] = file.agentId; + map["path"] = file.path; + map["name"] = file.name; + map["type"] = file.type; + context << map; } - - QVariantMap map; - map["agent_id"] = file.agentId; - map["path"] = file.path; - map["name"] = file.name; - map["type"] = file.type; - context << map; } - QList list = this->agents_scripts.values() + this->scripts.values(); - list.append(this->mainScript); - - QList items; - for (const auto script : list) - items += script->getMenuItems("FileBrowser"); - int count = 0; + QList items = this->FilterMenuItems(QStringList() << files[0].agentId, "FileBrowser"); for (int i = 0; i < items.size(); ++i) { AxMenuItem item = items[i]; - if ( !item.agents.contains(agentTypes) ) - continue; - if (item.os.size() > 0 && !item.os.contains(osTypes)) - continue; - if (item.listenerts.size() > 0 && !item.listenerts.contains(listenerTypes)) - continue; - item.menu->setContext(context); - if (auto* item1 = dynamic_cast(item.menu)) menu->addAction(item1->action()); else if (auto* item2 = dynamic_cast(item.menu)) @@ -264,48 +303,28 @@ int AxScriptManager::AddMenuFileBrowser(QMenu *menu, QVector files) const +int AxScriptManager::AddMenuDownload(QMenu *menu, const QString &menuType, QVector files) { - QVariantList context; - QSet agentTypes; - QSet listenerTypes; - QSet osTypes; + if (files.empty()) return 0; + QVariantList context; for (auto file : files) { if (mainWidget->AgentsMap.contains(file.agentId)) { - agentTypes.insert(mainWidget->AgentsMap[file.agentId]->data.Name); - osTypes.insert(mainWidget->AgentsMap[file.agentId]->data.Os); - listenerTypes.insert(mainWidget->AgentsMap[file.agentId]->listenerType); + QVariantMap map; + map["agent_id"] = file.agentId; + map["file_id"] = file.fileId; + map["path"] = file.path; + map["state"] = file.state; + context << map; } - - QVariantMap map; - map["agent_id"] = file.agentId; - map["file_id"] = file.fileId; - map["path"] = file.path; - map["state"] = file.state; - context << map; } - QList list = this->agents_scripts.values() + this->scripts.values(); - list.append(this->mainScript); - - QList items; - for (const auto script : list) - items += script->getMenuItems(menuType); - int count = 0; + QList items = this->FilterMenuItems(QStringList() << files[0].agentId, menuType); for (int i = 0; i < items.size(); ++i) { AxMenuItem item = items[i]; - if ( !item.agents.contains(agentTypes) ) - continue; - if (item.os.size() > 0 && !item.os.contains(osTypes)) - continue; - if (item.listenerts.size() > 0 && !item.listenerts.contains(listenerTypes)) - continue; - item.menu->setContext(context); - if (auto* item1 = dynamic_cast(item.menu)) menu->addAction(item1->action()); else if (auto* item2 = dynamic_cast(item.menu)) @@ -319,22 +338,56 @@ int AxScriptManager::AddMenuDownload(QMenu *menu, const QString &menuType, QVect return count; } - /// EVENT -void AxScriptManager::emitAllEventTestClick() +void AxScriptManager::emitFileBrowserDisks(const QString &agentId) { - if (mainScript && mainScript->event()) - mainScript->event()->emitEventTestClick(); - - for (const auto& module : agents_scripts) { /// ? - if (module->event()) - module->event()->emitEventTestClick(); + QList items = this->FilterEvents(agentId, "FileBroserDisks"); + for (int i = 0; i < items.size(); ++i) { + AxEvent event = items[i]; + if (event.jsEngine) { + QJSValue argId = event.jsEngine->toScriptValue(agentId); + event.handler.call(QJSValueList() << argId); + } } +} - for (const auto& module : scripts) { - if (module->event()) - module->event()->emitEventTestClick(); +void AxScriptManager::emitFileBrowserList(const QString &agentId, const QString &path) +{ + QList items = this->FilterEvents(agentId, "FileBroserList"); + for (int i = 0; i < items.size(); ++i) { + AxEvent event = items[i]; + if (event.jsEngine) { + QJSValue argId = event.jsEngine->toScriptValue(agentId); + QJSValue argPath = event.jsEngine->toScriptValue(path); + event.handler.call(QJSValueList() << argId << argPath); + } + } +} + +void AxScriptManager::emitFileBrowserUpload(const QString &agentId, const QString &path, const QString &localFilename) +{ + QList items = this->FilterEvents(agentId, "FileBroserUpload"); + for (int i = 0; i < items.size(); ++i) { + AxEvent event = items[i]; + if (event.jsEngine) { + QJSValue argId = event.jsEngine->toScriptValue(agentId); + QJSValue argPath = event.jsEngine->toScriptValue(path); + QJSValue argFile = event.jsEngine->toScriptValue(localFilename); + event.handler.call(QJSValueList() << argId << argPath << argFile); + } + } +} + +void AxScriptManager::emitProcessBrowserList(const QString &agentId) +{ + QList items = this->FilterEvents(agentId, "ProcessBrowserList"); + for (int i = 0; i < items.size(); ++i) { + AxEvent event = items[i]; + if (event.jsEngine) { + QJSValue argId = event.jsEngine->toScriptValue(agentId); + event.handler.call(QJSValueList() << argId); + } } } diff --git a/AdaptixClient/Source/Client/AxScript/BridgeApp.cpp b/AdaptixClient/Source/Client/AxScript/BridgeApp.cpp index 9ea012fe..46020132 100644 --- a/AdaptixClient/Source/Client/AxScript/BridgeApp.cpp +++ b/AdaptixClient/Source/Client/AxScript/BridgeApp.cpp @@ -9,8 +9,6 @@ #include #include -#include "MainAdaptix.h" - BridgeApp::BridgeApp(AxScriptEngine* scriptEngine, QObject* parent) : QObject(parent), scriptEngine(scriptEngine), widget(new QWidget()){} BridgeApp::~BridgeApp() { delete widget; } @@ -285,10 +283,24 @@ void BridgeApp::execute_alias(const QString &id, const QString &cmdline, const Q if (!hook.isUndefined() && !hook.isNull() && hook.isCallable()) cmdResult.post_hook = {true, scriptEngine->context.name, hook}; - agent->Console->ProcessCmdResult(cmdline, cmdResult); + agent->Console->ProcessCmdResult(cmdline, cmdResult, false); } } +void BridgeApp::execute_browser(const QString &id, const QString &command) const +{ + auto mapAgents = scriptEngine->manager()->GetAgents(); + if (!mapAgents.contains(id)) + return; + + auto agent = mapAgents[id]; + if (!agent) + return; + + auto cmdResult = agent->commander->ProcessInput(id, command); + agent->Console->ProcessCmdResult(command, cmdResult, true); +} + void BridgeApp::execute_command(const QString &id, const QString &command, const QJSValue &hook) const { auto mapAgents = scriptEngine->manager()->GetAgents(); @@ -305,7 +317,7 @@ void BridgeApp::execute_command(const QString &id, const QString &command, const if (!hook.isUndefined() && !hook.isNull() && hook.isCallable()) cmdResult.post_hook = {true, scriptEngine->context.name, hook}; - agent->Console->ProcessCmdResult(command, cmdResult); + agent->Console->ProcessCmdResult(command, cmdResult, false); } } @@ -437,4 +449,6 @@ QString BridgeApp::script_dir() #endif } -int BridgeApp::ticks() { return QDateTime::currentSecsSinceEpoch(); } \ No newline at end of file +void BridgeApp::show_message(const QString &title, const QString &text) { QMessageBox::information(nullptr, title, text); } + +int BridgeApp::ticks() { return QDateTime::currentSecsSinceEpoch(); } diff --git a/AdaptixClient/Source/Client/AxScript/BridgeEvent.cpp b/AdaptixClient/Source/Client/AxScript/BridgeEvent.cpp index 742fc569..c2ac581e 100644 --- a/AdaptixClient/Source/Client/AxScript/BridgeEvent.cpp +++ b/AdaptixClient/Source/Client/AxScript/BridgeEvent.cpp @@ -1,23 +1,65 @@ #include +#include +#include -BridgeEvent::BridgeEvent(AxScriptEngine* scriptEngine, QObject* parent) : QObject(parent), scriptEngine(scriptEngine), widget(new QWidget()) {} +BridgeEvent::BridgeEvent(AxScriptEngine* scriptEngine, QObject* parent) : QObject(parent), scriptEngine(scriptEngine) {} -BridgeEvent::~BridgeEvent() { delete widget; } +BridgeEvent::~BridgeEvent() {} -void BridgeEvent::on_event(const QJSValue &handler) +void BridgeEvent::reg(const QString &event, const QString &type, const QJSValue &handler, const QJSValue &agents, const QJSValue &os, const QJSValue &listeners, const QString &event_id) { - if (handler.isCallable()) - eventHandlers.append(handler); - else - emit scriptError("on_event -> handler in not Callable"); -} - -void BridgeEvent::emitEventTestClick() -{ - for (const auto& handler : eventHandlers) { - if (handler.isCallable()) - eventHandlers.append(handler); - else - emit scriptError("EventTestClick -> handler in not Callable"); + if (!handler.isCallable()) { + emit scriptError( type + " -> handler in not Callable"); + return; } + + QSet list_agents; + QSet list_os; + QSet list_listeners; + + if (agents.isUndefined() || agents.isNull() || !agents.isArray() || agents.property("length").toInt() == 0) { + emit scriptError(type + " -> agents in undefined"); + return; + } + + for (int i = 0; i < agents.property("length").toInt(); ++i) { + QJSValue val = agents.property(i); + list_agents.insert(val.toString()); + } + + if (!os.isUndefined() && !os.isNull() && os.isArray()) { + for (int i = 0; i < os.property("length").toInt(); ++i) { + QJSValue val = os.property(i); + list_os << val.toString(); + } + } + + if (!listeners.isUndefined() && !listeners.isNull() && listeners.isArray()) { + for (int i = 0; i < listeners.property("length").toInt(); ++i) { + QJSValue val = listeners.property(i); + list_listeners << val.toString(); + } + } + + this->scriptEngine->registerEvent(event, handler, list_agents, list_os, list_listeners, event_id); } + + + +void BridgeEvent::on_filebrowser_disks(const QJSValue &handler, const QJSValue &agents, const QJSValue &os, const QJSValue &listeners, const QString &event_id) { + this->reg("FileBroserDisks", "on_filebrowser_disks", handler, agents, os, listeners, event_id); +} + +void BridgeEvent::on_filebrowser_list(const QJSValue &handler, const QJSValue &agents, const QJSValue &os, const QJSValue &listeners, const QString &event_id) { + this->reg("FileBroserList", "on_filebrowser_list", handler, agents, os, listeners, event_id); +} + +void BridgeEvent::on_filebrowser_upload(const QJSValue &handler, const QJSValue &agents, const QJSValue &os, const QJSValue &listeners, const QString &event_id) { + this->reg("FileBroserUpload", "on_filebrowser_upload", handler, agents, os, listeners, event_id); +} + +void BridgeEvent::on_processbrowser_list(const QJSValue &handler, const QJSValue &agents, const QJSValue &os, const QJSValue &listeners, const QString &event_id) { + this->reg("ProcessBrowserList", "on_processbrowser_list", handler, agents, os, listeners, event_id); +} + +void BridgeEvent::remove(const QString &event_id) { this->scriptEngine->manager()->RemoveEvent(event_id); } diff --git a/AdaptixClient/Source/Client/AxScript/BridgeForm.cpp b/AdaptixClient/Source/Client/AxScript/BridgeForm.cpp index f9779362..2b036799 100644 --- a/AdaptixClient/Source/Client/AxScript/BridgeForm.cpp +++ b/AdaptixClient/Source/Client/AxScript/BridgeForm.cpp @@ -57,11 +57,6 @@ void BridgeForm::connect(QObject* sender, const QString& signalName, const QJSVa emit scriptError("connect -> Signal " + signalName + " not found"); } -void BridgeForm::show_message(const QString &title, const QString &text) -{ - QMessageBox::information(nullptr, title, text); -} - /// Elements QObject* BridgeForm::create_vlayout() diff --git a/AdaptixClient/Source/Client/Requestor.cpp b/AdaptixClient/Source/Client/Requestor.cpp index 4b0f629a..19a20eb5 100644 --- a/AdaptixClient/Source/Client/Requestor.cpp +++ b/AdaptixClient/Source/Client/Requestor.cpp @@ -409,75 +409,6 @@ bool HttpReqDownloadAction(const QString &action, const QString &fileId, AuthPro return false; } -/// BROWSER - -bool HttpReqBrowserDisks(const QString &agentId, AuthProfile profile, QString* message, bool* ok ) -{ - QJsonObject dataJson; - dataJson["agent_id"] = agentId; - QByteArray jsonData = QJsonDocument(dataJson).toJson(); - - QString sUrl = profile.GetURL() + "/browser/disks"; - QJsonObject jsonObject = HttpReq(sUrl, jsonData, profile.GetAccessToken()); - if ( jsonObject.contains("message") && jsonObject.contains("ok") ) { - *message = jsonObject["message"].toString(); - *ok = jsonObject["ok"].toBool(); - return true; - } - return false; -} - -bool HttpReqBrowserProcess(const QString &agentId, AuthProfile profile, QString* message, bool* ok ) -{ - QJsonObject dataJson; - dataJson["agent_id"] = agentId; - QByteArray jsonData = QJsonDocument(dataJson).toJson(); - - QString sUrl = profile.GetURL() + "/browser/process"; - QJsonObject jsonObject = HttpReq(sUrl, jsonData, profile.GetAccessToken()); - if ( jsonObject.contains("message") && jsonObject.contains("ok") ) { - *message = jsonObject["message"].toString(); - *ok = jsonObject["ok"].toBool(); - return true; - } - return false; -} - -bool HttpReqBrowserList(const QString &agentId, const QString &path, AuthProfile profile, QString* message, bool* ok ) -{ - QJsonObject dataJson; - dataJson["agent_id"] = agentId; - dataJson["path"] = path; - QByteArray jsonData = QJsonDocument(dataJson).toJson(); - - QString sUrl = profile.GetURL() + "/browser/files"; - QJsonObject jsonObject = HttpReq(sUrl, jsonData, profile.GetAccessToken()); - if ( jsonObject.contains("message") && jsonObject.contains("ok") ) { - *message = jsonObject["message"].toString(); - *ok = jsonObject["ok"].toBool(); - return true; - } - return false; -} - -bool HttpReqBrowserUpload(const QString &agentId, const QString &path, const QString &content, AuthProfile profile, QString* message, bool* ok ) -{ - QJsonObject dataJson; - dataJson["agent_id"] = agentId; - dataJson["remote_path"] = path; - dataJson["content"] = content; - QByteArray jsonData = QJsonDocument(dataJson).toJson(); - - QString sUrl = profile.GetURL() + "/browser/upload"; - QJsonObject jsonObject = HttpReq(sUrl, jsonData, profile.GetAccessToken()); - if ( jsonObject.contains("message") && jsonObject.contains("ok") ) { - *message = jsonObject["message"].toString(); - *ok = jsonObject["ok"].toBool(); - return true; - } - return false; -} - ///TUNNEL bool HttpReqTunnelStartServer(const QString &tunnelType, const QByteArray &jsonData, AuthProfile profile, QString* message, bool* ok) diff --git a/AdaptixClient/Source/UI/MainUI.cpp b/AdaptixClient/Source/UI/MainUI.cpp index b8b9a883..78a733da 100644 --- a/AdaptixClient/Source/UI/MainUI.cpp +++ b/AdaptixClient/Source/UI/MainUI.cpp @@ -29,7 +29,7 @@ MainUI::MainUI() auto scriptManagerAction = new QAction("Script manager", this); connect(scriptManagerAction, &QAction::triggered, this, &MainUI::onScriptManager); - auto menuExtender = new QMenu("Ax Script", this); + auto menuExtender = new QMenu("AxScript", this); menuExtender->addAction(axConsoleAction); menuExtender->addAction(scriptManagerAction); diff --git a/AdaptixClient/Source/UI/Widgets/AdaptixWidget.cpp b/AdaptixClient/Source/UI/Widgets/AdaptixWidget.cpp index 075efd22..01bc4ecb 100644 --- a/AdaptixClient/Source/UI/Widgets/AdaptixWidget.cpp +++ b/AdaptixClient/Source/UI/Widgets/AdaptixWidget.cpp @@ -33,6 +33,10 @@ AdaptixWidget::AdaptixWidget(AuthProfile* authProfile, QThread* channelThread, W this->ChannelWsWorker = channelWsWorker; ScriptManager = new AxScriptManager(this, this); + connect(this, &AdaptixWidget::eventFileBrowserDisks, ScriptManager, &AxScriptManager::emitFileBrowserDisks); + connect(this, &AdaptixWidget::eventFileBrowserList, ScriptManager, &AxScriptManager::emitFileBrowserList); + connect(this, &AdaptixWidget::eventFileBrowserUpload, ScriptManager, &AxScriptManager::emitFileBrowserUpload); + connect(this, &AdaptixWidget::eventProcessBrowserList, ScriptManager, &AxScriptManager::emitProcessBrowserList); AxConsoleTab = new AxConsoleWidget(ScriptManager, this); LogsTab = new LogsWidget(); @@ -369,7 +373,7 @@ void AdaptixWidget::RegisterAgentConfig(const QString &agentName, const QString Commander* commander = new Commander(); commander->AddRegCommands(commandsGroup); - RegAgentConfig config = {agentName, listener, OS_WINDOWS, commander, {}, true}; + RegAgentConfig config = {agentName, listener, OS_WINDOWS, commander, true}; RegisterAgents.push_back(config); } else { @@ -391,7 +395,7 @@ void AdaptixWidget::RegisterAgentConfig(const QString &agentName, const QString Commander* commander = new Commander(); commander->AddRegCommands(commandsGroup); - RegAgentConfig config = {agentName, listener, OS_LINUX, commander, {}, true}; + RegAgentConfig config = {agentName, listener, OS_LINUX, commander, true}; RegisterAgents.push_back(config); } else { @@ -413,7 +417,7 @@ void AdaptixWidget::RegisterAgentConfig(const QString &agentName, const QString Commander* commander = new Commander(); commander->AddRegCommands(commandsGroup); - RegAgentConfig config = {agentName, listener, OS_MAC, commander, {}, true}; + RegAgentConfig config = {agentName, listener, OS_MAC, commander, true}; RegisterAgents.push_back(config); } else { diff --git a/AdaptixClient/Source/UI/Widgets/BrowserFilesWidget.cpp b/AdaptixClient/Source/UI/Widgets/BrowserFilesWidget.cpp index 1f518589..47ac0b3a 100644 --- a/AdaptixClient/Source/UI/Widgets/BrowserFilesWidget.cpp +++ b/AdaptixClient/Source/UI/Widgets/BrowserFilesWidget.cpp @@ -1,10 +1,9 @@ #include #include +#include #include #include - -#include "Client/AxScript/AxScriptManager.h" -#include "UI/Widgets/AdaptixWidget.h" +#include void BrowserFileData::CreateBrowserFileData(const QString &path, const int os) { @@ -89,15 +88,11 @@ void BrowserFilesWidget::createUI() buttonDisks->setIconSize( QSize( 24,24 )); buttonDisks->setFixedSize(37, 28); buttonDisks->setToolTip("Disks list"); - if (!agent->browsers.FileBrowserDisks) - buttonDisks->setEnabled(false); buttonUpload = new QPushButton(QIcon(":/icons/upload"), "", this); buttonUpload->setIconSize( QSize( 24,24 )); buttonUpload->setFixedSize(37, 28); buttonUpload->setToolTip("Upload File"); - if (!agent->browsers.FileBrowserUpload) - buttonUpload->setEnabled(false); line_2 = new QFrame(this); line_2->setFrameShape(QFrame::VLine); @@ -506,8 +501,8 @@ void BrowserFilesWidget::cdBrowser(const QString &path) if (fileData.Stored) { this->setStoredFileData(path, fileData); } else { - QString status = agent->BrowserList(path); - statusLabel->setText(status); + statusLabel->setText(""); + emit agent->adaptixWidget->eventFileBrowserList(agent->data.Id, path); } } @@ -515,15 +510,15 @@ void BrowserFilesWidget::cdBrowser(const QString &path) void BrowserFilesWidget::onDisks() const { - QString status = agent->BrowserDisks(); - statusLabel->setText(status); + statusLabel->setText(""); + emit agent->adaptixWidget->eventFileBrowserDisks(agent->data.Id); } void BrowserFilesWidget::onList() const { QString path = inputPath->text(); - QString status = agent->BrowserList(path); - statusLabel->setText(status); + statusLabel->setText(""); + emit agent->adaptixWidget->eventFileBrowserList(agent->data.Id, path); } void BrowserFilesWidget::onParent() @@ -560,12 +555,12 @@ void BrowserFilesWidget::onReload() const else path = "./"; - QString status = agent->BrowserList(path); - statusLabel->setText(status); + statusLabel->setText(""); + emit agent->adaptixWidget->eventFileBrowserList(agent->data.Id, path); } else { - QString status = agent->BrowserList(currentPath); - statusLabel->setText(status); + statusLabel->setText(""); + emit agent->adaptixWidget->eventFileBrowserList(agent->data.Id, currentPath); } } @@ -575,26 +570,18 @@ void BrowserFilesWidget::onUpload() const if ( path.isEmpty() ) return; - QString filePath = QFileDialog::getOpenFileName( nullptr, "Select file", QDir::homePath()); + QString remotePath = currentPath; + if (this->agent->data.Os == OS_WINDOWS) + remotePath += "\\"; + else + remotePath += "/"; + + QString filePath = QFileDialog::getOpenFileName(nullptr, "Select file", QDir::homePath()); if ( filePath.isEmpty()) return; - QFile file(filePath); - if (!file.open(QIODevice::ReadOnly)) - return; - - QByteArray fileContent = file.readAll(); - file.close(); - - QString base64Content = fileContent.toBase64(); - QString remotePath = currentPath; - if (this->agent->data.Os == OS_WINDOWS) - remotePath += "\\" + QFileInfo(filePath).fileName(); - else - remotePath += "/" + QFileInfo(filePath).fileName(); - - QString status = agent->BrowserUpload( remotePath, base64Content ); - statusLabel->setText(status); + statusLabel->setText(""); + emit agent->adaptixWidget->eventFileBrowserUpload(agent->data.Id, remotePath, filePath); } void BrowserFilesWidget::handleTableDoubleClicked(const QModelIndex &index) diff --git a/AdaptixClient/Source/UI/Widgets/BrowserProcessWidget.cpp b/AdaptixClient/Source/UI/Widgets/BrowserProcessWidget.cpp index 5ba991cb..f017dc9a 100644 --- a/AdaptixClient/Source/UI/Widgets/BrowserProcessWidget.cpp +++ b/AdaptixClient/Source/UI/Widgets/BrowserProcessWidget.cpp @@ -2,6 +2,8 @@ #include #include +#include "UI/Widgets/AdaptixWidget.h" + BrowserProcessWidget::BrowserProcessWidget(Agent* a) { agent = a; @@ -423,8 +425,8 @@ void BrowserProcessWidget::filterTableWidget(const QString &filterText) const void BrowserProcessWidget::onReload() const { - QString status = agent->BrowserProcess(); - statusLabel->setText(status); + statusLabel->setText(""); + emit agent->adaptixWidget->eventProcessBrowserList(agent->data.Id); } void BrowserProcessWidget::onFilter(const QString &text) const diff --git a/AdaptixClient/Source/UI/Widgets/ConsoleWidget.cpp b/AdaptixClient/Source/UI/Widgets/ConsoleWidget.cpp index 171bfa0b..2f94f6af 100644 --- a/AdaptixClient/Source/UI/Widgets/ConsoleWidget.cpp +++ b/AdaptixClient/Source/UI/Widgets/ConsoleWidget.cpp @@ -250,25 +250,30 @@ void ConsoleWidget::ConsoleOutputPrompt(const qint64 timestamp, const QString &t } } -void ConsoleWidget::ProcessCmdResult(const QString &commandLine, CommanderResult cmdResult) +void ConsoleWidget::ProcessCmdResult(const QString &commandLine, const CommanderResult &cmdResult, const bool UI) { if ( cmdResult.output ) { - QString message = ""; - QString text = ""; - int type = 0; - - if (cmdResult.error) { - type = CONSOLE_OUT_LOCAL_ERROR; - message = cmdResult.message; + if (UI) { + if (cmdResult.error) + MessageError(cmdResult.message); } else { - type = CONSOLE_OUT_LOCAL; - text = cmdResult.message; + QString message = ""; + QString text = ""; + int type = 0; + + if (cmdResult.error) { + type = CONSOLE_OUT_LOCAL_ERROR; + message = cmdResult.message; + } + else { + type = CONSOLE_OUT_LOCAL; + text = cmdResult.message; + } + + this->ConsoleOutputPrompt(0, "", "", commandLine); + this->ConsoleOutputMessage(0, "", type, message, text, true); } - - this->ConsoleOutputPrompt(0, "", "", commandLine); - this->ConsoleOutputMessage(0, "", type, message, text, true); - return; } @@ -287,6 +292,7 @@ void ConsoleWidget::ProcessCmdResult(const QString &commandLine, CommanderResult QJsonObject dataJson; dataJson["name"] = agent->data.Name; dataJson["id"] = agent->data.Id; + dataJson["ui"] = UI; dataJson["cmdline"] = commandLine; dataJson["data"] = commandData; dataJson["ax_hook_id"] = hookId; @@ -370,11 +376,9 @@ void ConsoleWidget::ProcessCmdResult(const QString &commandLine, CommanderResult }); uploaderDialog->exec(); - } } - /// SLOTS void ConsoleWidget::processInput() @@ -399,7 +403,7 @@ void ConsoleWidget::processInput() if (cmdResult.is_pre_hook) return; - this->ProcessCmdResult(commandLine, cmdResult); + this->ProcessCmdResult(commandLine, cmdResult, false); } void ConsoleWidget::toggleSearchPanel() diff --git a/AdaptixClient/Source/UI/Widgets/DownloadsWidget.cpp b/AdaptixClient/Source/UI/Widgets/DownloadsWidget.cpp index 6a08811b..ecebee37 100644 --- a/AdaptixClient/Source/UI/Widgets/DownloadsWidget.cpp +++ b/AdaptixClient/Source/UI/Widgets/DownloadsWidget.cpp @@ -383,60 +383,3 @@ void DownloadsWidget::actionDelete() const } } } - -void DownloadsWidget::actionResume() const -{ - if( tableWidget->item( tableWidget->currentRow(), 8 )->text() != "" ) { - - QString fileId = tableWidget->item(tableWidget->currentRow(), 0)->text(); - QString message = QString(); - bool ok = false; - bool result = HttpReqDownloadAction("resume", fileId, *(adaptixWidget->GetProfile()), &message, &ok); - if (!result) { - MessageError("Response timeout"); - return; - } - - if (!ok) { - MessageError(message); - } - } -} - -void DownloadsWidget::actionPause() const -{ - if( tableWidget->item( tableWidget->currentRow(), 8 )->text() != "" ) { - - QString fileId = tableWidget->item(tableWidget->currentRow(), 0)->text(); - QString message = QString(); - bool ok = false; - bool result = HttpReqDownloadAction("pause", fileId, *(adaptixWidget->GetProfile()), &message, &ok); - if (!result) { - MessageError("Response timeout"); - return; - } - - if (!ok) { - MessageError(message); - } - } -} - -void DownloadsWidget::actionCancel() const -{ - if( tableWidget->item( tableWidget->currentRow(), 8 )->text() != "" ) { - - QString fileId = tableWidget->item(tableWidget->currentRow(), 0)->text(); - QString message = QString(); - bool ok = false; - bool result = HttpReqDownloadAction("cancel", fileId, *(adaptixWidget->GetProfile()), &message, &ok); - if (!result) { - MessageError("Response timeout"); - return; - } - - if (!ok) { - MessageError(message); - } - } -} diff --git a/AdaptixClient/Source/UI/Widgets/TasksWidget.cpp b/AdaptixClient/Source/UI/Widgets/TasksWidget.cpp index 6bb2f107..767c33db 100644 --- a/AdaptixClient/Source/UI/Widgets/TasksWidget.cpp +++ b/AdaptixClient/Source/UI/Widgets/TasksWidget.cpp @@ -47,9 +47,13 @@ void TaskOutputWidget::SetConten(const QString &message, const QString &text) co outputTextEdit->setText( TrimmedEnds(text) ); } -TasksWidget::TasksWidget( QWidget* w ) + + + + +TasksWidget::TasksWidget( AdaptixWidget* w ) { - this->mainWidget = w; + this->adaptixWidget = w; this->createUI(); taskOutputConsole = new TaskOutputWidget(); @@ -209,10 +213,6 @@ void TasksWidget::addTableItem(const Task* newTask) const void TasksWidget::AddTaskItem(Task* newTask) const { - auto adaptixWidget = qobject_cast( mainWidget ); - if (!adaptixWidget) - return; - if ( adaptixWidget->TasksMap.contains(newTask->data.TaskId) ) return; @@ -230,8 +230,7 @@ void TasksWidget::AddTaskItem(Task* newTask) const void TasksWidget::RemoveTaskItem(const QString &taskId) const { - auto adaptixWidget = qobject_cast( mainWidget ); - if (!adaptixWidget || !adaptixWidget->TasksMap.contains((taskId))) + if ( !adaptixWidget->TasksMap.contains((taskId))) return; Task* task = adaptixWidget->TasksMap[taskId]; @@ -265,10 +264,6 @@ void TasksWidget::RemoveTaskItem(const QString &taskId) const void TasksWidget::RemoveAgentTasksItem(const QString &agentId) const { - auto adaptixWidget = qobject_cast( mainWidget ); - if (!adaptixWidget) - return; - for (auto key : adaptixWidget->TasksMap.keys()) { Task* task = adaptixWidget->TasksMap[key]; if (task->data.AgentId == agentId) { @@ -417,10 +412,7 @@ void TasksWidget::onTableItemSelection(const QModelIndex ¤t, const QModelI adaptixWidget->LoadTasksOutput(); } -void TasksWidget::onAgentChange(QString agentId) const -{ - this->SetData(); -} +void TasksWidget::onAgentChange(QString agentId) const { this->SetData(); } void TasksWidget::actionCopyTaskId() const {