ó
    ÂÃj[  ã                   ó�  • S r SSKJrJrJr  SSKJrJr  SSKJr  SSK	J
r
  SSKrSSKrSSKrSSKJr  SSKJr  S	rS
rSrSrSrSrSrSrSrSrSrSrSrSrS\4S jr S\\!   S\!4S jr"S\\!   S\!4S jr#S\$4S jr%S\!4S jr&S \4S! jr'S\!S\!S\$4S" jr(S=S\!S\!S\S#   4S$ jjr)S\!S\!SS4S% jr*S&\!S'\!S \S\$4S( jr+S)\!S*\S\\!   4S+ jr, S=S&\!S'\!S)\!S,\-S \S*\\   4S- jjr.S\\!   4S. jr/S\\!   4S/ jr0S \SS4S0 jr1S1\\   S\!4S2 jr2S3 r3S>S4\-4S5 jjr4S \S6\\-   S7\!SS4S8 jr5S9\-S\$4S: jr6S=S'\\!   S\S#   4S; jjr7S\84S< jr9g)?u…  BejelentkezÃ©s-vÃ©delem (brute-force ellen): sikertelen kÃ­sÃ©rletek szÃ¡mlÃ¡lÃ¡sa az ADATBÃ�ZISBAN,
tiltÃ¡sok, a rendszeradmin Ã©rtesÃ­tÃ©se Ã©s a tiltÃ¡s feloldÃ¡sa.  (2026-10-04, D szelet)

RÃ©szletes leÃ­rÃ¡s MiklÃ³snak Ã©s a jÃ¶vÅ‘beli fejlesztÅ‘knek: docs/LOGIN_VEDELEM.md

MI VÃ�LTOZOTT A RÃ‰GIHEZ KÃ‰PEST?
    RÃ©gen (security.py) a prÃ³bÃ¡lkozÃ¡sokat a folyamat memÃ³riÃ¡ja szÃ¡molta: 3 gunicorn workernÃ©l
    workerenkÃ©nt kÃ¼lÃ¶n (a valÃ³di hatÃ¡r Ã­gy akÃ¡r 3x annyi volt), ÃºjraindÃ­tÃ¡skor nullÃ¡zÃ³dott, Ã©s
    senki nem tudott rÃ³la, ha valakit kizÃ¡rtak. Most:
      - a szÃ¡mlÃ¡lÃ¡s a `login_kiserletek` tÃ¡blÃ¡ban van (minden worker ugyanazt lÃ¡tja),
      - a hatÃ¡r elÃ©rÃ©sekor TILTÃ�S keletkezik (`login_tiltasok`), nem csak "pÃ¡r percig nem enged",
      - valÃ³s fiÃ³k tiltÃ¡sÃ¡rÃ³l a rendszeradmin e-mailt kap,
      - ismÃ©tlÅ‘dÅ‘ tiltÃ¡snÃ¡l a tiltÃ¡s VÃ‰GLEGES lesz, amÃ­g a rendszeradmin (csak Å‘!) fel nem oldja.

SZABÃ�LYOK
    HatÃ¡r (5 perces ablakban):  8 sikertelen kÃ­sÃ©rlet egy fiÃ³kra (e-mailre)  VAGY  20 egy IP-rÅ‘l.
    TiltÃ¡s hossza:              15 perc; ha ugyanarra az azonosÃ­tÃ³ra 24 Ã³rÃ¡n belÃ¼l ismÃ©t tiltÃ¡s
                                kell, 60 perc; a HARMADIK 24 Ã³rÃ¡n belÃ¼li tiltÃ¡s VÃ‰GLEGES - de csak
                                VALÃ“S, NEM rendszeradmin fiÃ³k esetÃ©n.
    A rendszeradmin fiÃ³kjÃ¡t SOHA nem lehet vÃ©glegesen kizÃ¡rni (kÃ¼lÃ¶nben egy tÃ¡madÃ³ Ã¶rÃ¶kre kizÃ¡rhatnÃ¡
    az egyetlen embert, aki a tiltÃ¡sokat oldhatja) - Å‘t csak idÅ‘zÃ­tve tiltjuk.
    IP-tiltÃ¡s sosem vÃ©gleges (egy kÃ¶zÃ¶s cÃ©ges NAT-ot nem akarunk Ã¶rÃ¶kre kizÃ¡rni).

"VALÃ“S FIÃ“K" (a felhasznÃ¡lÃ³ kifejezett kÃ©rÃ©se: "csak valÃ³s felhasznÃ¡lÃ³k esetÃ©re")
    - fiÃ³k (e-mail) tiltÃ¡snÃ¡l: az e-mail egy LÃ‰TEZÅ� felhasznÃ¡lÃ³Ã© (kis/nagybetÅ± nÃ©lkÃ¼l);
    - IP-tiltÃ¡snÃ¡l: az adott IP-rÅ‘l az ablakban legalÃ¡bb egy LÃ‰TEZÅ� fiÃ³kot prÃ³bÃ¡ltak.
    Csak valÃ³s tiltÃ¡srÃ³l megy Ã©rtesÃ­tÅ‘ levÃ©l Ã©s csak valÃ³s fiÃ³k kaphat vÃ©gleges tiltÃ¡st.
    Ismeretlen cÃ­mekre (botok, elÃ­rÃ¡s) idÅ‘zÃ­tett tiltÃ¡s van, Ã©rtesÃ­tÃ©s nÃ©lkÃ¼l.

AZ ENUMERÃ�CIÃ“ ELLENI VÃ‰DELEM
    A /login vÃ¡lasza minden esetben ugyanaz (lÃ¡sd routers/auth.py): a tiltott Ã©s a nem tiltott
    vÃ¡lasza ugyanaz a szÃ¶veg, Ã©s a "nem lÃ©tezÅ‘ fiÃ³k" is ugyanÃºgy viselkedik. A felhasznÃ¡lÃ³
    szempontjÃ¡bÃ³l nem derÃ¼l ki, hogy a cÃ­m lÃ©tezik-e. (Egyetlen finom kÃ¼lÃ¶nbsÃ©g: a nem lÃ©tezÅ‘
    cÃ­mek tiltÃ¡sa 15 perc utÃ¡n mindig feloldÃ³dik, a valÃ³sÃ© vÃ©glegessÃ© vÃ¡lhat - ezt hosszan, sok
    tiltÃ¡s utÃ¡n lehetne megfigyelni; ezt tudatosan vÃ¡llaljuk, lÃ¡sd docs/LOGIN_VEDELEM.md.)

TRANZAKCIÃ“: a fÃ¼ggvÃ©nyek a hÃ­vÃ³ `db` session-jÃ©t hasznÃ¡ljÃ¡k Ã©s maguk commitolnak (a /login
kÃ©rÃ©s vÃ©gÃ©n nincs mÃ¡s mÃ³dosÃ­tÃ¡s). Hiba esetÃ©n a bejelentkezÃ©st NEM Ã¡llÃ­tjÃ¡k meg: a szÃ¡mlÃ¡lÃ¡s
vagy az Ã©rtesÃ­tÃ©s elromlÃ¡sa nem akadÃ¡lyozhatja a bejelentkezÃ©st (a hiba a konzolra kerÃ¼l).
é    )ÚdatetimeÚ	timedeltaÚtimezone)ÚListÚOptional)Úfunc)ÚIntegrityErrorN)ÚSessionLocal)ÚHELYI_TZi,  é   é   é   é<   é   é   é
   é¾   é   éZ   é   u    HibÃ¡s e-mail cÃ­m vagy jelszÃ³!uÉ   TÃºl sok sikertelen bejelentkezÃ©si kÃ­sÃ©rlet tÃ¶rtÃ©nt errÅ‘l a cÃ­mrÅ‘l/fiÃ³krÃ³l. KÃ©rjÃ¼k, vÃ¡rj egy kicsit, mielÅ‘tt Ãºjra prÃ³bÃ¡lkozol! Ha ez tÃ¶bbszÃ¶r elÅ‘fordul, fordulj a rendszergazdÃ¡hoz.Úreturnc                  ód   • [         R                  " [        R                  5      R	                  SS9$ )uD   Tz nÃ©lkÃ¼li UTC pillanat (a DB-ben Ã­gy tÃ¡roljuk az idÅ‘pontokat).N©Útzinfo)r   Únowr   ÚutcÚreplace© ó    Ú!/var/www/website/login_vedelem.pyÚ	_utc_mostr!   M   s#   € ä�<Š<œŸ™Ó%×-Ñ-°TÐ-Ð:Ð:r   Úemailc                 ó^   • U =(       d    SR                  5       R                  5       S [         $ )NÚ )ÚstripÚlowerÚKEZELT_HOSSZ)r"   s    r    Ú_email_kulcsr(   R   s%   € Ø�K�R×ÑÓ ×&Ñ&Ó(¨¬,Ð7Ð7r   Úipc                 ó:   • U =(       d    SR                  5       S S $ )NÚ
ismeretlené@   )r%   )r)   s    r    Ú	_ip_kulcsr-   V   s   € Ø×�,×%Ñ%Ó'¨¨Ð,Ð,r   c                 ób   • U S L=(       a%    U R                   S:H  =(       a    U R                  S:H  $ )NÚAdminr   )ÚroleÚ
company_id)Úusers    r    Ú_rendszeradmin_er3   Z   s)   € à�tÐ×M §	¡	¨WÑ 4×M¸¿¹ÈAÑ9MÐMr   Úemail_kisbetusc                 óè   • U(       d  g U R                  [        R                  5      R                  [        R
                  " [        R                  R                  5      U:H  5      R                  5       $ ©N)ÚqueryÚmodelsÚUserÚfilterr   r&   r"   Úfirst)Údbr4   s     r    Ú_felhasznalo_email_szerintr=   _   sG   € ÞØØ�8‰8”F—K‘KÓ ×'Ñ'¬¯
ª
´6·;±;×3DÑ3DÓ(EÈÑ(WÓX×^Ñ^Ó`Ð`r   Úmostc                 óè   • [         R                  nU R                  U5      R                  UR                  R                  S 5      UR                  R                  S 5      UR                  U:„  -  5      $ r6   )r8   ÚLoginTiltasr7   r:   Úfeloldva_atÚis_Úlejar_at)r<   r>   ÚTs      r    Ú_aktiv_tiltasok_lekerdezesrE   h   sX   € Ü×Ñ€AØ�8‰8�A‹;×ÑØ	�‰×Ñ˜$ÓØ	
�‰�‰˜Ó	 !§*¡*¨tÑ"3Ñ4óð r   c                 ój  • [         R                  n[        U5      [        U5      pT[	        U [        5       5      R                  UR                  S:H  UR                  U:H  -  UR                  S:H  UR                  U:H  -  -  5      nU R                  UR                  5       5      R                  5       SL $ )uX   Igaz, ha az IP-re VAGY az e-mailre aktÃ­v tiltÃ¡s van (nem feloldott, Ã©s nem jÃ¡rt le).r)   r"   T)r8   r@   r-   r(   rE   r!   r:   ÚtipusÚ	azonositor7   ÚexistsÚscalar)r<   r)   r"   rD   Úip_kÚemail_kÚqs          r    Útiltva_erN   p   s‘   € ä×Ñ€AÜ˜b“M¤<°Ó#6ˆ'Ü" 2¤y£{Ó3×:Ñ:Ø
�'‰'�T‰/˜aŸk™k¨TÑ1Ñ	2¸¿¹À7Ñ8JÈqÏ{É{Ð^eÑOeÑ7fÑgó	€Að �8‰8�A—H‘H“JÓ×&Ñ&Ó(¨DÐ0Ð0r   zmodels.LoginTiltasc                 óV  •  U R                  5         [        5       n[        U5      [        U5      peU R	                  [
        R                  " XVUS95        U R                  5         U[        [        S9-
  n[
        R                  nU R                  [        R                  " UR                  5      5      R                  UR                  U:H  UR                   U:¬  5      R#                  5       =(       d    Sn	U R                  [        R                  " UR                  5      5      R                  UR$                  U:H  UR                   U:¬  5      R#                  5       =(       d    Sn
SnU(       a+  U
[&        :¼  a!  [)        U SXd5      (       d  [+        U SXeX£U5      nU	[,        :¼  a+  [)        U SXT5      (       d  [+        U SXUU	SXGS9nU=(       d    UnU R/                  5         U$ ! [0         a>  nU R                  5         [3        S[5        U5      R6                   S	U 35         SnAgSnAff = f)
u¬   Egy sikertelen kÃ­sÃ©rlet rÃ¶gzÃ­tÃ©se; ha ezzel elÃ©rtÃ¼k a hatÃ¡rt, tiltÃ¡st hoz lÃ©tre.
VisszatÃ©rÃ©s: az Ãºjonnan lÃ©trehozott tiltÃ¡s (vagy None). SOSEM dob kivÃ©telt.)r)   r"   Úidopont©Úsecondsr   Nr"   r)   )Úablak_kezdetuH   â�Œ Login-vÃ©delem: a sikertelen kÃ­sÃ©rlet rÃ¶gzÃ­tÃ©se nem sikerÃ¼lt: ú: )Úrollbackr!   r-   r(   Úaddr8   ÚLoginKiserletÚflushr   ÚABLAK_MASODPERCr7   r   ÚcountÚidr:   r)   rP   rJ   r"   ÚMAX_KISERLET_EMAILÚ_van_aktiv_tiltasÚ_tiltas_letrehozÚMAX_KISERLET_IPÚcommitÚ	ExceptionÚprintÚtypeÚ__name__)r<   r)   r"   r2   r>   rK   rL   rS   ÚKÚip_dbÚemail_dbÚujÚ	ip_tiltasÚes                 r    Úsikertelen_rogziteserk   z   s°  € ðð 	�‰ŒÜ‹{ˆÜ! "›¤|°EÓ':ˆgØ
�‰Œv×#Ò# tÀDÑIÔJØ
�‰Œ
àœi´Ñ@Ñ@ˆÜ× Ñ ˆØ—‘œŸš A§D¡DÓ)Ó*×1Ñ1°!·$±$¸$±,ÀÇ	Á	È\Ñ@YÓZ×aÑaÓc×hÐghˆØ—8‘8œDŸJšJ q§t¡tÓ,Ó-×4Ñ4°Q·W±WÀÑ5GÈÏÉÐVbÑIbÓc×jÑjÓl×qÐpqˆàˆÞ�xÔ#5Ó5Ô>OÐPRÐT[Ð]d×>kÑ>kÜ! " g¨w¸hÈdÓSˆBØ”OÓ#Ô,=¸bÀ$È×,SÑ,SÜ(¨¨T°4¸uÀdÈDÑlˆIØ—�yˆBØ
�	‰	ŒØˆ	øÜó Ø
�‰ŒÜÐXÔY]Ð^_ÓY`×YiÑYiÐXjÐjlÐmnÐloÐpÔqÜûðús   ‚GG  Ç 
H(Ç*4H#È#H(c                 óz  •  U R                  [        R                  5      R                  [        R                  R                  [        U5      :H  5      R                  SS9  U R                  5         g! [         a>  nU R                  5         [        S[        U5      R                   SU 35         SnAgSnAff = f)u�  Sikeres bejelentkezÃ©s utÃ¡n az adott FIÃ“K sikertelen kÃ­sÃ©rleteinek tÃ¶rlÃ©se.

SzÃ¡ndÃ©kos vÃ¡ltozÃ¡s a rÃ©gihez kÃ©pest: az IP mÃ¡s fiÃ³kokra vonatkozÃ³ kÃ­sÃ©rleteit NEM tÃ¶rÃ¶ljÃ¼k
(rÃ©gen egy sikeres bejelentkezÃ©s az egÃ©sz IP szÃ¡mlÃ¡lÃ³jÃ¡t nullÃ¡zta - egy tÃ¡madÃ³ a sajÃ¡t, Ã©rvÃ©nyes
fiÃ³kjÃ¡val idÅ‘nkÃ©nt "kinullÃ¡zhatta" volna a sajÃ¡t IP-je szÃ¡mlÃ¡lÃ³jÃ¡t). SOSEM dob kivÃ©telt.F©Úsynchronize_sessionu<   â�Œ Login-vÃ©delem: a kÃ­sÃ©rletek tÃ¶rlÃ©se nem sikerÃ¼lt: rT   N)r7   r8   rW   r:   r"   r(   Údeleter`   ra   rU   rb   rc   rd   )r<   r)   r"   rj   s       r    Úsikeres_torleserp   œ   sž   € ðfØ
�‰”×%Ñ%Ó&×-Ñ-¬f×.BÑ.B×.HÑ.HÌLÐY^ÓL_Ñ._Ó`×gÑgð  }BÐgñ  	CØ
�	‰	�øÜó fØ
�‰ŒÜÐLÌTÐRSËW×M]ÑM]ÐL^Ð^`ÐabÐ`cÐd×eÑeûðfús   ‚A/A2 Á2
B:Á<4B5Â5B:rG   rH   c                 óê   • [         R                  n[        X5      R                  UR                  U:H  UR
                  U:H  5      nU R                  UR                  5       5      R                  5       SL $ )NT)	r8   r@   rE   r:   rG   rH   r7   rI   rJ   )r<   rG   rH   r>   rD   rM   s         r    r]   r]   ª   sZ   € Ü×Ñ€AÜ" 2Ó,×3Ñ3°A·G±G¸uÑ4DÀaÇkÁkÐU^ÑF^Ó_€AØ�8‰8�A—H‘H“JÓ×&Ñ&Ó(¨DÐ0Ð0r   rK   rS   c                 óÐ  • [         R                  nU R                  UR                  5      R	                  UR
                  U:H  UR                  U:¬  5      R                  5       R                  S5      R                  5        Vs/ s H  oDS   (       d  M  US   PM     nnU(       d  / $ U R                  [        R                  " [         R                  R                  5      5      R	                  [        R                  " [         R                  R                  5      R                  U5      5      R                  5       n[        U Vs1 s H  oDS   iM	     sn5      SS $ s  snf s  snf )uh   Az IP-rÅ‘l az ablakban prÃ³bÃ¡lt e-mail cÃ­mek kÃ¶zÃ¼l a LÃ‰TEZÅ� felhasznÃ¡lÃ³k cÃ­mei (legfeljebb 10).é2   r   Nr   )r8   rW   r7   r"   r:   r)   rP   ÚdistinctÚlimitÚallr   r&   r9   Úin_Úsorted)r<   rK   rS   re   ÚrÚcimekÚletezoks          r    Ú_valos_fiokok_az_ip_rolr|   ³   s  € ä×Ñ€AØŸ8™8 A§G¡GÓ,×3Ñ3°A·D±D¸D±LÀ!Ç)Á)È|ÑB[Ó\×eÑeÓg×mÑmÐnpÓq×uÑuÔwó  AÒw�aÐ}~Õ{‹TˆQˆqŒTÑw€Eð  AÞØˆ	Ø�h‰h”t—z’z¤&§+¡+×"3Ñ"3Ó4Ó5×<Ñ<¼T¿ZºZÌÏÉ×HYÑHYÓ=Z×=^Ñ=^Ð_dÓ=eÓf×jÑjÓl€GÜ¡Ó)¢˜A�Q”4¡Ñ)Ó*¨3¨BÐ/Ð/ùò	 Aùò *s   ÂEÂ	EÅE#Úprobalkozasokc                 óî  • [         R                  n/ n	Sn
S nUS:X  a  U=(       d    [        X5      nUS Ln
O.[        XU=(       d    U[	        [
        S9-
  5      n	[        U	5      n
U[	        [        S9-
  nU R                  [        R                  " UR                  5      5      R                  UR                  U:H  UR                  U:H  UR                  R!                  S 5      5      R#                  5       nU(       a  [        XÍ5      OUnU R                  [        R$                  " UR&                  5      5      R                  UR                  U:H  UR                  U:H  UR(                  U:¬  5      R#                  5       =(       d    SnUS:H  =(       a,    U
=(       a#    [+        U5      (       + =(       a    US-   [,        :¬  nUS:X  a  [.        O[0        nU(       a  S OU[	        US9-   nU SU 3nU R                  U5      R                  UR2                  U:H  UR                  R!                  S 5      UR4                  R!                  S 5      UR4                  U:*  -  -  5      R7                  S	S 0SS
9  U" XUUUXCU(       a  UR&                  OS U(       a  UR8                  OS U
U	(       a  SR;                  U	5      OS US9n U R=                  5          U R?                  U5        S S S 5        U
(       a‰   U R=                  5          U R?                  [         RB                  " UR8                  SSUS:X  a  SOS SU SU(       a  SOU S3 SU S3S95        [E        U UX¶5        U RG                  5         S S S 5        U$ SUl(        U$ ! , (       d  f       N§= f! [@         a     g f = f! , (       d  f       U$ = f! [H         a6  n[K        S[M        U5      RN                   SU 35        SUl(         S nAU$ S nAff = f)NFr"   rQ   ©Úhoursr   r   )ÚminutesÚ:Úaktiv_kulcsrm   ú, )rG   rH   Úletrehozva_atrC   Úveglegesr}   Úip_cimÚuser_idr1   ÚvalosÚerintettrƒ   u   BejelentkezÃ©si tiltÃ¡sÚ-õ   FiÃ³kÚIPrT   z; u)   VÃ‰GLEGES (csak a rendszeradmin oldhatja)z percu    sikertelen kÃ­sÃ©rlet)r1   Ú
field_nameÚ	old_valueÚ	new_valueuW   â�Œ Login-vÃ©delem: a tiltÃ¡s naplÃ³zÃ¡sa/Ã©rtesÃ­tÃ©se nem sikerÃ¼lt (a tiltÃ¡s Ã©l): ÚhibaÚnincs_valos))r8   r@   r=   r|   r   rY   ÚboolÚISMETLES_ABLAK_ORAr7   r   ÚmaxrA   r:   rG   rH   Úfelolto_user_idÚisnotrJ   rZ   r[   r…   r3   ÚVEGLEGES_ENNYI_TILTAS_UTANÚELSO_TILTAS_PERCÚISMETELT_TILTAS_PERCrƒ   rC   Úupdater1   ÚjoinÚbegin_nestedrV   r	   ÚAuditLogÚ
_ertesitesrX   ra   rb   rc   rd   Ú	ertesites)r<   rG   rH   rK   r}   r2   r>   rS   rD   rŠ   r‰   ÚfelhasznaloÚablakÚutolso_feloldasÚkezdetÚkorabbir†   ÚpercÚlejarÚkulcsÚsorrj   s                         r    r^   r^   ½   s   € ä×Ñ€AØ€HØ€EØ€Kà�ÓØ×GÔ8¸ÓGˆØ 4Ð'‰ä*¨2°\×5pÀdÌYÔ_nÑMoÑFoÓqˆÜ�X“ˆð
 ”9Ô#5Ñ6Ñ6€EØ—h‘hœtŸxšx¨¯©Ó6Ó7×>Ñ>Ø	�‰�5Ñ˜!Ÿ+™+¨Ñ2°A×4EÑ4E×4KÑ4KÈDÓ4QóSßSYÑSYÓS[ð æ,;ŒS�Ô(À€FØ�h‰h”t—z’z !§$¡$Ó'Ó(×/Ñ/Ø	�‰�5Ñ˜!Ÿ+™+¨Ñ2°A·O±OÀvÑ4MóOßOUÉvËx÷]Ø[\ð ð 	�Ñ÷ 	8˜U÷ 	8Ô+;¸KÓ+HÔ'H÷ 	8Ø�q‰[Ô7Ñ7ð ð  '¨!›|ÕÔ1E€DÞ‰D $¬¸4Ñ)@Ñ"@€Eð ˆg�Q�y�kÐ"€EØ‡H�HˆQƒK×ÑØ	�‰˜ÑØ	�‰×Ñ˜DÓ! Q§Z¡Z×%5Ñ%5°dÓ%;¸q¿z¹zÈTÑ?QÑ%RÑSó÷ �fˆm˜TÐ"¸€fÑ>á
Ø¸ÀuÐW_Ø#ÎK¸+¿.º.Ð]aÞ-8�;×)Ò)¸dÈ%Þ(0�—‘˜8Ô$°dÈñ	€CðØ�_‰_ÕØ�F‰F�3ŒK÷ ö ð	#Ø—‘Õ"à—‘”v—’Ø"Ÿ~™~Ø8Ø!Ø-2°gÓ-=¡'À4Ð!HÈÈ9È+ÐUWÞQYÑ"MÐbfÐagÐglÐ_mÐ!nÐnpØ"/ Ð0Fð Hñ	ô ô ˜2˜s KÔ6Ø—‘”
÷ #ð" €Jð &ˆŒØ€J÷7 Õûäó ñ ðú÷ #Ô"ð" €Jûô ó 	#ÜÐkÔlpÐqrÓls×l|Ñl|Ðk}Ð}ð  ABð  @Cð  Dô  EØ"ˆC�MˆMð €Jûð	#úsg   Ê>N ËNË N Ë0N4 Ì A.N"Í.N4 Î
NÎN ÎN Î
NÎNÎ"
N1Î,N4 Î1N4 Î4
O4Î>+O/Ï/O4c           	      ó8  • U R                  [        R                  R                  5      R	                  [        R                  R
                  S:H  [        R                  R                  S:H  [        R                  R                  R                  S5      [        R                  R                  R                  S5      [        R                  R                  R                  S 5      5      R                  5       nU Vs/ s H  o"S   (       d  M  US   PM     sn$ s  snf )Nr/   r   TFr   )r7   r8   r9   r"   r:   r0   r1   ÚaktivrB   Ú	aktivalvar—   rv   )r<   Úsorokry   s      r    Ú_rendszeradmin_cimekr®   	  s¿   € Ø�H‰H”V—[‘[×&Ñ&Ó'×.Ñ.Ü�‰×Ñ˜GÑ#¤V§[¡[×%;Ñ%;¸qÑ%@Ü�‰×Ñ×Ñ˜dÓ#¤V§[¡[×%:Ñ%:×%@Ñ%@ÀÓ%GÜ�‰×Ñ×Ñ Ó%ó'÷ (+¡s£uð 
ñ  Ó(š%�Q Q¥4‹DˆAˆaŒD™%Ñ(Ð(ùÒ(s   Ã:DÄ	Dc                 ó   • [        U 5      $ )u|   Az aktÃ­v rendszeradminisztrÃ¡torok e-mail cÃ­mei (mÃ¡s modulok Ã©rtesÃ­tÃ©seihez, pl. a szimultÃ¡n belÃ©pÃ©s jelzÃ©sÃ©hez).)r®   )r<   s    r    Úrendszeradmin_cimekr°     s   € ä Ó#Ð#r   c                 ór  ^• SSK mU4S jn[        U 5      nU(       d  SUl        g[        R                  nU R                  [        R                  " UR                  5      5      R                  UR                  S:H  UR                  U[        SS9-
  :¬  5      R                  5       =(       d    Sn[        R                  " U 5      nUR                  R!                  S5      S	-   n	U["        :¼  a«  UR$                  (       dš  S
Ul        [&        R(                  " [*        5      R-                  5       n
[.        R0                  " U SU
R3                  5        3SSU
5      (       a:  S["         SU" U	5       S3n[.        R4                  " USUS[.        R6                  U S9  gUR8                  S:X  až  SU" UR:                  5       S3nUbu  USU" UR<                  5       3-  nUR>                  (       a*  U RA                  [        RB                  UR>                  5      OSnUb  USU" URD                  5       3-  nUS-  nSUR:                   3nOSU" UR:                  5       S3nSnUR$                  (       a  SnOSU" [G        URH                  5      5       S3nSnURJ                  (       a  SU" URJ                  5       S 3nS!U S"U" URL                  5       S#U" URN                  5       S$U S U S%U" U	5       S&3n[.        R4                  " X^US[.        R6                  U S9nU(       a  SUl        X1l
        gSUl        g)'uÿ  Ã‰rtesÃ­tÅ‘ levÃ©l a rendszeradminoknak (sÃ¼rgÅ‘s prioritÃ¡ssal) - csak valÃ³s tiltÃ¡srÃ³l hÃ­vjuk.

Ã�rvÃ­z-vÃ©delem: Ã³rÃ¡nkÃ©nt legfeljebb ERTESITES_MAX_ORANKENT egyedi levÃ©l; felette naponta EGY
Ã¶sszefoglalÃ³ ("sok tiltÃ¡s tÃ¶rtÃ©nt") - Ã­gy egy tÃ¡madÃ¡s nem Ã¶ntheti el a postafiÃ³kot (Ã©s nem
hasznÃ¡lja el a levÃ©l-korlÃ¡tot sem). A VÃ‰GLEGES tiltÃ¡srÃ³l a korlÃ¡t ellenÃ©re is megy levÃ©l: azt a
rendszeradminnak tudnia KELL (Ã©s szÃ¡muk eleve kicsi: fiÃ³konkÃ©nt legalÃ¡bb 3 elÅ‘zmÃ©ny kell hozzÃ¡).r   Nc                 óF   >• TR                  U c  SSS9$ [        U 5      SS9$ )Nr$   T)Úquote)ÚescapeÚstr)ÚxÚhtmls    €r    Ú<lambda>Ú_ertesites.<locals>.<lambda>  s#   ø€ �4—;‘; Q¡Y˜rÀ$�;ÑG´C¸³FÀ$�;ÑGr   Únincs_cimzettÚelkuldver   r   Ú/z/rendszeradmin/kitiltasokÚkorlatzbann:aradat:u   <p>Ma tÃ¶bb mint u~    bejelentkezÃ©si tiltÃ¡s tÃ¶rtÃ©nt Ã³rÃ¡nkÃ©nt, ezÃ©rt a tovÃ¡bbi tiltÃ¡sokrÃ³l nem kÃ¼ldÃ¼nk kÃ¼lÃ¶n levelet.</p><p><a href="u.   ">A tiltÃ¡sok listÃ¡ja Ã©s feloldÃ¡suk</a></p>u%   Sok bejelentkezÃ©si tiltÃ¡s tÃ¶rtÃ©ntÚrendszer)Ú	kategoriaÚ	prioritasr<   r"   za(z) <b>u
   </b> fiÃ³kz (r„   Ú)u   BejelentkezÃ©si tiltÃ¡s: u   </b> IP-cÃ­mu    BejelentkezÃ©si tiltÃ¡s: IP-cÃ­mum   <b>VÃ‰GLEGES</b> a tiltÃ¡s: addig tart, amÃ­g a rendszeradminisztrÃ¡tor fel nem oldja (csak Te oldhatod fel).u
   A tiltÃ¡s u&   -ig tart, utÃ¡na magÃ¡tÃ³l megszÅ±nik.r$   u!   <p>Ã‰rintett (lÃ©tezÅ‘) fiÃ³kok: z</p>z<p>Kitiltottuk z, mert uK    sikertelen bejelentkezÃ©si kÃ­sÃ©rlet tÃ¶rtÃ©nt 5 percen belÃ¼l (IP-cÃ­m: z	).</p><p>uA   <p>Ha a felhasznÃ¡lÃ³ jogosult, a tiltÃ¡st feloldhatod: <a href="u¹   ">TiltÃ¡sok kezelÃ©se</a>.</p><p style="color:#666;font-size:12px">Ha nem a felhasznÃ¡lÃ³ prÃ³bÃ¡lkozott, ne oldd fel: a tiltÃ¡s vÃ©di a fiÃ³kot a jelszÃ³feltÃ¶rÃ©si kÃ­sÃ©rlettÅ‘l.</p>)(r·   r®   r    r8   r@   r7   r   rZ   r[   r:   Úertesitve_atr   rJ   Úemail_beallitasokÚbetoltÚalkalmazas_url_vagy_alapÚrstripÚERTESITES_MAX_ORANKENTr†   r   r   r   ÚdateÚ	email_sorÚkikuldheto_e_es_rogzitÚ	isoformatÚsorba_allitÚPRIORITAS_SURGOSrG   rH   Úusernamer1   ÚgetÚCompanyÚnevÚhelyi_ido_szovegrC   rŠ   r}   r‡   )r<   r©   r¡   r>   Ú_erz   rD   Ú
elmult_oraÚbeallÚlinkÚmaÚtorzsÚkiÚcegÚtargyÚmennyirŠ   Údb_szamr·   s                     @r    rŸ   rŸ     s  ø€ ó Ü	G€Bä  Ó$€EÞØ'ˆŒØä×Ñ€AØ—‘œ$Ÿ*š* Q§T¡TÓ*Ó+×2Ñ2Ø	�‰�zÑ! 1§>¡>°T¼IÈAÑ<NÑ5NÑ#NóPßPVÑPVÓPX÷^Ø\]ð ä×$Ò$ RÓ(€EØ×)Ñ)×0Ñ0°Ó5Ð8SÑS€DàÔ+Ó+°C·L·LØ ˆŒÜ�\Š\œ(Ó#×(Ñ(Ó*ˆÜ×+Ò+¨B°,¸r¿|¹|»~Ð>NÐ0OÐQUÐWXÐZ\×]Ñ]Ø(Ô)?Ð(@ð A%á%'¨£X JÐ.]ð_ˆEô ×!Ò! %Ð)PÐRWÐcmÜ,5×,FÑ,FÈ2òOàà
‡y�y�GÓØ™˜3Ÿ=™=Ó)Ð*¨*Ð5ˆØÑ"Ø�B‘r˜+×.Ñ.Ó/Ð0Ð1Ñ1ˆBØDO×DZ×DZ�"—&‘&œŸ™¨×)?Ñ)?Ô@Ð`dˆCØ‰Ø˜™2˜cŸg™g›;˜-Ð(Ñ(�Ø�#‰IˆBØ+¨C¯M©M¨?Ð;‰à™˜3Ÿ=™=Ó)Ð*¨,Ð7ˆØ2ˆØ
‡|‡|ð,‰ð ™bÔ!1°#·,±,Ó!?Ó@ÐAÐAgÐhˆØ€HØ
‡|‡|Ø6±r¸#¿,¹,Ó7GÐ6HÈÐMˆà
˜"˜˜W¡R¨×(9Ñ(9Ó%:Ð$;ð <%Ù%'¨¯
©
£^Ð$4ð 5ØˆX�T˜(˜Ø
LÉRÐPTËXÈJð WMð	Nð 
ô ×#Ò# E°%À:Ü.7×.HÑ.HÈRñQ€GæØ"ˆŒØÕà'ˆ�r   Údtc                 óˆ   • U c  gU R                  [        R                  S9R                  [        5      R                  S5      $ )uC   Tz nÃ©lkÃ¼li UTC idÅ‘pont helyi (budapesti) idÅ‘kÃ©nt, szÃ¶vegesen.r‹   r   z%Y-%m-%d %H:%M)r   r   r   Ú
astimezoner   Ústrftime)rÞ   s    r    rÒ   rÒ   [  s6   € à	�zØØ�:‰:œXŸ\™\ˆ:Ð*×5Ñ5´hÓ?×HÑHÐIYÓZÐZr   c                 ó´   • [         R                  n[        U [        5       5      R	                  UR
                  R                  5       5      R                  5       $ )u@   Az aktÃ­v tiltÃ¡sok (valÃ³s Ã©s ismeretlen is), legÃºjabb elÃ¶l.)r8   r@   rE   r!   Úorder_byr…   Údescrv   )r<   rD   s     r    Úaktiv_tiltasokrå   e  s=   € ä×Ñ€AÜ% b¬)«+Ó6×?Ñ?ÀÇÁ×@TÑ@TÓ@VÓW×[Ñ[Ó]Ð]r   ru   c           	      ó>  • [         R                  nU R                  U5      R                  UR                  R                  S5      5      R                  UR                  R                  5       5      R                  U5      R                  5       nU R                  [        R                  " UR                  5      5      R                  UR                  R                  S5      UR                  [        5       [        SS9-
  :¬  5      R!                  5       =(       d    SnX44$ )u¦   A legutÃ³bbi tiltÃ¡sok tÃ¶rtÃ©nete - csak a VALÃ“S fiÃ³kokat Ã©rintÅ‘k. VisszatÃ©rÃ©s: (lista, az elmÃºlt
24 Ã³rÃ¡ban keletkezett ismeretlen cÃ­mes tiltÃ¡sok szÃ¡ma).TFr   r   r   )r8   r@   r7   r:   r‰   rB   rã   r…   rä   ru   rv   r   rZ   r[   r!   r   rJ   )r<   ru   rD   Úlistar+   s        r    Úlegutobbi_tiltasokrè   k  sÍ   € ô 	×Ñ€AØ�H‰H�Q‹K×Ñ˜qŸw™wŸ{™{¨4Ó0Ó1×:Ñ:¸1¿?¹?×;OÑ;OÓ;QÓR×XÑXÐY^Ó_×cÑcÓe€EØ—‘œ$Ÿ*š* Q§T¡TÓ*Ó+×2Ñ2Ø	�‰�‰�EÓ˜AŸO™O¬y«{¼YÈRÑ=PÑ/PÑPóRßRXÑRXÓRZ÷`Ø^_ð àÐÐr   Ú
felolto_idÚfelolto_szovegc                 ón  • X!l         X1l        SUl        [        R                  nUR
                  S:X  aE  U R                  U5      R                  UR                  UR                  :H  5      R                  SS9  ODU R                  U5      R                  UR                  UR                  :H  5      R                  SS9  U R                  [        R                  " UR                  b  UR                  OSUSUR
                  S:X  a  SOS S	UR                   UR                  (       a  S
OS 3SU 3S95        g)uY   A tiltÃ¡s tÃ©nyleges feloldÃ¡sa (kÃ¶zÃ¶s a webes Ã©s a parancssoros Ãºton). NEM commitol.Nr"   Frm   r   u    BejelentkezÃ©si tiltÃ¡s feloldvarŒ   r�   rT   u    (vÃ©gleges)r$   zFeloldotta: )r1   rˆ   rŽ   r�   r�   )rA   r–   rƒ   r8   rW   rG   r7   r:   r"   rH   ro   r)   rV   rž   r1   r†   )r<   r©   r>   ré   rê   re   s         r    Ú	_feloldasrì   u  sø   € à„OØ$ÔØ€C„Oä×Ñ€AØ
‡y�y�GÓØ
�‰�‹×Ñ˜1Ÿ7™7 c§m¡mÑ3Ó4×;Ñ;ÐPUÐ;ÒVà
�‰�‹×Ñ˜1Ÿ4™4 3§=¡=Ñ0Ó1×8Ñ8ÈUÐ8ÑSØ‡F�FŒ6�?Š?Ø%(§^¡^Ñ%?�3—>’>ÀQØØ5Ø #§	¡	¨WÓ 4‘W¸$Ð?¸rÀ#Ç-Á-ÀØ'*§|§|‘^¸Ð<ð>à  Ð 0Ð1ñõ r   Ú	tiltas_idc                 ó.  • [        U5      (       d  g[        5       n[        R                  n[	        X5      R                  UR                  U:H  5      R                  5       nUc  g[        XX2R                  UR                  5        U R                  5         g)u÷   A tiltÃ¡s kÃ©zi feloldÃ¡sa. FIGYELEM: a jogosultsÃ¡got (csak rendszeradmin) a HÃ�VÃ“ ellenÅ‘rzi
(routers/rendszeradmin_kitiltasok.py) - itt vÃ©delmi mÃ©lysÃ©gkÃ©nt mÃ©g egyszer megnÃ©zzÃ¼k.
VisszatÃ©rÃ©s: igaz, ha feloldottunk egy aktÃ­v tiltÃ¡st.FT)r3   r!   r8   r@   rE   r:   r[   r;   rì   rÎ   r`   )r<   rí   Úrendszeradminr>   rD   r©   s         r    Úfeloldrð   Š  sw   € ô ˜M×*Ñ*ØÜ‹;€DÜ×Ñ€AÜ
$ RÓ
.×
5Ñ
5°a·d±d¸iÑ6GÓ
H×
NÑ
NÓ
P€CØ
�{ØÜˆb�t×-Ñ-¨}×/EÑ/EÔFØ‡I�I„KØr   c                 ót  • [        5       n[        R                  n[        X5      nU(       aT  SU;   a'  UR	                  UR
                  [        U5      :H  5      O&UR	                  UR
                  [        U5      :H  5      nUR                  5       nU H  n[        XUSS5        M     U R                  5         U$ )um  VÃ‰SZFELOLDÃ�S a szerverrÅ‘l (login_felold.py) arra az esetre, ha MINDEN rendszeradmint kitiltottak,
Ã©s Ã­gy senki nem tud belÃ©pni a felÃ¼letre. Aki a szerveren parancsot futtathat, az eleve a rendszer
ura, ezÃ©rt itt nincs kÃ¼lÃ¶n jogosultsÃ¡g-ellenÅ‘rzÃ©s. `azonosito`: egy e-mail vagy IP; None = az
Ã¶sszes aktÃ­v tiltÃ¡s. VisszatÃ©rÃ©s: a feloldott tiltÃ¡sok.Ú@Nu#   szerver-parancssor (vÃ©szfeloldÃ¡s))r!   r8   r@   rE   r:   rH   r(   r-   rv   rì   r`   )r<   rH   r>   rD   rM   r­   r©   s          r    Úfelold_parancssorbolró   š  s©   € ô
 ‹;€DÜ×Ñ€AÜ" 2Ó,€AÞØ@CÀyÓ@PˆA�H‰H�Q—[‘[¤L°Ó$;Ñ;Ô<ÐVW×V^ÑV^Ð_`×_jÑ_jÔnwð  yBó  oCñ  `Có  WDˆØ�E‰E‹G€EÛˆÜ�"˜4 Ð'LÖMñ à‡I�I„KØ€Lr   c                  ój  • SSS.n [        5       n [        5       nUR                  [        R                  5      R                  [        R                  R                  U[        [        S9-
  :  5      R                  SS9U S'   [        R                  nUR                  R                  S5      UR                  R                  S5      UR                  U:  -  -  nU S==   UR                  U5      R                  XCR                  R                  S	5      UR                   U[        ["        S9-
  :  5      R                  SS9-  ss'   U S==   UR                  U5      R                  XCR                  R                  S5      UR                   U[        [$        S9-
  :  5      R                  SS9-  ss'   UR'                  5         UR3                  5         U $ ! [(         a>  nUR+                  5         [-        S
[/        U5      R0                   SU 35         SnANUSnAff = f! UR3                  5         f = f)u@   RÃ©gi kÃ­sÃ©rletek Ã©s tiltÃ¡sok tÃ¶rlÃ©se. SOSEM dob kivÃ©telt.r   )Ú
kiserletekÚtiltasok)ÚdaysFrm   rõ   Nrö   Tu+   â�Œ Hiba a login-vÃ©delem takarÃ­tÃ¡sakor: rT   )r
   r!   r7   r8   rW   r:   rP   r   ÚKISERLET_MEGTARTAS_NAPro   r@   rA   r—   rC   r‰   rB   r…   ÚTILTAS_MEGTARTAS_NAPÚISMERETLEN_TILTAS_MEGTARTAS_NAPr`   ra   rU   rb   rc   rd   Úclose)Ústatr<   r>   rD   Úvegerj   s         r    Ú	takaritasrþ   ®  sÐ  € à¨Ñ+€DÜ	‹€BðÜ‹{ˆØŸX™X¤f×&:Ñ&:Ó;×BÑBÜ× Ñ ×(Ñ(¨4´)ÔAWÑ2XÑ+XÑXó
ç
‰& Uˆ&Ð
+ð 	ˆ\Ñô ×Ñˆð —‘×#Ñ# DÓ)¨q¯z©z×/?Ñ/?ÀÓ/EÈ!Ï*É*ÐW[ÑJ[Ñ.\Ñ]ˆØˆZÓ˜BŸH™H Q›K×.Ñ.Ø—'‘'—+‘+˜dÓ# Q§_¡_°t¼iÔMaÑ>bÑ7bÑ%bó
ç
‰& Uˆ&Ð
+ñ	,Óð 	ˆZÓ˜BŸH™H Q›K×.Ñ.Ø—'‘'—+‘+˜eÓ$ a§o¡o¸¼yÔNmÑ?nÑ8nÑ&nó
ç
‰& Uˆ&Ð
+ñ	,Óð 	�	‰	Œð
 	�‰Œ
Ø€Køô ó UØ
�‰ŒÜÐ;¼DÀ»G×<LÑ<LÐ;MÈRÐPQÈsÐS×TÑTûðUûð 	�‰�
ús*   ‘F2G Ç
HÇ4HÈH  ÈHÈH  È H2r6   )rs   ):Ú__doc__r   r   r   Útypingr   r   Ú
sqlalchemyr   Úsqlalchemy.excr	   r8   rÃ   rÉ   Údatabaser
   Útemplates_envr   rY   r_   r\   r™   rš   r˜   r”   rÇ   r'   rø   rù   rú   ÚGENERIKUS_HIBAÚTILTOTT_UZENETr!   rµ   r(   r-   r“   r3   r=   rE   rN   rk   rp   r]   r|   Úintr^   r®   r°   rŸ   rÒ   rå   rè   rì   rð   ró   Údictrþ   r   r   r    Ú<module>r	     s„  ðñ'÷P 3Ñ 2ß !å Ý )ã Û Û Ý !Ý "ð €Ø€ØÐ àÐ ØÐ ØÐ ØÐ àÐ Ø€ð Ð ØÐ Ø"#Ð à3€ð1€ð
;�8ô ;ð
8˜ ™ð 8¨#ô 8ð-�(˜3‘-ð - Cô -ðN˜dô Nð
a°3ô að¨ô ð1�Sð 1 ð 1¨ô 1ñ ð ¨Sð ÀÐI]Ñ@^õ ðDf˜Cð f¨ð f°ô fð1 ð 1°ð 1¸Hð 1Èô 1ð0 cð 0¸ð 0ÀdÈ3Áiô 0ð 9=ñI ð I°ð I¸3ð IÈsð IÐ`hð IØ#+¨HÑ#5õIðX)  S¡	ô )ð$˜t C™yô $ð
B(¨8ð B(¸ô B(ðJ[˜ (Ñ+ð [°ô [ò^ñ #õ ð˜Xð °8¸C±=ð ÐRUð ÐZ^ô ð*˜#ð °ô ñ ¨°©ð ÀÐFZÑA[õ ð(�4õ r   