1
0
mirror of https://github.com/samba-team/samba.git synced 2025-11-01 16:23:49 +03:00

r5335: Add a Close() method to SamrHandle object.

Add methods for {Query,Set}Security, Shutdown, CreateUser,
Open{User,Group,Alias} and RidToSid.

Time for a torture test I think!
This commit is contained in:
Tim Potter
2005-02-11 11:18:19 +00:00
committed by Gerald (Jerry) Carter
parent a28ca320dc
commit 94a3ff2380

View File

@@ -98,11 +98,34 @@ class SamrHandle:
def __del__(self):
if self.handle is not None:
self.Close()
def Close(self):
r = dcerpc.samr_Close()
r.data_in.handle = self.handle
dcerpc.dcerpc_samr_Close(self.pipe, r)
self.handle = None
def QuerySecurity(self, sec_info = 7):
r = dcerpc.samr_QuerySecurity()
r.data_in.handle = self.handle
r.data_in.sec_info = sec_info
result = dcerpc.dcerpc_samr_QuerySecurity(self.pipe, r)
return r.data_out.sdbuf.sd
def SetSecurity(self, sec_info = 7):
r = dcerpc.samr_SetSecurity()
r.data_in.handle = self.handle
r.data_in.sec_info = sec_info
class ConnectHandle(SamrHandle):
@@ -151,6 +174,13 @@ class ConnectHandle(SamrHandle):
return DomainHandle(self.pipe, r.data_out.domain_handle)
def Shutdown(self):
r = dcerpc.samr_Shutdown()
r.data_in.connect_handle = self.handle
result = dcerpc.dcerpc_samr_Shutdown(self.pipe, r)
class DomainHandle(SamrHandle):
@@ -231,8 +261,75 @@ class DomainHandle(SamrHandle):
return users
def CreateUser(self, account_name, access_mask = 0x02000000):
def Connect(pipe, system_name = '', access_mask = 0x02000000):
r = dcerpc.samr_CreateUser()
r.data_in.domain_handle = self.handle
r.data_in.account_name = dcerpc.samr_String()
r.data_in.account_name.string = account_name
r.data_in.access_mask = access_mask
result = dcerpc.dcerpc_samr_CreateUser(self.pipe, r)
return (r.data_out.user_handle,
dcerpc.uint32_array_getitem(r.data_out.rid, 0))
def OpenUser(self, rid, access_mask = 0x02000000):
r = dcerpc.samr_OpenUser()
r.data_in.domain_handle = self.handle
r.data_in.access_mask = access_mask
r.data_in.rid = rid
result = dcerpc.dcerpc_samr_OpenUser(self.pipe, r)
return UserHandle(pipe, r.data_out.user_handle)
def OpenGroup(self, rid, access_mask = 0x02000000):
r = dcerpc.samr_OpenGroup()
r.data_in.domain_handle = self.handle
r.data_in.access_mask = access_mask
r.data_in.rid = rid
result = dcerpc.dcerpc_samr_OpenGroup(self.pipe, r)
return GroupHandle(pipe, r.data_out.group_handle)
def OpenAlias(self, rid, access_mask = 0x02000000):
r = dcerpc.samr_OpenAlias()
r.data_in.domain_handle = self.handle
r.data_in.access_mask = access_mask
r.data_in.rid = rid
result = dcerpc.dcerpc_samr_OpenAlias(self.pipe, r)
return AliasHandle(pipe, r.data_out.group_handle)
def RidToSid(self, rid):
r = dcerpc.samr_RidToSid()
r.data_in.domain_handle = self.handle
result = dcerpc.dcerpc_samr_RidToSid(self.pipe, r)
return sid_to_string(r.data_out.sid)
class UserHandle(SamrHandle):
pass
class GroupHandle(SamrHandle):
pass
class AliasHandle(SamrHandle):
pass
def Connect2(pipe, system_name = '', access_mask = 0x02000000):
"""Connect to the SAMR pipe."""
r = dcerpc.samr_Connect2()
@@ -242,3 +339,53 @@ def Connect(pipe, system_name = '', access_mask = 0x02000000):
result = dcerpc.dcerpc_samr_Connect2(pipe, r)
return ConnectHandle(pipe, r.data_out.connect_handle)
# CreateDomainGroup
# CreateDomAlias
# GetAliasMembership
# LookupNames
# QueryGroupInfo
# SetGroupInfo
# AddGroupMember
# DeleteDomainGroup
# DeleteGroupMember
# QueryGroupMember
# SetMemberAttributesofGroup
# QueryAliasInfo
# SetAliasInfo
# DeleteDomAlias
# AddAliasMember
# DeleteAliasMember
# GetMembersinAlias
# DeleteUser
# QueryUserInfo
# SetUserInfo
# ChangePasswordUser
# GetGroupsForUser
# QueryDisplayInfo
# GetDisplayEnumerationIndex
# TestPrivateFunctionsDomain
# TestPrivateFunctionsUser
# GetUserPwInfo
# RemoveMemberFromForeignDomain
# QueryDomainInfo2
# QueryUserInfo2
# QueryDisplayInfo2
# GetDisplayEnumerationIndex2
# CreateUser2
# QueryDisplayInfo3
# AddMultipleMembersToAlias
# RemoveMultipleMembersFromAlias
# OemChangePasswordUser2
# ChangePasswordUser2
# GetDomPwInfo
# Connect
# SetUserInfo2
# SetBootKeyInformation
# GetBootKeyInformation
# Connect3
# Connect4
# ChangePasswordUser3
# Connect5
# SetDsrmPassword
# ValidatePassword