a oe#@sddlZddlZddlZddlZddlZddlZddlZdadaddZ ddZ ddZ dd Z d d Z d d ZdddZdddZdddZddZddZddZedkredS)NcCstr t|dS)N) verbose_levelprint)msgr9C:\Program Files\Certbot\pkgs\win32\Demos\win32netdemo.pyverbosesrc Csd}ztt|tdWntjy0Yn0i}||d<d|d<tj|d<d|d<tjtjB|d <t td |zRzt t|d d td WntjyYn0t t|dd Wtt|ntt|0tddS)z.Creates a new test user, then deletes the userZ PyNetTestUserz*Warning - deleted user before creating it!nameZdeletemepasswordZprivz'Delete me - created by Python test codeZcommentflagsZwrongnewz:ERROR: NetUserChangePassword worked with a wrong password!z9Created a user, changed their password, and deleted them!N) win32netZ NetUserDelserverrerror win32netconZUSER_PRIV_USERZUF_NORMAL_ACCOUNTZ UF_SCRIPTZ NetUserAddZNetUserChangePassword)ZtestNamedrrr CreateUsers,    rcCsvd}d}ttdtj|\}}}tdt||f|D]}td|d|d}q8|sq^q|sjJdtdd S) zEnumerates all the local usersrz3Call 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_ACCOUNTrlenr)resumeZnuserdatatotaluserrrrUserEnum0s   rcCsd}d}ttd|\}}}|D]X}td|d}tt|dd|\}}}|D]}td||d}qR|dkr4q q4q |sqq|sJdtddS) 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)nmembersrrrgroup memberresume memberdatamemberrrr GroupEnumDs$     r!c Csd}d}ttd|\}}}|D]v}td|d}tt|dd|\}}}|D]6}tt|d\}} } |d}td||dfqR|dkr4q q4q |sqq|sJd td d S) zEnumerates all the local groupsrr rrZsidz Member %s (%s) domainandnamerzEnumerated all the local groupsN)r ZNetLocalGroupEnumrrNetLocalGroupGetMembers win32securityZLookupAccountSidr) rrrrrrrr usernamedomaintyperrrLocalGroupEnum]s*    r)cCsd}ttdtjd|\}}}|D]J}td|dd}ttd|\}}}|D]}td|qR|s:q"q:q"|sqvqtddS) z%Enumerates all servers on the networkrdNzFound 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)rrrsZ shareresumeZ sharedataZsharerrr ServerEnumys*  r,c Csd}|durt}|ddkr2td|}d}ztt|tdWntjybYn0d|i}t td|zd |i}t t|||gt t||\}}}td ||dd |krtd ||ft t|d d |DWtt|ntt|0tddS)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|] }|dqS)r#r).0mrrr zLocalGroup..zHCreated a local group, added and removed members, then deleted the group) win32api GetUserNamefindZ GetDomainNamer ZNetLocalGroupDelrrrZNetLocalGroupAddZNetLocalGroupAddMembersr$ZNetLocalGroupDelMembers)unamelevelrZ group_datauZmemZtotresrrr LocalGroups2   r9cCsP|durt}tdtt|d}t|D]\}}td||fq2dS)z0Dumps level 3 information about the current userNz&Dumping level 3 information about userrz%s=%s) r2r3rr NetUserGetInforlistitemsr)userNameinfokeyvalrrrGetInfos rAc Cs|durt}tt|d}zf|}d|d<tt|d|tt|dd}t|dkrjtd|t dWtt|d|ntt|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:rcopyZNetUserSetInfostr RuntimeErrorr)r=ZoldDatarr rrrSetInfos   rEcCstdd}dS)zrrrSetComputerInfosrFcCsxddl}td|jtjdtdtdtdtd|D]}t|jd|jqFttdtd 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 ) osrpathbasenamesysargv__name____doc__exit)testsrHtrrrusagesrRc CsXg}ttD]$}t|ttkr|jr||qttj ddd\}}d}|D]@\}}|dkrn|a |dkr~t ||dkrt da |dkrZd}qZt |d krtd |}|s|tns, ,