ldap-shell-utils 0.0.4 → 0.1.0
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.
- data/bin/lsu +8 -32
- data/lib/ldap-shell-utils/cli_application.rb +14 -13
- data/lib/ldap-shell-utils/ldap_connection.rb +28 -31
- data/lib/ldap-shell-utils/options-parser.rb +45 -0
- data/lib/ldap-shell-utils/version.rb +2 -2
- metadata +24 -23
data/bin/lsu
CHANGED
@@ -1,36 +1,12 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
1
|
+
#!/usr/bin/env ruby -W0
|
2
2
|
|
3
|
+
$:.unshift(File.join(File.dirname(__FILE__), %w[.. lib]))
|
3
4
|
|
4
|
-
$:.unshift( File.join( File.dirname( __FILE__ ), %w[.. lib] ) )
|
5
|
-
|
6
|
-
|
7
|
-
require 'rubygems'
|
8
|
-
require 'slop'
|
9
5
|
require 'ldap-shell-utils'
|
10
6
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
slop = Slop.new( :strict => true, :help=> true ) do
|
19
|
-
|
20
|
-
banner "Usage:\n\t#{$0} [options]\n\nOptions:"
|
21
|
-
|
22
|
-
on :a, :audit, 'Audit result entries'
|
23
|
-
on :c, :config, 'The configuration file', :optional => false
|
24
|
-
on :f, :filter, 'Query', :optional => false
|
25
|
-
on :attributes, 'Entry attribute list', :optional => true, :as => Array, :delimiter => ','
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
begin
|
30
|
-
slop.parse( )
|
31
|
-
options = slop.to_hash( true )
|
32
|
-
LdapShellUtils::CliApplication.run( options ) if validate_options( options )
|
33
|
-
rescue Slop::InvalidOptionError => e
|
34
|
-
$stderr.puts( e.message )
|
35
|
-
exit
|
36
|
-
end
|
7
|
+
LdapShellUtils::CliApplication.run( {
|
8
|
+
:config =>Choice.choices[:config],
|
9
|
+
:filter =>Choice.choices[:filter],
|
10
|
+
:attributes =>Choice.choices[:attributes],
|
11
|
+
:audit =>Choice.choices[:audit]
|
12
|
+
})
|
@@ -6,20 +6,21 @@ module LdapShellUtils
|
|
6
6
|
module CliApplication
|
7
7
|
extend self
|
8
8
|
|
9
|
-
def
|
9
|
+
def self.run(options)
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
11
|
+
ConfigContext.configure(File.expand_path(options[:config]))
|
12
|
+
|
13
|
+
options = { :audit=>false }.merge(options)
|
14
|
+
results = LdapConnection.new(ConfigContext.to_hash).search(options)
|
15
|
+
|
16
|
+
results.each do |entry|
|
17
|
+
puts "#{entry.dn}"
|
18
|
+
entry.each do |attr,values|
|
19
|
+
puts "#{attr}: #{(values.size == 1) ? values[0] : values.inspect}" unless attr == :dn
|
20
|
+
end
|
21
|
+
end if results
|
22
|
+
rescue Exception=>e
|
23
|
+
$stderr.puts(e.message)
|
23
24
|
end
|
24
25
|
end
|
25
26
|
end
|
@@ -6,46 +6,43 @@ require 'net/ldap'
|
|
6
6
|
module LdapShellUtils
|
7
7
|
class LdapConnection
|
8
8
|
|
9
|
-
OPERATIONAL_ATTRIBUTES = [
|
10
|
-
:creatorsname,
|
11
|
-
:createtimestamp,
|
12
|
-
:modifiersname,
|
13
|
-
:modifytimestamp
|
14
|
-
]
|
15
|
-
|
16
9
|
public
|
17
|
-
def initialize(
|
10
|
+
def initialize(config)
|
18
11
|
|
19
|
-
|
20
|
-
|
21
|
-
:
|
22
|
-
:
|
23
|
-
:
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
12
|
+
uri = URI.parse( config[:url] )
|
13
|
+
auth_config = {
|
14
|
+
:method =>:simple,
|
15
|
+
:username =>config[:username],
|
16
|
+
:password =>config[:password]
|
17
|
+
}
|
18
|
+
|
19
|
+
configuration = {
|
20
|
+
:host=>uri.host,
|
21
|
+
:port=>uri.port,
|
22
|
+
:base=>config[:base],
|
23
|
+
:auth=>auth_config
|
29
24
|
}
|
30
25
|
|
31
|
-
|
32
|
-
@connection
|
26
|
+
configuration[:encryption] = { :method => :simple_tls } if(uri.scheme == 'ldaps')
|
27
|
+
@connection = Net::LDAP.new(configuration)
|
33
28
|
|
34
29
|
self
|
35
|
-
rescue
|
36
|
-
raise ArgumentError.new(
|
30
|
+
rescue StandardError=>e
|
31
|
+
raise ArgumentError.new(e.message)
|
37
32
|
end
|
38
|
-
|
39
|
-
|
40
|
-
|
33
|
+
|
34
|
+
def search(options)
|
35
|
+
|
36
|
+
ldap_filter = ""
|
41
37
|
|
42
|
-
|
43
|
-
|
44
|
-
|
38
|
+
begin
|
39
|
+
ldap_filter = Net::LDAP::Filter.from_rfc2254(options[:filter])
|
40
|
+
rescue StandardError=>e
|
41
|
+
raise ArgumentError.new(e.message)
|
42
|
+
end
|
45
43
|
|
46
|
-
|
47
|
-
|
48
|
-
:return_result=>true )
|
44
|
+
options[:attributes] += [:creatorsname, :createtimestamp, :modifiersname, :modifytimestamp] if options[:audit]
|
45
|
+
@connection.search( :filter=>ldap_filter, :attributes=>options[:attributes], :return_result=>true )
|
49
46
|
end
|
50
47
|
end
|
51
48
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'choice'
|
3
|
+
|
4
|
+
Choice.options do
|
5
|
+
|
6
|
+
header ''
|
7
|
+
header ' options:'
|
8
|
+
|
9
|
+
option :config, :required=>true do
|
10
|
+
short '-c'
|
11
|
+
long '--config'
|
12
|
+
desc 'The LDAP config file'
|
13
|
+
end
|
14
|
+
|
15
|
+
option :filter, :required=>false do
|
16
|
+
short '-f'
|
17
|
+
long '--filter'
|
18
|
+
desc 'LDAP query filter'
|
19
|
+
default "(objectClass=*)"
|
20
|
+
end
|
21
|
+
|
22
|
+
option :attributes, :required=>false do
|
23
|
+
short '-a'
|
24
|
+
long '--attributes *ATTRIBUTES'
|
25
|
+
desc 'The attributes list'
|
26
|
+
default [:dn]
|
27
|
+
end
|
28
|
+
|
29
|
+
option :audit, :required=>false do
|
30
|
+
long '--audit'
|
31
|
+
desc 'Audit attributes'
|
32
|
+
default false
|
33
|
+
end
|
34
|
+
|
35
|
+
separator ''
|
36
|
+
separator ' help:'
|
37
|
+
|
38
|
+
option :help do
|
39
|
+
short '-h'
|
40
|
+
long '--help'
|
41
|
+
desc 'Show this help screen'
|
42
|
+
end
|
43
|
+
|
44
|
+
separator ''
|
45
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ldap-shell-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,8 +12,8 @@ cert_chain: []
|
|
12
12
|
date: 2011-06-11 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement: &
|
15
|
+
name: choice
|
16
|
+
requirement: &2156251920 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2156251920
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: net-ldap
|
27
|
-
requirement: &
|
27
|
+
requirement: &2156251440 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2156251440
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: config_context
|
38
|
-
requirement: &
|
38
|
+
requirement: &2156250960 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2156250960
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &2156250480 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.0.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2156250480
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: shoulda
|
60
|
-
requirement: &
|
60
|
+
requirement: &2156250000 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2156250000
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: jeweler
|
71
|
-
requirement: &
|
71
|
+
requirement: &2156249520 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 1.5.1
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2156249520
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rcov
|
82
|
-
requirement: &
|
82
|
+
requirement: &2156249040 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *2156249040
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: net-ldap
|
93
|
-
requirement: &
|
93
|
+
requirement: &2156248560 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *2156248560
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: slop
|
104
|
-
requirement: &
|
104
|
+
requirement: &2156248080 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *2156248080
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: config_context
|
115
|
-
requirement: &
|
115
|
+
requirement: &2156247600 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,7 +120,7 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :runtime
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *2156247600
|
124
124
|
description: This is a simple wrapper over ldapsearch util avoiding base64 dn and
|
125
125
|
others gotchas
|
126
126
|
email: javier.juarez@gmail.com
|
@@ -133,6 +133,7 @@ files:
|
|
133
133
|
- lib/ldap-shell-utils.rb
|
134
134
|
- lib/ldap-shell-utils/cli_application.rb
|
135
135
|
- lib/ldap-shell-utils/ldap_connection.rb
|
136
|
+
- lib/ldap-shell-utils/options-parser.rb
|
136
137
|
- lib/ldap-shell-utils/version.rb
|
137
138
|
- README.rdoc
|
138
139
|
- bin/lsu
|
@@ -151,7 +152,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
151
152
|
version: '0'
|
152
153
|
segments:
|
153
154
|
- 0
|
154
|
-
hash:
|
155
|
+
hash: 2177724174337720231
|
155
156
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
157
|
none: false
|
157
158
|
requirements:
|