o
    ip
                     @   sL  d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ edeeddedddee jddded dd defddZdeeef fddZej dej!dej"dej#dej$diZ%dd Z&d d! Z'd"d# Z(d$d% Z)dS )&    N)config)Pin)TracedConnection)_convert_to_string)db)net)
is_wrapted)schematize_database_operation)schematize_service_name)asbool)_DBM_Propagatormysqlzmysql.query)database_providerDD_MYSQL_TRACE_FETCH_METHODSF)defaultquery)_default_service_dbapi_span_name_prefix_dbapi_span_operation_nametrace_fetch_methods_dbm_propagatorreturnc                   C   s
   t jjjS N)r   	connectorversionVERSION_TEXT r   r   X/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/mysql/patch.pyget_version    s   
r   c                   C   s   ddiS )Nr   z>=8.0.5r   r   r   r   r   _supported_versions$   s   r   server_hostserver_portuserdatabasec                  C   sX   t ddt ttjdrtjjtj_tj	r&ddl
m}  ddlm} | | dtj_d S )Nzmysql.connectorconnectConnectr   )"_set_metric_iast_instrumented_sink)VULN_SQL_INJECTIONT)wraptwrap_function_wrapper_connecthasattrr   r   r$   r%   
asm_config_iast_enabledddtrace.appsec._iast._metricsr&   ddtrace.appsec._iast.constantsr'   _datadog_patch)r&   r'   r   r   r   patch1   s   r1   c                   C   s>   t tjjrtjjjtj_ttjdrtjjtj_dtj_d S )Nr%   F)r   r   r   r$   __wrapped__r+   r%   r0   r   r   r   r   unpatch?   s
   r3   c                 C   s   | |i |}t |S r   )
patch_conn)funcinstanceargskwargsconnr   r   r   r*   G   s   r*   c                    sH    fddt  D }d|tj< t|d}t |tjd}|| |S )Nc                    s2   i | ]\}}t  |d d kr|tt  |dqS ) N)getattrr   ).0tar9   r   r   
<dictcomp>M   s    ,zpatch_conn.<locals>.<dictcomp>r   )tags)pincfg)	CONN_ATTR_BY_TAGitemsr   SYSTEMr   r   r   r   onto)r9   rA   rB   wrappedr   r?   r   r4   L   s   



r4   )*osmysql.connectorr   r(   ddtracer   ddtrace._trace.pinr   ddtrace.contrib.dbapir   $ddtrace.contrib.internal.trace_utilsr   ddtrace.extr   r   ddtrace.internal.compatr   ddtrace.internal.schemar	   r
   ddtrace.internal.settings.asmr,   ddtrace.internal.utils.formatsr   (ddtrace.propagation._database_monitoringr   _adddictgetenvstrr   r   TARGET_HOSTTARGET_PORTSERVER_ADDRESSUSERNAMErD   r1   r3   r*   r4   r   r   r   r   <module>   sJ    
	