=OXc@sdZddlZddlZddlmZmZdZdejfdYZdZ dZ ej j j Z ejjejfe _ejje _ej j jZejjfe_ejje_ej j jZejjfe_ejje_ej j jZejjfe_eje_ej j jZejjejejjejjejjejjge_ejje_ej j jZejje_ej j j Z ejjfe _ej j j!Z!ejejejfe!_ejj"fej j j#_d e$fd YZ%d Z&d Z'e&Z(e&Z)e&Z*d Z+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8e'e,Be-Be.Be/Be0Be1Be2Be3Be4Be5Be6Be7BZ9e(e-Be.BZ:e)e/Be0Be1Be2Be3Be4Be5Be6BZ;e*e,Be7BZ<dd(dYZ=dd)dYZ>dej?fdYZ@d ej?fd!YZAd"ej?fd#YZBejCeAejejjfej jDjE_d$ZFd%ZGd&ZHdd'ZJdS(*s 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. iN(tutbuiltinsc Csd}d}||B}d}|}d}tjj}d}d} tjjj||||tj||| } t| |j } tjjj || S(sf Call FormatMessage with a system error number to retrieve the descriptive error message. iiiN( tNonetctypestwintypestLPWSTRtwindlltkernel32tFormatMessageWtbyrefthandle_nonzero_successtvaluet LocalFree( terrnotALLOCATE_BUFFERt FROM_SYSTEMtflagstsourcet message_idt language_idt result_buffert buffer_sizet argumentstbytestmessage((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pytformat_system_messages*      t WindowsErrorcBsJeZdZddZedZedZdZdZ RS(sVmore info about errors at http://msdn.microsoft.com/en-us/library/ms681381(VS.85).aspxcCsw|dkr!tjjj}nt|}tjdkrQd|d|f}n ||f}tt |j |dS(Nii(ii( RRRRt GetLastErrorRtsyst version_infotsuperRt__init__(tselfR tstrerrortargs((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR9s   cCs|jS(N(R!(R ((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRCscCs|jS(N(twinerror(R ((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pytcodeGscCs|jS(N(R(R ((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyt__str__KscCsdjtS(Ns*{self.__class__.__name__}({self.winerror})(tformattvars(R ((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyt__repr__NsN( t__name__t __module__t__doc__RRtpropertyRR$R%R((((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR6s   cCs|dkrtndS(Ni(R(tresult((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR Qs it MemoryMapcBsGeZdZddZdZdZdZdZdZ RS(sL A memory map object which can have security attributes overridden. cCs(||_||_||_d|_dS(Ni(tnametlengthtsecurity_attributestpos(R R/R0R1((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRs   cCs|jrtj|jnd}d}d}d}tjjj|||d|jt|j }t |||krt dn||_ t ||ddd|_|S(NiiiisFailed to create file mapping(R1RR RRRtCreateFileMappingWR0RR/R t Exceptiontfilemapt MapViewOfFiletview(R tp_SAtINVALID_HANDLE_VALUEtPAGE_READWRITEtFILE_MAP_WRITER5((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyt __enter__s!    cCs ||_dS(N(R2(R R2((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pytseekscCst|tstt|}|j||jkrJtd|n|j|j}tj |}tj j j ||||j|7_dS(NsRefusing to write %d bytes( t isinstanceRtAssertionErrortlenR2R0t ValueErrorR7Rtc_size_tRRt RtlMoveMemory(R tmsgtntdestR0((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pytwrites cCs]tj|}|j|j}tj|}tjjj||||j|7_|jS(s0 Read n bytes from mapped view. ( Rtcreate_string_bufferR7R2RBRRRCtraw(R REtoutRR0((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pytreads cCs0tjjj|jtjjj|jdS(N(RRRtUnmapViewOfFileR7t CloseHandleR5(R texc_typetexc_valttb((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyt__exit__sN( R)R*R+RRR<R=RGRKRQ(((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR.s    iiiiiiii i@iiiiiit TokenAccesscBseZdZRS(i(R)R*t TOKEN_QUERY(((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRRstTokenInformationClasscBseZdZRS(i(R)R*t TokenUser(((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRTst TOKEN_USERcBs/eZdZdejfdejjfgZRS(itSIDt ATTRIBUTES(R)R*tnumRtc_void_pRtDWORDt_fields_(((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRVs tSECURITY_DESCRIPTORcBsweZdZejjZdZdejfdejfdefdej fdej fdej fdej fgZ RS( s typedef struct _SECURITY_DESCRIPTOR { UCHAR Revision; UCHAR Sbz1; SECURITY_DESCRIPTOR_CONTROL Control; PSID Owner; PSID Group; PACL Sacl; PACL Dacl; } SECURITY_DESCRIPTOR; itRevisiontSbz1tControltOwnertGrouptSacltDacl( R)R*R+RRtUSHORTtSECURITY_DESCRIPTOR_CONTROLtREVISIONtc_ubyteRZR\(((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR] s        tSECURITY_ATTRIBUTEScBsheZdZdejjfdejfdejjfgZdZ e dZ e j dZ RS(s typedef struct _SECURITY_ATTRIBUTES { DWORD nLength; LPVOID lpSecurityDescriptor; BOOL bInheritHandle; } SECURITY_ATTRIBUTES; tnLengthtlpSecurityDescriptortbInheritHandlecOs/tt|j||tjt|_dS(N(RRiRRtsizeofRj(R R"tkwargs((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR5scCs|jS(N(t _descriptor(R ((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyt descriptor9scCs||_tj||_dS(N(RoRt addressofRk(R R ((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRp=s ( R)R*R+RRR[RZtBOOLR\RR,Rptsetter(((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRi's  cCstjj}tjjj||jddtj|tj|j }t tjjj||jtj|tj |tj|tj |tj tjS(s: Given a token, get the token information for it. i(RRR[Rtadvapi32tGetTokenInformationRYR RHR R RmtcasttPOINTERRVtcontents(ttokentinformation_classt data_sizetdata((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRuLscCsMtjj}tjj|}ttjjj||tj||S(N(RRtHANDLER RRttOpenProcessTokenR (t proc_handletaccessR-((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR~Zs cCs+ttjjjtj}t|tS(s< Return a TOKEN_USER for the owner of this process. ( R~RRRtGetCurrentProcessRRRSRuRV(tprocess((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pytget_current_useras cCs|dkrt}nt|ts3tdt}t}||_d|_t j j j t j |tjt j j jt j ||jd|S(s Return a SECURITY_ATTRIBUTES structure with the SID set to the specified user (uses current user if none is specified). s user must be TOKEN_USER instanceiiN(RRR>RVR?R]RiRpRlRRRttInitializeSecurityDescriptorR RgtSetSecurityDescriptorOwnerRW(tusertSDtSA((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyt get_security_attributes_for_userks        (((KR+Rtctypes.wintypesRtparamiko.py3compatRRRRR t GMEM_MOVEABLERRt GlobalAllocRtUINTRBtargtypesR}trestypet GlobalLocktHGLOBALtLPVOIDt GlobalUnlockRrt GlobalSizeR3tCreateFileMappingRZR[RR6RLRCtHLOCALR tobjectR.t READ_CONTROLtSTANDARD_RIGHTS_REQUIREDtSTANDARD_RIGHTS_READtSTANDARD_RIGHTS_WRITEtSTANDARD_RIGHTS_EXECUTEtSTANDARD_RIGHTS_ALLtPOLICY_VIEW_LOCAL_INFORMATIONtPOLICY_VIEW_AUDIT_INFORMATIONtPOLICY_GET_PRIVATE_INFORMATIONtPOLICY_TRUST_ADMINtPOLICY_CREATE_ACCOUNTtPOLICY_CREATE_SECRETtPOLICY_CREATE_PRIVILEGEtPOLICY_SET_DEFAULT_QUOTA_LIMITStPOLICY_SET_AUDIT_REQUIREMENTStPOLICY_AUDIT_LOG_ADMINtPOLICY_SERVER_ADMINtPOLICY_LOOKUP_NAMEStPOLICY_NOTIFICATIONtPOLICY_ALL_ACCESSt POLICY_READt POLICY_WRITEtPOLICY_EXECUTERRRTt StructureRVR]RiRwRtRRuR~RRR(((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyts   $      </