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
permalink #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
permalink #local_add ⇒ Object
[View source]
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 |
permalink #local_add_members(members) ⇒ Object
[View source]
91 92 93 |
# File 'lib/chef/util/windows/net_group.rb', line 91 def local_add_members(members) modify_members(members, NetLocalGroupAddMembers) end |
permalink #local_delete ⇒ Object
[View source]
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 |
permalink #local_get_members ⇒ Object
[View source]
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 |
permalink #local_set_members(members) ⇒ Object
[View source]
87 88 89 |
# File 'lib/chef/util/windows/net_group.rb', line 87 def local_set_members(members) modify_members(members, NetLocalGroupSetMembers) end |