Class: Vines::Command::Ldap

Inherits:
Object
  • Object
show all
Defined in:
lib/vines/command/ldap.rb

Instance Method Summary collapse

Instance Method Details

#run(opts) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/vines/command/ldap.rb', line 6

def run(opts)
  raise 'vines ldap <domain>' unless opts[:args].size == 1
  require opts[:config]
  domain = opts[:args].first
  unless storage = Config.instance.vhost(domain).storage rescue nil
    raise "#{domain} virtual host not found in conf/config.rb"
  end
  unless storage.ldap?
    raise "LDAP connector not configured for #{domain} virtual host"
  end
  $stdout.write('JID: ')
  jid = $stdin.gets.chomp
  jid = [jid, domain].join('@') unless jid.include?('@')
  $stdout.write('Password: ')
  `stty -echo`
  password = $stdin.gets.chomp
  `stty echo`
  puts

  begin
    user = storage.ldap.authenticate(jid, password)
  rescue => e
    raise "LDAP connection failed: #{e.message}"
  end

  filter = storage.ldap.filter(jid)
  raise "User not found with filter:\n  #{filter}" unless user
  name = user.name.empty? ? '<name missing>' : user.name
  puts "Found user #{name} with filter:\n  #{filter}"
end