3 \ÐŒã @spddlZddlZddlZddlZddlZddlZddlZddlZyddlZ ddl Z Wne k rldZ YnXddl m Z mZdZejZdad*dd„Zdd„Zd d „Zd d „Zd d„Zdd„Zdd„Zdd„ZejdejƒZdd„ZGdd„deƒZ Gdd„de!e ƒZ"Gdd„de#e ƒZ$Gdd„de%e ƒZ&Gd d!„d!eƒZ'Gd"d#„d#e'ƒZ(e(Z)d$d%„Z*edfd&d'„Z+d(d)„Z,dS)+éN)ÚThreadingTCPServerÚStreamRequestHandleriF#Tc Cs„ddl}t||jƒr|}n*|j|ƒ}t|dƒr:|j|ƒn |j|ƒt|ƒ}tj ƒz t ƒt ||ƒ}t |||ƒWdtj ƒXdS)NrÚreadline)Ú configparserÚ isinstanceZRawConfigParserZ ConfigParserÚhasattrZ read_fileÚreadÚ_create_formattersÚloggingÚ _acquireLockÚ_clearExistingHandlersÚ_install_handlersÚ_install_loggersÚ _releaseLock)ZfnameZdefaultsÚdisable_existing_loggersrÚcpÚ formattersÚhandlers©rú&/usr/lib64/python3.6/logging/config.pyÚ fileConfig8s       rc Csp|jdƒ}|jdƒ}t|ƒ}xN|D]F}|d|}yt||ƒ}Wq"tk rft|ƒt||ƒ}Yq"Xq"W|S)NÚ.r)ÚsplitÚpopÚ __import__ÚgetattrÚAttributeError)ÚnameÚusedÚfoundÚnrrrÚ_resolveZs    r!cCstdd„|ƒS)NcSs|jƒS)N)Ústrip)ÚxrrrÚisz_strip_spaces..)Úmap)ZalistrrrÚ _strip_spaceshsr&c Cs²|dd}t|ƒsiS|jdƒ}t|ƒ}i}x~|D]v}d|}|j|dddd�}|j|dddd�}|j|d dd d�}tj}||jd ƒ} | r–t| ƒ}||||ƒ} | ||<q4W|S) NrÚkeysú,z formatter_%sÚformatT)ÚrawÚfallbackÚdatefmtÚstyleú%Úclass)Úlenrr&Úgetr Ú Formatterr!) rZflistrZformZsectnameZfsZdfsZstlÚcÚ class_nameÚfrrrr ks$     r c CsD|dd}t|ƒsiS|jdƒ}t|ƒ}i}g}xê|D]â}|d|}|d}|jddƒ}yt|ttƒƒ}Wn ttfk rŽt |ƒ}YnX|d} t| ttƒƒ} || Ž} d |krÈ|d } | j | ƒt|ƒrÞ| j ||ƒt |tj jƒ�r|jd dƒ} t| ƒ�r|j| | fƒ| ||<q8Wx |D]\} } | j|| ƒ�q$W|S) Nrr'r(z handler_%sr/Ú formatterÚÚargsÚlevelÚtarget)r0rr&r1ÚevalÚvarsr rÚ NameErrorr!ÚsetLevelÚ setFormatterÚ issubclassrÚ MemoryHandlerÚappendZ setTarget)rrÚhlistrZfixupsÚhandÚsectionÚklassÚfmtr8Úhr9r:Útrrrr �s>         r cCsHtj}x<|D]4}|jj|}||kr:tj|_g|_d|_q ||_q WdS)NT) r ÚrootÚmanagerÚ loggerDictZNOTSETr9rÚ propagateÚdisabled)ÚexistingÚ child_loggersÚdisable_existingrJÚlogÚloggerrrrÚ_handle_existing_loggers¤s   rTcCs,|dd}|jdƒ}ttdd„|ƒƒ}|jdƒ|d}tj}|}d|kr^|d}|j|ƒx |jdd…D]}|j|ƒqnW|d } t | ƒr¾| jdƒ} t | ƒ} x| D]} |j || ƒq¨Wt|j j jƒƒ} | jƒg} �x>|D�]4}|d |}|d } |jd d d�}tj| ƒ}| | k�rŒ| j| ƒd }| d}t |ƒ}t | ƒ}x<||k�r€| |d|…|k�rt| j| |ƒ|d 7}�qFW| j| ƒd|k�r¨|d}|j|ƒx"|jdd…D]}|j|ƒ�q¸W||_d|_|d } t | ƒrâ| jdƒ} t | ƒ} x| D]} |j || ƒ�qWqâWt| | |ƒdS)NÚloggersr'r(cSs|jƒS)N)r")r#rrrr$¿sz"_install_loggers..rJZ logger_rootr9rz logger_%sÚqualnamerMé)r+rr)rÚlistr%Úremover rJr>rÚ removeHandlerr0r&Ú addHandlerrKrLr'ÚsortZgetintÚ getLoggerÚindexrBrMrNrT)rrrQZllistrErJrRr9rHrCrDrOrPZqnrMrSÚiÚprefixedÚpflenÚ num_existingrrrr¹sd                rcCs.tjjƒtjtjdd…ƒtjdd…=dS)N)r Ú _handlersÚclearZshutdownZ _handlerListrrrrr s r z^[a-z_][a-z0-9_]*$cCstj|ƒ}|std|ƒ‚dS)Nz!Not a valid Python identifier: %rT)Ú IDENTIFIERÚmatchÚ ValueError)ÚsÚmrrrÚ valid_idents  rjc@seZdZddd„Zdd„ZdS)ÚConvertingMixinTcCsB|jj|ƒ}||k r>|r |||<t|ƒtttfkr>||_||_|S)N)Ú configuratorÚconvertÚtypeÚConvertingDictÚConvertingListÚConvertingTupleÚparentÚkey)ÚselfrsÚvalueÚreplaceÚresultrrrÚconvert_with_key$s  z ConvertingMixin.convert_with_keycCs0|jj|ƒ}||k r,t|ƒtttfkr,||_|S)N)rlrmrnrorprqrr)rtrurwrrrrm0s   zConvertingMixin.convertN)T)Ú__name__Ú __module__Ú __qualname__rxrmrrrrrk!s rkc@s(eZdZdd„Zddd„Zd dd„ZdS) rocCstj||ƒ}|j||ƒS)N)ÚdictÚ __getitem__rx)rtrsrurrrr}Es zConvertingDict.__getitem__NcCstj|||ƒ}|j||ƒS)N)r|r1rx)rtrsÚdefaultrurrrr1IszConvertingDict.getcCstj|||ƒ}|j||dd�S)NF)rv)r|rrx)rtrsr~rurrrrMszConvertingDict.pop)N)N)ryrzr{r}r1rrrrrroBs roc@seZdZdd„Zddd„ZdS) rpcCstj||ƒ}|j||ƒS)N)rXr}rx)rtrsrurrrr}Ss zConvertingList.__getitem__rWcCstj||ƒ}|j|ƒS)N)rXrrm)rtÚidxrurrrrWs zConvertingList.popNéÿÿÿÿ)r€)ryrzr{r}rrrrrrpQsrpc@seZdZdd„ZdS)rqcCstj||ƒ}|j||dd�S)NF)rv)Útupler}rx)rtrsrurrrr}]s zConvertingTuple.__getitem__N)ryrzr{r}rrrrrq[srqc@sˆeZdZejdƒZejdƒZejdƒZejdƒZejdƒZ dddœZ e e ƒZ d d „Zd d „Zd d„Zdd„Zdd„Zdd„Zdd„ZdS)ÚBaseConfiguratorz%^(?P[a-z]+)://(?P.*)$z ^\s*(\w+)\s*z^\.\s*(\w+)\s*z^\[\s*(\w+)\s*\]\s*z^\d+$Ú ext_convertÚ cfg_convert)ZextZcfgcCst|ƒ|_||j_dS)N)roÚconfigrl)rtr…rrrÚ__init__vs zBaseConfigurator.__init__c CsÄ|jdƒ}|jdƒ}y`|j|ƒ}xP|D]H}|d|7}yt||ƒ}Wq&tk rl|j|ƒt||ƒ}Yq&Xq&W|Stk r¾tjƒdd…\}}td||fƒ}|||_ |_ |‚YnXdS)NrrrWzCannot resolve %r: %s) rrÚimporterrrÚ ImportErrorÚsysÚexc_inforgÚ __cause__Ú __traceback__) rtrhrrrZfragÚeÚtbÚvrrrÚresolvezs"      zBaseConfigurator.resolvecCs |j|ƒS)N)r�)rtrurrrrƒ‘szBaseConfigurator.ext_convertc Cs|}|jj|ƒ}|dkr&td|ƒ‚nØ||jƒd…}|j|jƒd}x´|rü|jj|ƒ}|rp||jƒd}nd|jj|ƒ}|rÔ|jƒd}|jj|ƒs¢||}n2yt |ƒ}||}Wnt k rÒ||}YnX|rê||jƒd…}qJtd||fƒ‚qJW|S)NzUnable to convert %rrzUnable to convert %r at %r) Ú WORD_PATTERNrfrgÚendr…ÚgroupsÚ DOT_PATTERNÚ INDEX_PATTERNÚ DIGIT_PATTERNÚintÚ TypeError)rtruÚrestriÚdrr rrrr„•s2       zBaseConfigurator.cfg_convertcCsÌt|tƒ r&t|tƒr&t|ƒ}||_n¢t|tƒ rLt|tƒrLt|ƒ}||_n|t|tƒ rrt|tƒrrt|ƒ}||_nVt|tƒrÈ|j j |ƒ}|rÈ|j ƒ}|d}|j j |dƒ}|rÈ|d}t||ƒ}||ƒ}|S)NÚprefixÚsuffix)rror|rlrprXrqr�ÚstrÚCONVERT_PATTERNrfÚ groupdictÚvalue_convertersr1r)rtruriršr›Z converterrœrrrrm·s*     zBaseConfigurator.convertcsrˆjdƒ}t|ƒs|j|ƒ}ˆjddƒ}t‡fdd„ˆDƒƒ}|f|Ž}|rnx |jƒD]\}}t|||ƒqVW|S)Nz()rcs g|]}t|ƒr|ˆ|f‘qSr)rj)Ú.0Úk)r…rrú Úsz5BaseConfigurator.configure_custom..)rÚcallabler�r|ÚitemsÚsetattr)rtr…r3ÚpropsÚkwargsrwrrur)r…rÚconfigure_customÓs    z!BaseConfigurator.configure_customcCst|tƒrt|ƒ}|S)N)rrXr�)rtrurrrÚas_tupleás zBaseConfigurator.as_tupleN)ryrzr{ÚreÚcompileržr‘r”r•r–r Ú staticmethodrr‡r†r�rƒr„rmr©rªrrrrr‚bs     "r‚c@sZeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zddd„Z ddd„Z ddd„Z dS)ÚDictConfiguratorcCsü|j}d|krtdƒ‚|ddkr2td|dƒ‚|jddƒ}i}tjƒ�z |�r°|jd|ƒ}xŽ|D]†}|tjkr‚td|ƒ‚qfy6tj|}||}|jd dƒ}|r¶|jtj|ƒƒWqft k rê} ztd || fƒ‚WYdd} ~ XqfXqfW|jd |ƒ} xZ| D]R}y|j || |d ƒWn4t k �rP} ztd || fƒ‚WYdd} ~ XnX�qW|jddƒ} | �rêy|j | d ƒWn0t k �rª} ztd| ƒ‚WYdd} ~ XnX�n:|jdd ƒ} t ƒ|jd|ƒ} xZ| D]R}y|j | |ƒ| |<Wn4t k �r"} ztd|| fƒ‚WYdd} ~ XnX�qÔW|jd|ƒ}xZ|D]R}y|j||ƒ||<Wn4t k �rŠ} ztd|| fƒ‚WYdd} ~ XnX�qÚ _checkLevelÚ ExceptionÚconfigure_loggerÚconfigure_rootr Úconfigure_formatterÚconfigure_filterÚsortedÚconfigure_handlerrr�rBrJrXrKrLr'r\r^r0rYrTr)rtr…r°Z EMPTY_DICTrrÚhandlerZhandler_configr9r�rUrJrQrr±ZdeferredrOrPr_r`rarbrrrÚ configureísÔ        "  $    $  $   $  $      $ zDictConfigurator.configurec CsÆd|krr|d}y|j|ƒ}WqÂtk rn}z4dt|ƒkr>‚|jdƒ|d<||d<|j|ƒ}WYdd}~XqÂXnP|jddƒ}|jddƒ}|jddƒ}|jddƒ}|s®tj} nt|ƒ} | |||ƒ}|S) Nz()z'format'r)rGr,r-r.r/)r©r˜r�rr1r r2r!) rtr…ÚfactoryrwÚterGZdfmtr-Úcnamer3rrrr¶‹s&      z$DictConfigurator.configure_formattercCs.d|kr|j|ƒ}n|jddƒ}tj|ƒ}|S)Nz()rr7)r©r1r ZFilter)rtr…rwrrrrr·§s    z!DictConfigurator.configure_filtercCs^xX|D]P}y|j|jd|ƒWqtk rT}ztd||fƒ‚WYdd}~XqXqWdS)Nr±zUnable to add filter %r: %s)Z addFilterr…r³rg)rtZfiltererr±r5r�rrrÚ add_filters°s  zDictConfigurator.add_filtersc/sŽtˆƒ}ˆjddƒ}|r^y|jd|}Wn2tk r\}ztd||fƒ‚WYdd}~XnXˆjddƒ}ˆjddƒ}dˆkr¢ˆjdƒ}t|ƒsš|j|ƒ}|}�nˆjdƒ} |j| ƒ} t| tj j ƒoÊdˆk�rHy>|jd ˆd} t | tj ƒ�sˆj |ƒtd ƒ‚| ˆd<Wn8tk �rD}ztd ˆd|fƒ‚WYdd}~XnXnZt| tj jƒ�rvd ˆk�rv|jˆd ƒˆd <n,t| tj jƒ�r¢d ˆk�r¢|jˆd ƒˆd <| }ˆjddƒ} t‡fdd„ˆDƒƒ} y|f| Ž}WnLtk �r"}z.dt|ƒk�rú‚| jdƒ| d<|f| Ž}WYdd}~XnX|�r4|j|ƒ|dk �rN|jtj|ƒƒ|�r`|j||ƒ| �rŠx"| jƒD]\}}t|||ƒ�qpW|S)Nr6rzUnable to set formatter %r: %sr9r±z()r/r:rztarget not configured yetz#Unable to set target handler %r: %sZmailhostZaddressrcs g|]}t|ƒr|ˆ|f‘qSr)rj)r¡r¢)r…rrr£àsz6DictConfigurator.configure_handler..z'stream'ÚstreamZstrm)r|rr…r³rgr¤r�r@r rrArZHandlerÚupdater˜Z SMTPHandlerrªZ SysLogHandlerr�r?r>r²r¿r¥r¦)rtr…Z config_copyr6r�r9r±r3r¼r¾rFZthr§r¨rwr½rrur)r…rr¹¸sl          $      z"DictConfigurator.configure_handlercCs^xX|D]P}y|j|jd|ƒWqtk rT}ztd||fƒ‚WYdd}~XqXqWdS)NrzUnable to add handler %r: %s)r[r…r³rg)rtrSrrHr�rrrÚ add_handlers÷s  zDictConfigurator.add_handlersFcCs†|jddƒ}|dk r$|jtj|ƒƒ|s‚x |jdd…D]}|j|ƒq8W|jddƒ}|rf|j||ƒ|jddƒ}|r‚|j||ƒdS)Nr9rr±)r1r>r r²rrZrÂr¿)rtrSr…r°r9rHrr±rrrÚcommon_logger_configÿs    z%DictConfigurator.common_logger_configcCs6tj|ƒ}|j|||ƒ|jddƒ}|dk r2||_dS)NrM)r r]rÃr1rM)rtrr…r°rSrMrrrr´s   z!DictConfigurator.configure_loggercCstjƒ}|j|||ƒdS)N)r r]rÃ)rtr…r°rJrrrrµszDictConfigurator.configure_rootN)F)F)F) ryrzr{r»r¶r·r¿r¹rÂrÃr´rµrrrrr®çs ?  r®cCst|ƒjƒdS)N)ÚdictConfigClassr»)r…rrrÚ dictConfig srÅcsPts tdƒ‚Gdd„dtƒ}Gdd„dtƒ}G‡fdd„dtjƒ‰ˆ||||ƒS)Nz listen() needs threading to workc@seZdZdd„ZdS)z#listen..ConfigStreamHandlercSsH�y|j}|jdƒ}t|ƒdk�rtjd|ƒd}|jj|ƒ}x&t|ƒ|krd||j|t|ƒƒ}q@W|jjdk r~|jj|ƒ}|dk rø|jdƒ}yddl}|j |ƒ}t |ƒWnHt k röt j |ƒ}y t|ƒWnt k rðtjƒYnXYnX|jj�r|jjjƒWn2tk �rB}z|jtk�r2‚WYdd}~XnXdS)Néz>Lrzutf-8)Z connectionZrecvr0ÚstructZunpackÚserverÚverifyÚdecodeÚjsonÚloadsrÅr³ÚioÚStringIOrÚ tracebackÚ print_excÚreadyÚsetÚOSErrorÚerrnoÚ RESET_ERROR)rtZconnÚchunkZslenrËršÚfiler�rrrÚhandleBs6           z*listen..ConfigStreamHandler.handleN)ryrzr{rØrrrrÚConfigStreamHandler;srÙc@s,eZdZdZdedddfdd„Zdd„ZdS)z$listen..ConfigSocketReceiverrWZ localhostNcSs>tj|||f|ƒtjƒd|_tjƒd|_||_||_dS)NrrW) rr†r r ÚabortrÚtimeoutrÑrÉ)rtÚhostÚportrºrÑrÉrrrr†psz-listen..ConfigSocketReceiver.__init__cSsfddl}d}xJ|sV|j|jjƒggg|jƒ\}}}|r>|jƒtjƒ|j}tjƒqW|jj ƒdS)Nr) ÚselectZsocketÚfilenorÛZhandle_requestr r rÚrÚclose)rtrÞrÚZrdÚwrZexrrrÚserve_until_stoppedzs z8listen..ConfigSocketReceiver.serve_until_stopped)ryrzr{Zallow_reuse_addressÚDEFAULT_LOGGING_CONFIG_PORTr†rârrrrÚConfigSocketReceiveris räcs&eZdZ‡‡fdd„Zdd„Z‡ZS)zlisten..Servercs4tˆ|ƒjƒ||_||_||_||_tjƒ|_dS)N) Úsuperr†ÚrcvrÚhdlrrÝrÉÚ threadingZEventrÑ)rtrærçrÝrÉ)ÚServerÚ __class__rrr†Šs zlisten..Server.__init__cSsZ|j|j|j|j|jd�}|jdkr0|jd|_|jjƒtjƒ|a tj ƒ|j ƒdS)N)rÝrºrÑrÉrrW) rærÝrçrÑrÉZserver_addressrÒr r Ú _listenerrrâ)rtrÈrrrÚrun’s     zlisten..Server.run)ryrzr{r†rìÚ __classcell__r)ré)rêrréˆsré)ÚthreadÚNotImplementedErrorrrrèZThread)rÝrÉrÙrär)rérÚlisten%s .rðc Cs*tjƒztrdt_daWdtjƒXdS)NrW)r r rërÚrrrrrÚ stopListening¡s rñ)NT)-rÔrÍr Zlogging.handlersr«rÇr‰rÏÚ_threadrîrèrˆZ socketserverrrrãZ ECONNRESETrÕrërr!r&r r rTrr r¬ÚIrerjÚobjectrkr|rorXrpr�rqr‚r®rÄrÅrðrñrrrrÚsN   "#W! 9|