
    \i*                        S r SSKJrJrJrJrJrJrJr  SSK	J
r
  SSKJr  SSKJr  SSKr\" S\5      rS r\R'                  S	S
/S9\R'                  SS
/S9\
S 5       5       5       r\R'                  SS
/S9\
S 5       5       rg)u7   
生成结果视图

提供题目结果页面的渲染
    )	Blueprintrender_templateredirecturl_forrequestflashg)login_required)get_challenge_and_output_dir)PathNgenerate_resultc                    SSSSSS.nU (       d  U$ SSK nU R                  S5      nU Ha  nUR                  S	5      (       d  M  US
S R                  5       nUR	                  SSU5      nUR	                  SSU5      nU(       d  M]  XQS'     O   [        U5       GHX  u  pdSU;   d  M  SU;   d  M  SU;   d  M  US
-   [        U5      :  Ga(  X6S
-      nUR                  S5       Vs/ s H  oR                  5       PM     n	nU	 Vs/ s H  o(       d  M  UPM     n	n[        U	5      S:  a  U	S   (       a!  U	S   R                  S5      (       d  U	S   US'   U	S   (       a!  U	S   R                  S5      (       d  U	S   US'   [        U	5      S:  a+  U	S   (       a!  U	S   R                  S5      (       d  U	S   US'   [        U	5      S:  a+  U	S   (       a!  U	S   R                  S5      (       d  U	S   US'     O   US   S:X  a  Sn
SnU H  nUR                  5       R                  S5      (       a  SnM+  U(       a&  UR                  5       R                  S5      (       a  SnU(       d  Ma  UR                  5       R                  S5      (       d  M  U
S-  n
M     U
S
::  a  SUS'   OU
S::  a  SUS'   OSUS'   U H9  nSUR                  5       ;   d  S U;   d  M  S!U;   a  S"US#'   M,  S$U;   d  M4  S%US#'   M;     U$ s  snf s  snf )&u!   从 writeup 中提取基本信息   未命名题目 u   中等u	   1-2小时)namedescription
difficultyflag_formatestimated_timer   N
z#    z\s*-\s*[Ww]riteup\s*$u   \s*的?解题思路\s*$r   u	   题目名u   题目描述|   :   r      r   r   Fu   ## 知识点Tz##)	z1.z2.z3.z4.z5.z6.z7.z8.z9.u   简单u   困难flagFLAGu   动态zDASCTF{dynamic_flag}r   u   静态zDASCTF{static_flag})resplit
startswithstripsub	enumeratelenlower)writeupinfor   lineslinetitlei	data_lineppartsknowledge_countin_knowledge_sections               K   /Users/yu22x/Desktop/ddd_副本138/ctf/app/routes/generator/result/views.py_extract_info_from_writeupr3      s    "%D MM$E ??4  HNN$EFF3R?EFF5r5AEu$V  U#$>T#9cTk1us5z!!a%L	,5OOC,@A,@q,@A$)/EqQE/u:?Qxa(;(;C(@(@',QxVQxa(;(;C(@(@.3Ah]+5zA~%(58;N;Ns;S;S16q-.5zA~%(58;N;Ns;S;S-21X\*! $& LX%$Dzz|&&~66'+$#

(?(?(E(E',$##

(?(?@v(w(w1$  a!)D!!)D!)D TZZ\!Vt^4&<]#T!&;]#  KU B/s   $K3
K8K8/GET)methodsz/resultc                  N	    SSK n U R                  [        5      nUR                  S 5        [        R
                  R                  S5      nUR                  SU 35        [        U5      u  p4nUc   [        SS5        [        [        S5      5      $ Sn SSKJn  UR                  R                  U5      nU(       a-  UR                  UR                   UR"                  =(       d    S	S
.nSn
[)        U5      S-  nUR+                  5       (       a%   [-        USSS9 nUR/                  5       n
SSS5        SnSSKn[)        U5      nUR                   nUR3                  SU5      nU(       a  UR5                  S5      nOUnSnUR                  S5      nU(       ah   SSKJnJn  U   UR=                  5        H@  u  nnUR                  S5      U:X  d  M  UR                  SS5      nU(       d  M8  US:w  d  M@    O   SSS5        US:X  a  [A        U
5      nUR                  SS5      nUR                  S5      nU(       d  UR                  S5      (       a  [C        UR                  S5      [D        5      (       a  UR                  S5      nOY[G        UR                  S5      S5      (       a  UR                  S5      RI                  5       O[E        UR                  S5      5      nU(       d  SnSnUR                  S5      nU(       aB   SSKJ%n  UR                  R                  U5      nU(       a  UR                  URL                  S.nUUUR                  S!S5      UR                  S"S5      S#.nUR                  S$5      n[O        S%UR                  S5      UUUUU/ 0 US&9
$ ! [$         a  n	['        SU	 35         Sn	A	GNSn	A	ff = f! , (       d  f       GN= f! [$         a  n	['        SU	 35         Sn	A	GNSn	A	ff = f! , (       d  f       GN= f! [>         a     GNf = f! [$         a  n	['        S U	 35         Sn	A	NSn	A	ff = f! [$         aX  n	S'[E        U	5       3n['        U5        [P        RR                  " 5         [        US5        [        [        S5      5      s Sn	A	$ Sn	A	ff = f)(u   显示生成结果r   Nchallenge_id"   接收到的 challenge_id 参数:    未找到题目数据errorzgenerate_tasks.tasks)CategoryConfigfolder)idr   iconu   获取方向配置失败: r   z
writeup.mdrutf-8encodingu   读取writeup失败: r   z^\d{8}_\d{6}_(.+)$r   u	   未设置r>   )tasks_status_tasks_lockr   	timestamp
created_at	isoformatu   未知时间user_id)User)r>   usernameu   获取出题人信息失败: r   r   )r   r   r   r   
deployablez pages/generate/result/index.html)	r8   challenge_infogeneration_timeauthor_infocategory_idcategory_configcore_functions
code_filesrL   u#   显示结果页面时发生错误: )*logging	getLogger__name__r(   r   argsgetdebugr   r   r   r   app.models.database.modelsr<   queryr>   r   r?   	Exceptionprintr   existsopenreadr   matchgroupapp.routes.generator.tasksrD   rE   itemsImportErrorr3   
isinstancestrhasattrrH   rJ   rK   r   	traceback	print_exc) rT   loggerr8   challenge_data
output_dirrP   rQ   r<   categoryer'   writeup_filefchallenge_namer   output_pathfolder_name
name_matchr   challenge_id_intrD   rE   task_idtaskrM   rN   rO   rI   rJ   authorrL   	error_msgs                                    r2   indexr{   \   sa   
|9""8,() ||''79,HI 3O|2\/K!)73G$:;<< 
	4A%++//<H"++$MM$MM5X# J',6  3,g>!ffhG ? +:&!&&XX3[A
'--a0N(N !
)--d3	P )5););)=88N37GG)-,)LJ)zjK.G %	 *> ! $7@N'++L+FJ ),,[9>#5#5l#C#C.,,\:C@@"0"4"4\"BRYZhZlZlmyZz  }H  SI  SI."4"4\"B"L"L"N  OR  Sa  Se  Se  fr  Ss  Ot,O  $$Y/	;;0$ii$*OO#K #$)--mR@,001A2F	
 $''5
.'++D1)+##+!
 	
a  	4.qc233	4 ?> 3-aS1223( ![  <  ;5aS9::;6  99#a&B	ii! 67889s&  BQ Q AN (%Q O O*O 2A$Q 
P !*O:O:*O:2O:6P >DQ AP AQ 
N?&N:4Q :N??Q 
OO Q O 
O7O2,Q 2O77Q :
P	P Q 	P 
PQ PQ 
P?'P:5Q :P??Q 
R$ARR$R$z	/view-logc            
      H    [        S5        [        R                  R                  S5      n U (       d   [	        SS5        [        [        S5      5      $ SSKnUR                  [        5      nUR                  SU  35        [        U 5      u  p4nUc   [	        S	S5        [        [        S5      5      $ UR                  S
5      nU(       d   [	        SS5        [        [        S5      5      $ [        SU 35        [        U5      nUR                  5       (       d#  [	        SU 3S5        [        [        S5      5      $  [        USSS9 nUR                  5       n	SSS5        UR                  SS5      nUR%                  5       R&                  nUS:  a  U S3nOUS:  a
  US-  S S3nO	US-  S S3nW	R)                  S5      S-   n[+        SU UU	UUUS9$ ! , (       d  f       N= f! [          aD  n
[        SU
 35        [	        S[#        U
5       3S5        [        [        S5      5      s Sn
A
$ Sn
A
ff = f! [          ab  n
[        S[#        U
5       35        [,        R.                  " 5         [	        S[#        U
5       3S5        [        [        S5      5      s Sn
A
$ Sn
A
ff = f) u   查看题目生成日志u!   
=== 查看题目生成日志 ===r8   u   缺少题目ID参数r;   zauth.profiler   Nr9   r:   log_fileu   该题目没有生成日志warningu   日志文件路径: u   日志文件不存在: r@   rA   rB   u   读取日志文件失败: r   r   i   z Bi   z.2fz KBz MBr   r   zpages/generate/log/view.html)r8   rr   log_contentr}   	file_size
line_countu   查看日志时出错: )r]   r   rW   rX   r   r   r   rT   rU   rV   rY   r   r   r^   r_   r`   r\   rg   statst_sizecountr   ri   rj   )r8   rT   rk   rl   rm   rP   r}   log_pathrq   r   ro   rr   r   file_size_strr   s                  r2   view_logr      s   E123||''7('2GN344""8,9,HI 3O|2\/K!)73GN344 "%%j1/;GN344$XJ/0 >  +H:6@GN344	5hg6!ffh 7 (++F4EFMMO++	 t(k,M$(4/4C8M(K8=SAM !&&t,q0
 =*6,:)4&.'4(24 	4/ 76 	5.qc23.s1vh7AGN344	5:  1'Ax01'Ax0':/00	1s   AH5 AH5 17H5 )AH5 ;G$ GG$ A3H5 
G!G$  H5 !G$ $
H2.9H-'H2(H5 -H22H5 5
J!?AJJ!J!)__doc__flaskr   r   r   r   r   r   r	   app.services.auth.decoratorsr
   app.routes.commonr   pathlibr   ri   rV   bp_result_viewsr3   router{   r        r2   <module>r      s   
 S R R 7 :  -x8JZ sUG,y5'2~9  3 -~9B {UG4G1  5G1r   