o
    B]$                     @   s  d dl mZ d dlmZmZmZ d dlmZ ejZej	Z	ej
Z
e
dZejZejZejZejZejZejZejZejZejZejZejZejZejZejZejZG dd deZe ZedZG dd	 d	eZe Z G d
d deZ!e! Z"G dd deZ#e# Z$dS )    )univ)rfc1155rfc1157error)nextid c                   @   s$   e Zd Zedd Zedd ZdS )
VarBindAPIc                 C   sT   |d |d }}|  d| |d u rt}|  ddj| |ddddd | S )Nr      FTverifyConstraints	matchTagsmatchConstraintsZ	innerFlag)setComponentByPositionnullgetComponentByPositionsetComponentByType	getTagSet)varBindZoidValZoidval r   5/usr/lib/python3/dist-packages/pysnmp/proto/api/v1.py	setOIDVal$   s   &zVarBindAPI.setOIDValc                 C   s   | d | d  dfS )Nr   r	   )getComponent)r   r   r   r   	getOIDVal-   s   zVarBindAPI.getOIDValN)__name__
__module____qualname__staticmethodr   r   r   r   r   r   r   #   s
    
r   i c                   @   s   e Zd ZejdZedZdd Z	e
dd Ze
dd Ze
dd	 Ze
d
d Ze
d"ddZe
dd Zdd Zdd Ze
dd Ze
dd Ze
dd Ze
dd Zdd Zdd  Zd!S )#PDUAPIr   c                 C   s^   |j dt dddd |j d| jdddd |j d| jdddd | dd}|  d S )Nr   Fr   r   r   r	         )r   getNextRequestID_errorStatus_errorIndexr   clear)selfpduvarBindListr   r   r   setDefaults;   s   zPDUAPI.setDefaultsc                 C   
   |  dS Nr   r   r'   r   r   r   getRequestIDH      
zPDUAPI.getRequestIDc                 C      |  d| d S r+   r   r'   valuer   r   r   setRequestIDL      zPDUAPI.setRequestIDc                 C   r*   Nr	   r,   r-   r   r   r   getErrorStatusP   r/   zPDUAPI.getErrorStatusc                 C   r0   r6   r1   r2   r   r   r   setErrorStatusT   r5   zPDUAPI.setErrorStatusFc                 C   sN   |  d}|t| d kr%|r|t| d S td|t| d f |S )Nr    r!   z!Error index out of range: %s > %s)r   lencloner   ZProtocolError)r'   Z
muteErrors
errorIndexr   r   r   getErrorIndexX   s   
zPDUAPI.getErrorIndexc                 C   r0   Nr    r1   r2   r   r   r   setErrorIndexc   r5   zPDUAPI.setErrorIndexc                 C   s   |  || | |d d S r=   )r>   r8   r&   r'   r;   r   r   r   setEndOfMibErrorg   s   zPDUAPI.setEndOfMibErrorc                 C   s   |  || d S N)r@   r?   r   r   r   setNoSuchInstanceErrork   s   zPDUAPI.setNoSuchInstanceErrorc                 C   r*   Nr!   r,   r-   r   r   r   getVarBindListn   r/   zPDUAPI.getVarBindListc                 C   r0   rC   r1   r'   r(   r   r   r   setVarBindListr   r5   zPDUAPI.setVarBindListc                 C   s   dd |  dD S )Nc                 S   s   g | ]}t |qS r   )
apiVarBindr   ).0r   r   r   r   
<listcomp>x   s    z&PDUAPI.getVarBinds.<locals>.<listcomp>r!   r,   r-   r   r   r   getVarBindsv   s   zPDUAPI.getVarBindsc                 C   sb   |  dd}|  t|D ]\}}t|tr | || q| | t||| qd S rC   )r   r   r%   	enumerate
isinstanceVarBindrG   r   r'   varBindsr(   idxr   r   r   r   setVarBindsz   s   


zPDUAPI.setVarBindsc                 C   s&   t  }| | | || | |S rA   )GetResponsePDUr)   r4   r.   )r&   reqPDUrspPDUr   r   r   getResponse   s   
zPDUAPI.getResponsec                 C   sF   t |dkrg }t |D ]}||d tf q|gS t |gS )Nr    r   )apiPDUr7   rJ   appendr   )r&   rS   rT   Z
varBindRowr   r   r   r   getVarBindTable   s   zPDUAPI.getVarBindTableN)F)r   r   r   r   ZerrorStatusr:   r#   Integerr$   r)   r   r.   r4   r7   r8   r<   r>   r@   rB   rD   rF   rJ   rQ   rU   rX   r   r   r   r   r   7   s8    









r   c                   @   s   e Zd ZdZedZejdZ	e
dZedZdd Zedd Zed	d
 Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd  Zed!d" ZdS )#
TrapPDUAPIN)r	   r!      r	      r	   iO  Z	coldStartr   c                 C   s   | j d u r*zdd l}t|| }W n ty!   td}Y nw t d|| _ |jd| jdddd |jd| j dddd |jd| j	dddd |jd| j
dddd |jd| jdddd |d	d	}|  d S )
Nr   z0.0.0.0Fr   r	   r    r!   r\      )_networkAddresssocket	IpAddressZgethostbynameZgethostname	ExceptionNetworkAddressr   _entOid_genericTrap_zeroInt	_zeroTimer   r%   )r&   r'   r_   ZagentAddressr(   r   r   r   r)      s   
zTrapPDUAPI.setDefaultsc                 C   r*   r+   r,   r-   r   r   r   getEnterprise   r/   zTrapPDUAPI.getEnterprisec                 C   r0   r+   r1   r2   r   r   r   setEnterprise   r5   zTrapPDUAPI.setEnterprisec                 C   s   |  d dS Nr	   r   r,   r-   r   r   r   getAgentAddr   r5   zTrapPDUAPI.getAgentAddrc                 C   s   |  dd d| d S ri   )r   r   r2   r   r   r   setAgentAddr   s   zTrapPDUAPI.setAgentAddrc                 C   r*   r=   r,   r-   r   r   r   getGenericTrap   r/   zTrapPDUAPI.getGenericTrapc                 C   r0   r=   r1   r2   r   r   r   setGenericTrap   r5   zTrapPDUAPI.setGenericTrapc                 C   r*   rC   r,   r-   r   r   r   getSpecificTrap   r/   zTrapPDUAPI.getSpecificTrapc                 C   r0   rC   r1   r2   r   r   r   setSpecificTrap   r5   zTrapPDUAPI.setSpecificTrapc                 C   r*   Nr\   r,   r-   r   r   r   getTimeStamp   r/   zTrapPDUAPI.getTimeStampc                 C   r0   rp   r1   r2   r   r   r   setTimeStamp   r5   zTrapPDUAPI.setTimeStampc                 C   r*   Nr]   r,   r-   r   r   r   rD      r/   zTrapPDUAPI.getVarBindListc                 C   r0   rs   r1   rE   r   r   r   rF      r5   zTrapPDUAPI.setVarBindListc                 C   s(   g }|  dD ]
}|t| q|S rs   )r   rW   rG   r   )r'   rO   r   r   r   r   rJ      s   zTrapPDUAPI.getVarBindsc                 C   sf   |  dd}|  d}|D ] }t|tr| || n| | t||| |d7 }qd S )Nr]   r   r	   )r   r   r%   rL   rM   rG   r   rN   r   r   r   rQ      s   



zTrapPDUAPI.setVarBinds)r   r   r   r^   ObjectIdentifierrc   r   ZgenericTrapr:   rd   r   rY   re   	TimeTicksrf   r)   r   rg   rh   rj   rk   rl   rm   rn   ro   rq   rr   rD   rF   rJ   rQ   r   r   r   r   rZ      sF    













rZ   c                   @   sz   e Zd ZejdZedZ	dd Z
edd Zedd Zed	d
 Zedd Zedd Zedd Zdd ZdS )
MessageAPIr   Zpublicc                 C   s0   |j d| jdddd |j d| jdddd |S )Nr   Fr   r	   )r   _version
_community)r&   msgr   r   r   r)      s   zMessageAPI.setDefaultsc                 C   r*   r+   r,   ry   r   r   r   
getVersion  r/   zMessageAPI.getVersionc                 C   r0   r+   r1   ry   r3   r   r   r   
setVersion  r5   zMessageAPI.setVersionc                 C   r*   r6   r,   rz   r   r   r   getCommunity  r/   zMessageAPI.getCommunityc                 C   r0   r6   r1   r|   r   r   r   setCommunity  r5   zMessageAPI.setCommunityc                 C   s   |  d S r=   )r   r   rz   r   r   r   getPDU  s   zMessageAPI.getPDUc                 C   s*   |  ddj| |ddddd d S )Nr    FTr
   )r   r   r   r   r|   r   r   r   setPDU  s   *zMessageAPI.setPDUc                 C   sP   t  }| | | || | | || | | |t| 	| |S rA   )
Messager)   r}   r{   r   r~   r   rV   rU   r   )r&   ZreqMsgZrspMsgr   r   r   rU     s   
zMessageAPI.getResponseN)r   r   r   r   versionr:   rw   r   OctetStringrx   r)   r   r{   r}   r~   r   r   r   rU   r   r   r   r   rv      s"    






rv   N)%Zpyasn1.typer   Zpysnmp.protor   r   r   Zpysnmpr   rY   r   ZNullr   rt   r`   rb   CounterZGaugeru   ZOpaquerM   ZVarBindListZGetRequestPDUZGetNextRequestPDUrR   ZSetRequestPDUZTrapPDUr   objectr   rG   r"   r   rV   rZ   Z
apiTrapPDUrv   Z
apiMessager   r   r   r   <module>   s>   
`^
*