summaryrefslogtreecommitdiff
path: root/lib/chef/win32/api
diff options
context:
space:
mode:
authorsersut <serdar@opscode.com>2014-07-09 16:05:27 -0700
committersersut <serdar@opscode.com>2014-07-14 13:18:31 -0700
commit04612158ac256ce46faad599e141ff7d1161fd66 (patch)
tree5d6ff018c0173c2ec0282bf9e68357964a06e578 /lib/chef/win32/api
parent3ec42a522a5b40d1ef217f23831b7417bda65761 (diff)
downloadchef-04612158ac256ce46faad599e141ff7d1161fd66.tar.gz
Automatically find out the sid for Administrators so that the specs can run on boxes for which the administrators account is renamed.
Diffstat (limited to 'lib/chef/win32/api')
-rw-r--r--lib/chef/win32/api/net.rb90
1 files changed, 90 insertions, 0 deletions
diff --git a/lib/chef/win32/api/net.rb b/lib/chef/win32/api/net.rb
new file mode 100644
index 0000000000..cb028020cf
--- /dev/null
+++ b/lib/chef/win32/api/net.rb
@@ -0,0 +1,90 @@
+#
+# Author:: Serdar Sutay (<serdar@getchef.com>)
+# Copyright:: Copyright 2014 Chef Software, Inc.
+# License:: Apache License, Version 2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+require 'chef/win32/api'
+
+class Chef
+ module ReservedNames::Win32
+ module API
+ module Net
+ extend Chef::ReservedNames::Win32::API
+
+ FILTER_TEMP_DUPLICATE_ACCOUNT = 0x0001
+ FILTER_NORMAL_ACCOUNT = 0x0002
+ FILTER_INTERDOMAIN_TRUST_ACCOUNT = 0x0008
+ FILTER_WORKSTATION_TRUST_ACCOUNT = 0x0010
+ FILTER_SERVER_TRUST_ACCOUNT = 0x0020
+
+ MAX_PREFERRED_LENGTH = 0xFFFF
+
+ NERR_Success = 0
+
+ ffi_lib "netapi32"
+
+ class USER_INFO_3 < FFI::Struct
+ layout :usri3_name, :LPWSTR,
+ :usri3_password, :LPWSTR,
+ :usri3_password_age, :DWORD,
+ :usri3_priv, :DWORD,
+ :usri3_home_dir, :LPWSTR,
+ :usri3_comment, :LPWSTR,
+ :usri3_flags, :DWORD,
+ :usri3_script_path, :LPWSTR,
+ :usri3_auth_flags, :DWORD,
+ :usri3_full_name, :LPWSTR,
+ :usri3_usr_comment, :LPWSTR,
+ :usri3_parms, :LPWSTR,
+ :usri3_workstations, :LPWSTR,
+ :usri3_last_logon, :DWORD,
+ :usri3_last_logoff, :DWORD,
+ :usri3_acct_expires, :DWORD,
+ :usri3_max_storage, :DWORD,
+ :usri3_units_per_week, :DWORD,
+ :usri3_logon_hours, :PBYTE,
+ :usri3_bad_pw_count, :DWORD,
+ :usri3_num_logons, :DWORD,
+ :usri3_logon_server, :LPWSTR,
+ :usri3_country_code, :DWORD,
+ :usri3_code_page, :DWORD,
+ :usri3_user_id, :DWORD,
+ :usri3_primary_group_id, :DWORD,
+ :usri3_profile, :LPWSTR,
+ :usri3_home_dir_drive, :LPWSTR,
+ :usri3_password_expired, :DWORD
+ end
+
+# NET_API_STATUS NetUserEnum(
+# _In_ LPCWSTR servername,
+# _In_ DWORD level,
+# _In_ DWORD filter,
+# _Out_ LPBYTE *bufptr,
+# _In_ DWORD prefmaxlen,
+# _Out_ LPDWORD entriesread,
+# _Out_ LPDWORD totalentries,
+# _Inout_ LPDWORD resume_handle
+# );
+ safe_attach_function :NetUserEnum, [ :LPCWSTR, :DWORD, :DWORD, :LPBYTE, :DWORD, :LPDWORD, :LPDWORD, :LPDWORD ], :DWORD
+
+# NET_API_STATUS NetApiBufferFree(
+# _In_ LPVOID Buffer
+# );
+ safe_attach_function :NetApiBufferFree, [ :LPVOID ], :DWORD
+ end
+ end
+ end
+end