a
    &Úwh©;  ã                   @   s:  d dl Z d dlZd dlZd dlZd dlZdejj_d dlm	Z	 d dlm
Z
 d dlZd dlZd dlZd dlZd dlZd dlmZ dddd	d
d ddddddddddddddddœZddddgdœddgddd œddgdd!d œd"œd#d$d%d&œd#d$d'd&œd(œd$d)d*d+d,œid-œZd.d/„ ZG d0d1„ d1eƒZd2d3„ ZG d4d5„ d5ƒZdS )6é    Né   )Ú
dictConfig)Ú
fileConfig)Úutilé   é
   é	   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   )ÚauthÚauthprivÚcronÚdaemonÚftpÚkernÚlprÚmailÚnewsÚsecurityÚsyslogÚuserÚuucpÚlocal0Úlocal1Úlocal2Úlocal3Úlocal4Úlocal5Úlocal6Úlocal7FÚINFOÚconsole)ÚlevelÚhandlersÚerror_consoleTúgunicorn.error)r/   r0   Ú	propagateÚqualnameúgunicorn.access)r2   r5   zlogging.StreamHandlerZgenericzext://sys.stdout)ÚclassÚ	formatterÚstreamzext://sys.stderr)r.   r1   ú5%(asctime)s [%(process)d] [%(levelname)s] %(message)sú[%Y-%m-%d %H:%M:%S %z]zlogging.Formatter)ÚformatÚdatefmtr6   )ÚversionÚdisable_existing_loggersÚrootÚloggersr0   Ú
formattersc                  C   s$   t j} t| jj ¡ ƒ}dd„ |D ƒS )z get list of all loggers c                 S   s   g | ]}t  |¡‘qS © )ÚloggingÚ	getLogger)Ú.0ÚnamerB   rB   úK/var/www/battlenet.uz/venv/lib/python3.9/site-packages/gunicorn/glogging.pyÚ
<listcomp>\   ó    zloggers.<locals>.<listcomp>)rC   r?   ÚlistÚmanagerÚ
loggerDictÚkeys)r?   ÚexistingrB   rB   rG   r@   X   s    r@   c                       s$   e Zd Zdd„ Z‡ fdd„Z‡  ZS )Ú	SafeAtomsc                 C   sD   t  | ¡ | ¡ D ],\}}t|tƒr6| dd¡| |< q|| |< qd S )Nú"z\")ÚdictÚ__init__ÚitemsÚ
isinstanceÚstrÚreplace)ÚselfÚatomsÚkeyÚvaluerB   rB   rG   rR   a   s
    

zSafeAtoms.__init__c                    sF   |  d¡r*| ¡ }|| v r&tƒ  |¡S dS || v r>tƒ  |¡S dS d S )NÚ{ú-)Ú
startswithÚlowerÚsuperÚ__getitem__)rW   ÚkÚkl©Ú	__class__rB   rG   r`   i   s    
zSafeAtoms.__getitem__)Ú__name__Ú
__module__Ú__qualname__rR   r`   Ú__classcell__rB   rB   rc   rG   rO   _   s   rO   c                 C   sP  |   d¡rRd }|  dd¡}t|ƒdkr@|d } |d dkr@tj}||  d¡d fS |   d¡rr|  d¡d } tj}n(|   d¡r’|  d¡d } tj}ntd	ƒ‚d
| v rÆd| v rÆ|  d¡d dd …  ¡ }n2d| v râ|  d¡d  ¡ }n| dkrðd}n|  ¡ }|  d¡d } d| v r@|  dd¡d }| ¡ s6td| ƒ‚t	|ƒ}nd}|||ffS )Nzunix://ú#r   r   r   Zdgramzudp://ztcp://zinvalid syslog addressú[ú]ú:Ú Ú	localhostéÿÿÿÿz%r is not a valid port number.i  )
r]   ÚsplitÚlenÚsocketÚ
SOCK_DGRAMÚSOCK_STREAMÚRuntimeErrorr^   ÚisdigitÚint)ÚaddrZ	sock_typeÚpartsÚsocktypeÚhostÚportrB   rB   rG   Úparse_syslog_addressv   s<    





r}   c                   @   sÒ   e Zd ZejejejejejdœZ	ejZ
dZdZdZdZeZdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd+d%d&„Z d'd(„ Z!d)d*„ Z"d$S ),ÚLogger)ÚcriticalÚerrorÚwarningÚinfoÚdebugr9   r:   z%(message)sz[%(process)d] %(message)sc                 C   sX   t  d¡| _d| j_t  d¡| _d| j_g | _g | _d | _t 	¡ | _
|| _|  |¡ d S )Nr2   Fr5   )rC   rD   Ú	error_logr3   Ú
access_logZerror_handlersZaccess_handlersÚlogfileÚ	threadingÚLockÚlockÚcfgÚsetup)rW   rŠ   rB   rB   rG   rR   ·   s    
zLogger.__init__c                 C   sp  | j  |j ¡ tj¡| _| j | j¡ | j tj¡ | j	j
rž|jdkržtjtjfD ]}| ¡  qRt|jdƒ| _t | j ¡ tj ¡ ¡ t | j ¡ tj ¡ ¡ |  | j|jt | j| j¡¡ |jd uræ| j| j|jt | j¡tjd |jr|  | j|| jd¡ |js|  | j|| jd¡ |jr„t  !¡ }| "|j¡ zt#|ƒ W n: t$t%t&t'fy€ } zt(t)|ƒƒ‚W Y d }~n
d }~0 0 nè|j*rt  !¡ }tj+ ,|j*¡rlz&t- .t|j*ƒ¡}| "|¡ t#|ƒ W n> t-j/t$t%t&t'fy } zt(t)|ƒƒ‚W Y d }~n
d }~0 0 n`|j0rltj+ ,|j0¡rZt  !¡ }|j0|d< tj+ 1|j0¡|d< t2|j0|dd	 nd
}t(||j0 ƒ‚d S )Nr\   úa+)Úfmtr8   r€   ÚaccessÚ__file__ÚhereF)Údefaultsr>   z Error: log config '%s' not found)3Ú
LOG_LEVELSÚgetÚloglevelr^   rC   r-   r„   ÚsetLevelr…   rŠ   Úcapture_outputÚerrorlogÚsysÚstdoutÚstderrÚflushÚopenr†   ÚosÚdup2ÚfilenoÚ_set_handlerÚ	FormatterÚ	error_fmtr<   Ú	accesslogÚ
access_fmtr"   Ú_set_syslog_handlerÚ
syslog_fmtÚ!disable_redirect_access_to_syslogÚlogconfig_dictÚCONFIG_DEFAULTSÚcopyÚupdater   ÚAttributeErrorÚImportErrorÚ
ValueErrorÚ	TypeErrorru   rU   Úlogconfig_jsonÚpathÚexistsÚjsonÚloadÚJSONDecodeErrorÚ	logconfigÚdirnamer   )rW   rŠ   r8   ÚconfigÚexcZconfig_jsonr‘   ÚmsgrB   rB   rG   r‹   Ã   s|    
ÿ
þÿÿü$
û$
ÿzLogger.setupc                 O   s   | j j|g|¢R i |¤Ž d S ©N)r„   r   ©rW   rº   ÚargsÚkwargsrB   rB   rG   r     s    zLogger.criticalc                 O   s   | j j|g|¢R i |¤Ž d S r»   )r„   r€   r¼   rB   rB   rG   r€     s    zLogger.errorc                 O   s   | j j|g|¢R i |¤Ž d S r»   )r„   r   r¼   rB   rB   rG   r     s    zLogger.warningc                 O   s   | j j|g|¢R i |¤Ž d S r»   )r„   r‚   r¼   rB   rB   rG   r‚     s    zLogger.infoc                 O   s   | j j|g|¢R i |¤Ž d S r»   )r„   rƒ   r¼   rB   rB   rG   rƒ     s    zLogger.debugc                 O   s   | j j|g|¢R i |¤Ž d S r»   )r„   Ú	exceptionr¼   rB   rB   rG   r¿     s    zLogger.exceptionc                 O   s>   t |tƒr| j | ¡ tj¡}| jj||g|¢R i |¤Ž d S r»   )	rT   rU   r’   r“   r^   rC   r-   r„   Úlog)rW   Zlvlrº   r½   r¾   rB   rB   rG   rÀ     s    
z
Logger.logc           
      C   s†  |j }t|tƒr | dd¡d }| dd¡d|  |¡p8d|  ¡ d|d |d |d	 f || d¡| d
¡| d¡| d	¡t|ddƒdur’t|jƒp”dt|ddƒ| dd¡| dd¡|j	|j	d |j
 |j	d t|j
d ƒ d|j	|j
f dt ¡  dœ}t|dƒr|j}n|}t|dƒr$| ¡ }| dd„ |D ƒ¡ |j}t|dƒrR| ¡ }| dd„ |D ƒ¡ | ¡ }	| dd„ |	D ƒ¡ |S )z( Gets atoms for log formatting.
        Nr   r   ZREMOTE_ADDRr\   z%s %s %sÚREQUEST_METHODZRAW_URIZSERVER_PROTOCOLZ	PATH_INFOÚQUERY_STRINGÚsentZHTTP_REFERERZHTTP_USER_AGENTi@B iè  z%d.%06dz<%s>)ÚhÚlÚuÚtÚrÚsÚmÚUÚqÚHÚbÚBÚfÚaÚTÚDÚMÚLÚpÚheadersrS   c                 S   s   i | ]\}}d |  ¡  |“qS )z{%s}i©r^   ©rE   ra   ÚvrB   rB   rG   Ú
<dictcomp>I  rI   z Logger.atoms.<locals>.<dictcomp>c                 S   s   i | ]\}}d |  ¡  |“qS )z{%s}orØ   rÙ   rB   rB   rG   rÛ   P  rI   c                 S   s   i | ]\}}d |  ¡  |“qS )z{%s}erØ   rÙ   rB   rB   rG   rÛ   T  rI   )ÚstatusrT   rU   rp   r“   Ú	_get_userÚnowÚgetattrrÃ   ÚsecondsÚmicrosecondsrw   r   ÚgetpidÚhasattrr×   rS   r«   )
rW   ÚrespÚreqÚenvironÚrequest_timerÜ   rX   Zreq_headersZresp_headersZenviron_variablesrB   rB   rG   rX   "  sN    

þ



ëzLogger.atomsc                 C   s†   | j js4| j js4| j js4| j js4| j jr0| j jr4dS |  |  ||||¡¡}z| j	 
| j j|¡ W n  ty€   |  t ¡ ¡ Y n0 dS )z\ See http://httpd.apache.org/docs/2.0/logs.html#combined
        for format details
        N)rŠ   r£   r¶   r¨   r°   r"   r§   Úatoms_wrapper_classrX   r…   r‚   Zaccess_log_formatÚ	Exceptionr€   Ú	tracebackÚ
format_exc)rW   rä   rå   ræ   rç   Z
safe_atomsrB   rB   rG   rŽ   X  s"    ÿÿþþÿzLogger.accessc                 C   s
   t  d¡S )z) return date in Apache Common Log Format z[%d/%b/%Y:%H:%M:%S %z])ÚtimeÚstrftime)rW   rB   rB   rG   rÞ   n  s    z
Logger.nowc              
   C   s  | j jr¨| j jdkr¨tjtjfD ]}| ¡  q | jd | jd urJ| j 	¡  t
| j jdƒ| _t | j ¡ tj ¡ ¡ t | j ¡ tj ¡ ¡ W d   ƒ n1 sž0    Y  tƒ D ]T}|jD ]H}t|tjƒr¸| ¡  z$|jrê| 	¡  | ¡ |_W | ¡  q¸| ¡  0 q¸q®d S )Nr\   rŒ   )rŠ   r–   r—   r˜   r™   rš   r›   r‰   r†   Úcloserœ   r   rž   rŸ   r@   r0   rT   rC   ÚFileHandlerÚacquirer8   Ú_openÚrelease)rW   r8   rÀ   ÚhandlerrB   rB   rG   Úreopen_filesr  s$    


6

zLogger.reopen_filesc              
   C   s^   t ƒ D ]R}|jD ]F}t|tjƒr| ¡  z"|jr@t |j 	¡ ¡ W | 
¡  q| 
¡  0 qqd S r»   )r@   r0   rT   rC   rï   rð   r8   r   Úclose_on_execrŸ   rò   )rW   rÀ   ró   rB   rB   rG   rõ   ‰  s    

zLogger.close_on_execc                 C   s$   |j D ]}t|ddƒr|  S qd S )NÚ	_gunicornF)r0   rß   )rW   rÀ   rÄ   rB   rB   rG   Ú_get_gunicorn_handler”  s    
zLogger._get_gunicorn_handlerNc                 C   s˜   |   |¡}|r|j |¡ |d ur”|dkr6t |¡}nDt |¡ t |¡}zt 	|j
| jj| jj¡ W n tyx   Y n0 | |¡ d|_| |¡ d S )Nr\   T)r÷   r0   ÚremoverC   ÚStreamHandlerr   Zcheck_is_writablerï   r   ÚchownÚbaseFilenamerŠ   r#   ÚgroupÚOSErrorÚsetFormatterrö   Ú
addHandler)rW   rÀ   Úoutputr   r8   rÄ   rB   rB   rG   r    ™  s    



zLogger._set_handlerc           
      C   sž   |j p|j dd¡}d||f }t d||f ¡}zt|j ¡  }W n ty^   t	dƒ‚Y n0 t
|jƒ\}}tjj|||d}	|	 |¡ d|	_| |	¡ d S )Nrl   Ú.zgunicorn.%s.%sz%s: %szunknown facility name)ÚaddressÚfacilityrz   T)Zsyslog_prefixZ	proc_namerV   rC   r¡   ÚSYSLOG_FACILITIESZsyslog_facilityr^   ÚKeyErrorru   r}   Zsyslog_addrr0   ÚSysLogHandlerrþ   rö   rÿ   )
rW   rÀ   rŠ   r   rF   Úprefixr  rz   rx   rÄ   rB   rB   rG   r¥   ±  s    ÿ
zLogger._set_syslog_handlerc              
   C   s¨   d }|  d¡}|r¤| ¡  d¡r¤| dd¡}t|ƒdkr¤z2t |d  ¡  d¡¡}| dd¡d  	d	¡}W n8 t
tjtfy¢ } z|  d
|¡ W Y d }~n
d }~0 0 |S )NZHTTP_AUTHORIZATIONÚbasicú r   r   zutf-8ó   :r   zUTF-8zCouldn't get username: %s)r“   r^   r]   rp   rq   Úbase64Ú	b64decodeÚstripÚencodeÚdecoder¯   ÚbinasciiÚErrorÚUnicodeDecodeErrorrƒ   )rW   ræ   r#   Z	http_authr   r¹   rB   rB   rG   rÝ   Ë  s    
"zLogger._get_user)N)#re   rf   rg   rC   ÚCRITICALÚERRORÚWARNINGr-   ÚDEBUGr’   r”   r¢   r<   r¤   r¦   rO   rè   rR   r‹   r   r€   r   r‚   rƒ   r¿   rÀ   rX   rŽ   rÞ   rô   rõ   r÷   r    r¥   rÝ   rB   rB   rB   rG   r~   ¤   s<   ûH6
r~   )r  r  r³   rì   rC   r~   rK   ÚemittedNoHandlerWarningÚlogging.configr   r   r   rr   r˜   r‡   rê   Zgunicornr   r  r©   r@   rQ   rO   r}   rB   rB   rB   rG   Ú<module>   sŠ   
ë
üüøýýúýÿá).