class Facter::Resolvers::Identity

Constants

NAME_SAM_COMPATIBLE

Private Class Methods

build_fact_list(facts) click to toggle source
# File lib/facter/resolvers/windows/identity.rb, line 50
def build_fact_list(facts)
  @fact_list[:user] = facts[:user]
  @fact_list[:privileged] = facts[:privileged]
end
find_username() click to toggle source
# File lib/facter/resolvers/windows/identity.rb, line 18
def find_username
  require 'facter/resolvers/windows/ffi/identity_ffi'

  size_ptr = FFI::MemoryPointer.new(:win32_ulong, 1)
  IdentityFFI::GetUserNameExW(NAME_SAM_COMPATIBLE, FFI::Pointer::NULL, size_ptr)
  if FFI.errno != ERROR_MORE_DATA
    @log.debug "failure resolving identity facts: #{FFI.errno}"
    return
  end

  name_ptr = FFI::MemoryPointer.new(:wchar, size_ptr.read_uint32)
  if IdentityFFI::GetUserNameExW(NAME_SAM_COMPATIBLE, name_ptr, size_ptr) == FFI::WIN32FALSE
    @log.debug "failure resolving identity facts: #{FFI.errno}"
    return
  end

  { user: name_ptr.read_wide_string_with_length(size_ptr.read_uint32), privileged: privileged? }
end
post_resolve(fact_name, _options) click to toggle source
# File lib/facter/resolvers/windows/identity.rb, line 14
def post_resolve(fact_name, _options)
  @fact_list.fetch(fact_name) { retrieve_facts(fact_name) }
end
privileged?() click to toggle source
# File lib/facter/resolvers/windows/identity.rb, line 37
def privileged?
  result = IdentityFFI::IsUserAnAdmin()
  result && result != FFI::WIN32FALSE
end
retrieve_facts(fact_name) click to toggle source
# File lib/facter/resolvers/windows/identity.rb, line 42
def retrieve_facts(fact_name)
  result = find_username
  return unless result

  build_fact_list(result)
  @fact_list[fact_name]
end