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
|