403Webshell
Server IP : 35.236.43.222  /  Your IP : 216.73.216.143
Web Server : Apache
System : Linux order-form-vm-001 5.10.0-37-cloud-amd64 #1 SMP Debian 5.10.247-1 (2025-12-11) x86_64
User : deploy ( 1002)
PHP Version : 8.1.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /usr/lib/python3/dist-packages/pysimplesoap/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3/dist-packages/pysimplesoap/__pycache__/client.cpython-39.pyc
a

��_k��@s\dZddlmZddlZejdkr&eZzddlZWne	yLddlZYn0ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZmZmZmZmZddlmZmZmZmZddlmZmZmZdd	lm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)mZm*Z*dd
l+m,Z,e�-e.�Z/Gdd�de0�Z1e2d
d
d
ddd�Z3Gdd�de4�Z5dd�Z6e.dk�rXdS)z*Pythonic simple SOAP Client implementation�)�unicode_literalsN�3�)�
__author__�
__copyright__�__license__�__version__�TIMEOUT)�SimpleXMLElement�TYPE_MAP�REVERSE_TYPE_MAP�Struct)�get_http_wrapper�set_http_wrapper�get_Http)�Alias�fetch�	sort_dict�make_key�process_element�postprocess_element�get_message�preprocess_schema�get_local_name�get_namespace_prefixr�urlsplit)�
UsernameTokenc@s>eZdZddd�Zdd�Zejdkr*eZndd�Zd	d
�ZdS)�	SoapFaultNcCs&||_||_||_t�||||�dS�N)�	faultcode�faultstring�detail�RuntimeError�__init__)�selfrr r!�r%�5/usr/lib/python3/dist-packages/pysimplesoap/client.pyr#+szSoapFault.__init__cCsd|j|jfS)N�%s: %s)rr �r$r%r%r&�__unicode__1szSoapFault.__unicode__rcCs|���dd�S)N�ascii�ignore)r)�encoder(r%r%r&�__str__7szSoapFault.__str__cCs dt|j�t|j�t|j�fS)Nz6SoapFault(faultcode = %s, faultstring %s, detail = %s))�reprrr r!r(r%r%r&�__repr__:s
�zSoapFault.__repr__)N)	�__name__�
__module__�__qualname__r#r)�sys�versionr-r/r%r%r%r&r*s

rz)http://schemas.xmlsoap.org/soap/envelope/z"http://www.w3.org/2003/05/soap-envz'http://www.w3.org/2003/05/soap-envelope)�soap11�soap�soapenv�soap12Z	soap12envc@s�eZdZdZddddddddddddddedddddddfdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zddd�ZdZdZdZd d!�Zd"d#�Zd,d$d%�Zd&d'�Zd(d)�Zd*d+�ZdS)-�
SoapClientzSimple SOAP Client (simil PHP)NT�Fc!Cs�||_||_||_||_||_||_d|_|_|p6i|_|p@g|_	||_
|	rx|
dkrxt|	�\}}}}}tj
�||�}
|
|_|r�|dur�tj}n|}tj|d�t�|�|s�|s�d|_n|s�|r�d|_n||_||_i|_d|_|�r4|�d��r4t��\}}t�|dd	�}t�d
|�|�|�|}|��||_ t!�} | ||||
d�|_"|�rz|�rzt#|j"d��rz|j"�$||�|�r�|�r�t#|j"d
��r�|j"j%||dd�||_&|�s�d|_'nd|_'|	�o�|j(|	|d�|_)d|_*dS)zf
        :param http_headers: Additional HTTP Headers; example: {'Host': 'ipsec.example.com'}
        r:T)�levelr6r7Nz-----BEGIN CERTIFICATE-----zw+b���zSaving CA certificate to %s)�timeout�cacert�proxy�sessions�add_credentials�add_certificate)�key�certZdomainaW<?xml version="1.0" encoding="UTF-8"?>
<%(soap_ns)s:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:%(soap_ns)s="%(soap_uri)s">
<%(soap_ns)s:Header/>
<%(soap_ns)s:Body>
    <%(method)s xmlns="%(namespace)s">
    </%(method)s>
</%(soap_ns)s:Body>
</%(soap_ns)s:Envelope>z�<?xml version="1.0" encoding="UTF-8"?>
<%(soap_ns)s:Envelope xmlns:%(soap_ns)s="%(soap_uri)s" xmlns:%(ns)s="%(namespace)s">
<%(soap_ns)s:Header/>
<%(soap_ns)s:Body><%(ns)s:%(method)s></%(ns)s:%(method)s></%(soap_ns)s:Body></%(soap_ns)s:Envelope>)�cache)+ZcertsslZkeyssl�location�action�	namespace�
exceptions�xml_request�xml_response�http_headers�plugins�strictr�os�path�dirname�wsdl_basedir�logging�DEBUGZbasicConfig�logZsetLevel�_SoapClient__soap_ns�_SoapClient__soap_server�_SoapClient__headers�_SoapClient__call_headers�
startswith�tempfileZmkstemp�fdopen�debug�write�closer>r�http�hasattrrArB�_SoapClient__ns�_SoapClient__xml�
wsdl_parse�services�service_port)!r$rFrGrHrDrIr?�ns�soap_ns�wsdlrRrEr>r@Zsoap_serverr=rLZtraceZusernameZpasswordZkey_filerMrNZ
url_schemeZnetlocrPZqueryZfragmentr;�fd�filename�fZHttpr%r%r&r#Lsd



zSoapClient.__init__cs&�js��fdd�S��fdd�SdS)z)Return a pseudo-method that can be calledcs�j�g|�Ri|��Sr)�call��args�kwargs��attrr$r%r&�<lambda>��z(SoapClient.__getattr__.<locals>.<lambda>cs�j�g|�Ri|��Sr)�	wsdl_callrnrqr%r&rs�rtN)re)r$rrr%rqr&�__getattr__�szSoapClient.__getattr__c
Os^t|j}|jt||j|j|j|d�}t||jo6|j|jd�}|�dd�}|r^t|�	��}n|}|r�t
|dt�r�|dtt���d�}	t|	|�|	�
|d�n�|�r|jdks�|jd	ur�dnd
}
|D]@\}}t|d�r�|
r�|j�dd
�}
n|
}
t||�j|||
d�q�n&|jdv�r2t|dtt���d�|�|j�r\|j�s\td
d�|j�	�D��|_d|jv�r�|j�s�t�dt�|j�t��|j�r�|dtt���d�}|j�	�D]6\}}t
|t��r�|�
|�n|j|||jd	d��q�|�r|dtt���d�}|��D]}|�
|��q
|jD]}|�||||||j|��q"|� �|_!|�"||j!�|_#t|j#|j|jdvd�}|j$�r4|dtt���d	d��r4|dtt���d	d�}d}|�r|���r|jdu�r|�%|�}|��d�&�}|d�|��p�t'}|��dj(|d	d�}nt)|���}t*t'|j+�t'|j,�|��|jD]}|�-||||||j|��q:|S)z�Prepare xml request and make SOAP call, returning a SimpleXMLElement.

        If a keyword argument called "headers" is passed with a value of a
        SimpleXMLElement object, then these headers will be inserted into the
        request.
        )�methodrHrgrh�soap_uri)rH�prefix�headersNr�Body�rg�jettyFT�
namespaces)Zjbossas6cSs"g|]\}}|�d�s||f�qS)zwsse:)rZ��.0�k�vr%r%r&�
<listcomp>�s
�z#SoapClient.call.<locals>.<listcomp>z
wsse:Securityz/Replace wsse:Security with UsernameToken pluginZHeader)rgZadd_children_ns)r})rHr}ZFault�rg�errorr!�faults�rN).�soap_namespacesrVrc�dictrHrbr
�pop�list�items�
isinstance�values�delattr�import_noderW�	qualifiedrar~�get�getattrZmarshallrXrerYrM�warnings�warn�DeprecationWarning�appendr�childrenZ
preprocessZas_xmlrJ�sendrKrI�
get_operationZget_name�unicode�
unmarshallr.rrr Zpostprocess)r$rwrorprx�xml�requestZrequest_headers�
parameters�bodyZuse_nsr�r�rg�headerZ	subheaderZplugin�responseZ	detailXmlr!�	operationZ
fault_name�faultr%r%r&rm�s�	
��
�
�

� 

�
�zSoapClient.callc	Cs|jdkrdStd�}t|j�}|jr2t|j�}nt|j�|}dtt|��d�}|jdurld|d|d<|�|j�t�d|�t�	d	�
d
d�|��D���t�	|�tj
dkr�td
d�|��D��}|jj||||d�\}}||_||_t�	d	�
dd�|��D���t�	|�|S)zSend SOAP request using HTTP�testNZPOSTztext/xml; charset="UTF-8")zContent-typezContent-length�"Z
SOAPActionzPOST %s�
cSsg|]\}}d||f�qS�r'r%rr%r%r&r�3rtz#SoapClient.send.<locals>.<listcomp>rcss"|]\}}t|�t|�fVqdSr)�strrr%r%r&�	<genexpr>;rtz"SoapClient.send.<locals>.<genexpr>)r�rzcSsg|]\}}d||f�qSr�r%rr%r%r&r�Brt)rFr�rerG�len�updaterLrU�infor]�joinr�r3r4r�r`r�r��content)	r$rwr�Zhttp_methodrFZsoap_actionrzr�r�r%r%r&r�s2

�


�

zSoapClient.sendcCs�|j�d�rdpd}|jsv|j��D]N\}}dd�|d��D�D]"\}}|d|krB||f|_q$qBtd|��q$n|j|jdd|jd	}|js�|d
|_|d�|�}|s�td||jf��|S)
Nr8r5cSsg|]}|�qSr%r%)r��portr%r%r&r�Krtz,SoapClient.get_operation.<locals>.<listcomp>�ports�soap_verz2Cannot determine service in WSDL: SOAP version: %srrrF�
operationsz5Operation %s not found in WSDL: Service/Port Type: %s)rVrZrfrer�r"rFr�)r$rwr��service_name�serviceZ	port_namer�r�r%r%r&r�Fs&
�

�zSoapClient.get_operationcOs|�|||�S)�FPre and post process SOAP call, input and output parameters using WSDL)�wsdl_call_with_args)r$rwrorpr%r%r&ru]szSoapClient.wsdl_callcCs�t|j}|�|�}|d}|d}|�d�}d|vr@|d|_d|vr`|dpRd|_|d|_|rrt||j�|_	|�
||||�\}}	|j|g|	�R�}
|
d|d	���j
||jd
�}|o�t|���dS)r��input�outputr�rGrHr:r�r{r|r�r)r�rVr�r�rGrHr�rrXrY�wsdl_call_get_paramsrmr�r�rNr�r�)r$rwrorprxr�r�r�r��paramsr�Zrespr%r%r&r�as 




zSoapClient.wsdl_call_with_argscCszd}}}i}|r,t|���d}||}|r�|r�i}	t|�D]L\}
}t|���|
}t|t�r�||vrvtd|��|||	|<q@||	|<q@|�||	i�|�rd|s�|�rd|r�|�||i�|�||�\}
}}|
s�td|��t	||�}t|�
��d}g}|��D]D\}}|j|}|j
|�s:t|t��r:||jd<|�||f��q|jdv�r^|}n|}n|�op|��}||fS)z'Build params from input and args/kwargsNrz)Unhandled key %s. use client.help(method)z"Invalid Args Structure. Errors: %s)Zaxis)r��keys�	enumerater�r��KeyErrorr��wsdl_validate_params�
ValueErrorrr�r�r~�
referencesr
r�rW)r$rwr�rorpr�Z	inputnameZ	inputargsZall_args�d�idx�argrC�valid�errorsr�Ztree�rootr�r�Zroot_nsr%r%r&r�|sD




zSoapClient.wsdl_call_get_paramsc

Cs�g}g}d}t|�t|�kr d}t|t�s:t|t�r:d}nd}|tkrJt}t|tttf�s�|t��vr�t|�|ks�|dur�z||�Wn.d}|�	dt|�|t|�|f�Yn0�n�t|t��rt
|�dk�rt|t��s|�|d|�\}}}	|s�d}|�|�|�|	��nlt|t��r|�r�|�r�|D]b}
|
|v�rZd}|�	d|
||f�n8|�||
||
�\}}}	|�s~d}|�|�|�|	��q2|D]$}
|
|v�r�|�	d|
||f��q�nD|�r�|�s�|�	d	||f�n$|�s�|�r�d}|�	d
||f�nnzt|t��rZ|d}|D]6}|�||�\}}}	|�s@d}|�|�|�|	��q n(|�s�d}|�	dt|�|t|�|f�|||fS)z�Validate the arguments (actual values) for the parameters structure.
           Fail for any invalid arguments or type mismatches.TFNzBType mismatch for argument value. parameter(%s): %s, value(%s): %srrz9Argument key %s not in parameter. parameter: %s, args: %sz6Parameter key %s not in args. parameter: %s, value: %sz3parameter keys not in args. parameter: %s, args: %sz3Args keys not in parameter. parameter: %s, args: %sz/Type mismatch. parameter(%s): %s, value(%s): %s)
�typer�r�r�r�r��tuplerr�r�r�r��extend)
r$Zstruct�valuer�r�r�Z	typematchZ
next_validZnext_errorsZ
next_warningsrCZstruct_list_value�itemr%r%r&r��sn(&




zSoapClient.wsdl_validate_paramscCs�|�|�}|�d�}|o.|��o.t|���d}t|t�rTd�dd�|��D��}nt|t�rft|�}|�d�}|r�t|d���d}|�d�p�d}d	||p�d
|r�|p�d
|�dd
�|fS)zDReturn operation documentation and invocation/returned value exampler�rz, css"|]\}}d|t|�fVqdS)z%s=%sN)r.rr%r%r&r��rtz"SoapClient.help.<locals>.<genexpr>r�rzNz%s(%s)
 -> %s:

%s
Headers: %sr:�
documentation)	r�r�r�r�r�r�r�r�r.)r$rwr�r�r�rzr%r%r&�help�s$






�zSoapClient.helpr5r8)z%http://schemas.xmlsoap.org/wsdl/soap/z'http://schemas.xmlsoap.org/wsdl/soap12/z http://schemas.xmlsoap.org/wsdl/z http://www.w3.org/2001/XMLSchemaz)http://www.w3.org/2001/XMLSchema-instancecCs�t||j|||j|j�}t||jd�}d|_t|ddd��p>d|_i}|�	�pPgD]�}|�
�dvrR|d}|d}	|	d	ur�t�d
|�qR|	|vr�t�d|	�qR|||	<t�
d||	f�t|	|j|||j|j�}t||jd�}
|�|
�qR|S)
zJUnmarshall the WSDL at the given url into a tree of SimpleXMLElement nodes)rHr:r�F�r��importrHrFNz"WSDL location not provided for %s!zWSDL %s already imported!zImporting wsdl %s from %s)rr`rRrLr
�wsdl_urirHr�r�r�rrUZwarningr]�xsd_urir�)r$�urlrE�force_downloadr�riZimported_wsdls�elementZwsdl_namespaceZ
wsdl_locationZ
imported_wsdlr%r%r&�_url_to_xml_trees*zSoapClient._url_to_xml_treecKCs0	d}i}|dd�D]D\}}||jvr<|�d�r<||t|�<||jkr|�d�rt|�}qi}i}	i}
i}i}dt|dd����vr�|ddd�r�|jd|jd�}
t|
dd��}|�d	|j�|_|jr�|jd
kr�|d	p�|j|_i}d|ji}|ddd�p�gD]L}|d|jdd�}|�pgD]*}
t	|
|||j|j
|j|||j|d�
�q�qt
|g�|jD�]|}|d
dd��ptgD�]`}i}|d}|�s�|d}t|�}|�|�}|d�p�d}||jk�rRt|�}t�|d�}||i}|d|f|	v�rt�}||jd<|d|i|	|d|f<n|	|d|f��d}||j|<d|j|<|�|�n�t|�}|�t|d|��}|�s�|�t|d|��}t�}|||<||jd<||j|<d|j|<|d|i}n||i}||	|d|f<�qv�q^|jD�],}|d}i}|
|<i}|d<|jD]�} | d}!i}"||!<| d|"d<| d�p@d�d�|"d<t| ddd���p`d|"d<| ddd��r�t| jd�|"d<t| jd�}#| �|#�|"d<| ddd��r�t| jd�|"d<i}$|"d <| d!dd�}%|%du�r| d!dd�D]}&t|&d�|$|&d<�q�q�q�|jD�]�}'t|'d�}||
v�r:�q|
|}|'d}(|'d"t|���dd�})|)�rp|)d#�prd}*|)�r�|)d�p�d}+|(t� |d�||*|+d$�},||(<|'jD�]} | d}!| d%t|���dd�}-|-�o�|-d&}.|,d�!|!i�}"|!|"d<|"�d|+�|"d<|.du�r|.|"d'<| ddd�}/|/�oB|/d(t|���dd�}0|0�rT|0d)�pVd}1g}2|/�ov|/d*t|���dd�}3|3�p�gD]"}4|4d|4d
d+�}5|2�"|5��q�d|"v�r�i}3|2D]J}6t|6�d��}7t|6�d
��}8t#|	|7�p�|"d|8�}5|5�r�|3�|5�n�q�t#|	|"d|1|"d�|"d<|3|"d*<z(t|"d���d}|jd}9|j$}:Wn6t%t&f�y�};z|"d}9d}:WYd};~;n
d};~;00|9�r�|9|"d<|:|"d,<|"d=nd|"d<d|"d*<| ddd�}<|<�o�|<d(t|���dd�}0|0�r�|0d)�p�d}=d|"v�rt#|	|"d|=�|"d<|"d=nd|"d<d |"v�rhi}%|"d-<|"d ��D]&}>t#|	|>|=�}?t|?�d}@|?|%|@<�q@g}A|<�o�|<d*t|���dd�}3|3�p�gD]"}4|4d|4d
d+�}5|A�"|5��q��q��q|d.dd��p�gD]�}B|Bd}C|C�s�q�|�!|Ci�}Di}E|Dd/<|Bd�p
d|Dd<|Bj'D]�}Ft|Fd"�}(|(|v�r4�qt� ||(�},|E|Fd<|Fd0t|���dd�}G|G�rt|Gd1�pvd}H|G�o�|�|G�(��}I|I�o�|j�|I�}J|,�|H|C|I|Jd2���q�q�|�s�d/ddii|d<td3d4�|��D��t)d5d4�|��D��}d};g|_*|D] }|;|k�	r$|j*�"|�|};�	q
|S)6zNConvert SimpleXMLElement tree representation of the WSDL into pythonic objectsNzxmlns:zhttp://xml.apache.org/xml-soap�typesFr��schemar|ZtargetNamespacezurn:DefaultNamespacer�)�global_namespaces�partr�r��namerZcomplexTyper��styleZparameterOrderr:� Zparameter_orderr�r��messageZ	input_msgrHr�Z
output_msg�
fault_msgsr��binding�	transport)r�r��port_type_namer�r�r�Z
soapActionrGr��partsr�)r�r�r�r�r�r��addressrF)rFr�rxr�css|]}t|�tur|VqdSr�r��r��er%r%r&r�6rtz3SoapClient._xml_tree_to_services.<locals>.<genexpr>css|]}t|�tur|VqdSrr�r�r%r%r&r�6rt)+�soap_ns_urisrZrr�r�r�r�r�rHrrWr`rRrr�rZget_namespace_urirr
r~r�r�rZportTyper��splitr�r�r�r�r��copy�deepcopy�
setdefaultr�rr��AttributeErrorr�r�Z
get_prefix�sorted�elements)Kr$rirEr�Zxsd_nsZ	soap_urisr�r�r�ZmessagesZ
port_typesZbindingsrer��attrsZimported_schemasr�r�Zschemasr�r�r�Zelement_nameZtype_nsZtype_uriZ	part_name�fnZodZport_type_noder�Z	port_typer�Zoperation_nodeZop_name�oprgr�r�r�Zbinding_nodeZbinding_nameZsoap_bindingr�r�r�Zop_oprGr�r�Zparts_input_bodyZparts_input_headersrzr�ZhdrZinput_headerZ
header_msgZheader_partZns_urir�r�r�Zparts_output_body�msgZmsg_objZtag_nameZparts_output_headersr�r�Zservr�r�r�rFrxr�r%r%r&�_xml_tree_to_services7sz


�









 
�







�,z SoapClient._xml_tree_to_servicesc	Csrt�d|�d}|�rdt�|���}t|t�rBtj�	||�}tj�
|��rt�d|f�t|d�}t�
|�}|��|ddd�t�d	�d
dd�ks�|d|kr�t�dt�t�d
|dtf�t�d|d|f�d}n|d|_|d|_|dSttd<|�|||�}|�|||�}|�rnt|d�}t�d	�d
||j|j|d�}t�||�|��|S)z"Parse Web Service Description v1.1zParsing wsdl url: %sFz%s.pklzUnpickle file %s�rr4Nr<r�rr�z/version or url mismatch! discarding cached wsdlzVersion: %s %sz
URL: %s %sTrHr�re�string�wb)r4r�rHr�re)rUr]�hashlibZmd5Z	hexdigestr�Z
basestringrOrPr��exists�open�pickle�loadr_rr�r�r��RuntimeWarningrHr�r�rr�r��dump)	r$r�rEr�Zfilename_pklrlZpklrirer%r%r&rd?sB


2


�zSoapClient.wsdl_parsecCs||j|<dS)zCSet SOAP Header value - this header will be sent for every request.N)rX)r$r�r�r%r%r&�__setitem__rszSoapClient.__setitem__cCs:|j��|j�t���r6t�d|j�t�	|j�dS)z+Finish the connection and remove temp fileszremoving %sN)
r`r_r>rZr[Z
gettempdirrUr]rO�unlinkr(r%r%r&r_vs
zSoapClient.closec
	Cs&d}|d7}|jD]X}t|t�r(|j}n6t|t�r:|j}n$t|t�r|jddkrt|�}nq|d|7}q|j	D�]�}|d|7}|j	|d}|D�]�}||}|ddkr�q�|d	|d
7}|d|d7}|d
|d7}|d|d7}|d7}|d}t
|�D�]}|�|�}|�d�}|�oB|�
��oBt|�
��d}d}	t|t��r�d|v�sl|ddk�r�|��D]X\}
}t|t��r�|j}n*t|t��r�|j}nt|t��r�|jd}|	d|
|f7}	�qt|�d�}|�r�t|d�
��d}|d|d
|	dd�f7}|d|7}�q
q�qr|S)NzSOAP CLIENTz

 ELEMENTSrr�z
  %sz
 SERVICE (%s)r�r�z
   PORT (%s)r�z
    Location: %srFz
    Soap ver: %sz
    Soap URI: %srxz
    OPERATIONSr�r�rr:r�z%s: %s, r�z
     %s(%s)���z
      > %s)r�r�r�r0rZxml_typer
rCr.rer�r�r�r�r�r�r�)
r$�sr�r�r�r�r�r�r�Z	input_strr�r�r�r%r%r&r/}s^






 


�zSoapClient.__repr__)F)r0r1r2�__doc__r	r#rvrmr�r�rur�r�r�r�r�r�r�Zxsi_urir�r�rdr�r_r/r%r%r%r&r9Js@
�
`j)4G�#

3r9cCs�i}|durdSd|vr(|�d�\}}n
d|}}d|vr^|�d�\}}|t|�|d<|d<d|vr||�d�\|d<|d<|S)	zJParses proxy address user:pass@host:port into a dict suitable for httplib2N�@r:�:Z
proxy_hostZ
proxy_portZ
proxy_userZ
proxy_pass)r��int)Z	proxy_strZ
proxy_dictZ	user_passZ	host_portZhostr�r%r%r&�parse_proxy�s
r�__main__)7rZ
__future__rr3r4r�r�ZcPickler��ImportErrorr�r�rSrOr[r�r:rrrrr	Z	simplexmlr
rrr
r�rrrZhelpersrrrrrrrrrrrZwsserZ	getLoggerr0rUr"rr�r��objectr9rr%r%r%r&�<module>
sL
8
�	l


Youez - 2016 - github.com/yon3zu
LinuXploit