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



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

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

.commandsObject



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

def commands
  Optimist.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



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

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



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

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

.listObject



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

def list
  puts JSON.pretty_generate(Tapjoy::LDAP::Key.get_keys_from_ldap)
end

.removeObject



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

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

.showObject



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

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