
    Vh                         d dl mZmZmZ eZd dlmZ d dlm	Z	 d dl
Z
d dlZdZ	 d dlmZ d dlmZ dZd	 Zd
 Zd Zd Zd Zy# e$ rZdZ ej(                         ZY dZ[-dZ[ww xY w)    )absolute_importdivisionprint_function)missing_required_lib)	to_nativeN)connect)LibRouterosErrorTFc                 R    t         s!| j                  t        d      t               y y )Nlibrouteros)msg	exception)HAS_LIB	fail_jsonr   LIB_IMP_ERRmodules    o/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/routeros/plugins/module_utils/api.pycheck_has_libraryr      s(    $]3! 	 	
     c                  "   t        t        dd      t        ddd      t        dd      t        d      t        ddd	g
      t        dd      t        dd      t        dd      t        d      t        dd      t        dd            S )NstrT)typerequired)r   r   no_logint)r   boolFssl)r   defaultaliases)r   r   pathASCII
   )usernamepasswordhostnameporttlsforce_no_certvalidate_certsvalidate_cert_hostnameca_pathencodingtimeout)dict r   r   api_argument_specr0   $   s    54054=540ufeeW=66#?&!5'2%, r   c           	         |s|rd}nd}	 t        ||||
|      }|rqt        j                  |	      j                  }|rd_        j                  d       n/|sd_        t        j                  _        n|sd_        nfd}||d<   t        di |}|S # t        $ r5}|||d	t        |      z  d
}| j                  |d   |       Y d}~S d}~ww xY w)zConnect to RouterOS API.i"  i"  )r#   r$   hostr&   r,   r-   )cafileFzADH:@SECLEVEL=0c                  P    |j                  dd         j                  | di|S )Nserver_hostname)popwrap_socket)argskwargsctxr2   s     r   wrap_contextz&_ros_api_connect.<locals>.wrap_contextR   s-    JJ0$7*3??DQ$Q&QQr   ssl_wrapperzError while connecting: %s)r#   r%   r&   r   statusr=   )r   
connectionNr/   )r.   r   create_default_contextr7   check_hostnameset_ciphers	CERT_NONEverify_moder   	Exceptionr   r   )r   r#   r$   r2   r&   use_tlsr(   r)   r*   r+   r,   r-   paramsr;   apier>   r:   s      `             @r   _ros_api_connectrI   4   s   DD$J
 ,,G<C??L%*" 12#%*""%--+%*"R %1F=! J  J 2Yq\A

 	Z1jIIJJs   BB 	C'*CCc                 L   t        | | j                  d   | j                  d   | j                  d   | j                  d   | j                  d   | j                  d   | j                  d   | j                  d   | j                  d	   | j                  d
   | j                  d         S )zCreate an API object.r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   )rI   rF   r   s    r   
create_apirK   c   s    j!j!j!feo&&'./i j!i  r   c                     t        | j                         j                  dd            d   }|d   j                  dd      d   S )z0Given an API object, query the system's version.systemresourcer   version    )listr    joinsplit)rG   system_infos     r   get_api_versionrV   u   s?    sxxzx<=a@Ky!''Q/22r   )
__future__r   r   r   r   __metaclass__ansible.module_utils.basicr   +ansible.module_utils.common.text.convertersr   r   	tracebackr   r   r   librouteros.exceptionsr	   r   rD   rH   
format_excr   r0   rI   rK   rV   r/   r   r   <module>r^      sx    A @ < A 
 )#7G
 ,^$3}  )G&)&&(K)s   A A$AA$