public
Last active

  • 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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
require 'sinatra'
require 'net/ldap'
 
ldap = Net::LDAP.new
ldap.host = '192.168.1.1'
ldap.port = 389
ldap.auth "username", "password"
 
treebase = "dc=reputablecompany, dc=com"
 
['/people/:id', '/title/:id', '/email/:id', '/department/:id', '/location/:id', '/phone/:id'].each do |route|
get route do
case route
when /title/ then search_in = "title"
when /email/ then search_in = "mail"
when /department/ then search_in = "department"
when /location/ then search_in = "l"
when /phone/ then search_in = "telephonenumber"
when /people/ then search_in = "cn"
else search_in = "cn"
end
@searching_in = route.gsub(/\//, '').gsub(/:id/ , '').capitalize
@search_for = params[:id]
filter = Net::LDAP::Filter.eq(search_in, @search_for+'*')
 
@b = Hash.new
 
ldap.search(:base => treebase, :filter => filter) do |entry|
if entry.respond_to?("l")
title = ""
if entry.respond_to?("title")
title = entry.title
end
 
email = ""
if entry.respond_to?("mail")
email = entry.mail
end
telephonenumber = ""
if entry.respond_to?("telephonenumber")
telephonenumber = entry.telephonenumber
end
 
location = ""
if entry.respond_to?("l")
location = entry.l
end
department = ""
if entry.respond_to?("department")
department = entry.department
end
name = ""
if entry.respond_to?("cn")
name = entry.cn
end
@b[name] = {:email => email, :phone => telephonenumber, :location => location, :department => department, :title => title}#, :useraccountcontrol => useraccountcontrol}
 
end
end
 
erb :detail
end
end
 
__END__
 
@@detail
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="user-scalable=yes, width=device-width" />
<title>AD Listing</title>
</head>
<body>
<% @b.each do |attribute, values| %>
<div class="content">
<p><%= attribute.first %></p>
<dl>
<% values.each do |name, value|%>
<% if !value[0].nil? %>
<dt><%= name.capitalize %></dt>
<% if name.to_s == 'email' %>
<dd><a href="mailto:<%= value[0] %>"><%= value[0] %></a></dd>
<% elsif name.to_s == 'phone' %>
<dd><%= value[0] %></dd>
<% else %>
<dd><a href="/<%= name %>/<%= value[0] %>"><%= value[0] %></a></dd>
<% end %>
<% end %>
<% end %>
</dl>
</div>
<% end %>
</body>
</html>

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.