
    Czi_                     >    d dl Z d dlZd dlZd Zd Zd Zd ZddZdS )	    Nc                 4    d}t          j        ||           duS )z%Valide le format d'une adresse email.z0^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$N)rematch)emailpatterns     3/var/www/html/MCyber-Diagnostic/utils/validators.pyvalidate_email_formatr	   	   s    AG8GU##4//    c                     | s| S |                      dd                               dd                               dd          S )uA   Échappe les caractères spéciaux pour les requêtes LIKE/ILIKE.\z\\%z\%_z\_)replace)search_terms    r   escape_like_patternr      sF     tV,,44S%@@HHeTTTr
   c                     |                      d           |                     d          }|                      d           d|dd         v S )u   
    Vérifie que le contenu du fichier est réellement un PDF (Magic Bytes).
    Les PDF commencent par '%PDF-' (hex: 25 50 44 46 2D)
    Certains PDF peuvent avoir des espaces blancs avant le header.
    r   i   s   %PDF-Nseekreadfile_streamheaders     r   validate_pdf_contentr      sR     Qd##FQvete}$$r
   c                     |                      d           |                     d          }|                      d           |dd         dk    p|dd         dk    S )u<   
    Vérifie les magic bytes des images (PNG et JPEG).
    r      N   s   PNG   s   r   r   s     r   validate_image_contentr   "   sk     Qb!!FQ 	rr
j  	&rr
o%r
       c                 x   | dk     rd} t           j        t           j        z   dz   	 d                    fdt	          |           D                       }t          d |D                       rMt          d |D                       r4t          d |D                       rt          d	 |D                       r|S )
uR   Génère un mot de passe aléatoire sécurisé avec tous les types de caractères.   !@#$%^&*T c              3   @   K   | ]}t          j                  V  d S N)secretschoice).0r   alphabets     r   	<genexpr>z+generate_random_password.<locals>.<genexpr>8   s-      KK7>(33KKKKKKr
   c              3   >   K   | ]}|                                 V  d S r%   )isupperr(   cs     r   r*   z+generate_random_password.<locals>.<genexpr>:   *      ..		......r
   c              3   >   K   | ]}|                                 V  d S r%   )islowerr-   s     r   r*   z+generate_random_password.<locals>.<genexpr>;   r/   r
   c              3   >   K   | ]}|                                 V  d S r%   )isdigitr-   s     r   r*   z+generate_random_password.<locals>.<genexpr><   r/   r
   c              3      K   | ]}|d v V  	dS )r"   N r-   s     r   r*   z+generate_random_password.<locals>.<genexpr>=   s&      22AZ222222r
   )stringascii_lettersdigitsjoinrangeany)lengthpasswordr)   s     @r   generate_random_passwordr>   0   s    zz#fm3j@H77KKKKU6]]KKKKK..X..... 	..X.....	..X.....	 2222222	 Or
   )r   )r   r&   r6   r	   r   r   r   r>   r5   r
   r   <module>r?      s    
			  0 0 0U U U	% 	% 	%       r
   