ruby-ldapserver 0.5.0 → 0.5.1
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 +7 -0
- data/Rakefile +14 -0
- data/examples/README +5 -5
- data/examples/rbslapd2.rb +2 -2
- data/examples/rbslapd2.sql +11 -0
- data/lib/ldap/server/operation.rb +1 -1
- data/lib/ldap/server/util.rb +2 -2
- data/lib/ldap/server/version.rb +1 -1
- data/ruby-ldapserver.gemspec +4 -0
- data/spec/operation_spec.rb +39 -0
- data/spec/spec_helper.rb +0 -0
- data/test/util_test.rb +3 -3
- metadata +47 -26
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: abccbde672eeae57c5376073590192d391e524c9
|
4
|
+
data.tar.gz: 51a8549b288719b8740f8f9804ae68d1dac8785c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2a63a336eb6f1f79432459af9b847b86f4742c4e16dd7541569bf7dafbbcc8c2cb34183cae6cfcd4817f6bf4a3e1057d7b1bcb7f7fcaa5515ff5fd995bdd3cdb
|
7
|
+
data.tar.gz: 1d98bfe14ea67c0794ce696fd0f45b05d9b734bc672f7dbfa72b1ed3bd8bded79e18105c287b217a348fa4c066f270f72720fa8d0ecb321670cf6abd63663eb0
|
data/Rakefile
CHANGED
@@ -1 +1,15 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
|
3
|
+
require 'rake/testtask'
|
4
|
+
Rake::TestTask.new do |t|
|
5
|
+
t.test_files = FileList['test/*_test.rb']
|
6
|
+
end
|
7
|
+
|
8
|
+
begin
|
9
|
+
require 'rspec/core/rake_task'
|
10
|
+
RSpec::Core::RakeTask.new(:spec)
|
11
|
+
rescue LoadError
|
12
|
+
task :spec
|
13
|
+
end
|
14
|
+
|
15
|
+
task default: [:test, :spec]
|
data/examples/README
CHANGED
@@ -11,7 +11,7 @@ $ ruby rbslapd1.rb
|
|
11
11
|
|
12
12
|
In another window:
|
13
13
|
|
14
|
-
$ ldapadd -H ldap://127.0.0.1:1389/
|
14
|
+
$ ldapadd -x -H ldap://127.0.0.1:1389/
|
15
15
|
dn: dc=example,dc=com
|
16
16
|
cn: Top object
|
17
17
|
|
@@ -28,9 +28,9 @@ mail: wilma@bedrock.org
|
|
28
28
|
|
29
29
|
Try these queries:
|
30
30
|
|
31
|
-
$ ldapsearch -H ldap://127.0.0.1:1389/ -b "" "(objectclass=*)"
|
32
|
-
$ ldapsearch -H ldap://127.0.0.1:1389/ -b "dc=example,dc=com" -s base "(objectclass=*)"
|
33
|
-
$ ldapsearch -H ldap://127.0.0.1:1389/ -b "dc=example,dc=com" "(mail=fred*)"
|
31
|
+
$ ldapsearch -x -H ldap://127.0.0.1:1389/ -b "" "(objectclass=*)"
|
32
|
+
$ ldapsearch -x -H ldap://127.0.0.1:1389/ -b "dc=example,dc=com" -s base "(objectclass=*)"
|
33
|
+
$ ldapsearch -x -H ldap://127.0.0.1:1389/ -b "dc=example,dc=com" "(mail=fred*)"
|
34
34
|
|
35
35
|
If you terminate the server with Ctrl-C, its contents should be written
|
36
36
|
to disk as a YAML file.
|
@@ -52,7 +52,7 @@ In rbslapd1.rb, uncomment
|
|
52
52
|
and run mkcert.rb. Since this is a self-signed certificate, you'll have to
|
53
53
|
turn off certificate verification in the client too. For example:
|
54
54
|
|
55
|
-
$ env LDAPTLS_REQCERT="allow" ldapsearch -H ldaps://127.0.0.1:1389/
|
55
|
+
$ env LDAPTLS_REQCERT="allow" ldapsearch -x -H ldaps://127.0.0.1:1389/
|
56
56
|
|
57
57
|
Making your own CA and installing its certificate in the client, or
|
58
58
|
generating a Certificate Signing Request and sending it to a known CA, is
|
data/examples/rbslapd2.rb
CHANGED
@@ -23,9 +23,9 @@ require 'resolv-replace' # ruby threading DNS client
|
|
23
23
|
# work even if the bind occurs on a different client connection to the search.
|
24
24
|
#
|
25
25
|
# To test:
|
26
|
-
# ldapsearch -H ldap://127.0.0.1:1389/ -b "dc=example,dc=com" "(uid=brian)"
|
26
|
+
# ldapsearch -x -H ldap://127.0.0.1:1389/ -b "dc=example,dc=com" "(uid=brian)"
|
27
27
|
#
|
28
|
-
# ldapsearch -H ldap://127.0.0.1:1389/ -b "dc=example,dc=com" \
|
28
|
+
# ldapsearch -x -H ldap://127.0.0.1:1389/ -b "dc=example,dc=com" \
|
29
29
|
# -D "id=1,dc=example,dc=com" -W "(uid=brian)"
|
30
30
|
|
31
31
|
$debug = true
|
@@ -0,0 +1,11 @@
|
|
1
|
+
CREATE TABLE logins (
|
2
|
+
login_id MEDIUMINT NOT NULL AUTO_INCREMENT,
|
3
|
+
login CHAR(30) NOT NULL,
|
4
|
+
passwd CHAR(30),
|
5
|
+
PRIMARY KEY (login_id)
|
6
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
7
|
+
|
8
|
+
INSERT INTO logins(login, passwd) VALUES
|
9
|
+
('brian', 'foobar'), ('caroline', 'boing');
|
10
|
+
|
11
|
+
SELECT * FROM logins;
|
@@ -108,7 +108,7 @@ class Server
|
|
108
108
|
|
109
109
|
if @schema
|
110
110
|
# normalize the attribute names
|
111
|
-
@attributes = @attributes.
|
111
|
+
@attributes = @attributes.map { |a| a == '*' ? a : @schema.find_attrtype(a).to_s }
|
112
112
|
end
|
113
113
|
|
114
114
|
sendall = @attributes == [] || @attributes.include?("*")
|
data/lib/ldap/server/util.rb
CHANGED
@@ -33,10 +33,10 @@ class Server
|
|
33
33
|
|
34
34
|
def self.split_dn(dn)
|
35
35
|
# convert \\ to \5c, \+ to \2b etc
|
36
|
-
|
36
|
+
dn.gsub!(/\\([ #,+"\\<>;])/) { |match| format "\\%02x", match[1].ord }
|
37
37
|
|
38
38
|
# Now we know that \\ and \, do not exist, it's safe to split
|
39
|
-
parts =
|
39
|
+
parts = dn.split(/\s*[,;]\s*/)
|
40
40
|
|
41
41
|
parts.collect do |part|
|
42
42
|
res = {}
|
data/lib/ldap/server/version.rb
CHANGED
data/ruby-ldapserver.gemspec
CHANGED
@@ -17,6 +17,10 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.summary = %q{A pure-Ruby framework for building LDAP servers}
|
18
18
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
19
19
|
|
20
|
+
s.required_ruby_version = '>= 1.9'
|
21
|
+
|
20
22
|
s.add_development_dependency 'bundler', '~> 1.3'
|
21
23
|
s.add_development_dependency 'rake', '~> 10.0'
|
24
|
+
s.add_development_dependency 'ruby-ldap', '~> 0.9.16'
|
25
|
+
s.add_development_dependency 'rspec', '~> 3.1'
|
22
26
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'ldap/server/operation'
|
4
|
+
|
5
|
+
describe LDAP::Server::Operation do
|
6
|
+
let(:server) { double 'server' }
|
7
|
+
let(:connection) { double "connection", opt: { schema: schema, server: server } }
|
8
|
+
let(:message_id) { 337 }
|
9
|
+
subject(:operation) { LDAP::Server::Operation.new connection, message_id }
|
10
|
+
|
11
|
+
context 'on search' do
|
12
|
+
before do
|
13
|
+
operation.instance_variable_set :@attributes, attributes
|
14
|
+
operation.instance_variable_set :@rescount, 0
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'with schema and wildcard attribute query' do
|
18
|
+
let(:schema) do
|
19
|
+
double('schema').tap do |schema|
|
20
|
+
allow(schema).to receive(:find_attrtype).and_return nil
|
21
|
+
allow(schema).to receive(:find_attrtype).with('attr')\
|
22
|
+
.and_return double 'attr', usage: nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
let(:attributes) { %w(*) }
|
26
|
+
|
27
|
+
describe '#send_SearchResultEntry' do
|
28
|
+
it 'correctly handles wildcard attribute' do
|
29
|
+
expect(connection).to receive(:write).twice do |message|
|
30
|
+
expect(message).to include 'val'
|
31
|
+
end
|
32
|
+
|
33
|
+
operation.send_SearchResultEntry 'o=foo', 'attr' => 'val'
|
34
|
+
operation.send_SearchResultEntry 'o=bar', 'attr' => 'val'
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/spec/spec_helper.rb
ADDED
File without changes
|
data/test/util_test.rb
CHANGED
@@ -21,11 +21,11 @@ class TestLdapUtil < Test::Unit::TestCase
|
|
21
21
|
LDAP::Server::Operation.split_dn("CN=Before\\0DAfter,O=Test,C=GB")
|
22
22
|
)
|
23
23
|
res = LDAP::Server::Operation.split_dn("SN=Lu\\C4\\8Di\\C4\\87")
|
24
|
-
assert_equal([{"sn"=>"Lu\xc4\x8di\xc4\x87"}], res)
|
24
|
+
assert_equal([{ "sn" => "Lu\xc4\x8di\xc4\x87".force_encoding('ascii-8bit') }], res)
|
25
25
|
|
26
26
|
# Just for fun, let's try parsing it as UTF8
|
27
|
-
|
28
|
-
assert_equal(["L", "u", "\xc4\x8d", "i", "\xc4\x87"],
|
27
|
+
chars = res[0]["sn"].force_encoding('utf-8').scan(/./u)
|
28
|
+
assert_equal(["L", "u", "\xc4\x8d", "i", "\xc4\x87"], chars)
|
29
29
|
end
|
30
30
|
|
31
31
|
def test_join_dn
|
metadata
CHANGED
@@ -1,48 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-ldapserver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
5
|
-
prerelease:
|
4
|
+
version: 0.5.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Brian Candler
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-02-14 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '1.3'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '1.3'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '10.0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: ruby-ldap
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.9.16
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.9.16
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.1'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.1'
|
46
69
|
description: ruby-ldapserver is a lightweight, pure-Ruby skeleton for implementing
|
47
70
|
LDAP server applications.
|
48
71
|
email: B.Candler@pobox.com
|
@@ -50,7 +73,7 @@ executables: []
|
|
50
73
|
extensions: []
|
51
74
|
extra_rdoc_files: []
|
52
75
|
files:
|
53
|
-
- .gitignore
|
76
|
+
- ".gitignore"
|
54
77
|
- COPYING
|
55
78
|
- ChangeLog
|
56
79
|
- Gemfile
|
@@ -60,6 +83,7 @@ files:
|
|
60
83
|
- examples/mkcert.rb
|
61
84
|
- examples/rbslapd1.rb
|
62
85
|
- examples/rbslapd2.rb
|
86
|
+
- examples/rbslapd2.sql
|
63
87
|
- examples/rbslapd3.rb
|
64
88
|
- examples/speedtest.rb
|
65
89
|
- lib/ldap/server.rb
|
@@ -76,6 +100,8 @@ files:
|
|
76
100
|
- lib/ldap/server/util.rb
|
77
101
|
- lib/ldap/server/version.rb
|
78
102
|
- ruby-ldapserver.gemspec
|
103
|
+
- spec/operation_spec.rb
|
104
|
+
- spec/spec_helper.rb
|
79
105
|
- test/core.schema
|
80
106
|
- test/encoding_test.rb
|
81
107
|
- test/filter_test.rb
|
@@ -86,37 +112,32 @@ files:
|
|
86
112
|
- test/util_test.rb
|
87
113
|
homepage: https://github.com/inscitiv/ruby-ldapserver
|
88
114
|
licenses: []
|
115
|
+
metadata: {}
|
89
116
|
post_install_message:
|
90
117
|
rdoc_options:
|
91
|
-
- --main
|
118
|
+
- "--main"
|
92
119
|
- README.txt
|
93
120
|
require_paths:
|
94
121
|
- lib
|
95
122
|
required_ruby_version: !ruby/object:Gem::Requirement
|
96
|
-
none: false
|
97
123
|
requirements:
|
98
|
-
- -
|
124
|
+
- - ">="
|
99
125
|
- !ruby/object:Gem::Version
|
100
|
-
version: '
|
101
|
-
segments:
|
102
|
-
- 0
|
103
|
-
hash: 3477786009555667718
|
126
|
+
version: '1.9'
|
104
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
128
|
requirements:
|
107
|
-
- -
|
129
|
+
- - ">="
|
108
130
|
- !ruby/object:Gem::Version
|
109
131
|
version: '0'
|
110
|
-
segments:
|
111
|
-
- 0
|
112
|
-
hash: 3477786009555667718
|
113
132
|
requirements: []
|
114
133
|
rubyforge_project:
|
115
|
-
rubygems_version:
|
134
|
+
rubygems_version: 2.4.4
|
116
135
|
signing_key:
|
117
|
-
specification_version:
|
136
|
+
specification_version: 4
|
118
137
|
summary: A pure-Ruby framework for building LDAP servers
|
119
138
|
test_files:
|
139
|
+
- spec/operation_spec.rb
|
140
|
+
- spec/spec_helper.rb
|
120
141
|
- test/core.schema
|
121
142
|
- test/encoding_test.rb
|
122
143
|
- test/filter_test.rb
|