Current Path: > > opt > cloudlinux > venv > lib64 > python3.11 > site-packages > sentry_sdk > integrations >
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
__pycache__ | Directory | - | - | |
django | Directory | - | - | |
grpc | Directory | - | - | |
opentelemetry | Directory | - | - | |
redis | Directory | - | - | |
spark | Directory | - | - | |
__init__.py | File | 6827 bytes | April 17 2025 13:10:59. | |
_wsgi_common.py | File | 4537 bytes | April 17 2025 13:10:59. | |
aiohttp.py | File | 11553 bytes | April 17 2025 13:10:59. | |
argv.py | File | 963 bytes | April 17 2025 13:10:59. | |
arq.py | File | 6737 bytes | April 17 2025 13:10:59. | |
asgi.py | File | 11821 bytes | April 17 2025 13:10:59. | |
asyncio.py | File | 3049 bytes | April 17 2025 13:10:59. | |
atexit.py | File | 1846 bytes | April 17 2025 13:10:59. | |
aws_lambda.py | File | 15815 bytes | April 17 2025 13:10:59. | |
beam.py | File | 5689 bytes | April 17 2025 13:10:59. | |
boto3.py | File | 4542 bytes | April 17 2025 13:10:59. | |
bottle.py | File | 6471 bytes | April 17 2025 13:10:59. | |
celery.py | File | 19100 bytes | April 17 2025 13:10:59. | |
chalice.py | File | 4769 bytes | April 17 2025 13:10:59. | |
cloud_resource_context.py | File | 6755 bytes | April 17 2025 13:10:59. | |
dedupe.py | File | 1184 bytes | April 17 2025 13:10:59. | |
excepthook.py | File | 2260 bytes | April 17 2025 13:10:59. | |
executing.py | File | 2041 bytes | April 17 2025 13:10:59. | |
falcon.py | File | 7984 bytes | April 17 2025 13:10:59. | |
fastapi.py | File | 4496 bytes | April 17 2025 13:10:59. | |
flask.py | File | 7907 bytes | April 17 2025 13:10:59. | |
gcp.py | File | 8213 bytes | April 17 2025 13:10:59. | |
gnu_backtrace.py | File | 2930 bytes | April 17 2025 13:10:59. | |
httpx.py | File | 5005 bytes | April 17 2025 13:10:59. | |
huey.py | File | 4700 bytes | April 17 2025 13:10:59. | |
logging.py | File | 9181 bytes | April 17 2025 13:10:59. | |
loguru.py | File | 3051 bytes | April 17 2025 13:10:59. | |
modules.py | File | 2110 bytes | April 17 2025 13:10:59. | |
pure_eval.py | File | 4554 bytes | April 17 2025 13:10:59. | |
pymongo.py | File | 6007 bytes | April 17 2025 13:10:59. | |
pyramid.py | File | 7442 bytes | April 17 2025 13:10:59. | |
quart.py | File | 7377 bytes | April 17 2025 13:10:59. | |
rq.py | File | 5411 bytes | April 17 2025 13:10:59. | |
sanic.py | File | 11326 bytes | April 17 2025 13:10:59. | |
serverless.py | File | 1975 bytes | April 17 2025 13:10:59. | |
socket.py | File | 2945 bytes | April 17 2025 13:10:59. | |
sqlalchemy.py | File | 4244 bytes | April 17 2025 13:10:59. | |
starlette.py | File | 23211 bytes | April 17 2025 13:10:59. | |
starlite.py | File | 10089 bytes | April 17 2025 13:10:59. | |
stdlib.py | File | 8251 bytes | April 17 2025 13:10:59. | |
threading.py | File | 2937 bytes | April 17 2025 13:10:59. | |
tornado.py | File | 7342 bytes | April 17 2025 13:10:59. | |
trytond.py | File | 1745 bytes | April 17 2025 13:10:59. | |
wsgi.py | File | 9581 bytes | April 17 2025 13:10:59. |
from __future__ import absolute_import import copy from sentry_sdk import Hub from sentry_sdk.consts import SPANDATA from sentry_sdk.hub import _should_send_default_pii from sentry_sdk.integrations import DidNotEnable, Integration from sentry_sdk.tracing import Span from sentry_sdk.utils import capture_internal_exceptions from sentry_sdk._types import TYPE_CHECKING try: from pymongo import monitoring except ImportError: raise DidNotEnable("Pymongo not installed") if TYPE_CHECKING: from typing import Any, Dict, Union from pymongo.monitoring import ( CommandFailedEvent, CommandStartedEvent, CommandSucceededEvent, ) SAFE_COMMAND_ATTRIBUTES = [ "insert", "ordered", "find", "limit", "singleBatch", "aggregate", "createIndexes", "indexes", "delete", "findAndModify", "renameCollection", "to", "drop", ] def _strip_pii(command): # type: (Dict[str, Any]) -> Dict[str, Any] for key in command: is_safe_field = key in SAFE_COMMAND_ATTRIBUTES if is_safe_field: # Skip if safe key continue update_db_command = key == "update" and "findAndModify" not in command if update_db_command: # Also skip "update" db command because it is save. # There is also an "update" key in the "findAndModify" command, which is NOT safe! continue # Special stripping for documents is_document = key == "documents" if is_document: for doc in command[key]: for doc_key in doc: doc[doc_key] = "%s" continue # Special stripping for dict style fields is_dict_field = key in ["filter", "query", "update"] if is_dict_field: for item_key in command[key]: command[key][item_key] = "%s" continue # For pipeline fields strip the `$match` dict is_pipeline_field = key == "pipeline" if is_pipeline_field: for pipeline in command[key]: for match_key in pipeline["$match"] if "$match" in pipeline else []: pipeline["$match"][match_key] = "%s" continue # Default stripping command[key] = "%s" return command def _get_db_data(event): # type: (Any) -> Dict[str, Any] data = {} data[SPANDATA.DB_SYSTEM] = "mongodb" db_name = event.database_name if db_name is not None: data[SPANDATA.DB_NAME] = db_name server_address = event.connection_id[0] if server_address is not None: data[SPANDATA.SERVER_ADDRESS] = server_address server_port = event.connection_id[1] if server_port is not None: data[SPANDATA.SERVER_PORT] = server_port return data class CommandTracer(monitoring.CommandListener): def __init__(self): # type: () -> None self._ongoing_operations = {} # type: Dict[int, Span] def _operation_key(self, event): # type: (Union[CommandFailedEvent, CommandStartedEvent, CommandSucceededEvent]) -> int return event.request_id def started(self, event): # type: (CommandStartedEvent) -> None hub = Hub.current if hub.get_integration(PyMongoIntegration) is None: return with capture_internal_exceptions(): command = dict(copy.deepcopy(event.command)) command.pop("$db", None) command.pop("$clusterTime", None) command.pop("$signature", None) op = "db.query" tags = { "db.name": event.database_name, SPANDATA.DB_SYSTEM: "mongodb", SPANDATA.DB_OPERATION: event.command_name, } try: tags["net.peer.name"] = event.connection_id[0] tags["net.peer.port"] = str(event.connection_id[1]) except TypeError: pass data = {"operation_ids": {}} # type: Dict[str, Any] data["operation_ids"]["operation"] = event.operation_id data["operation_ids"]["request"] = event.request_id data.update(_get_db_data(event)) try: lsid = command.pop("lsid")["id"] data["operation_ids"]["session"] = str(lsid) except KeyError: pass if not _should_send_default_pii(): command = _strip_pii(command) query = "{} {}".format(event.command_name, command) span = hub.start_span(op=op, description=query) for tag, value in tags.items(): span.set_tag(tag, value) for key, value in data.items(): span.set_data(key, value) with capture_internal_exceptions(): hub.add_breadcrumb(message=query, category="query", type=op, data=tags) self._ongoing_operations[self._operation_key(event)] = span.__enter__() def failed(self, event): # type: (CommandFailedEvent) -> None hub = Hub.current if hub.get_integration(PyMongoIntegration) is None: return try: span = self._ongoing_operations.pop(self._operation_key(event)) span.set_status("internal_error") span.__exit__(None, None, None) except KeyError: return def succeeded(self, event): # type: (CommandSucceededEvent) -> None hub = Hub.current if hub.get_integration(PyMongoIntegration) is None: return try: span = self._ongoing_operations.pop(self._operation_key(event)) span.set_status("ok") span.__exit__(None, None, None) except KeyError: pass class PyMongoIntegration(Integration): identifier = "pymongo" @staticmethod def setup_once(): # type: () -> None monitoring.register(CommandTracer())
SILENT KILLER Tool