o
    g+                     @   s  d Z ddlZddlZddl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Z#dZ$dZ%e$Z&e$Z'e$Z(dZ)dZ*d
Z+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6e%e*B e+B e,B e-B e.B e/B e0B e1B e2B e3B e4B e5B Z7e&e+B e,B Z8e'e-B e.B e/B e0B e1B e2B e3B e4B Z9e(e*B e5B Z:G dd dZ;G dd dZ<G d d! d!ej=Z>G d"d# d#ej=Z?G d$d% d%ej=Z@eAe?ejejjfej
jBjC_d&d' ZDd(d) ZEd*d+ ZFd.d,d-ZGd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)uc              	   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kernel32FormatMessageWbyrefhandle_nonzero_successvalue	LocalFree)errnoALLOCATE_BUFFERFROM_SYSTEMflagssource
message_idlanguage_idresult_bufferbuffer_size	argumentsbytesmessage r   J/var/www/html/api-tag/env/lib/python3.10/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                    s8   |d u r
t jj }t|}d|d |f}t j|  d S Nr   )r   r   r	   GetLastErrorr   super__init__)selfr   strerrorargs	__class__r   r   r"   ;   s
   zWindowsError.__init__c                 C      | j S N)r$   r#   r   r   r   r   B      zWindowsError.messagec                 C   r(   r)   )winerrorr*   r   r   r   codeF   r+   zWindowsError.codec                 C   r(   r)   )r   r*   r   r   r   __str__J   s   zWindowsError.__str__c                 C   s   dj di t S )Nz*{self.__class__.__name__}({self.winerror})r   )formatvarsr*   r   r   r   __repr__M   s   zWindowsError.__repr__r)   )__name__
__module____qualname____doc__r"   propertyr   r-   r.   r1   __classcell__r   r   r&   r   r   7   s    

r   c                 C   s   | dkrt  d S r   )r   )resultr   r   r   r   Q   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 r   )namelengthsecurity_attributespos)r#   r;   r<   r=   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r-t
d|| _t||ddd| _| S )N   r9   r   zFailed to create file mapping)r=   r   r   r   r	   CreateFileMappingWr<   r   r;   r   	ExceptionfilemapMapViewOfFileview)r#   p_SAINVALID_HANDLE_VALUEPAGE_READWRITEFILE_MAP_WRITErC   r   r   r   	__enter__   s*   zMemoryMap.__enter__c                 C   s
   || _ d S r)   )r>   )r#   r>   r   r   r   seek   s   
zMemoryMap.seekc                 C   sp   t |tsJ t|}| j| | jkrtd| d| j| j }t|}tj	j
||| |  j|7  _d S )NzRefusing to write z bytes)
isinstancer   lenr>   r<   
ValueErrorrE   r   c_size_tr   r	   RtlMoveMemory)r#   msgndestr<   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_bufferrE   r>   rO   r   r	   rP   raw)r#   rR   outr   r<   r   r   r   read   s   

zMemoryMap.readc                 C   s$   t jj| j t jj| j d S r)   )r   r   r	   UnmapViewOfFilerE   CloseHandlerC   )r#   exc_typeexc_valtbr   r   r   __exit__   s   zMemoryMap.__exit__r)   )
r2   r3   r4   r5   r"   rJ   rK   rT   rX   r^   r   r   r   r   r:      s    

r:   i   i   i      r@             @      r   i   i   i   r   c                   @      e Zd ZdZdS )TokenAccessr`   N)r2   r3   r4   TOKEN_QUERYr   r   r   r   rf   	      rf   c                   @   re   )TokenInformationClassr_   N)r2   r3   r4   	TokenUserr   r   r   r   ri     rh   ri   c                   @   s&   e Zd ZdZdejfdejjfgZdS )
TOKEN_USERr_   SID
ATTRIBUTESN)	r2   r3   r4   numr   c_void_pr   DWORD_fields_r   r   r   r   rk     s
    
rk   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;
    r_   RevisionSbz1ControlOwnerGroupSaclDaclN)r2   r3   r4   r5   r   r   USHORTSECURITY_DESCRIPTOR_CONTROLREVISIONc_ubytero   rq   r   r   r   r   rr     s    rr   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  j|i | tt| _d S r)   )r!   r"   r   sizeofr~   r   )r#   r%   kwargsr&   r   r   r"   D  s   zSECURITY_ATTRIBUTES.__init__c                 C   r(   r)   )_descriptorr*   r   r   r   
descriptorH  r+   zSECURITY_ATTRIBUTES.descriptorc                 C   s   || _ t|| _d S r)   )r   r   	addressofr   )r#   r   r   r   r   r   L  s   )r2   r3   r4   r5   r   r   rp   ro   BOOLrq   r"   r6   r   setterr7   r   r   r&   r   r~   5  s    
	

r~   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   rp   r   advapi32GetTokenInformationrn   r   rU   r   r   r   castPOINTERrk   contents)tokeninformation_class	data_sizedatar   r   r   r   \  s   
	r   c                 C   s6   t j }t j| } tt jj| |t | |S r)   )r   r   HANDLEr   r   r   OpenProcessTokenr   )proc_handleaccessr8   r   r   r   r   q  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	   GetCurrentProcessrf   rg   r   rk   )processr   r   r   get_current_user|  s   
r   c                 C   sn   | du rt  } t| tsJ 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 instancer_   r   )r   rL   rk   rr   r~   r   r   r   r   r   InitializeSecurityDescriptorr   r|   SetSecurityDescriptorOwnerrl   )userSDSAr   r   r    get_security_attributes_for_user  s   r   r)   )Hr5   builtinsctypes.wintypesr   paramiko.utilr   r   r   r   GMEM_MOVEABLEr   r	   GlobalAllocr   UINTrO   argtypesr   restype
GlobalLockHGLOBALLPVOIDGlobalUnlockr   
GlobalSizerA   CreateFileMappingro   rp   r   rD   rY   rP   HLOCALr   r:   READ_CONTROLSTANDARD_RIGHTS_REQUIREDSTANDARD_RIGHTS_READSTANDARD_RIGHTS_WRITESTANDARD_RIGHTS_EXECUTESTANDARD_RIGHTS_ALLPOLICY_VIEW_LOCAL_INFORMATIONPOLICY_VIEW_AUDIT_INFORMATIONPOLICY_GET_PRIVATE_INFORMATIONPOLICY_TRUST_ADMINPOLICY_CREATE_ACCOUNTPOLICY_CREATE_SECRETPOLICY_CREATE_PRIVILEGEPOLICY_SET_DEFAULT_QUOTA_LIMITSPOLICY_SET_AUDIT_REQUIREMENTSPOLICY_AUDIT_LOG_ADMINPOLICY_SERVER_ADMINPOLICY_LOOKUP_NAMESPOLICY_NOTIFICATIONPOLICY_ALL_ACCESSPOLICY_READPOLICY_WRITEPOLICY_EXECUTErf   ri   	Structurerk   rr   r~   r   r   r   r   r   r   r   r   r   r   r   <module>   s    $












D	


