resolv-srv 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/NEWS.md +4 -0
- data/README.md +33 -24
- data/examples/active-directory.rb +55 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71c1885d00053bc7b796987ff3d563544b1e45f5
|
4
|
+
data.tar.gz: 7b46e5dc1a3328c4ea88ac5ccd86c37d22ad26a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54fdd1d75c98f38cbc8309c2f44a76a5a15e77480da88103d962a4696a206ca7986c3fd124caa3243e2d8e50d0f5501d8e5a1ef91006a04f34acab613e696afc
|
7
|
+
data.tar.gz: 0d85e121d2477bade2b0ba033430a73a6252c6584ffaf3fbcdd7ee040dddb1875dbc205d21bd280302e58396a09e144022e4ac87ca78cccf3eca2ca48069297d
|
data/NEWS.md
CHANGED
data/README.md
CHANGED
@@ -24,7 +24,8 @@ and iterate over SRV records according to their relative priorities and weights.
|
|
24
24
|
## Synopsis
|
25
25
|
|
26
26
|
Look up your user information in Active Directory (assumes `/etc/ssl/certs`
|
27
|
-
contains the internal CA certificate for the domain
|
27
|
+
contains the internal CA certificate for the domain and that net-ldap v0.12.0 or
|
28
|
+
greater is used):
|
28
29
|
|
29
30
|
```ruby
|
30
31
|
#!/usr/bin/env ruby
|
@@ -33,34 +34,41 @@ require 'net/ldap'
|
|
33
34
|
require 'pp'
|
34
35
|
require 'resolv-srv'
|
35
36
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
username: username,
|
48
|
-
password: password,
|
49
|
-
},
|
50
|
-
encryption: {
|
51
|
-
method: :start_tls,
|
52
|
-
tls_options: { ca_path: '/etc/ssl/certs' }
|
53
|
-
},
|
54
|
-
) do |ldap|
|
55
|
-
return ldap.search(search_args)
|
56
|
-
end
|
57
|
-
rescue Net::LDAP::Error, OpenSSL::SSL::SSLError
|
58
|
-
puts "Failed with host #{srv.target} on port #{srv.port}: #{$!}"
|
37
|
+
class LDAPServerList
|
38
|
+
include Enumerable
|
39
|
+
|
40
|
+
def initialize(domain)
|
41
|
+
@domain = domain
|
42
|
+
end
|
43
|
+
|
44
|
+
def each
|
45
|
+
Resolv::DNS.open do |dns|
|
46
|
+
dns.each_srv_resource('ldap', 'tcp', @domain) do |srv|
|
47
|
+
yield(srv.target.to_s, srv.port)
|
59
48
|
end
|
60
49
|
end
|
61
50
|
end
|
62
51
|
end
|
63
52
|
|
53
|
+
def search_ldap(domain, username, password, search_args = {})
|
54
|
+
base = domain.split('.').map { |n| "dc=#{n}" }.join(',')
|
55
|
+
Net::LDAP.open(
|
56
|
+
hosts: LDAPServerList.new(domain),
|
57
|
+
base: base,
|
58
|
+
auth: {
|
59
|
+
method: :simple,
|
60
|
+
username: username,
|
61
|
+
password: password,
|
62
|
+
},
|
63
|
+
encryption: {
|
64
|
+
method: :start_tls,
|
65
|
+
tls_options: { ca_path: '/etc/ssl/certs' }
|
66
|
+
},
|
67
|
+
) do |ldap|
|
68
|
+
return ldap.search(search_args)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
64
72
|
print 'AD Domain: '
|
65
73
|
domain = gets.chomp
|
66
74
|
print 'AD Username: '
|
@@ -75,6 +83,7 @@ pp search_ldap(
|
|
75
83
|
password,
|
76
84
|
filter: "sAMAccountName=#{username}"
|
77
85
|
)
|
86
|
+
|
78
87
|
```
|
79
88
|
|
80
89
|
## Requirements
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'net/ldap'
|
4
|
+
require 'pp'
|
5
|
+
require 'resolv-srv'
|
6
|
+
|
7
|
+
class LDAPServerList
|
8
|
+
include Enumerable
|
9
|
+
|
10
|
+
def initialize(domain)
|
11
|
+
@domain = domain
|
12
|
+
end
|
13
|
+
|
14
|
+
def each
|
15
|
+
Resolv::DNS.open do |dns|
|
16
|
+
dns.each_srv_resource('ldap', 'tcp', @domain) do |srv|
|
17
|
+
yield(srv.target.to_s, srv.port)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def search_ldap(domain, username, password, search_args = {})
|
24
|
+
base = domain.split('.').map { |n| "dc=#{n}" }.join(',')
|
25
|
+
Net::LDAP.open(
|
26
|
+
hosts: LDAPServerList.new(domain),
|
27
|
+
base: base,
|
28
|
+
auth: {
|
29
|
+
method: :simple,
|
30
|
+
username: username,
|
31
|
+
password: password,
|
32
|
+
},
|
33
|
+
encryption: {
|
34
|
+
method: :start_tls,
|
35
|
+
tls_options: { ca_path: '/etc/ssl/certs' }
|
36
|
+
},
|
37
|
+
) do |ldap|
|
38
|
+
return ldap.search(search_args)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
print 'AD Domain: '
|
43
|
+
domain = gets.chomp
|
44
|
+
print 'AD Username: '
|
45
|
+
username = gets.chomp
|
46
|
+
print "AD Password (#{username}): "
|
47
|
+
password = ($stdin.tty? ? $stdin.noecho(&:gets) : $stdin.gets).chomp
|
48
|
+
puts
|
49
|
+
|
50
|
+
pp search_ldap(
|
51
|
+
domain,
|
52
|
+
"#{username}@#{domain}",
|
53
|
+
password,
|
54
|
+
filter: "sAMAccountName=#{username}"
|
55
|
+
)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resolv-srv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Bopp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -138,6 +138,7 @@ files:
|
|
138
138
|
- NEWS.md
|
139
139
|
- README.md
|
140
140
|
- Rakefile
|
141
|
+
- examples/active-directory.rb
|
141
142
|
- lib/resolv-srv.rb
|
142
143
|
- spec/each_srv_resource_spec.rb
|
143
144
|
homepage: https://github.com/javanthropus/resolv-srv
|