a „oe#ã@s¸ddlZddlZddlZddlZddlZddlZddlZdadadd„Z dd„Z dd„Z dd „Z d d „Z d d „Zddd„Zddd„Zddd„Zdd„Zdd„Zdd„Zedkr´eƒdS)éNcCstr t|ƒdS)N)Ú verbose_levelÚprint)Úmsg©rú9C:\Program Files\Certbot\pkgs\win32\Demos\win32netdemo.pyÚverbosesrc Csäd}zt t|¡tdƒWntjy0Yn0i}||d<d|d<tj|d<d|d<tjtjB|d <t  td |¡zRzt  t|d d ¡td ƒWntjy¨Yn0t  t|dd ¡Wt t|¡nt t|¡0tdƒdS)z.Creates a new test user, then deletes the userZ PyNetTestUserz*Warning - deleted user before creating it!ÚnameZdeletemeÚpasswordZprivz'Delete me - created by Python test codeZcommentÚflagséZwrongÚnewz:ERROR: NetUserChangePassword worked with a wrong password!z9Created a user, changed their password, and deleted them!N) Úwin32netZ NetUserDelÚserverrÚerrorÚ win32netconZUSER_PRIV_USERZUF_NORMAL_ACCOUNTZ UF_SCRIPTZ NetUserAddZNetUserChangePassword)ZtestNameÚdrrrÚ CreateUsers,    rcCsvd}d}t tdtj|¡\}}}tdt|ƒ|fƒ|D]}td|dƒ|d}q8|sq^q|sjJdƒ‚tdƒd S) zEnumerates all the local usersréz3Call to NetUserEnum obtained %d entries of %d totalz Found user %srr zCould not find any users!zEnumerated all the local usersN)r Z NetUserEnumrrZFILTER_NORMAL_ACCOUNTrÚlenr)ÚresumeZnuserÚdataÚtotalÚuserrrrÚUserEnum0s ÿ ÿ  rcCsšd}d}t td|¡\}}}|D]X}td|ƒd}t t|dd|¡\}}}|D]}td|ƒ|d}qR|dkr4q q4q |sq‚q|sŽJdƒ‚tdƒdS) z Enumerates all the domain groupsrr ú!Found group %(name)s:%(comment)s rz Member %(name)sú/Couldnt find a single member in a single group!zEnumerated all the groupsN)r Z NetGroupEnumrrZNetGroupGetUsersr)ÚnmembersrrrÚgroupÚ memberresumeÚ memberdataÚmemberrrrÚ GroupEnumDs$  ÿ    r!c Cs¸d}d}t td|¡\}}}|D]v}td|ƒd}t t|dd|¡\}}}|D]6}t t|d¡\}} } |d}td||dfƒqR|dkr4q q4q |sq q|s¬Jd ƒ‚td ƒd S) zEnumerates all the local groupsrr rréZsidz Member %s (%s)Ú domainandnamerzEnumerated all the local groupsN)r ZNetLocalGroupEnumrrÚNetLocalGroupGetMembersÚ win32securityZLookupAccountSidr) rrrrrrrr ÚusernameÚdomainÚtyperrrÚLocalGroupEnum]s*  ÿ ÿ  r)cCs‚d}t tdtjd|¡\}}}|D]J}td|dƒd}t td|¡\}}}|D]}td|ƒqR|s:q"q:q"|sqvqtdƒdS) z%Enumerates all servers on the networkrédNzFound server %srr"zE %(netname)s (%(path)s):%(remark)s - in use by %(current_uses)d usersz)Enumerated all the servers on the network)r Z NetServerEnumrrZ SV_TYPE_ALLrZ NetShareEnumr)rrrÚsZ shareresumeZ sharedataZsharerrrÚ ServerEnumys* ÿ ÿ ÿÿr,c Csd}|durt ¡}| d¡dkr2t ¡d|}d}zt t|¡tdƒWntjybYn0d|i}t  td|¡z€d |i}t  t|||g¡t  t||¡\}}}td |ƒ|dd |krÔtd ||fƒt  t|d d „|Dƒ¡Wt t|¡nt t|¡0tdƒdS)zNCreates a local group, adds some members, deletes them, then removes the grouprNú\rZpython_test_groupz4WARNING: existing local group '%s' has been deleted.rr r#z members arez3ERROR: LocalGroup just added %s, but members are %rcSsg|] }|d‘qS)r#r)Ú.0ÚmrrrÚ ­ózLocalGroup..zHCreated a local group, added and removed members, then deleted the group) Úwin32apiÚ GetUserNameÚfindZ GetDomainNamer ZNetLocalGroupDelrrrZNetLocalGroupAddZNetLocalGroupAddMembersr$ZNetLocalGroupDelMembers)ÚunameÚlevelrZ group_dataÚuZmemZtotÚresrrrÚ LocalGroup”s2   ÿr9cCsP|durt ¡}tdƒt t|d¡}t| ¡ƒD]\}}td||fƒq2dS)z0Dumps level 3 information about the current userNz&Dumping level 3 information about userrz%s=%s) r2r3rr ÚNetUserGetInforÚlistÚitemsr)ÚuserNameÚinfoÚkeyÚvalrrrÚGetInfo´s rAc Csœ|durt ¡}t t|d¡}zf| ¡}d|d<t t|d|¡t t|d¡d}t|ƒdkrjtd|ƒ‚t dƒWt t|d|¡nt t|d|¡0dS)z>Attempts to change the current users comment, then set it backNrz Test commentZ usr_commentz-Could not read the same comment back - got %szChanged the data for the user) r2r3r r:rÚcopyZNetUserSetInfoÚstrÚ RuntimeErrorr)r=ZoldDatarr rrrÚSetInfo¾s   rEcCst dd¡}dS)zrrrÚSetComputerInfoÏsrFcCsxddl}td|j tjd¡ƒtdƒtdƒtdƒtdƒ|D]}t|jd|jƒqFtƒtdƒt d ¡dS) Nrz&Usage: %s [-s server ] [-v] [Test ...]z' -v : Verbose - print more informationz: -s : server - execute the tests against the named serverz- -c : include the CreateUser test by defaultzwhere Test is one of:ú:z-If not tests are specified, all tests are runr ) ÚosrÚpathÚbasenameÚsysÚargvÚ__name__Ú__doc__Úexit)ÚtestsrHÚtrrrÚusageÖsrRc CsXg}ttƒ ¡ƒD]$}t|ƒttƒkr|jr| |¡qt tj dd…d¡\}}d}|D]@\}}|dkrn|a |dkr~t |ƒ|dkrŽt da |dkrZd}qZt |ƒd krÄtd ƒ|}|sÂ| t¡ns, ,