module PasswordExpirationNotifier::Utils

Public Instance Methods

config(options) click to toggle source
# File lib/password_expiration_notifier/utils.rb, line 69
def config(options)
  PasswordExpirationNotifier::Config.new(options)
end
expire_at(password_last_set_t, expiration_days) click to toggle source
# File lib/password_expiration_notifier/utils.rb, line 17
def expire_at(password_last_set_t, expiration_days)
  password_last_set_t + (24 * 60 * 60 * expiration_days)
end
expire_soon?(remaining, expire_within) click to toggle source
# File lib/password_expiration_notifier/utils.rb, line 21
def expire_soon?(remaining, expire_within)
  remaining <= 0 || remaining <= expire_within
end
expired?(remaining, expire_within) click to toggle source
# File lib/password_expiration_notifier/utils.rb, line 25
def expired?(remaining, expire_within)
  remaining <= 0 || remaining > expire_within
end
fetch_users(conf) click to toggle source
# File lib/password_expiration_notifier/utils.rb, line 50
def fetch_users(conf)
  ad = PasswordExpirationNotifier::LDAP.new(conf)
  ad.add_filter('objectClass', 'user')
  if conf.ldap.filterkey && conf.ldap.filtervalue
    ad.add_filter(conf.ldap.filterkey, conf.ldap.filtervalue)
  end

  selected_users = {}
  ad.users.each do |user, attr|
    attr[:remaining] = remaining(attr[:pwdlastset], conf.expiration_days)
    attr[:expire_at] = expire_at(attr[:pwdlastset], conf.expiration_days)
    if options[:all] || expire_soon?(attr[:remaining], conf.expire_within)
      next if conf.exclude_expired && attr[:remaining] <= 0
      selected_users[user] = attr
    end
  end
  selected_users
end
now() click to toggle source
# File lib/password_expiration_notifier/utils.rb, line 9
def now
  @now ||= Time.now
end
remaining(password_last_set_t, expiration_days) click to toggle source
# File lib/password_expiration_notifier/utils.rb, line 13
def remaining(password_last_set_t, expiration_days)
  -((now - password_last_set_t).divmod(24*60*60)[0] - expiration_days)
end
select(attr, conf) click to toggle source
# File lib/password_expiration_notifier/utils.rb, line 37
def select(attr, conf)
  if options[:all]
    attr
  else
    if conf.exclude_expired && !expired?(attr[:remaining], conf.expire_within)
      attr
    end
    if expire_soon?(attr[:remaining], conf.expire_within)
    end
  end

end
show_list(users) click to toggle source
# File lib/password_expiration_notifier/utils.rb, line 29
def show_list(users)
  puts "username\tdescription\texpire_at\tremaining"
  users.sort_by {|user| user[1][:remaining] }.each do |user|
    attr = user[1]
    puts "#{attr[:samaccountname]}\t#{attr[:description]}\t#{attr[:expire_at]}\t#{attr[:remaining]}"
  end
end