U
    ÓZj^,  ã                   @   sÂ  d Z ddlZddlZddlmZmZ dd„ ZG dd„ dejƒZdd	„ Z	d
Z
ejjjZejjejfe_ejje_ejjjZejjfe_ejje_ejjjZejjfe_ejje_ejjjZejjfe_eje_ejjjZejjejejjejjejjejjge_ejje_ejjjZejje_ejjj Z ejjfe _ejjj!Z!ejejejfe!_ejj"fejjj#_G dd„ de$ƒZ%dZ&dZ'e&Z(e&Z)e&Z*dZ+dZ,d
Z-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8e'e,B e-B e.B e/B e0B e1B e2B e3B e4B e5B e6B e7B Z9e(e-B e.B Z:e)e/B e0B e1B e2B e3B e4B e5B e6B Z;e*e,B e7B Z<G dd„ dƒZ=G dd„ dƒZ>G d d!„ d!ej?ƒZ@G d"d#„ d#ej?ƒZAG d$d%„ d%ej?ƒZBe CeA¡ejejjfejjDjE_d&d'„ ZFd(d)„ ZGd*d+„ ZHd.d,d-„ZIdS )/zü
Windows API functions implemented as ctypes functions and classes as found
in jaraco.windows (3.4.1).

If you encounter issues with this module, please consider reporting the issues
in jaraco.windows and asking the author to port the fixes back here.
é    N)ÚuÚbuiltinsc              	   C   sn   d}d}||B }d}| }d}t j ¡ }d}d}	t jj ||||t  |¡||	¡}
t|
ƒ |j}t jj 	|¡ |S )zf
    Call FormatMessage with a system error number to retrieve
    the descriptive error message.
    é   é   Nr   )
ÚctypesÚwintypesÚLPWSTRÚwindllÚkernel32ZFormatMessageWÚbyrefÚhandle_nonzero_successÚvalueÚ	LocalFree)ÚerrnoZALLOCATE_BUFFERZFROM_SYSTEMÚflagsÚsourceZ
message_idZlanguage_idZresult_bufferÚbuffer_sizeÚ	argumentsÚbytesÚmessage© r   úS/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/paramiko/_winapi.pyÚformat_system_message   s,    
ùr   c                       sJ   e Zd ZdZd‡ fdd„	Zedd„ ƒZedd„ ƒZd	d
„ Zdd„ Z	‡  Z
S )ÚWindowsErrorzZmore info about errors at
    http://msdn.microsoft.com/en-us/library/ms681381(VS.85).aspxNc                    sP   |d krt jj ¡ }t|ƒ}tjdkr4d|d |f}n||f}tt| ƒj	|Ž  d S )N)é   r   r   )
r   r	   r
   ZGetLastErrorr   ÚsysÚversion_infoÚsuperr   Ú__init__)Úselfr   ÚstrerrorÚargs©Ú	__class__r   r   r   ;   s    
zWindowsError.__init__c                 C   s   | j S ©N)r    ©r   r   r   r   r   E   s    zWindowsError.messagec                 C   s   | j S r$   )Úwinerrorr%   r   r   r   ÚcodeI   s    zWindowsError.codec                 C   s   | j S r$   )r   r%   r   r   r   Ú__str__M   s    zWindowsError.__str__c                 C   s   dj f tƒ ŽS )Nz*{self.__class__.__name__}({self.winerror}))ÚformatÚvarsr%   r   r   r   Ú__repr__P   s    zWindowsError.__repr__)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   r'   r(   r+   Ú__classcell__r   r   r"   r   r   7   s   


r   c                 C   s   | dkrt ƒ ‚d S ©Nr   )r   )Úresultr   r   r   r   T   s    r   é   c                   @   sB   e Zd ZdZddd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )Ú	MemoryMapzL
    A memory map object which can have security attributes overridden.
    Nc                 C   s   || _ || _|| _d| _d S r2   )ÚnameÚlengthÚsecurity_attributesÚpos)r   r6   r7   r8   r   r   r   r   �   s    zMemoryMap.__init__c              	   C   sv   | j rt | j ¡nd }d}d}d}tjj |||d| jt| jƒ¡}t	|ƒ ||krZt
dƒ‚|| _t||dddƒ| _| S )Néÿÿÿÿé   r4   r   zFailed to create file mapping)r8   r   r   r	   r
   ÚCreateFileMappingWr7   r   r6   r   Ú	ExceptionÚfilemapÚMapViewOfFileÚview)r   Zp_SAZINVALID_HANDLE_VALUEZPAGE_READWRITEZFILE_MAP_WRITEr>   r   r   r   Ú	__enter__“   s*    ÿýúzMemoryMap.__enter__c                 C   s
   || _ d S r$   )r9   )r   r9   r   r   r   Úseek«   s    zMemoryMap.seekc                 C   sl   t |tƒst‚t|ƒ}| j| | jkr2td| ƒ‚| j| j }t 	|¡}tj
j |||¡ |  j|7  _d S )NzRefusing to write %d bytes)Ú
isinstancer   ÚAssertionErrorÚlenr9   r7   Ú
ValueErrorr@   r   Úc_size_tr	   r
   ÚRtlMoveMemory)r   ÚmsgÚnÚdestr7   r   r   r   Úwrite®   s    
zMemoryMap.writec                 C   sF   t  |¡}| j| j }t  |¡}t jj |||¡ |  j|7  _|jS )z0
        Read n bytes from mapped view.
        )	r   Úcreate_string_bufferr@   r9   rG   r	   r
   rH   Úraw)r   rJ   Úoutr   r7   r   r   r   Úread¸   s    

zMemoryMap.readc                 C   s$   t jj | j¡ t jj | j¡ d S r$   )r   r	   r
   ÚUnmapViewOfFiler@   ZCloseHandler>   )r   Úexc_typeÚexc_valÚtbr   r   r   Ú__exit__Ã   s    zMemoryMap.__exit__)N)
r,   r-   r.   r/   r   rA   rB   rL   rP   rU   r   r   r   r   r5   ˆ   s   

r5   i   i   i   é   r;   é   é   é    é@   é€   r   i   i   i   r   c                   @   s   e Zd ZdZdS )ÚTokenAccessrW   N)r,   r-   r.   ÚTOKEN_QUERYr   r   r   r   r\     s   r\   c                   @   s   e Zd ZdZdS )ÚTokenInformationClassrV   N)r,   r-   r.   Z	TokenUserr   r   r   r   r^     s   r^   c                   @   s&   e Zd ZdZdejfdejjfgZdS )Ú
TOKEN_USERrV   ÚSIDZ
ATTRIBUTESN)	r,   r-   r.   Únumr   Úc_void_pr   ÚDWORDÚ_fields_r   r   r   r   r_     s   
þr_   c                   @   sV   e Zd ZdZejjZdZdej	fdej	fdefdej
fdej
fdej
fd	ej
fgZd
S )ÚSECURITY_DESCRIPTORzÿ
    typedef struct _SECURITY_DESCRIPTOR
        {
        UCHAR Revision;
        UCHAR Sbz1;
        SECURITY_DESCRIPTOR_CONTROL Control;
        PSID Owner;
        PSID Group;
        PACL Sacl;
        PACL Dacl;
        }   SECURITY_DESCRIPTOR;
    rV   ZRevisionZSbz1ÚControlZOwnerÚGroupZSaclZDaclN)r,   r-   r.   r/   r   r   ZUSHORTZSECURITY_DESCRIPTOR_CONTROLÚREVISIONZc_ubyterb   rd   r   r   r   r   re     s   ùre   c                       sZ   e Zd ZdZdejjfdejfdejjfgZ	‡ fdd„Z
edd„ ƒZejd	d„ ƒZ‡  ZS )
ÚSECURITY_ATTRIBUTESz¦
    typedef struct _SECURITY_ATTRIBUTES {
        DWORD  nLength;
        LPVOID lpSecurityDescriptor;
        BOOL   bInheritHandle;
    } SECURITY_ATTRIBUTES;
    ÚnLengthÚlpSecurityDescriptorÚbInheritHandlec                    s"   t t| ƒj||Ž t t¡| _d S r$   )r   ri   r   r   Úsizeofrj   )r   r!   Úkwargsr"   r   r   r   G  s    zSECURITY_ATTRIBUTES.__init__c                 C   s   | j S r$   )Ú_descriptorr%   r   r   r   Ú
descriptorK  s    zSECURITY_ATTRIBUTES.descriptorc                 C   s   || _ t |¡| _d S r$   )ro   r   Z	addressofrk   )r   r   r   r   r   rp   O  s    )r,   r-   r.   r/   r   r   rc   rb   ÚBOOLrd   r   r0   rp   Úsetterr1   r   r   r"   r   ri   8  s   	

ý
ri   c              
   C   sv   t j ¡ }t jj | |jddt  |¡¡ t  |j	¡}t
t jj | |jt  |¡t  |¡t  |¡¡ƒ t  |t  t¡¡jS )z:
    Given a token, get the token information for it.
    r   )r   r   rc   r	   Úadvapi32ÚGetTokenInformationra   r   rM   r   r   rm   ÚcastÚPOINTERr_   Úcontents)ÚtokenZinformation_classÚ	data_sizeÚdatar   r   r   rt   _  s&    
    ÿûÿ	rt   c                 C   s6   t j ¡ }t j | ¡} tt jj | |t  |¡¡ƒ |S r$   )r   r   ÚHANDLEr   r	   rs   ÚOpenProcessTokenr   )Zproc_handleÚaccessr3   r   r   r   r|   t  s    
  ÿÿr|   c                  C   s   t tjj ¡ tjƒ} t| tƒS )z<
    Return a TOKEN_USER for the owner of this process.
    )	r|   r   r	   r
   ZGetCurrentProcessr\   r]   rt   r_   )Úprocessr   r   r   Úget_current_user  s
    
 ÿr   c                 C   sn   | dkrt ƒ } t| tƒs tdƒ‚tƒ }tƒ }||_d|_tj	j
 t |¡tj¡ tj	j
 t |¡| jd¡ |S )z…
    Return a SECURITY_ATTRIBUTES structure with the SID set to the
    specified user (uses current user if none is specified).
    Nz user must be TOKEN_USER instancerV   r   )r   rC   r_   rD   re   ri   rp   rl   r   r	   rs   ZInitializeSecurityDescriptorr   rh   ÚSetSecurityDescriptorOwnerr`   )ÚuserZSDZSAr   r   r   Ú get_security_attributes_for_user‰  s"     ÿ  ÿr‚   )N)Jr/   r   Zctypes.wintypesr   Zparamiko.py3compatr   r   r   r   r   ZGMEM_MOVEABLEr	   r
   ZGlobalAllocr   ZUINTrG   Zargtypesr{   ÚrestypeZ
GlobalLockZHGLOBALZLPVOIDZGlobalUnlockrq   Z
GlobalSizer<   ZCreateFileMappingrb   rc   r   r?   rQ   rH   ZHLOCALr   Úobjectr5   ZREAD_CONTROLZSTANDARD_RIGHTS_REQUIREDZSTANDARD_RIGHTS_READZSTANDARD_RIGHTS_WRITEZSTANDARD_RIGHTS_EXECUTEZSTANDARD_RIGHTS_ALLZPOLICY_VIEW_LOCAL_INFORMATIONZPOLICY_VIEW_AUDIT_INFORMATIONZPOLICY_GET_PRIVATE_INFORMATIONZPOLICY_TRUST_ADMINZPOLICY_CREATE_ACCOUNTZPOLICY_CREATE_SECRETZPOLICY_CREATE_PRIVILEGEZPOLICY_SET_DEFAULT_QUOTA_LIMITSZPOLICY_SET_AUDIT_REQUIREMENTSZPOLICY_AUDIT_LOG_ADMINZPOLICY_SERVER_ADMINZPOLICY_LOOKUP_NAMESZPOLICY_NOTIFICATIONZPOLICY_ALL_ACCESSZPOLICY_READZPOLICY_WRITEZPOLICY_EXECUTEr\   r^   Z	Structurer_   re   ri   rv   rs   r€   rt   r|   r   r‚   r   r   r   r   Ú<module>   sø   $







ú




Dÿþýüûúùø	÷
öõôÿÿþÿÿþýüûúùøÿÿþÿý

