Files
Adaptix-Framework-AdaptixC2/AdaptixClient/Source/Agent/Task.cpp
T
2025-05-26 10:53:18 +03:00

102 lines
4.6 KiB
C++

#include <Agent/Task.h>
#include <UI/Widgets/ConsoleWidget.h>
Task::Task(QJsonObject jsonObjTaskData)
{
this->data.TaskId = jsonObjTaskData["a_task_id"].toString();
this->data.TaskType = jsonObjTaskData["a_task_type"].toDouble();
this->data.AgentId = jsonObjTaskData["a_id"].toString();
this->data.StartTime = jsonObjTaskData["a_start_time"].toDouble();
this->data.CommandLine = jsonObjTaskData["a_cmdline"].toString();
this->data.Client = jsonObjTaskData["a_client"].toString();
this->data.User = jsonObjTaskData["a_user"].toString();
this->data.Computer = jsonObjTaskData["a_computer"].toString();
this->data.FinishTime = jsonObjTaskData["a_finish_time"].toDouble();
this->data.MessageType = jsonObjTaskData["a_msg_type"].toDouble();
this->data.Message = jsonObjTaskData["a_message"].toString();
this->data.Output = jsonObjTaskData["a_text"].toString();
this->data.Completed = jsonObjTaskData["a_completed"].toBool();
QString taskType = "";
if ( this->data.TaskType == 1 )
taskType = "TASK";
else if ( this->data.TaskType == 3 )
taskType = "JOB";
else if ( this->data.TaskType == 4 )
taskType = "TUNNEL";
else
taskType = "unknown";
QString startTime = UnixTimestampGlobalToStringLocal(this->data.StartTime);
QString finishTime = UnixTimestampGlobalToStringLocal(this->data.FinishTime);
this->item_TaskId = new TaskTableWidgetItem( this->data.TaskId, this );
this->item_TaskType = new TaskTableWidgetItem( taskType, this );
this->item_AgentId = new TaskTableWidgetItem( this->data.AgentId, this );
this->item_Client = new TaskTableWidgetItem( this->data.Client, this );
this->item_User = new TaskTableWidgetItem( this->data.User, this );
this->item_Computer = new TaskTableWidgetItem( this->data.Computer, this );
this->item_StartTime = new TaskTableWidgetItem( startTime, this );
this->item_FinishTime = new TaskTableWidgetItem( finishTime, this );
this->item_CommandLine = new TaskTableWidgetItem( this->data.CommandLine, this );
this->item_Result = new TaskTableWidgetItem( this->data.Status, this );
this->item_Message = new TaskTableWidgetItem( TrimmedEnds(this->data.Message), this );
item_CommandLine->setTextAlignment( Qt::AlignLeft | Qt::AlignVCenter );
item_Message->setTextAlignment( Qt::AlignLeft | Qt::AlignVCenter );
this->data.Status = "Hosted";
if (this->data.Completed) {
if ( this->data.MessageType == CONSOLE_OUT_ERROR || this->data.MessageType == CONSOLE_OUT_LOCAL_ERROR ) {
this->data.Status = "Error";
this->item_Result->setForeground(QColor(COLOR_ChiliPepper));
}
else if ( this->data.MessageType == CONSOLE_OUT_INFO || this->data.MessageType == CONSOLE_OUT_LOCAL_INFO ) {
this->data.Status = "Canceled";
item_Result->setForeground(QColor(COLOR_BabyBlue) );
}
else {
this->data.Status = "Success";
item_Result->setForeground(QColor(COLOR_NeonGreen) );
}
}
else if (taskType == "TUNNEL") {
this->data.Status = "Running";
}
this->item_Result->setText(this->data.Status);
}
Task::~Task() = default;
void Task::Update(QJsonObject jsonObjTaskData)
{
this->data.Completed = jsonObjTaskData["a_completed"].toBool();
if (this->data.Completed) {
this->data.FinishTime = jsonObjTaskData["a_finish_time"].toDouble();
QString finishTime = UnixTimestampGlobalToStringLocal(this->data.FinishTime);
this->item_FinishTime->setText(finishTime);
this->data.MessageType = jsonObjTaskData["a_msg_type"].toDouble();
if ( this->data.MessageType == CONSOLE_OUT_ERROR || this->data.MessageType == CONSOLE_OUT_LOCAL_ERROR ) {
this->data.Status = "Error";
this->item_Result->setForeground(QColor(COLOR_ChiliPepper));
}
else if ( this->data.MessageType == CONSOLE_OUT_INFO || this->data.MessageType == CONSOLE_OUT_LOCAL_INFO ) {
this->data.Status = "Canceled";
item_Result->setForeground(QColor(COLOR_BabyBlue) );
}
else {
this->data.Status = "Success";
item_Result->setForeground(QColor(COLOR_NeonGreen) );
}
this->item_Result->setText(this->data.Status);
}
if ( this->data.Message.isEmpty() ) {
this->data.Message = jsonObjTaskData["a_message"].toString();
this->item_Message->setText(TrimmedEnds(this->data.Message));
}
this->data.Output += jsonObjTaskData["a_text"].toString();
}