Ë
    0]jÍ  ã                   óÜ  — d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	  G d„ d«      Z
 G d„ d«      Z G d	„ d
«      Z eej                  ej                  ej                  «      d„ «       Z eej                  ej                  «      d„ «       Z eej                  ej                  «      d„ «       Z eej                  «      d„ «       Z eej                  «      d„ «       Zed„ «       Zdefd„Zy)é    )ÚTagsÚWarningÚregister)Úimport_string)ÚAxesStandaloneBackend)Úsettingsc                   ó$   — e Zd ZdZdZdZdZdZdZy)ÚMessagesa]  You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation.zMYou do not have 'axes.middleware.AxesMiddleware' in your settings.MIDDLEWARE.zmYou do not have 'axes.backends.AxesStandaloneBackend' or a subclass in your settings.AUTHENTICATION_BACKENDS.zVYou have a deprecated setting {deprecated_setting} configured in your project settingsz+{callable_setting} is not a valid callable.z”AXES_LOCKOUT_PARAMETERS does not contain 'ip_address'. This configuration allows attackers to bypass rate limits by rotating User-Agents or Cookies.N©	Ú__name__Ú
__module__Ú__qualname__ÚCACHE_INVALIDÚMIDDLEWARE_INVALIDÚBACKEND_INVALIDÚSETTING_DEPRECATEDÚCALLABLE_INVALIDÚLOCKOUT_PARAMETERS_INVALID© ó    úB/var/www/zogu/zoguvenv/lib/python3.12/site-packages/axes/checks.pyr
   r
      s7   „ ð	lð ð 	Xð ð F€OØqÐØDÐð	iñ r   r
   c                   ó$   — e Zd ZdZdZdZdZdZdZy)ÚHintsNzQAxesModelBackend was renamed to AxesStandaloneBackend in django-axes version 5.0.z,Add 'ip_address' to AXES_LOCKOUT_PARAMETERS.r   r   r   r   r   r      s$   „ Ø€MØÐØi€OØÐØÐØ!OÑr   r   c                   ó$   — e Zd ZdZdZdZdZdZdZy)ÚCodesz	axes.W001z	axes.W002z	axes.W003z	axes.W004z	axes.W005z	axes.W006Nr   r   r   r   r   r   (   s$   „ Ø€MØ$ÐØ!€OØ$ÐØ"ÐØ!,Ñr   r   c                 óZ  — t        t        dd«      }t        t        dd«      }t        j                  j                  |i «      }|j                  dd«      }g d¢}g }|dk(  rK||v rG|j	                  t        t        j                  t        j                  t        j                  ¬«      «       |S )	NÚAXES_HANDLERÚ Ú
AXES_CACHEÚdefaultÚBACKEND)z+django.core.cache.backends.dummy.DummyCachez-django.core.cache.backends.locmem.LocMemCachez3django.core.cache.backends.filebased.FileBasedCachez$axes.handlers.cache.AxesCacheHandler©ÚmsgÚhintÚid)
Úgetattrr   ÚCACHESÚgetÚappendr   r
   r   r   r   )Úapp_configsÚkwargsÚaxes_handlerÚaxes_cache_keyÚaxes_cache_configÚaxes_cache_backendÚaxes_cache_backend_incompatibleÚwarningss           r   Úaxes_cache_checkr2   1   sŸ   € äœ8 ^°RÓ8€LäœX |°YÓ?€NÜ Ÿ™×+Ñ+¨N¸BÓ?ÐØ*×.Ñ.¨y¸"Ó=Ðò'Ð#ð €HàÐ=Ò=ØÐ!@Ñ@Ø�O‰OÜÜ ×.Ñ.Ü×,Ñ,Ü×*Ñ*ôôð €Or   c                 ó¼   — g }dt         j                  vrG|j                  t        t        j
                  t        j
                  t        j
                  ¬«      «       |S )Nzaxes.middleware.AxesMiddlewarer"   )r   Ú
MIDDLEWAREr)   r   r
   r   r   r   )r*   r+   r1   s      r   Úaxes_middleware_checkr5   N   sK   € à€Hà'¬x×/BÑ/BÑBØ�‰ÜÜ×/Ñ/Ü×-Ñ-Ü×+Ñ+ôô	
ð €Or   c                 ót  — g }d}t         j                  D ]"  }	 t        |«      }t        |t        «      sŒ d} n |sG|j                  t        t        j                  t        j                  t        j                  ¬«      «       |S # t        $ r}t        d«      |‚d }~wt        $ r}t	        d«      |‚d }~ww xY w)NFzDCan not find module path defined in settings.AUTHENTICATION_BACKENDSzHCan not import backend class defined in settings.AUTHENTICATION_BACKENDSTr"   )r   ÚAUTHENTICATION_BACKENDSr   ÚModuleNotFoundErrorÚImportErrorÚ
issubclassr   r)   r   r
   r   r   r   )r*   r+   r1   ÚfoundÚnameÚbackendÚes          r   Úaxes_backend_checkr?   ^   sÃ   € à€Hà€EÜ×0Ñ0ò ˆð		Ü# DÓ)ˆGô �gÔ4Õ5ØˆEÙðñ  Ø�‰ÜÜ×,Ñ,Ü×*Ñ*Ü×(Ñ(ôô	
ð €Oøô- #ò 	Ü%ØVóàðûô ò 	ÜØZóàðûð	ús#   ™BÂ	B7ÂBÂB7Â&B2Â2B7c                 óò   — g }g d¢}|D ]\  }	 t        t        |«       |j                  t        t        j
                  j                  |¬«      d t        j
                  ¬«      «       Œ^ |S # t        $ r Y Œlw xY w)N)
ÚAXES_DISABLE_SUCCESS_ACCESS_LOGÚAXES_LOGGERÚAXES_PROXY_ORDERÚAXES_PROXY_COUNTÚAXES_PROXY_TRUSTED_IPSÚAXES_META_PRECEDENCE_ORDERÚAXES_ONLY_USER_FAILURESÚAXES_LOCK_OUT_BY_USER_OR_IPÚ(AXES_LOCK_OUT_BY_COMBINATION_USER_AND_IPÚAXES_USE_USER_AGENT)Údeprecated_settingr"   )	r&   r   r)   r   r
   r   Úformatr   ÚAttributeError)r*   r+   r1   Údeprecated_settingsrK   s        r   Úaxes_deprecation_checkrO      sŠ   € à€HòÐð$ 2ò Ðð	Ü”HÐ0Ô1Ø�O‰OÜÜ ×3Ñ3×:Ñ:Ø+=ð ;ó ð Ü×/Ñ/ôõðð €Oøô ò 	Ùð	ús   �AA*Á*	A6Á5A6c                 óL  — g }t        t        dd «      }t        |t        t        f«      rzd}|D ]*  }|dk(  rd} n!t        |t        t        f«      sŒ#d|v sŒ(d} n |sG|j                  t        t        j                  t        j                  t        j                  ¬«      «       |S )NÚAXES_LOCKOUT_PARAMETERSFÚ
ip_addressTr"   )r&   r   Ú
isinstanceÚlistÚtupler)   r   r
   r   r   r   )r*   r+   r1   Úlockout_paramsÚhas_ipÚparams         r   Úaxes_lockout_params_checkrY   §   s    € à€HäœXÐ'@À$ÓG€Nä�.¤4¬ -Ô0ØˆØ#ò 	ˆEØ˜Ò$Ø�ÙÜ˜%¤$¬ Õ/°LÀEÒ4IØ�Ùð	ñ Ø�O‰OÜÜ ×;Ñ;Ü×9Ñ9Ü×7Ñ7ôôð €Or   c                 ó  — g }g d¢}|D ]v  }t        t        |d «      }t        |«      rŒ |j                  t	        t
        j                  j                  |¬«      t        j                  t        j                  ¬«      «       Œx |S )N)ÚAXES_CLIENT_IP_CALLABLEÚAXES_CLIENT_STR_CALLABLEÚAXES_LOCKOUT_CALLABLEÚAXES_USERNAME_CALLABLEÚAXES_WHITELIST_CALLABLEÚAXES_COOLOFF_TIMErQ   )Úcallable_settingr"   )
r&   r   Úis_valid_callabler)   r   r
   r   rL   r   r   )r*   r+   r1   Úcallable_settingsra   Úvalues         r   Úaxes_conf_checkre   Ã   sƒ   € à€HòÐð .ò ÐÜœÐ"2°DÓ9ˆÜ  Õ'Ø�O‰OÜÜ ×1Ñ1×8Ñ8Ø)9ð 9ó ô ×/Ñ/Ü×-Ñ-ôõðð €Or   Úreturnc                 óz   — | €yt        | «      ryt        | t        «      r	 t        | «       yy# t        $ r Y yw xY w)NTF)ÚcallablerS   Ústrr   r9   )rd   s    r   rb   rb   á   sD   € Ø€}Øä�„Øä�%œÔð	Ü˜%Ô ñ øô ò 	Ùð	ús   ¡. ®	:¹:N)Údjango.core.checksr   r   r   Údjango.utils.module_loadingr   Úaxes.backendsr   Ú	axes.confr   r
   r   r   ÚsecurityÚcachesÚcompatibilityr2   r5   r?   rO   rY   re   Úboolrb   r   r   r   ú<module>rr      s  ð÷ñ õ
 6å /Ý ÷ñ ÷&Pñ P÷-ñ -ñ 
ˆ$�-‰-˜Ÿ™ d×&8Ñ&8Ó9ñó :ðñ8 
ˆ$�-‰-˜×+Ñ+Ó,ñó -ðñ 
ˆ$�-‰-˜×+Ñ+Ó,ñó -ðñ@ 
ˆ$×
Ñ
Óñ$ó ð$ñN 
ˆ$�-‰-Óñó ðð6 
ñó 
ðð: ô r   