
    wg$                     J   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZ d dlmZ d dlmZ  G d de          Z e             e             e             e             e            fdedededededefdZdS )    )now)RequestServiceInterface)RawSessionDB)AddPenaltyLog)HeaderContainEnum)RawSessionServiceInterface)RawSessionRepositoryInterface)UserSessionRepositoryInterface)SessionInterface)AdminSettingsget_admin_settings)get_raw_session_repository)get_user_session_repository)UrlParserInterface)get_url_parserc                       e Zd Zdededededededdfd	Z	d
e
defdZdeeee         f         fdZdedededededeee
e
f         fdZdeddfdZd
e
defdZdS )RawSessionServicerequest_serviceuser_session_repositoryraw_session_repository
url_parserpenalty_loggeradmin_settingsreturnNc                 Z    || _         || _        || _        || _        || _        || _        d S )Nr   r   r   r   r   r   )selfr   r   r   r   r   r   s          =/var/www/html/cms/application/sessions/raw_session_service.py__init__zRawSessionService.__init__   s9      /'>$&<#$,,    devicec                     t          | j                                        t                                                      | j                                        || j                                                  S )N)ip
start_timesiter!   headers)r   r   get_client_ipr   	isoformatget_hostget_all_headers_to_string)r   r!   s     r   get_initial_raw_sessionz)RawSessionService.get_initial_raw_session)   sc    #1133uu((%..00(BBDD
 
 
 	
r    c                    | j                                         }| j                                        }d}g }|D ]}|j        }|j        }|j        }|j        }	|                                D ])\  }
}|t          j
        k    r.|
|k    r(||	z  }|                    | d| d|
 d| d|	 	           |
|k    r|t          j        k    r~|                                                    d          D ]V}|                                }||                                v r*||	z  }|                    | d| d|
 d| d|	 	            nW|t          j        k    r||                                                    d          D ]T}|                                }||                                vr(||	z  }|                    | d| d|
 d| d|	 	           U|t          j        k    rR|                                |                                k    r(||	z  }|                    | d| d|
 d| d|	 	           |t          j        k    rR|                                |                                k    r(||	z  }|                    | d| d|
 d| d|	 	           +|t          j        k    r8||                                vr"||	z  }|                    | d| d|	            ||fS )Nr   (z) - z: z, ,z - )r   get_all_headersr   get_session_filter_headerscontainheadercontentpenaltyitemsr   haveappendlowersplitstripnot_contain	not_matchmatchmisskeys)r   r&   session_filter_headersban_ratepenalty_logssession_filter_headerr1   session_header_namesession_header_contentr4   header_nameheader_contentr3   s                r   check_headerszRawSessionService.check_headers2   s   &6688!%!=!X!X!Z!Z%; ;	 ;	!+3G"7">%:%B"+3G/6}} - -+^/444"&999 G+$++&oo)?oo[ooTboofmoo   "555"3";;;'='C'C'E'E'K'KC'P'P & &G&-mmooG&.*>*>*@*@@@ (G 3 , 3 3'.$h$h$h$hk$h$h^$h$h_f$h$h!" !" !" !&  A "3"???'='C'C'E'E'K'KC'P'P " "G&-mmooG&n.B.B.D.DDD (G 3 , 3 3'.$h$h$h$hk$h$h^$h$h_f$h$h!" !" !" "3"===17799^=Q=Q=S=SSS$/H(//#* d dW d d+ d d d d[b d d   "3"99917799^=Q=Q=S=SSS$/H(//#* d dW d d+ d d d d[b d d   +000&gllnn<<'H ''"GG':GGgGG   %%r    session_datahostpathport
session_idc                 @   | j                                         }|j        }|j        }|j        }	|ri|dk    rt|dk    rn| j                            |          r)||j        z  }|                     |d|j                    |r)||j	        z  }|                     |d|j	                    |j
                                        D ]E}
|
                                }
|
|v r+||j        z  }|                     |d|j                     nF|| j        j        k    rf|j        r_|j                                        D ]E}
|
                                }
|
|v r+||j        z  }|                     |d|j                     nF||j        k    rd}||j        k    rd}	|||	fS )	Nz	127.0.0.1	localhostu   Запрос к ip, textu   Запрос к порту, u4   Запрещенный адрес(для всех), u8   Запрещенный адрес(для сайтов), T)r   get_session_filtersrA   hackingshow_capchar   is_ip
ip_penaltyr   ports_penaltydisable_urls
splitlinesr:   disable_urls_penaltyr   admin_domaindisable_urls_sites	ban_limitcapcha_limit)r   rI   rJ   rK   rL   rM   session_filtersrA   rS   rT   disable_urls              r   filter_sessionsz!RawSessionService.filter_sessionsw   sH    6JJLL(&". /	#{""t{':':?((..  ::H''"PO4NPP (   
   ==H''"[O<Y[[ (   
  /;FFHH 
 
)//11$&& DDH''"zTcTxzz (   
 E ' t*777O<^7#2#E#P#P#R#R 
 
K"-"3"3"5"5K"d** O$HH++& "C\k  ]A  "C  "C ,   
  + ?444?777"+--r    sessionc                     | j                                         j         }|xj        |z  c_        d|_        | j                            |           |                     |j        d|             d S )NFu   Успешная капча, rP   )	r   rR   capcha_successrA   rT   r   updater   id)r   rb   increase_values      r   success_capchaz RawSessionService.success_capcha   s{    6JJLL[[N*##**7333GJ-^n_-^-^_____r    c                     |                      |          }|                                 \  }}|xj        |z  c_         | j        j        di |j        }|D ]}|                     |j        |           |S )N)rM   rQ    )r+   rH   rA   r   create__dict__r   rf   )r   r!   session_initial_datarA   rB   rI   penalty_logs          r   rk   zRawSessionService.create   s    #;;FCC!%!3!3!5!5,%%1%%9t29ZZ<P<YZZ' 	N 	NK<?MMMMr    )__name__
__module____qualname__r   r
   r	   r   r   r   r   boolr   r+   tupleintliststrrH   r   ra   rh   rk   rj   r    r   r   r      sY       -0- "@- !>	-
 '- &- &- 
- - - - 
d 
| 
 
 
 
C&uS$s)^4 C& C& C& C&J9.,9.479.?B9.JM9.[^9.	sD$	9. 9. 9. 9.v`&6 `4 ` ` ` `
T 
&6 
 
 
 
 
 
r    r   r   r   r   r   r   r   c                 ,    t          | |||||          S )Nr   )r   r   s         r   get_raw_session_servicerx      s-     ' 75%%   r    N)django.utils.timezoner   .application.services.request_service_interfacer   application.sessions.dtor   .application.usecases.user_activity.add_penaltyr   (domain.user_sessions.header_contain_enumr   (domain.user_sessions.raw_session_servicer   8domain.user_sessions.repositories.raw_session_repositoryr	   domain.user_sessions.repositoryr
   domain.user_sessions.sessionr   #infrastructure.admin.admin_settingsr   r   >infrastructure.persistence.repositories.raw_session_repositoryr   ?infrastructure.persistence.repositories.user_session_repositoryr   )infrastructure.url_parser.base_url_parserr   $infrastructure.url_parser.url_parserr   r   rx   rj   r    r   <module>r      s   % % % % % % R R R R R R 1 1 1 1 1 1 H H H H H H F F F F F F O O O O O O      K J J J J J 9 9 9 9 9 9 Q Q Q Q Q Q Q Q           I H H H H H ? ? ? ? ? ?l l l l l2 l l lb ?Z>Y>[>[<V<V<X<X%3^%5%5 =??$6$6$8$8 ,; : #	 "       r    