|
34 | 34 |
|
35 | 35 | from poshc2.server.Core import decrypt
|
36 | 36 | from poshc2.server.Config import PoshInstallDirectory, DownloadsDirectory, PayloadsDirectory, ReportsDirectory
|
37 |
| -from poshc2.server.database.Helpers import delete_object, get_alive_implants, get_c2_messages, get_implant, get_new_tasks_for_implant, get_tasks_for_implant, insert_object, select_first, select_all, select_subset |
| 37 | +from poshc2.server.database.Helpers import delete_object, get_alive_implants, get_c2_messages, get_implant, get_new_tasks_for_implant, get_tasks_for_implant, insert_object, select_first, select_all, select_subset, get_task |
38 | 38 | from poshc2.server.database.Model import URL, Implant, Task, NewTask, AutoRun, C2Server, Cred, OpsecEntry, C2Message, PowerStatus, HostedFile, MitreTTP
|
39 | 39 |
|
40 | 40 | app = Flask(__name__, template_folder=f"{PoshInstallDirectory}/resources/html-templates/", static_folder=f"{PoshInstallDirectory}/resources/html-templates/include/")
|
@@ -149,6 +149,16 @@ def get(self, number_of_rows=None, implant_id=None):
|
149 | 149 | else:
|
150 | 150 | return data_to_json(Task)
|
151 | 151 |
|
| 152 | +@api.route('/task/<task_id>') |
| 153 | +class Tasks(Resource): |
| 154 | + @api.doc("task") |
| 155 | + @auth.login_required |
| 156 | + @api.marshal_list_with(api.model('Task', model_to_api_fields(Task))) |
| 157 | + def get(self, task_id=None): |
| 158 | + """ |
| 159 | + Returns a task by id |
| 160 | + """ |
| 161 | + return get_task(task_id) |
152 | 162 |
|
153 | 163 | newtask_model = api.model('NewTask', {
|
154 | 164 | 'implant_id': fields.String(required=True, description='The unique implant_id for which the task is to be executed'),
|
|
0 commit comments