D1cgdZddlmZddlZddlZddlmZddlm Z ddl m Z ddl m Z ddlmZdd lmZ dd lmZn#e$r dd lmZYnwxYwdd lmZdd lmZmZddlmZddlmZm Z m!Z!ddl"m#Z#ddl$m%Z%m&Z&m'Z'ddl(m)Z)ddl*m+Z+dZ,edkrdZ-ndZ-Gdde.Z/dZ0dZ1e)dZ2GddeZ3dS)z raven.contrib.django.client ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. )absolute_importN)VERSION)settings)SuspiciousOperation) HttpRequest)TemplateSyntaxError)MultiValueDict)Origin) LoaderOrigin)Client)get_data_from_templateget_host)SentryMiddleware) string_types binary_type iterlists) RouteResolver) get_headers get_environ get_client_ip)once) breadcrumbs) DjangoClient) c*|SNis_authenticated request_users m/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/raven/contrib/django/client.pyrr*s,,...c|jSrrr s r"rr-s ,,r#ceZdZdZdZdS)_FormatConverterc"||_g|_dSr) param_mappingparams)selfr(s r"__init__z_FormatConverter.__init__3s* r#cj|j|j|dS)Nz%s)r)appendr(get)r*vals r" __getitem__z_FormatConverter.__getitem__7s. 4-11#66777tr#N)__name__ __module__ __qualname__r+r0r#r"r&r&1s2r#r&cg}t|tr t|}|r ||z}|j}nd}|pdD]}||dt|t rxt|t r|dd}t|dkr |dddz}|d| dd z|t|||fS) Nr4NULLzutf-8replaceu…z'%s''z'') isinstancedictr&r)r-rrdecodelenr7repr)sqlr)rvconvparams r" format_sqlrC<s B&$''  *C[FFF2 # # = IIf     | , , #%-- 9 Wi885zzCdsd f, IIfu}}S$777 8 8 8 8 IId5kk " " " " 7Nr#c@fd}tj|dS)Nct\}}|r$ |t|z}n#t$rYnwxYw||dddS)Nquery)messagecategory)rCtuple TypeErrorupdate)datareal_sql real_paramsr)r?s r" processorzrecord_sql..processorWs *3 7 7+   #eK&8&88            s + 88)rO)rrecord)vendoraliasstartdurationr?r)rOs `` r" record_sqlrUVs>       ++++++r#c ddlm}n#t$r ddlm}YnwxYw |j|jn#t $rYdSwxYwddfd }fd}||_||_tjddS) z9If installed this causes Django's queries to be captured.r) CursorWrapperNc dtj|z }|D]}t||||||dSr)timerU)rQrRrSr? param_listrTr)s r"record_many_sqlz)install_sql_hook..record_many_sqlwsJ9;;&  D DF vueXsF C C C C D Dr#c htj} |||t|jjt |jdd|tj|z ||S#t|jjt |jdd|tj|z ||wxYwNrR)rYrUdbrQgetattr)r*r?r)rS real_executes r"executez!install_sql_hook..execute|s  @<c622 tw~wtw'F'FdikkE13 @ @ @ @Jtw~wtw'F'FdikkE13 @ @ @ @s A))AB1c tj} ||||jjt|jdd|||S#|jjt|jdd|||wxYwr])rYr^rQr_)r*r?rZrSreal_executemanyr[s r" executemanyz%install_sql_hook..executemanys  4##D#z:: ODGNGDGWd,K,K!3  4 4 4 4OODGNGDGWd,K,K!3  4 4 4 4s A/A?zdjango.db.backendsr) django.db.backends.utilsrW ImportErrordjango.db.backends.utilrardAttributeErrorr ignore_logger)rWrardr`rcr[s @@@r"install_sql_hookrjgs :::::::: :::99999999:$, (4   DDD @@@@@@444444$M +M233333s 2 AAceZdZejdZeZdZdZ dZ dZ dZ fdZ d fd Zd ZxZS) rzsentry.errors.client.djangoc|dd}tj|g|Ri||r|dSdS)NrjT)popr r+rj)r*argskwargsrjs r"r+zDjangoClient.__init__sa!::&8$??.t...v...  $  ! ! # # # # # $ $r#c"tdSr)rj)r*s r"rjzDjangoClient.install_sql_hooksr#crdt|ji}t|dd}||S t|}|s|S|j|d<t |dr |j|d<t |dr||d<nt |dr |j|d<n#t$rYnwxYw|S)N ip_addressuseridemail get_usernameusername) rMETAr_rpkhasattrrurvrw Exception)r*request user_infors authenticateds r" get_user_infozDjangoClient.get_user_infos - 55 w-- <  ,T22M  !  "gIdOtW%% 0%)Z '"t^,, 6(,(9(9(;(; *%%z** 6(, *%    D   sB'A&B'' B43B4c6i}||||Sr)update_data_from_request)r*r|r@s r"get_data_from_requestz"DjangoClient.get_data_from_requests"  %%gr222 r#cT|d|||d< |}nF#t$r9|rd}nd}t |}|d||j}YnwxYw|jdvr |j}n#t$rt |j }nh#t$r[ |j pd}t|tr&tdt|D}n#t$rd}YnwxYwYnwxYwYnwxYwd}|j}|d|j||jd |t|jtt'|tt)|d idS) Nrshttpshttpz://)GETHEADz c3ZK|]&\}}|t|dkr|dn|fV'dS)rrN)r=).0kvs r" z8DjangoClient.update_data_from_request..sU(=(=$(Aq"#CFFaKKAaDDQ ?(=(=(=(=(=(=r#r| QUERY_STRING)methodurl query_stringrLcookiesheadersenv)r.rbuild_absolute_urir is_securerpathrbodyr{ raw_post_dataPOSTr:r r;rrxrKCOOKIESrr)r*r|resulturischemehostrLenvirons r"rz%DjangoClient.update_data_from_requests ::f   %!//88F6N =,,..CC" = = =  ""  G$$D!'w|| 0 0 =| = = = ="0DD = = ==&|>&dN;;=#'(=(=,5dOO(=(=(=$=$=D %///./ = =D, !. ' 0 0 @ @00 G 4 455K0011  slAABBB D'B/.D/ D: C?=D> D D D  DDNc |dix|d<}n|d}|ttjdd}t |t }|r||||dr|dd}t|dspt |trKt t|ddttfr t |j dtst|drpt|dt|dd}t|dd}||j d |t!||t#t$|j|fi|} |r*| r(|d |jj| d |_| S) NrLr|exc_infordjango_template_sourcesourcertemplate_debugz,Unable to get template source from exceptionproject) project_idrt)r.r_rthreadr:rrrzrrIlistrr loggerinforKr rrcaptureremotersentry) r* event_typer|rorLis_http_request exc_valuerdebugrrs r"rzDjangoClient.captures ::f   %$& &F6NTT&>D ?.5y$GGG$Wk::  9  ) )'4 8 8 8 ::j ! ! Cz*1-I y":;; CI':;; C 8T B B!4=** C 0 3V<< C y"233 C !,D!(Hd!C!CEE +;TBB>K$$%STTT 265AABBB2|T**2:HHHH  v #hhy$+2EFFGN  r#c@|j|jSr)resolverresolver)r*r|s r"get_transaction_from_requestz)DjangoClient.get_transaction_from_request:s}$$W\222r#r)r1r2r3logging getLoggerrrrr+rjrrrrrr __classcell__)rs@r"rrs W < = =F}H$$$ < 0 0 0 d6******X3333333r#r)4__doc__ __future__rrYrdjangorDJANGO_VERSION django.confrdjango.core.exceptionsr django.httprdjango.templaterdjango.utils.datastructuresr django.template.baser rfdjango.template.loaderr raven.baser raven.contrib.django.utilsr rraven.contrib.django.middlewarerraven.utils.compatrrrraven.contrib.django.resolverrraven.utils.wsgirrr raven.utilsrravenr__all__robjectr&rCrUrjrr4r#r"rsu'&&&&& ,,,,,, 666666######//////666666>+++++++>>>========>GGGGGGGG<<<<<<CCCCCCCCCC777777DDDDDDDDDD G////---v4,,,"&4&4&4Rj3j3j3j3j36j3j3j3j3j3s= A  A