
    i                     *   S SK JrJrJr  S SKJr  \" S\5      r\" 5       r\R                  SS/S9S 5       r
\R                  SS/S9S	 5       r\R                  S
S/S9S 5       r\R                  SS/S9S 5       r\R                  SS/S9S 5       rg)    )	Blueprintjsonifyrequest)get_config_loaderapi_vulnerabilityz/listGET)methodsc                       [         R                  5       n [        SU S.5      $ ! [         a#  n[        S[	        U5      S.5      S4s SnA$ SnAff = f)u9   获取所有漏洞列表（从 knowledge_taxonomy.json）successstatusdataerrorr   message  N)config_loaderget_vulnerabilities_for_displayr   	Exceptionstr)vulnerabilities_dataes     D   /Users/yu22x/Desktop/ddd_副本5/ctf/app/routes/api/vulnerability.pylist_vulnerabilitiesr   
   sf    ,LLN(
  	  1v
   	   !$ 
AAAAz/categoriesc                       [         R                  5       n [        SU S.5      $ ! [         a#  n[        S[	        U5      S.5      S4s SnA$ SnAff = f)u   获取所有一级分类r   r   r   r   r   N)r   get_all_categoriesr   r   r   )
categoriesr   s     r   get_categoriesr      se    "557

  	  1v
   	r   z /category/<string:category_name>c                      [         R                  U 5      nU(       d  [        SSU  3S.5      S4$ [        SU US.S.5      $ ! [         a#  n[        S[	        U5      S.5      S4s S	nA$ S	nAff = f)
u<   获取指定一级分类下的所有漏洞（二级分类）r   u   未找到分类: r     r   )categoryvulnerabilitiesr   r   N)r   get_vulnerabilities_by_categoryr   r   r   )category_namer#   r   s      r   r$   r$   +   s    'GGV!.}o>   
 )#2
  	  1v
   	s"   .A A 
A/A*$A/*A/z&/knowledge/<string:vulnerability_name>c                 6    [         R                  U 5      (       d  [        SSU  3S.5      S4$ [         R                  U 5      n[         R	                  U 5      n[        SU UUS.S.5      $ ! [
         a#  n[        S[        U5      S.5      S4s S	nA$ S	nAff = f)
u$   获取指定漏洞的知识点列表r   u   未找到漏洞: r   r!   r   )vulnerabilityr"   knowledge_pointsr   r   N)r   is_valid_vulnerabilityr   get_knowledge_pointsget_category_for_vulnerabilityr   r   )vulnerability_namer(   r"   r   s       r   r*   r*   D   s    334FGG!./A.BC    )==>PQ !??@RS!3$$4
  	  1v
   	s"   ,A+ ;A+ +
B5BBBz	/validatePOSTc                  r    [         R                  " 5       n U R                  S5      nU(       d  [        SSS.5      S4$ [        R                  U5      nSUUS.S.nU(       a  [        R                  U5      US	   S
'   [        U5      $ ! [         a#  n[        S[        U5      S.5      S4s SnA$ SnAff = f)u   验证漏洞名称是否有效namer   u   请提供漏洞名称r   i  r   )r/   is_validr   r   r"   r   N)	r   get_jsongetr   r   r)   r+   r   r   )r   r,   r0   resultr   s        r   validate_vulnerabilityr4   c   s    !!XXf-!!2   
 !778JK  *$
 )6)U)UVh)iF6N:&v 1v
   	s#   <B	 A	B	 	
B6B1+B61B6N)flaskr   r   r   app.services.loadersr   __name__bp_api_vulnerabilityr   router   r   r$   r*   r4        r   <module>r<      s    - - 2 !!4h?  "#GeW5 6  ME7; < >P Q0 DugV W< K&: ;r;   