public
Created

  • Download Gist
gistfile1.rb
Ruby
1 2 3 4 5 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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
require 'sinatra'
require 'net/ldap'
 
ldap = Net::LDAP.new
ldap.host = '192.168.1.1'
ldap.port = 389
ldap.auth "username", "password"
 
get '/people/:id' do
filter = Net::LDAP::Filter.eq('cn', params[:id] + '*')
treebase = "dc=reputablecompany, dc=com"
 
@b = Hash.new
 
ldap.search(:base => treebase, :filter => filter) do |entry|
department = ""
if entry.respond_to?("department")
department = entry.department
end
name = ""
if entry.respond_to?("cn")
name = entry.cn
end
@b[name] = {:department => department}
end
erb :people
end
 
 
get '/department/:id' do
filter = Net::LDAP::Filter.eq('cn', params[:id] + '*')
treebase = "dc=reputablecompany, dc=com"
 
@b = Hash.new
 
ldap.search(:base => treebase, :filter => filter) do |entry|
department = ""
if entry.respond_to?("department")
department = entry.department
end
name = ""
if entry.respond_to?("cn")
name = entry.cn
end
@b[name] = {:department => department}
end
erb :people
end
 
__END__
 
@@people
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="user-scalable=yes, width=device-width" />
<title>Home | AD Listing</title>
</head>
<body>
 
<% @b.each do |attribute, values| %>
<h1><%= attribute.first %></h1>
<ul>
<% values.each do |name, value|%>
<% if !value[0].nil? %>
<li><%= name.capitalize %>:
<%= value[0] %></li>
<% end %>
<% end %>
</ul>
<% end %>
 
</body>
</html>

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.