U
    2ÃÙjô  ã                   @   sˆ   d Z ddlZddlZddlmZ edƒZedƒZedƒZe 	d¡Z
e 	dej¡Zd	d
„ Zdd„ Zdd„ Zddd„Zddd„Zdd„ ZdS )zFRead-only, bounded, redacted engineering tools for Hermes. Python 3.8.é    N)ÚPathz/var/www/html/NFL_STz)/var/lib/hermes-nexus/knowledge/LMP_V5.md)znfl.pyz
panel.htmlzhermes_api.pyzhermes_brain.pyzhermes_brain_v2.pyzhermes_memory.pyzhermes_tools.pyzhermes_football.pyzhermes_lmp_v5_runtime.pyzhermes_lmp_coordinator.pyzhermes_lmp_actions.pyzhermes_epg_tool.pyzhermes_epg_search.pyzhermes_web.pyzhermes_lmp_epg_cache_v2.pyzhermes_lmp_v5_state.pyz™(?i)(password|passwd|secret|token|api.?key|authorization|credential|cookie|bearer|basic\s|refresh|session.?id|private.?key|client.?data|auth\b|\bp=|\bu=)zhttps?://\S+c                 C   s8   t  | ¡rdS t | ¡r,d| ks(d| kr,dS | d d… S )Nu-   [REDACTADO: posible secreto o autenticaciÃ³n]ú?ú@z([REDACTADO: URL potencialmente sensible]i@  )Ú	SENSITIVEÚsearchÚURL_CREDENTIAL)Ús© r	   úhermes_engineer_reader.pyÚ
_safe_line   s
    
  r   c                 C   sf   t | tƒr| tkrtdƒ‚t|  }| ¡ s@| ¡ r@| ¡ jdkrHtdƒ‚| 	¡ j
t 	¡ krbtdƒ‚|S )NzArchivo no autorizadoé€„ zArchivo no disponiblezRuta fuera del proyecto)Ú
isinstanceÚstrÚALLOWÚ
ValueErrorÚROOTÚ
is_symlinkÚis_fileÚstatÚst_sizeZresolveÚparent)ÚnameÚpr	   r	   r
   Ú_path   s       r   c                   C   s   ddd„ t tƒD ƒiS )NZarchivosc                 S   s(   g | ] }t |  ¡ rt |  ¡ s|‘qS r	   )r   r   r   )Ú.0Únr	   r	   r
   Ú
<listcomp>   s       z#listar_archivos.<locals>.<listcomp>)Úsortedr   r	   r	   r	   r
   Úlistar_archivos   s    r   é   é-   c              	      s�   t | ƒ}tdttˆ ƒdƒƒ‰ tdtt|ƒdƒƒ}|jddd��.}ddlm} t||ˆ d ˆ d | ƒƒ}W 5 Q R X | ˆ ‡ fd	d
„t|ƒD ƒdœS )Nr   iPÃ  é<   úutf-8Úreplace©ÚencodingÚerrorsr   )Úislicec                    s(   g | ] \}}ˆ | t | d ¡ƒdœ‘qS )Ú
)ZnumeroÚtexto)r   Úrstrip)r   ÚiÚline©Úinicior	   r
   r   %   s     z leer_archivo.<locals>.<listcomp>)Úarchivor.   Zlineas)	r   ÚmaxÚminÚintÚopenÚ	itertoolsr'   ÚlistÚ	enumerate)r/   r.   Zcantidadr   Úfr'   Úlinesr	   r-   r
   Úleer_archivo   s     &r9   Ú c           
      C   s0  t | tƒr$dt| ƒ  kr"dks,n tdƒ‚t d| ¡r@tdƒ‚|rJ|gnttƒ}g }|D ]Ê}|rjt|ƒnt	| }| 
¡ rZ| ¡ sZ| ¡ jdkr’qZ|jddd	��~}t|d
ƒD ]l\}}|  ¡ | ¡ kr¬t| ¡ ƒ}	|	 d¡rÜq¬| |||	dœ¡ t|ƒdkr¬|ddœ  W  5 Q R £   S q¬W 5 Q R X qZ|ddœS )Né   éF   u   TÃ©rmino invÃ¡lidozB(?i)(password|token|secret|api.?key|auth|cookie|credential|bearer)u&   BÃºsqueda de credenciales no permitidar   r"   r#   r$   r   z
[REDACTADO)r/   Zlinear)   é   )Z
resultadosZlimite)r   r   Úlenr   Úrer   r   r   r   r   r   r   r   r   r3   r6   Úcasefoldr   ÚstripÚ
startswithÚappend)
Zterminor/   ÚnamesÚhitsr   r   r7   Znumr,   Zsafer	   r	   r
   Úbuscar_codigo'   s(    $  
  ,rF   c                   C   s4   t  ¡ st  ¡ sddiS dt jdd�d d… ddœS )	NÚerrorzDocumento LMP no disponiblez	LMP_V5.mdr"   )r%   i°6  u8   Documento orientativo: contrastar con el cÃ³digo actual.)Z	documentoZ	contenidoZaviso)ÚDOCr   r   Z	read_textr	   r	   r	   r
   Úleer_lmp9   s
     ÿrI   )r   r    )r:   )Ú__doc__Zastr?   Úpathlibr   r   rH   Ú	frozensetr   Úcompiler   ÚIr   r   r   r   r9   rF   rI   r	   r	   r	   r
   Ú<module>   s   


