Module: PasswordExpirationNotifier::Utils

Included in:
CLI
Defined in:
lib/password_expiration_notifier/utils.rb

Instance Method Summary collapse

Instance Method Details

#config(options) ⇒ Object



69
70
71
# 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) ⇒ Object



17
18
19
# 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) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
# 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) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/password_expiration_notifier/utils.rb', line 25

def expired?(remaining, expire_within)
  remaining <= 0 || remaining > expire_within
end

#fetch_users(conf) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# 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

#nowObject



9
10
11
# File 'lib/password_expiration_notifier/utils.rb', line 9

def now
  @now ||= Time.now
end

#remaining(password_last_set_t, expiration_days) ⇒ Object



13
14
15
# 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) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
# 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) ⇒ Object



29
30
31
32
33
34
35
# 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