k\ídZddlmZddlmZddlmZddlmZm Z m Z ddl m Z ddl mZddlmZdd lmZdd lmZdd lmZd Zd ZdZeegde eddZdS)z raven.contrib.django.views ~~~~~~~~~~~~~~~~~~~~~~~~~~ :copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. )absolute_importwraps)settings) HttpResponseHttpResponseForbiddenHttpResponseBadRequest) never_cache) csrf_exempt)require_http_methods) string_types)client)jsonc&tjsdStjdkrdS|sdS|}tjD]K}t|tr||krdS3||rdSLdS)NF*T)rSENTRY_ALLOW_ORIGINlower isinstancer match)originvalues l/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/raven/contrib/django/views.pyis_valid_originrs  'u#s**t u \\^^F- e\ * * {{}}&&tt'{{6"" tt  5c<tfd}|S)Nc|jd}t|stS|g|Ri|}||d<d|d<|S)N HTTP_ORIGINzAccess-Control-Allow-OriginzGET, POST, OPTIONSzAccess-Control-Allow-Methods)METAgetrr)requestargskwargsrresponsefuncs rwrappedzwith_origin..wrapped.sn!!-00v&& +(** *41$111&1128./3G/0rr)r$r%s` r with_originr&-s3 4[[    [  Nrcl|jdddr |jdS|jdddr |jdSd|jD}|rdd|zSdS) zy raven-js will pass both Authorization and X-Sentry-Auth depending on the browser and server configurations. HTTP_X_SENTRY_AUTHSentryHTTP_AUTHORIZATIONcfg|].}|ddr|ddk)d|z/S)rsentry_ sentry_dataz%s=%s) startswith).0is r z%extract_auth_vars..HsO   ty)) /0dm.C.C aK.C.C.Crz Sentry %sz, N)rrr/GETitemsjoin)r r!s rextract_auth_varsr6=s |,b11< >x H H 1|011  [&&((     140 0 4r)r3POSTOPTIONSNc|jdkrtS|jdkr t|dr|j}n"|j}n|jd}|stS tj | d}n##tj $rtcYSwxYwtj ddt|i|tS)Nr8r7bodyr.utf8 auth_header)methodrhasattrr: raw_post_datar3rr rloadsdecodeJSONDecodeErrorrsendr6)r project_iddatadecodeds rreportrHRs ~""~~~ 7F # # )>s0'BB87B8)N)__doc__ __future__r functoolsr django.confr django.httprrr django.views.decorators.cacher django.views.decorators.csrfr django.views.decorators.httpr raven.utils.compatr raven.contrib.django.modelsr raven.utilsrrr&r6rHr=rrrTsY'&&&&& SSSSSSSSSS555555444444======++++++......,    * 00011    21 r