HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.8/dist-packages/__pycache__/zabbix_api.cpython-38.pyc
U

�o�e�3�@s�ddlZddlZddlZddlZddlZddlZddlZzddlZWn ek
rdddl	m
ZYnXddlZddlm
Z
zddlmZdZWnek
r�dZYnXe�ej�Ze�d�Ze�e�e�dd�zddlZe�d	d
�Wn*ek
�rddlZe�d	d�YnXdd
�Zdd�Zdd�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Z Gdd�de!�Z"Gdd�de"�Z#dS)�N)�deque)�_create_unverified_contextTFZ
zabbix_api�
zStarting logging�zUsing simplejson libraryzUsing native json librarycs�fdd�}|S)z; Decorator to check authentication of the decorated method cs|���||�S�N)�
__checkauth__)�self�args��fn��./tmp/pip-unpacked-wheel-y8_snd7v/zabbix_api.py�retDszcheckauth.<locals>.retr)rrrr
r
�	checkauthAsrcs�fdd�}|S)Ncs6|j�tjdt��t|�f�|�|�||��dS)Nz'Going to do_request for %s with opts %s�result)�logger�log�logging�DEBUG�repr�
do_request�json_obj)r�method�optsr
rr
�wrapperKs
��zdojson.<locals>.wrapperr)rrrr
r
�dojsonJsrcCs~t|�d�|�d��D]b\}}|��r\|��r\t|�t|�krDdSt|�t|�krxdSq||krjdS||krdSqdS)zG
    The result is 0 if v1 == v2, -1 if v1 < v2, and +1 if v1 > v2
    �.����r)�zip�split�	isdecimal�int)�v1Zv2Zv1_partZv2_partrrr
�version_compareSsr$c@seZdZdZdS)�ZabbixAPIExceptionz� generic zabbix api exception
    code list:
         -32602 - Invalid params (eg already exists)
         -32500 - no permissions
    N��__name__�
__module__�__qualname__�__doc__rrrr
r%esr%c@seZdZdS)�Already_ExistsN�r'r(r)rrrr
r+osr+c@seZdZdZdS)�InvalidProtoErrorz Recived an invalid proto Nr&rrrr
r-ssr-c@seZdZdS)�
APITimeoutNr,rrrr
r.ysr.c@s�eZdZdZdZdZdZdZdZdZ	dZ
dZdZdZ
dZdeeejdddfd	d
�Zdd�Zd
d�Zdd�Zd%dd�Zidfdd�Zd&dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�ZdS)'�	ZabbixAPI�F�/api_jsonrpc.phpN�httprzhttp://localhost/zabbixTc	Ks~|��|�|�||_|d|_|j�d�d|_||_||_||_||_	d|_
tg|d�|_||_
|�tjd|j�dS)z Create an API object.  r1z://r)�maxlenzurl: N)�
_setuplogging�
set_log_level�server�urlr �proto�httpuser�
httppasswd�timeout�kwargs�idr�r_query�validate_certs�debugr�INFO)	rr6�user�passwdZ	log_levelr;Zr_query_lenr?r<rrr
�__init__�s

zZabbixAPI.__init__cCst�d|jj�|_dS)Nz
zabbix_api.%s)r�	getLogger�	__class__r'r�rrrr
r4�szZabbixAPI._setuploggingcCs"|�tjd|�|j�|�dS)NzSet logging level to %d)r@rrAr�setLevel)r�levelrrr
r5�szZabbixAPI.set_log_levelcCs
t|j�S)z%
        return recent query
        )�listr>rGrrr
�recent_query�szZabbixAPI.recent_querycCsBt|�d}|r|t|�}|dkr0|t|�}|j�||�dS)Nz: r0)�strrr)rrI�var�msg�strvalrrr
r@�szZabbixAPI.debugcCs>d|||j|jd�}|s|d=|�tjdt|��t�|�S)Nz2.0)Zjsonrpcr�params�authr=rQz
json_obj: )rQr=r@rrrL�json�dumps)rrrPrQ�objrrr
r�s�zZabbixAPI.json_objcCs�|dk	r&|�tjd�||_d|_dS|dkrH|}|}|rh||_||_n |jdkr`|j}|j}ntd��dt�	|�
d����d}|�tjdt|�t|�f�t
|��d	�d
kr�||d�}n
||d�}|jd
|dd�}	|�|	�}
|
d|_dS)NzUsing API Token for authTr0�(No authentication information available.zmd5(�utf-8�)zTrying to login with %s:%sz5.4r)�username�password)rBrYz
user.loginF�rQr)r@rrrQ�
__tokenauth__�__username__�__password__r%�hashlib�md5�encode�	hexdigestrr$�api_versionrr)rrBrY�saveZ	api_tokenZl_userZ
l_passwordZhashed_pw_stringZ	login_argrTrrrr
�login�s2

�

zZabbixAPI.logincCs�|jr0|�tjd�d|_d|_d|_d|_dS|jdkrBtd��|�tjd|j�|jddd�}|�	|�}|d	r�d|_d|_d|_dS)
Nz1Clearing auth information due to use of API Tokenr0FrUzTrying to logout user: %s.zuser.logoutTrZr)
r[r@rrrQr\r]r%rr�rrTrrrr
�logout�s 

zZabbixAPI.logoutcCsD|jdkr<|�dd|ji�}|�|�}|ds8d|_dSdSdSdS)Nr0zuser.checkAuthenticationZ	sessionidrFT)rQrrrerrr
�
test_logins

zZabbixAPI.test_loginc
CsFddd�}|jrP|�tjd�|jd|j�d�}dt�|��d�}||d<|j	�
t|��|�tjd	t|��|�tjd
t|��t
j|j|�d�|d�}|jd
kr�tr�|js�t
jdt�d�}nt
jdd�}t
�|�}n2|jdk�rt
jdd�}t
�|�}ntd|j��t
�|�z|j||jd�}	Wn�tjk
�rv}
z"t|
d��rZ|
j}
td|
��W5d}
~
XYn�tjk
�r�}
zt d��W5d}
~
XYn`t
j!k
�r}
z>t|
d��r�|
j�r�|
j}
nt|
d��r�|
j"}
td|
��W5d}
~
XYnX|�tjdt|	j#��|	j#dk�r:td|	j$|	j"f��|	�%�}t&|�dk�rXtd��zt'�(|�d��}Wn:t)k
�r�}
zt*d|�t+�,d�W5d}
~
XYnX|�tjdt|��|j-d 7_-d!|k�rBd"|d!d#|d!d|d!d$t|�f}
t.�/d%|d!d$t.j0��r0t1|
|d!d#��nt|
|d!d#��|S)&Nzapplication/json-rpczpython/zabbix_api)zContent-Typez
User-AgentzHTTP Auth enabled�:�asciizBasic �
Authorizationz	Sending: zSending headers: rV)r7�data�headers�httpsr)�
debuglevel�context)rnr2zUnknow protocol %s)r;�messagezssl.SSLError - %szHTTP read timeout�reasonzurllib2.URLError - %szResponse Code: ��zHTTP ERROR %s: %szReceived zero answerz%unable to decode. returned string: %srzResponse Body: r�errorz!Error %s: %s, %s while sending %s�coderkz.*already\sexists.*)2r9r@rrAr:r`�base64�	b64encode�decoder>�appendrLr�urllib2�Requestr7r8�HAS_SSLCONTEXTr?�HTTPSHandlerr�build_opener�HTTPHandlerr%�install_opener�openr;�ssl�SSLError�hasattrrp�socketr.�URLErrorrqrt�status�read�lenrR�loads�
ValueError�print�sys�exitr=�re�search�Ir+)rrrl�credentialsrQ�request�
https_handler�openerZhttp_handler�response�eZreadsZjobjrNrrr
rsz�



�


�zZabbixAPI.do_requestcCs|jdkrdSdS)Nr0TFrZrGrrr
�	logged_inVs
zZabbixAPI.logged_incKs|�|jd|dd��}|dS)Nzapiinfo.versionFrZr)rr)r�optionsrTrrr
rb[szZabbixAPI.api_versioncCs|��std��dS)NzNot logged in.)r�r%rGrrr
r_szZabbixAPI.__checkauth__cCst|td|if|j��S)N�prefix)�ZabbixAPISubClass�dictr<)r�namerrr
�__getattr__cszZabbixAPI.__getattr__)r0N)r0r0TN)r'r(r)r\r]r[rQr7rPrr8r9r:r;r?r�WARNINGrDr4r5rKr@rrdrfrgrr�rbrr�rrrr
r/}s>�

	
#Er/c@sPeZdZdZdZdZdd�Zdd�Zdd�Zd	d
�Z	dd�Z
eed
d���Z
dS)r�z@ wrapper class to ensure all calls go through the parent object NcKsj|��|�tjd|jj�||_||_|��D]2\}}t	|||�|�tj
dt|�t|�f�q2dS)NzCreating %sz	Set %s:%s)r4r@rrArFr'rk�parent�items�setattrr�r)rr�rkr<�key�valrrr
rDmszZabbixAPISubClass.__init__cs,�jddkr�dkrd���fdd�}|S)Nr��
configuration�import_�importcs��d�jd�f|d�S)Nz%s.%sr�r)�	universalrk)r�r�rrr
r|sz-ZabbixAPISubClass.__getattr__.<locals>.method)rk)rr�rrr�r
r�xszZabbixAPISubClass.__getattr__cCs|j��dSr)r�rrGrrr
r�szZabbixAPISubClass.__checkauth__cCs|j�|�Sr)r�r)r�reqrrr
r�szZabbixAPISubClass.do_requestcCs|j�||�Sr)r�r)rr�paramrrr
r�szZabbixAPISubClass.json_objcKs|Srr)rrrrr
r��szZabbixAPISubClass.universal)r'r(r)r*r�rkrDr�rrrrrr�rrrr
r�gsr�)$rur^r�stringr�r�r�ry�ImportError�urllib.requestr�r��collectionsrrr{�
StreamHandler�stdoutZdefault_log_handlerrEZ__logger�
addHandlerr�
simplejsonrRrrr$�	Exceptionr%r+r-r.�objectr/r�rrrr
�<module>sJ


		
k