o
    [Þh©;  ã                
   @   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 i dd“dd	“d
d“dd“dd“dd “dd“dd“d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/d0d1œd+d,gd/d2d1œd3œd4d5d6d7œd4d5d8d7œd9œd5d:d;d<d=œid>œZd?d@„ ZG dAdB„ dBeƒZdCdD„ ZG dEdF„ dFƒZdS )Gé    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.StreamHandlerÚ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Údatefmtr7   )Ú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ÚnamerC   rC   úQ/var/www/html/premium_crap/venv/lib/python3.10/site-packages/gunicorn/glogging.pyÚ
<listcomp>\   s    zloggers.<locals>.<listcomp>)rD   r@   ÚlistÚmanagerÚ
loggerDictÚkeys)r@   ÚexistingrC   rC   rH   rA   X   s   rA   c                       s$   e Zd Zdd„ Z‡ fdd„Z‡  ZS )Ú	SafeAtomsc                 C   sD   t  | ¡ | ¡ D ]\}}t|tƒr| dd¡| |< q	|| |< q	d S )Nú"z\")ÚdictÚ__init__ÚitemsÚ
isinstanceÚstrÚreplace)ÚselfÚatomsÚkeyÚvaluerC   rC   rH   rR   a   s   


üzSafeAtoms.__init__c                    sB   |  d¡r| ¡ }|| v rtƒ  |¡S dS || v rtƒ  |¡S dS )NÚ{ú-)Ú
startswithÚlowerÚsuperÚ__getitem__)rW   ÚkÚkl©Ú	__class__rC   rH   r`   i   s   
zSafeAtoms.__getitem__)Ú__name__Ú
__module__Ú__qualname__rR   r`   Ú__classcell__rC   rC   rc   rH   rO   _   s    rO   c                 C   sL  |   d¡r)d }|  dd¡}t|ƒdkr |d } |d dkr tj}||  d¡d fS |   d¡r9|  d¡d } tj}n|   d¡rI|  d¡d } tj}ntd	ƒ‚d
| v rcd| v rc|  d¡d dd …  ¡ }nd| v rq|  d¡d  ¡ }n| dkrxd}n|  ¡ }|  d¡d } d| v rž|  dd¡d }| ¡ s™td| ƒ‚t	|ƒ}nd}|||ffS )Nzunix://ú#r   r   r   Ú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)ÚaddrÚ	sock_typeÚpartsÚsocktypeÚhostÚportrC   rC   rH   Ú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Údebugr:   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   )rD   rE   Ú	error_logr3   Ú
access_logÚerror_handlersÚaccess_handlersÚlogfileÚ	threadingÚLockÚlockÚcfgÚsetup)rW   rŽ   rC   rC   rH   rR   ·   s   
zLogger.__init__c                 C   sP  | j  |j ¡ tj¡| _| j | j¡ | j tj¡ | j	j
rO|jdkrOtjtjfD ]}| ¡  q)t|jdƒ| _t | j ¡ tj ¡ ¡ t | j ¡ tj ¡ ¡ |  | j|jt | j| j¡¡ |jd urs| 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 d S  t$t%t&t'fy· } zt(t)|ƒƒ‚d }~ww |j*rõt  !¡ }tj+ ,|j*¡rózt- .t|j*ƒ¡}| "|¡ t#|ƒ W d S  t-j/t$t%t&t'fyò } zt(t)|ƒƒ‚d }~ww d S |j0�r&tj+ ,|j0¡�rt  !¡ }|j0|d< tj+ 1|j0¡|d< t2|j0|dd	� d S d
}t(||j0 ƒ‚d S )Nr\   úa+)Úfmtr9   r‚   ÚaccessÚ__file__ÚhereF)Údefaultsr?   z Error: log config '%s' not found)3Ú
LOG_LEVELSÚgetÚloglevelr^   rD   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Ú	TypeErrorrv   rU   Úlogconfig_jsonÚpathÚexistsÚjsonÚloadÚJSONDecodeErrorÚ	logconfigÚdirnamer   )rW   rŽ   r9   ÚconfigÚexcÚconfig_jsonr•   ÚmsgrC   rC   rH   r�   Ã   sˆ   
ÿ
þÿÿü€ú
û€ùû

ÿ÷zLogger.setupc                 O   ó   | j j|g|¢R i |¤Ž d S ©N)r†   r�   ©rW   r¿   ÚargsÚkwargsrC   rC   rH   r�     ó   zLogger.criticalc                 O   rÀ   rÁ   )r†   r‚   rÂ   rC   rC   rH   r‚     rÅ   zLogger.errorc                 O   rÀ   rÁ   )r†   rƒ   rÂ   rC   rC   rH   rƒ     rÅ   zLogger.warningc                 O   rÀ   rÁ   )r†   r„   rÂ   rC   rC   rH   r„     rÅ   zLogger.infoc                 O   rÀ   rÁ   )r†   r…   rÂ   rC   rC   rH   r…     rÅ   zLogger.debugc                 O   rÀ   rÁ   )r†   Ú	exceptionrÂ   rC   rC   rH   rÆ     rÅ   zLogger.exceptionc                 O   s>   t |tƒr| j | ¡ tj¡}| jj||g|¢R i |¤Ž d S rÁ   )	rT   rU   r–   r—   r^   rD   r-   r†   Úlog)rW   Úlvlr¿   rÃ   rÄ   rC   rC   rH   rÇ     s   
 z
Logger.logc           
      C   sÈ  |j }t|tƒr| dd¡d }i d| dd¡“dd“d|  |¡p"d“d	|  ¡ “d
d|d |d |d f “d|“d| d¡“d| d¡“d| d¡“d| d¡“dt|ddƒdur_t|jƒp`d“dt|ddƒ“d| dd¡“d| dd¡“d|j	“d|j	d |j
 “d |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&ƒrÊ| ¡ }| d)d(„ |D ƒ¡ | ¡ }	| d*d(„ |	D ƒ¡ |S )+z( Gets atoms for log formatting.
        Nr   r   ÚhÚREMOTE_ADDRr\   ÚlÚuÚtÚrz%s %s %sÚREQUEST_METHODÚRAW_URIÚSERVER_PROTOCOLÚsÚmÚUÚ	PATH_INFOÚqÚQUERY_STRINGÚHÚbÚsentÚBÚfÚHTTP_REFERERÚaÚHTTP_USER_AGENTÚTÚDi@B ÚMiè  z%d.%06dz<%s>)ÚLÚpÚheadersrS   c                 S   ó   i | ]\}}d |  ¡  |“qS )z{%s}i©r^   ©rF   ra   ÚvrC   rC   rH   Ú
<dictcomp>I  ó    z Logger.atoms.<locals>.<dictcomp>c                 S   ræ   )z{%s}orç   rè   rC   rC   rH   rê   P  rë   c                 S   ræ   )z{%s}erç   rè   rC   rC   rH   rê   T  rë   )ÚstatusrT   rU   rq   r—   Ú	_get_userÚnowÚgetattrrÚ   ÚsecondsÚmicrosecondsrx   r¡   ÚgetpidÚhasattrrå   rS   r¯   )
rW   ÚrespÚreqÚenvironÚrequest_timerì   rX   Úreq_headersÚresp_headersÚenviron_variablesrC   rC   rH   rX   "  sr   
ÿþýü
þûø
	÷

ö
õ
ôóòñðïîí
ë


zLogger.atomsc                 C   s†   | j js| j js| j js| j js| j jr| j jrdS |  |  ||||¡¡}z| j	 
| j j|¡ W dS  tyB   |  t ¡ ¡ Y dS w )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„   Úaccess_log_formatÚ	Exceptionr‚   Ú	tracebackÚ
format_exc)rW   rô   rõ   rö   r÷   Ú
safe_atomsrC   rC   rH   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   rC   rC   rH   rî   n  s   
z
Logger.nowc              
   C   s  | j jrT| j jdkrTtjtjfD ]}| ¡  q| j�2 | jd ur%| j 	¡  t
| j jdƒ| _t | j ¡ tj ¡ ¡ t | j ¡ tj ¡ ¡ W d   ƒ n1 sOw   Y  tƒ D ]*}|jD ]$}t|tjƒr€| ¡  z|jru| 	¡  | ¡ |_W | ¡  q\| ¡  w q\qWd S )Nr\   r�   )rŽ   rš   r›   rœ   r�   rž   rŸ   r�   rŠ   Úcloser    r¡   r¢   r£   rA   r0   rT   rD   ÚFileHandlerÚacquirer9   Ú_openÚrelease)rW   r9   rÇ   ÚhandlerrC   rC   rH   Úreopen_filesr  s.   


û


€ùÿÿzLogger.reopen_filesc              
   C   s^   t ƒ D ])}|jD ]#}t|tjƒr+| ¡  z|jr t |j 	¡ ¡ W | 
¡  q| 
¡  w qqd S rÁ   )rA   r0   rT   rD   r  r  r9   r   Úclose_on_execr£   r  )rW   rÇ   r  rC   rC   rH   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É   rC   rC   rH   Ú_get_gunicorn_handler”  s
   
ÿÿzLogger._get_gunicorn_handlerNc                 C   sœ   |   |¡}|r|j |¡ |d urL|dkrt |¡}n"t |¡ t |¡}zt 	|j
| jj| jj¡ W n	 ty<   Y nw | |¡ d|_| |¡ d S d S )Nr\   T)r  r0   ÚremoverD   ÚStreamHandlerr   Úcheck_is_writabler  r¡   ÚchownÚbaseFilenamerŽ   r   ÚgroupÚOSErrorÚsetFormatterr  Ú
addHandler)rW   rÇ   Úoutputr‘   r9   rÉ   rC   rC   rH   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ƒ‚w t
|jƒ\}}tjj|||d�}	|	 |¡ d|	_| |	¡ d S )Nrm   Ú.zgunicorn.%s.%sz%s: %szunknown facility name)ÚaddressÚfacilityr|   T)Úsyslog_prefixÚ	proc_namerV   rD   r¥   ÚSYSLOG_FACILITIESÚsyslog_facilityr^   ÚKeyErrorrv   r   Úsyslog_addrr0   ÚSysLogHandlerr  r  r  )
rW   rÇ   rŽ   r‘   rG   Úprefixr  r|   ry   rÉ   rC   rC   rH   r©   ±  s   ÿÿ
zLogger._set_syslog_handlerc              
   C   s¬   d }|  d¡}|rT| ¡  d¡rT| dd¡}t|ƒdkrTzt |d  ¡  d¡¡}| dd¡d  	d	¡}W |S  t
tjtfyS } z|  d
|¡ W Y d }~|S d }~ww |S )NÚHTTP_AUTHORIZATIONÚbasicú r   r   zutf-8ó   :r   zUTF-8zCouldn't get username: %s)r—   r^   r]   rq   rr   Úbase64Ú	b64decodeÚstripÚencodeÚdecoder³   ÚbinasciiÚErrorÚUnicodeDecodeErrorr…   )rW   rö   r   Ú	http_authr   r½   rC   rC   rH   rí   Ë  s   
þ€þzLogger._get_userrÁ   )#re   rf   rg   rD   Ú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í   rC   rC   rC   rH   r€   ¤   s>    ûH6
r€   )r&  r+  r·   r  rD   r€   rK   ÚemittedNoHandlerWarningÚlogging.configr   r   r¡   rs   rœ   r‹   rþ   Úgunicornr   r  r­   rA   rQ   rO   r   rC   rC   rC   rH   Ú<module>   s°   
ÿþýüûúùø	÷
öõôóòñðïë
üüøýýúýÿá).