
    +h;              
          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? Z G d@ dAe      ZdB Z G dC dDe      Zy)E    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)r0   r1   	propagatequalnamegunicorn.access)r3   r6   zlogging.StreamHandlergenericzext://sys.stdout)class	formatterstreamzext://sys.stderr)r/   r2   5%(asctime)s [%(process)d] [%(levelname)s] %(message)s[%Y-%m-%d %H:%M:%S %z]zlogging.Formatter)formatdatefmtr8   )versiondisable_existing_loggersrootloggersr1   
formattersc                      t         j                  } t        | j                  j                  j                               }|D cg c]  }t        j                  |       c}S c c}w )z get list of all loggers )loggingrA   listmanager
loggerDictkeys	getLogger)rA   existingnames      D/var/www/html/venv/lib/python3.12/site-packages/gunicorn/glogging.pyrB   rB   Y   sG    <<DDLL++0023H089Gd#999s   A!c                   $     e Zd Zd Z fdZ xZS )	SafeAtomsc                     t         j                  |        |j                         D ]0  \  }}t        |t              r|j                  dd      | |<   ,|| |<   2 y )N"z\")dict__init__items
isinstancestrreplace)selfatomskeyvalues       rM   rS   zSafeAtoms.__init__b   sN    d++- 	"JC%%!MM#u5S	!S			"    c                     |j                  d      r$|j                         }|| v rt        |   |      S y|| v rt        |   |      S y)N{-)
startswithlowersuper__getitem__)rX   kkl	__class__s      rM   rc   zSafeAtoms.__getitem__j   sN    <<BTzw*2..97&q))r\   )__name__
__module____qualname__rS   rc   __classcell__)rf   s   @rM   rO   rO   `   s    "
 
r\   rO   c                 T   | j                  d      rUd }| j                  dd      }t        |      dk(  r|d   } |d   dk(  rt        j                  }|| j                  d      d   fS | j                  d      r%| j                  d      d   } t        j                  }nA| j                  d      r%| j                  d      d   } t        j
                  }nt        d	      d
| v r*d| v r&| j                  d      d   dd  j                         }n?d| v r#| j                  d      d   j                         }n| dk(  rd}n| j                         }| j                  d      d   } d| v r?| j                  dd      d   }|j                         st        d|z        t        |      }nd}|||ffS )Nzunix://#r   r   r   dgramzudp://ztcp://zinvalid syslog address[]: 	localhostz%r is not a valid port number.i  )
r`   splitlensocket
SOCK_DGRAMSOCK_STREAMRuntimeErrorra   isdigitint)addr	sock_typepartssocktypehostports         rM   parse_syslog_addressr   w   s    y!	 

3"u:?8DQx7""--	4::i0344x zz(#A&$$		"zz(#A&%%344
d{sd{zz#q!!"%++-	zz#q!'')	zz|::c?2D
d{zz#q!!$||~?$FGG4ytTl##r\   c                      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 Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZddZ d Z!d Z"y)Logger)criticalerrorwarninginfodebugr;   r<   z%(message)sz[%(process)d] %(message)sc                 <   t        j                  d      | _        d| j                  _        t        j                  d      | _        d| j                  _        g | _        g | _        d | _        t        j                         | _
        || _        | j                  |       y )Nr3   Fr6   )rE   rJ   	error_logr4   
access_logerror_handlersaccess_handlerslogfile	threadingLocklockcfgsetup)rX   r   s     rM   rS   zLogger.__init__   sw     **+;<#( !++,=>$)! !NN$	

3r\   c                 ~	   | j                   j                  |j                  j                         t        j
                        | _        | j                  j                  | j                         | j                  j                  t        j
                         | j                  j                  r|j                  dk7  rt        j                  t        j                  fD ]  }|j                           t!        |j                  d      | _        t%        j&                  | j"                  j)                         t        j                  j)                                t%        j&                  | j"                  j)                         t        j                  j)                                | j+                  | j                  |j                  t	        j,                  | j.                  | j0                               |j2                  T| j+                  | j                  |j2                  t	        j,                  | j4                        t        j                         |j6                  r\| j9                  | j                  || j:                  d       |j<                  s(| j9                  | j                  || j:                  d       |j>                  r<t@        jC                         }|jE                  |j>                         	 tG        |       y |jT                  rt@        jC                         }t$        jV                  jY                  |jT                        rF	 t[        j\                  t!        |jT                              }|jE                  |       tG        |       y y |j`                  rt$        jV                  jY                  |j`                        rht@        jC                         }|j`                  |d<   t$        jV                  jc                  |j`                        |d<   te        |j`                  |d	       y d
}tQ        ||j`                  z        y # tH        tJ        tL        tN        f$ r}tQ        tS        |            d }~ww xY w# tZ        j^                  tH        tJ        tL        tN        f$ r}tQ        tS        |            d }~ww xY w)Nr_   a+)fmtr:   r   access__file__hereF)defaultsr@   z Error: log config '%s' not found)3
LOG_LEVELSgetloglevelra   rE   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	TypeErrorry   rV   logconfig_jsonpathexistsjsonloadJSONDecodeError	logconfigdirnamer   )rX   r   r:   configexcconfig_jsonr   msgs           rM   r   zLogger.setup   sR   ++CLL,>,>,@',,O.  . 88""s||s':**cjj0   d3DLGGDLL'')3::+<+<+>?GGDLL'')3::+<+<+>?$..#,,!++DNNDLLI	K ==$%%doo6szz   ::$$T__g 88((OOS$//8 $))+FMM#,,--6" $))+Fww~~c0011"&))D1C1C,D"EKMM+.v&	 2 ]]ww~~cmm,*//1'*}}$#%77??3==#A 3==849; 9"3#677 + #	 - #3s8,,- ((" 1 's3x001s1   2Q AQ; Q8Q33Q8;(R<#R77R<c                 D     | j                   j                  |g|i | y N)r   r   rX   r   argskwargss       rM   r   zLogger.critical  s     5d5f5r\   c                 D     | j                   j                  |g|i | y r   )r   r   r   s       rM   r   zLogger.error       S24262r\   c                 D     | j                   j                  |g|i | y r   )r   r   r   s       rM   r   zLogger.warning  s     s4T4V4r\   c                 D     | j                   j                  |g|i | y r   )r   r   r   s       rM   r   zLogger.info  s     C1$1&1r\   c                 D     | j                   j                  |g|i | y r   )r   r   r   s       rM   r   zLogger.debug  r   r\   c                 D     | j                   j                  |g|i | y r   )r   	exceptionr   s       rM   r   zLogger.exception  s        6t6v6r\   c                     t        |t              r8| j                  j                  |j	                         t
        j                        } | j                  j                  ||g|i | y r   )	rU   rV   r   r   ra   rE   r.   r   log)rX   lvlr   r   r   s        rM   r   z
Logger.log  sL    c3//%%ciik7<<@C35d5f5r\   c           	         |j                   }t        |t              r|j                  dd      d   }i d|j	                  dd      ddd| j                  |      xs dd	| j                         d
|d   d|d   d|d   d|d|j	                  d      d|j	                  d      d|j	                  d      d|j	                  d      dt        |dd      duxr t        |j                        xs ddt        |dd      d|j	                  dd      d|j	                  dd      d|j                  d|j                  dz  |j                  z   d |j                  d!z  t        |j                  d!z        z   d"|j                  |j                  fz  d#t        j                         z  d$}t        |d%      r|j                  }n|}t        |d&      r|j!                         }|j#                  |D 	ci c]  \  }}	d'|j%                         z  |	 c}	}       |j                  }
t        |
d&      r|
j!                         }
|j#                  |
D 	ci c]  \  }}	d(|j%                         z  |	 c}	}       |j!                         }|j#                  |D 	ci c]  \  }}	d)|j%                         z  |	 c}	}       |S c c}	}w c c}	}w c c}	}w )*z( Gets atoms for log formatting.
        Nr   r   hREMOTE_ADDRr_   lutr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headersrT   z{%s}iz{%s}oz{%s}e)statusrU   rV   rt   r   	_get_usernowgetattrr   secondsmicrosecondsr{   r   getpidhasattrr   rT   r   ra   )rX   respreqenvironrequest_timer   rY   req_headersrd   vresp_headersenviron_variabless               rM   rY   zLogger.atoms#  s    fc"\\$*1-F
]C0

 (/C
 	

 w'78&y1&'89;
 
 -.
 [)
 ^,
 ./
 vt,D8KS^Rs
 vt,
 ^S1
  .4!
" %%#
$ ,&&0L4M4MM%
& ,&&-\5N5NQU5U1VV'
( l22L4M4MNN"))+%+
2 3	"++KK;(%++-KEAg	)1,EF||<)'--/L 	FAg	)1,FG $MMO9JKAg	)1,KL F G Ls   <K
K
 K
c                    | j                   j                  so| j                   j                  sY| j                   j                  sC| j                   j                  s-| j                   j
                  r| j                   j                  ry| j                  | j                  ||||            }	 | j                  j                  | j                   j                  |       y# t        $ r& | j                  t        j                                Y yw xY 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_classrY   r   r   access_log_format	Exceptionr   	traceback
format_exc)rX   r   r   r   r   
safe_atomss         rM   r   zLogger.accessY  s    
 ""dhh&8&888""dhh&=&=HHOODHH$N$N
 --JJtS'<8

	/OO  !;!;ZH 	/JJy++-.	/s   *0C ,D
	D
c                 ,    t        j                  d      S )z) return date in Apache Common Log Format z[%d/%b/%Y:%H:%M:%S %z])timestrftime)rX   s    rM   r   z
Logger.nowo  s    }}566r\   c                    | j                   j                  rC| j                   j                  dk7  r)t        j                  t        j
                  fD ]  }|j                           | j                  5  | j                  | j                  j                          t        | j                   j                  d      | _        t        j                  | j                  j                         t        j                  j                                t        j                  | j                  j                         t        j
                  j                                d d d        t               D ]  }|j                  D ]o  }t!        |t"        j$                        s|j'                          	 |j(                  r%|j                          |j+                         |_        |j-                          q  y # 1 sw Y   xY w# |j-                          w xY w)Nr_   r   )r   r   r   r   r   r   r   r   r   closer   r   r   r   rB   r1   rU   rE   FileHandleracquirer:   _openrelease)rX   r:   r   handlers       rM   reopen_fileszLogger.reopen_filess  sb   88""txx'8'8C'?**cjj0   D<<+LL&&(#DHH$5$5t<++-szz/@/@/BC++-szz/@/@/BCD 9 		*C<< *gw':':;OO%*">>#MMO-4]]_GN)*		*D D   )s   3C G)#1G5)G25Hc                 X   t               D ]  }|j                  D ]w  }t        |t        j                        s|j                          	 |j                  r-t        j                  |j                  j                                |j                          y  y # |j                          w xY wr   )rB   r1   rU   rE   r  r  r:   r   close_on_execr   r  )rX   r   r  s      rM   r  zLogger.close_on_exec  s    9 	*C<< *gw':':;OO%*">> ..w~~/D/D/FG)*	*  )s   	9BB)c                 H    |j                   D ]  }t        |dd      s|c S  y )N	_gunicornF)r1   r   )rX   r   r   s      rM   _get_gunicorn_handlerzLogger._get_gunicorn_handler  s&     	Aq+u-	r\   Nc                    | j                  |      }|r|j                  j                  |       ||dk(  rt        j                  |      }ntt        j                  |       t        j                  |      }	 t        j                  |j                  | j                  j                  | j                  j                         |j                  |       d|_        |j#                  |       y y # t        $ r Y 6w xY w)Nr_   T)r  r1   removerE   StreamHandlerr   check_is_writabler  r   chownbaseFilenamer   r   groupOSErrorsetFormatterr  
addHandler)rX   r   outputr   r:   r   s         rM   r   zLogger._set_handler  s    &&s+LL"}))&1&&v.''/HHQ^^TXX]]DHHNNK NN3AKNN1!    s   7A	C+ +	C76C7c                    |j                   xs |j                  j                  dd      }d|d|}t        j                  |d|      }	 t
        |j                  j                            }t        |j                        \  }}t        j                  j                  |||      }	|	j                  |       d|	_        |j!                  |	       y # t        $ r t        d      w xY w)Nrp   .z	gunicorn.z: zunknown facility name)addressfacilityr   T)syslog_prefix	proc_namerW   rE   r   SYSLOG_FACILITIESsyslog_facilityra   KeyErrorry   r   syslog_addrr1   SysLogHandlerr#  r  r$  )
rX   r   r   r   rL   prefixr)  r   r|   r   s
             rM   r   zLogger._set_syslog_handler  s    ""Ecmm&;&;C&E%+T2 VS 9:	8()<)<)B)B)DEH
 .coo>$ **44<x + Q 	
sq  	8677	8s   !C C(c                    d }|j                  d      }|r|j                         j                  d      r||j                  dd      }t	        |      dk(  r\	 t        j                  |d   j                         j                  d            }|j                  dd      d   j                  d	      }|S |S # t        t        j                  t        f$ r}| j                  d
|       Y d }~|S d }~ww xY w)NHTTP_AUTHORIZATIONbasicr   r   r   zutf-8   :r   zUTF-8zCouldn't get username: %s)r   ra   r`   rt   ru   base64	b64decodestripencodedecoder   binasciiErrorUnicodeDecodeErrorr   )rX   r   r   	http_authr   r   s         rM   r   zLogger._get_user  s    KK 45	*55g>??3*D4yA~A "++DGMMO,B,B7,KLD::dA.q188AD t "8>>3EF AJJ:C@@As   AB3 3C.C))C.r   )#rg   rh   ri   rE   CRITICALERRORWARNINGr.   DEBUGr   r   r   r>   r   r   rO   r  rS   r   r   r   r   r   r   r   r   rY   r   r   r  r  r  r   r   r    r\   rM   r   r      s     $$??J ||HHI'GJ,J#
F8P6352376
4l/,7*.	*
04r\   r   )r6  r;  r   r  rE   r   rG   emittedNoHandlerWarninglogging.configr   r   r   rv   r   r   r  gunicornr   r,  r   rB   rR   rO   r   objectrC  r\   rM   <module>rH     s       12   . % % 	  
   
A A a	
 
2 A 
1 A A  a A A b b  b!" b#$ + 2  %9+6 ()(	
 ")	
" -"(
 -"(
 	M/(
?&R: .+$\uV ur\   