Module: Tapjoy::LDAP::Key

Defined in:
lib/tapjoy/ldap/key.rb,
lib/tapjoy/ldap/key/add.rb,
lib/tapjoy/ldap/key/show.rb,
lib/tapjoy/ldap/key/remove.rb,
lib/tapjoy/ldap/key/install.rb

Overview

Entry point for all key subcommands

Defined Under Namespace

Classes: Add, Install, Remove, Show

Constant Summary collapse

SUB_COMMANDS =
%w(add remove install list show)

Class Method Summary collapse

Class Method Details

.addObject



31
32
33
34
# File 'lib/tapjoy/ldap/key.rb', line 31

def add
  key = Tapjoy::LDAP::Key::Add.new
  key.add
end

.commandsObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/tapjoy/ldap/key.rb', line 13

def commands
  Trollop::options do
    usage 'key [SUB_COMMAND] [options]'
    synopsis "\nThis object is used for user key management\nAvailable subcommands are: #{SUB_COMMANDS}"

    stop_on SUB_COMMANDS
  end

  cmd = ARGV.shift

  case cmd
  when 'add', 'remove', 'install', 'list', 'show'
    send(cmd) # call method with respective name
  else
    raise Tapjoy::LDAP::InvalidArgument
  end
end

.get_keys_from_commandline(filename = nil) ⇒ Object

Retrieve keys from file/stdin



66
67
68
69
70
71
72
73
74
75
76
# File 'lib/tapjoy/ldap/key.rb', line 66

def get_keys_from_commandline(filename=nil)
  ARGV << filename unless filename.nil?
  return_keys = []

  ARGF.each do |line|
    return_keys << line.chomp!
  end
  ARGV << '-'  # close ARGF
  return_keys.each { |key| verify_key(key) }
  return_keys
end

.get_keys_from_ldapObject



55
56
57
58
59
60
61
62
63
# File 'lib/tapjoy/ldap/key.rb', line 55

def get_keys_from_ldap

  key_results = {}
  filter = Net::LDAP::Filter.eq('sshPublicKey', '*')
  attributes = %w(uid sshPublicKey)
  results = Tapjoy::LDAP::client.search(attributes, filter)
  results.each {|result| key_results[result.uid[0]] = result.sshPublicKey}
  key_results
end

.installObject



41
42
43
44
# File 'lib/tapjoy/ldap/key.rb', line 41

def install
  key = Tapjoy::LDAP::Key::Install.new
  key.install
end

.listObject



46
47
48
# File 'lib/tapjoy/ldap/key.rb', line 46

def list
  Tapjoy::LDAP::Key.get_keys_from_ldap
end

.removeObject



36
37
38
39
# File 'lib/tapjoy/ldap/key.rb', line 36

def remove
  key = Tapjoy::LDAP::Key::Remove.new
  key.remove
end

.showObject



50
51
52
53
# File 'lib/tapjoy/ldap/key.rb', line 50

def show
  key = Tapjoy::LDAP::Key::Show.new
  key.show
end

.verify_key(key) ⇒ Object



78
79
80
81
82
83
84
# File 'lib/tapjoy/ldap/key.rb', line 78

def verify_key(key)
  unless key.start_with?('ssh')
    puts "Invalid key due to missing ssh key type:\n\n"
    puts "\t#{ key }\n\n"
    abort "Please verify your key and try again"
  end
end

.verify_user(user, results) ⇒ Object



86
87
88
89
90
91
92
93
94
# File 'lib/tapjoy/ldap/key.rb', line 86

def verify_user(user, results)
  # Make sure we return one, and only one user DN
  if results.size < 1
    puts "User (#{user}) not found."
    abort 'Please check the username and try again'
  elsif results.size > 1
    abort 'Multiple users found. Please narrow your search.'
  end
end