Class: Chef::Util::Windows::NetGroup
- Inherits:
-
Chef::Util::Windows
- Object
- Chef::Util::Windows
- Chef::Util::Windows::NetGroup
- Defined in:
- lib/chef/util/windows/net_group.rb
Overview
wrapper around a subset of the NetGroup* APIs. nothing Chef specific, but not complete enough to be its own gem, so util for now.
Instance Method Summary collapse
-
#initialize(groupname) ⇒ NetGroup
constructor
A new instance of NetGroup.
- #local_add ⇒ Object
- #local_add_members(members) ⇒ Object
- #local_delete ⇒ Object
- #local_get_members ⇒ Object
- #local_set_members(members) ⇒ Object
Constructor Details
#initialize(groupname) ⇒ NetGroup
Returns a new instance of NetGroup.
44 45 46 |
# File 'lib/chef/util/windows/net_group.rb', line 44 def initialize(groupname) @name = multi_to_wide(groupname) end |
Instance Method Details
#local_add ⇒ Object
80 81 82 83 84 85 |
# File 'lib/chef/util/windows/net_group.rb', line 80 def local_add rc = NetLocalGroupAdd.call(nil, 0, pack_str(@name), nil) if rc != NERR_Success raise ArgumentError, get_last_error(rc) end end |
#local_add_members(members) ⇒ Object
91 92 93 |
# File 'lib/chef/util/windows/net_group.rb', line 91 def local_add_members(members) modify_members(members, NetLocalGroupAddMembers) end |
#local_delete ⇒ Object
95 96 97 98 99 100 |
# File 'lib/chef/util/windows/net_group.rb', line 95 def local_delete rc = NetLocalGroupDel.call(nil, @name) if rc != NERR_Success raise ArgumentError, get_last_error(rc) end end |
#local_get_members ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/chef/util/windows/net_group.rb', line 48 def local_get_members group_members = [] handle = 0.chr * PTR_SIZE rc = ERROR_MORE_DATA while rc == ERROR_MORE_DATA ptr = 0.chr * PTR_SIZE nread = 0.chr * PTR_SIZE total = 0.chr * PTR_SIZE rc = NetLocalGroupGetMembers.call(nil, @name, 1, ptr, -1, nread, total, handle) if (rc == NERR_Success) || (rc == ERROR_MORE_DATA) ptr = ptr.unpack('L')[0] nread = nread.unpack('i')[0] members = 0.chr * (nread * (PTR_SIZE * 3)) #nread * sizeof(LOCALGROUP_MEMBERS_INFO_1) memcpy(members, ptr, members.size) #3 pointer fields in LOCALGROUP_MEMBERS_INFO_1, offset 2*PTR_SIZE is lgrmi1_name nread.times do |i| offset = (i * 3) + 2 member = lpwstr_to_s(members, offset) group_members << member end NetApiBufferFree(ptr) else raise ArgumentError, get_last_error(rc) end end group_members end |
#local_set_members(members) ⇒ Object
87 88 89 |
# File 'lib/chef/util/windows/net_group.rb', line 87 def local_set_members(members) modify_members(members, NetLocalGroupSetMembers) end |