rom-ldap 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +251 -0
- data/CONTRIBUTING.md +18 -0
- data/README.md +172 -0
- data/TODO.md +33 -0
- data/config/responses.yml +328 -0
- data/lib/dry/monitor/ldap/colorizers/default.rb +17 -0
- data/lib/dry/monitor/ldap/colorizers/rouge.rb +31 -0
- data/lib/dry/monitor/ldap/logger.rb +58 -0
- data/lib/rom-ldap.rb +1 -0
- data/lib/rom/ldap.rb +22 -0
- data/lib/rom/ldap/alias.rb +30 -0
- data/lib/rom/ldap/associations.rb +6 -0
- data/lib/rom/ldap/associations/core.rb +23 -0
- data/lib/rom/ldap/associations/many_to_many.rb +18 -0
- data/lib/rom/ldap/associations/many_to_one.rb +22 -0
- data/lib/rom/ldap/associations/one_to_many.rb +32 -0
- data/lib/rom/ldap/associations/one_to_one.rb +19 -0
- data/lib/rom/ldap/associations/self_ref.rb +35 -0
- data/lib/rom/ldap/attribute.rb +327 -0
- data/lib/rom/ldap/client.rb +185 -0
- data/lib/rom/ldap/client/authentication.rb +118 -0
- data/lib/rom/ldap/client/operations.rb +233 -0
- data/lib/rom/ldap/commands.rb +6 -0
- data/lib/rom/ldap/commands/create.rb +41 -0
- data/lib/rom/ldap/commands/delete.rb +17 -0
- data/lib/rom/ldap/commands/update.rb +35 -0
- data/lib/rom/ldap/constants.rb +193 -0
- data/lib/rom/ldap/dataset.rb +286 -0
- data/lib/rom/ldap/dataset/conversion.rb +62 -0
- data/lib/rom/ldap/dataset/dsl.rb +299 -0
- data/lib/rom/ldap/dataset/persistence.rb +44 -0
- data/lib/rom/ldap/directory.rb +126 -0
- data/lib/rom/ldap/directory/capabilities.rb +71 -0
- data/lib/rom/ldap/directory/entry.rb +200 -0
- data/lib/rom/ldap/directory/env.rb +155 -0
- data/lib/rom/ldap/directory/operations.rb +282 -0
- data/lib/rom/ldap/directory/password.rb +122 -0
- data/lib/rom/ldap/directory/root.rb +187 -0
- data/lib/rom/ldap/directory/tokenization.rb +66 -0
- data/lib/rom/ldap/directory/transactions.rb +31 -0
- data/lib/rom/ldap/directory/vendors/active_directory.rb +129 -0
- data/lib/rom/ldap/directory/vendors/apache_ds.rb +27 -0
- data/lib/rom/ldap/directory/vendors/e_directory.rb +16 -0
- data/lib/rom/ldap/directory/vendors/open_directory.rb +12 -0
- data/lib/rom/ldap/directory/vendors/open_dj.rb +25 -0
- data/lib/rom/ldap/directory/vendors/open_ldap.rb +35 -0
- data/lib/rom/ldap/directory/vendors/three_eight_nine.rb +16 -0
- data/lib/rom/ldap/directory/vendors/unknown.rb +22 -0
- data/lib/rom/ldap/dsl.rb +76 -0
- data/lib/rom/ldap/errors.rb +47 -0
- data/lib/rom/ldap/expression.rb +77 -0
- data/lib/rom/ldap/expression_encoder.rb +174 -0
- data/lib/rom/ldap/extensions.rb +50 -0
- data/lib/rom/ldap/extensions/active_support_notifications.rb +26 -0
- data/lib/rom/ldap/extensions/compatibility.rb +11 -0
- data/lib/rom/ldap/extensions/dsml.rb +165 -0
- data/lib/rom/ldap/extensions/msgpack.rb +23 -0
- data/lib/rom/ldap/extensions/optimised_json.rb +25 -0
- data/lib/rom/ldap/extensions/rails_log_subscriber.rb +38 -0
- data/lib/rom/ldap/formatter.rb +26 -0
- data/lib/rom/ldap/functions.rb +207 -0
- data/lib/rom/ldap/gateway.rb +145 -0
- data/lib/rom/ldap/ldif.rb +74 -0
- data/lib/rom/ldap/ldif/exporter.rb +77 -0
- data/lib/rom/ldap/ldif/importer.rb +95 -0
- data/lib/rom/ldap/mapper_compiler.rb +19 -0
- data/lib/rom/ldap/matchers.rb +69 -0
- data/lib/rom/ldap/message_queue.rb +7 -0
- data/lib/rom/ldap/oid.rb +101 -0
- data/lib/rom/ldap/parsers/abstract_syntax.rb +91 -0
- data/lib/rom/ldap/parsers/attribute.rb +290 -0
- data/lib/rom/ldap/parsers/filter_syntax.rb +133 -0
- data/lib/rom/ldap/pdu.rb +285 -0
- data/lib/rom/ldap/plugin/pagination.rb +145 -0
- data/lib/rom/ldap/plugins.rb +7 -0
- data/lib/rom/ldap/projection_dsl.rb +38 -0
- data/lib/rom/ldap/relation.rb +135 -0
- data/lib/rom/ldap/relation/exporting.rb +72 -0
- data/lib/rom/ldap/relation/reading.rb +461 -0
- data/lib/rom/ldap/relation/writing.rb +64 -0
- data/lib/rom/ldap/responses.rb +17 -0
- data/lib/rom/ldap/restriction_dsl.rb +45 -0
- data/lib/rom/ldap/schema.rb +123 -0
- data/lib/rom/ldap/schema/attributes_inferrer.rb +59 -0
- data/lib/rom/ldap/schema/dsl.rb +13 -0
- data/lib/rom/ldap/schema/inferrer.rb +50 -0
- data/lib/rom/ldap/schema/type_builder.rb +133 -0
- data/lib/rom/ldap/scope.rb +19 -0
- data/lib/rom/ldap/search_request.rb +249 -0
- data/lib/rom/ldap/socket.rb +210 -0
- data/lib/rom/ldap/tasks/ldap.rake +103 -0
- data/lib/rom/ldap/tasks/ldif.rake +80 -0
- data/lib/rom/ldap/transaction.rb +29 -0
- data/lib/rom/ldap/type_map.rb +88 -0
- data/lib/rom/ldap/types.rb +158 -0
- data/lib/rom/ldap/version.rb +17 -0
- data/lib/rom/plugins/relation/ldap/active_directory.rb +182 -0
- data/lib/rom/plugins/relation/ldap/auto_restrictions.rb +69 -0
- data/lib/rom/plugins/relation/ldap/e_directory.rb +27 -0
- data/lib/rom/plugins/relation/ldap/instrumentation.rb +35 -0
- data/lib/rouge/lexers/ldap.rb +72 -0
- data/lib/rouge/themes/ldap.rb +49 -0
- metadata +231 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d55b8ce14fb58a188849c42fe14bd2f544f6dfd92baed22b6f51e7606912f962
|
4
|
+
data.tar.gz: aab10466f1913470ffee5d8f11920ebe7b47c28a4ab06af3a48b41c65406c03d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3adec0a51363520adea1d39cd4c47adb697428390315bc282651299e840c59ea7c4c0eea05668a90cee8d49246fe4f77b4d1b63d482b3a693fde4462870b83b2
|
7
|
+
data.tar.gz: c137ac63e72a7ca07d01e978acf2990dd2f5d49e3bf8a0ee2f869d593bb844839ed491d51a231e4cdb971439fe51f9d472fcb0e4c6023cba5305f13b10b05608
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,251 @@
|
|
1
|
+
## unreleased
|
2
|
+
|
3
|
+
<!-- TODO -->
|
4
|
+
[Compare v0.2.1...master](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.2.1...master)
|
5
|
+
|
6
|
+
|
7
|
+
# 0.2.1 / 2021-02-19
|
8
|
+
|
9
|
+
### Fixed
|
10
|
+
|
11
|
+
- Replace use of deprecated URI.encode/decode method for compatibility with Ruby v2.7. [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/e2f8da009319d70f895a273c9b85a693906179f9)
|
12
|
+
- Fix DSML export of an entry with `ObjectClasses` omitted. [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/acb7df93446ec8da01764159c0d5dee4168bd8e0)
|
13
|
+
- Correct misnamed error classes raise by the directory. [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/acb7df93446ec8da01764159c0d5dee4168bd8e0)
|
14
|
+
- Remove old development code and a general tidy up. [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/55bf78d8953066a5391b90c0c53e17839fa27ef1)
|
15
|
+
- Run more specs against all four test LDAP vendors. [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/ff8d9279348fc3789415e769dd12c99fc2a875e6)
|
16
|
+
- Restrict `gemspec` to Ruby version 2, preventing keyword params errors when running v3.
|
17
|
+
- Fix ApacheDS docker container state contamination between loads.
|
18
|
+
|
19
|
+
### Changed
|
20
|
+
|
21
|
+
- Replace current year on license.
|
22
|
+
- Simplify `docker-compose.yml` and `gitlab-ci.yml` removing deprecated ENV vars.
|
23
|
+
- Build docker images with custom schema preloaded. [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/ae2c17f464dd3906a9156c7e24da031f39505627)
|
24
|
+
- Update specs for testing ordering against OpenLDAP with the `sssvlv` overlay module. [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/ff8d9279348fc3789415e769dd12c99fc2a875e6)
|
25
|
+
- Remove volumes for LDAP vendors in `docker-compose.yml`.
|
26
|
+
- Remove rom-ldap rake tasks from the gem Rakefile and only load in the examples folder. [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/ae2c17f464dd3906a9156c7e24da031f39505627)
|
27
|
+
- Remove comparison of total entries from `ldif:import` task as this is dependent on the connection using the correct base, the same as the entries being imported.
|
28
|
+
- Simplify the `gemspec` dependencies.
|
29
|
+
|
30
|
+
|
31
|
+
## Added
|
32
|
+
|
33
|
+
- Add missing Style/FrozenStringLiteralComment lines.
|
34
|
+
- Add spec for ldap unix socket connections.
|
35
|
+
- Add extension for using the [OJ](http://www.ohler.com/oj/) gem. [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/694b0563d96b81446c1172d3f5e5499ca329de93)
|
36
|
+
- Add attribute ordering to the custom wildlife schema attributes. [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/ae2c17f464dd3906a9156c7e24da031f39505627)
|
37
|
+
- Allow the `DEFAULT_VENDOR` environment variable to change the default vendor used in a spec. [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/8894b2d50de01a3eb73ac9d48944cc52e68981b6)
|
38
|
+
|
39
|
+
|
40
|
+
[Compare v0.2.0...v0.2.1](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.2.0...0.2.1)
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
# 0.2.0 / 2020-03-08
|
45
|
+
|
46
|
+
### Changed
|
47
|
+
|
48
|
+
- Move LDIF for specs under fixtures folder
|
49
|
+
- Make the 'people' factory in specs usable by all vendors by dropping the non-standard attribute apple-imhandle
|
50
|
+
- Deleted non-ldap related methods like #qualified
|
51
|
+
- Internal parsing of query strings and abstract criteria
|
52
|
+
- Type mapping from oid to ruby classes
|
53
|
+
- `Dry::Transformer` replaces `Transproc`
|
54
|
+
- Update to dry-types 1.2
|
55
|
+
- Make switching between vendors easier by replacing vendor-specific extensions with reloadable module injection [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/04e828a9c327fadd0829839903e3953c5709ac0a)
|
56
|
+
- Folder structure for vendor specific code [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/04e828a9c327fadd0829839903e3953c5709ac0a)
|
57
|
+
- Simplify parsing as functions from string > ast > expression [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/0a71e469fe9f13cec9a2d111d5f2814e6c490dae)
|
58
|
+
|
59
|
+
### Fixed
|
60
|
+
|
61
|
+
- Allow username and password inside uri
|
62
|
+
- Handle IPV6 loopback addresses so localhost can be used
|
63
|
+
- Test suite readability against all four vendors
|
64
|
+
- Make running specs easier inside and outside of a docker environment with URI switching based on the context in which the suite is run
|
65
|
+
- Running specs inside Docker
|
66
|
+
- Rubocop errors
|
67
|
+
- Gitlab CI/CD pipeline
|
68
|
+
- Projected tuple attributes
|
69
|
+
- Renamed tuple attributes [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/c0670d38b866d28afba94fddd34fddb7df8d5d23)
|
70
|
+
- Ordering results
|
71
|
+
- Building deeply nested expression queries [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/0a71e469fe9f13cec9a2d111d5f2814e6c490dae)
|
72
|
+
|
73
|
+
### Added
|
74
|
+
|
75
|
+
- Implement the tree control in the client delete method making deletion of entries with children more efficient
|
76
|
+
- Gateway configuration using ENV VARS
|
77
|
+
- LDIF import functionality as rake task
|
78
|
+
- Generating fixtures to LDIF using factories and `relation#to_ldif`
|
79
|
+
- Missing query operators used inside `relation#where` blocks
|
80
|
+
- Raw filter string parsing inside `relation#where` blocks
|
81
|
+
- Extra OIDs
|
82
|
+
|
83
|
+
[Compare v0.1.0...v0.2.0](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.1.0...0.2.0)
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
# 0.1.0 / 2019-03-15
|
88
|
+
|
89
|
+
### Changed
|
90
|
+
|
91
|
+
- [BREAKING] rom-core (4.2.1) depends upon dry-types (0.15.0) which is only supported by ruby 2.4 and above. Change minimum supported version to 2.4
|
92
|
+
|
93
|
+
### Fixed
|
94
|
+
|
95
|
+
- Use [Semantic Versioning](https://semver.org/) from now on, however changing the Ruby version dependency should constitute a MAJOR change, we are not yet ready for the public 1.0.0 release
|
96
|
+
|
97
|
+
[Compare v0.1.0...v0.0.14](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.1.0...v0.0.14)
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
# 0.0.14 / 2019-03-15
|
102
|
+
|
103
|
+
### Added
|
104
|
+
|
105
|
+
- Draft `dry-monitor` LDAP logger [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/018dbd51b1d675b3153d8ec1d12a2a1f0416243b)
|
106
|
+
|
107
|
+
### Changed
|
108
|
+
|
109
|
+
- Remove Struct convenience class [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/0c151d6aac915094a85096b40269efbe9099d042)
|
110
|
+
|
111
|
+
|
112
|
+
[Compare v0.0.13...v0.0.14](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.0.13...v0.0.14)
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
# 0.0.13 / 2019-03-14
|
117
|
+
|
118
|
+
### Added
|
119
|
+
|
120
|
+
- Docker setup [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/7b08f6f69b9fa39a9700b45b72d91fe094a3442b)
|
121
|
+
- `CHANGELOG.md` [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/0731b6a467fd97a4769f9bc481a2975f0638b1b9)
|
122
|
+
- New `ROM::LDAP::Relation` methods #to_dsml and #to_msgpack [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/cc9d250584ba8cf3e875f7aa0f3754f676fdf2db)
|
123
|
+
- Introduce `ROM::LDAP::RestrictionDSL` from rom-sql
|
124
|
+
[#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/f0ddfe6a062fd63c1d6ab305d2cc97c50abf170d)
|
125
|
+
- Prepare connection variables using `ROM::LDAP::Directory::ENV` [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/bbe8c8d07db0fe7daedff0921d4f11f9eacf374d)
|
126
|
+
- Add `ROM::LDAP::Dataset` reverse functionality [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/c03d52e4a71764d0d44255367cbee17b786fd4e6)
|
127
|
+
|
128
|
+
### Changed
|
129
|
+
|
130
|
+
- Improve `ROM::LDAP::Dataset` param validation and defaults [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/c03d52e4a71764d0d44255367cbee17b786fd4e6)
|
131
|
+
- [BREAKING] Use LDAPURI (`'ldap://127.0.0.1:389'`) to initialise a `ROM::LDAP::Gateway` [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/55072ce9640b3cc736f05753d9b6c3b48ea64b85)
|
132
|
+
- Replace `Net::TCPClient` dependency with `ROM::LDAP::Client` and handle new URI connection params [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/33962e2ad6db42c29bc3e4e515469d560ca17c68)
|
133
|
+
|
134
|
+
### Fixed
|
135
|
+
|
136
|
+
- `ROM::LDAP::Gateway` now accepts extenions and has no responsibility for creating a connection [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/55072ce9640b3cc736f05753d9b6c3b48ea64b85)
|
137
|
+
- `ROM::LDAP::Directory::Entry` can be tested like a hash in specs using #include [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/5868646492f0ff1c4e88185c8221e3f95837b0c6)
|
138
|
+
|
139
|
+
|
140
|
+
[Compare v0.0.12...v0.0.13](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.0.12...v0.0.13)
|
141
|
+
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
# 0.0.12 / 2018-10-23
|
148
|
+
|
149
|
+
### Added
|
150
|
+
|
151
|
+
- Missing `bin/console` and `bin/setup` scripts added [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/621fcc2280564114edbe9c3acba4e344a9814436)
|
152
|
+
|
153
|
+
### Changed
|
154
|
+
|
155
|
+
- Compatible with Ruby >= 2.3 [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/621fcc2280564114edbe9c3acba4e344a9814436)
|
156
|
+
- Improve demo fixtures and add new study attribute to explore joins [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/673f933baacaf31e077b8cfd26064ea92d418849)
|
157
|
+
|
158
|
+
### Fixed
|
159
|
+
|
160
|
+
- Rubocop warnings [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/8a6620dd170e1a63fa6eda923f0a09ade02d9808)
|
161
|
+
|
162
|
+
|
163
|
+
[Compare v0.0.11...v0.0.12](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.0.11...v0.0.12)
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
# 0.0.11 / 2018-03-27
|
168
|
+
|
169
|
+
|
170
|
+
### Fixed
|
171
|
+
|
172
|
+
- `ROM::LDAP::Directory#delete` now returns the deleted tuple [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/6d5438c502406f1ed36bbe30e46f18ec2be413de)
|
173
|
+
|
174
|
+
|
175
|
+
[Compare v0.0.10...v0.0.11](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.0.10...v0.0.11)
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
# 0.0.10 / 2018-03-02
|
180
|
+
|
181
|
+
### Added
|
182
|
+
|
183
|
+
- `ROM::LDAP::Dataset#shuffle` [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/2fce12f854cce4fdd4a7f6758bbf54b1f23cefa2)
|
184
|
+
|
185
|
+
### Fixed
|
186
|
+
|
187
|
+
- `ROM::LDAP::Directory` now identifies Microsoft Active Directory [#ref](https://gitlab.com/peterdavidhamilton/rom-ldap/commit/d6729beb894f45eb8bf0fcd3d49f4e16ba33dfc1)
|
188
|
+
|
189
|
+
[Compare v0.0.9...v0.0.10](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.0.9...v0.0.10)
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
# 0.0.9 / 2017-12-07
|
194
|
+
|
195
|
+
[Compare v0.0.8...v0.0.9](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.0.8...v0.0.9)
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
# 0.0.8 / 2017-11-25
|
200
|
+
|
201
|
+
[Compare v0.0.7...v0.0.8](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.0.7...v0.0.8)
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
# 0.0.7 / 2017-11-02
|
206
|
+
|
207
|
+
[Compare v0.0.6...v0.0.7](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.0.6...v0.0.7)
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
# 0.0.6 / 2017-10-18
|
212
|
+
|
213
|
+
[Compare v0.0.5...v0.0.6](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.0.5...v0.0.6)
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
# 0.0.5 / 2017-06-28
|
218
|
+
|
219
|
+
[Compare v0.0.4...v0.0.5](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.0.4...v0.0.5)
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
# 0.0.4 / 2017-06-21
|
224
|
+
|
225
|
+
[Compare v0.0.3...v0.0.4](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.0.3...v0.0.4)
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
# 0.0.3 / 2017-03-24
|
230
|
+
|
231
|
+
[Compare v0.0.2...v0.0.3](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.0.2...v0.0.3)
|
232
|
+
|
233
|
+
|
234
|
+
|
235
|
+
# 0.0.2 / 2017-01-23
|
236
|
+
|
237
|
+
[Compare v0.0.1...v0.0.2](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.0.1...v0.0.2)
|
238
|
+
|
239
|
+
|
240
|
+
|
241
|
+
# 0.0.1 / 2016-07-18
|
242
|
+
|
243
|
+
[Compare v0.0.0...v0.0.1](https://gitlab.com/peterdavidhamilton/rom-ldap/compare/v0.0.0...v0.0.1)
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
# 0.0.0 / 2016-07-17
|
250
|
+
|
251
|
+
Initial Commit.
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# Issue Guidelines
|
2
|
+
|
3
|
+
## Reporting bugs
|
4
|
+
|
5
|
+
If you found a bug, report an issue and describe what's the expected behavior
|
6
|
+
versus what actually happens. If the bug causes a crash, attach a full backtrace.
|
7
|
+
If possible, a reproduction script showing the problem is highly appreciated.
|
8
|
+
|
9
|
+
## Help wanted
|
10
|
+
|
11
|
+
If you have experience of ROM and LDAP and can contribute to this project your
|
12
|
+
contributions are very welcome. Functionality like secure connections and transactions
|
13
|
+
are still to be implemented.
|
14
|
+
|
15
|
+
## Asking for help
|
16
|
+
|
17
|
+
If you need help getting started and the documentation is lacking you can try
|
18
|
+
emailing me at peter[at]pdhamilton.uk.
|
data/README.md
ADDED
@@ -0,0 +1,172 @@
|
|
1
|
+
# ROM-LDAP
|
2
|
+
|
3
|
+
[![pipeline status][pipeline]][branch] [![coverage report][coverage]][branch]
|
4
|
+
|
5
|
+
|
6
|
+
[ROM-LDAP][rom-ldap] is a [ROM][rom-rb] adapter for [LDAP][ldap] and provides lightweight directory object mapping for Ruby.
|
7
|
+
This gem makes it easier to use LDAP in your project or even as your primary datastore and an alternative to back-ends like MongoDB or CouchDB.
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
## Requirements
|
12
|
+
|
13
|
+
[ROM-LDAP][rom-ldap] is compatible with versions of [Ruby][ruby] from 2.4 to 2.7.
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
## History
|
18
|
+
|
19
|
+
This project has evolved from a refactoring of the [net-ldap][net-ldap] gem and tries to emulate the functionality of
|
20
|
+
[rom-sql][rom-sql] which is itself backed by the [sequel][sequel] gem.
|
21
|
+
|
22
|
+
|
23
|
+
A more detailed walk-through of [rom-ldap][rom-ldap] can be found at [pdhamilton.uk][pdhamilton].
|
24
|
+
|
25
|
+
## Installation
|
26
|
+
|
27
|
+
Add this line to your Gemfile:
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
gem 'rom-ldap'
|
31
|
+
```
|
32
|
+
|
33
|
+
|
34
|
+
#### Configuration
|
35
|
+
|
36
|
+
To configure a gateway connection to an LDAP server you can use environment variables or pass in a URI:
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
|
40
|
+
config = ROM::Configuration.new(:ldap, 'ldap://cn=admin,dc=rom,dc=ldap:topsecret@openldap')
|
41
|
+
|
42
|
+
ENV['LDAPURI'] = 'ldap://cn=admin,dc=rom,dc=ldap:topsecret@openldap'
|
43
|
+
|
44
|
+
config = ROM::Configuration.new(:ldap)
|
45
|
+
|
46
|
+
rom = ROM.container(config)
|
47
|
+
|
48
|
+
directory = ROM.container(config).directory
|
49
|
+
|
50
|
+
=> #<ROM::LDAP::Directory
|
51
|
+
uri='ldap://cn=admin,dc=rom,dc=ldap:topsecret@openldap'
|
52
|
+
vendor='OpenLDAP'
|
53
|
+
version='0.0' />
|
54
|
+
|
55
|
+
```
|
56
|
+
|
57
|
+
#### Extensions
|
58
|
+
|
59
|
+
For the greatest compatibility with Ruby method naming you can pass the optional "compatibility" extension whilst configuring the gateway.
|
60
|
+
This will format the attributes of directory entries into names suitable for ruby methods by converting _camelCase_ and _kebab-case_ to _snake_case_.
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
config = ROM::Configuration.new(:ldap, extensions: [:compatibility])
|
64
|
+
```
|
65
|
+
|
66
|
+
The `ROM::LDAP::Relation` class already has support for exporting to `JSON`, `YAML` and `LDIF`.
|
67
|
+
Other extensions are available including exporting to `DSML` format.
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
config = ROM::Configuration.new(:ldap, extensions: [:dsml_export]) do |conf|
|
71
|
+
conf.relation(:all) { schema('(cn=*)', infer: true) }
|
72
|
+
end
|
73
|
+
|
74
|
+
rom = ROM.container(config)
|
75
|
+
|
76
|
+
rom.relations[:all].to_dsml
|
77
|
+
```
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
## LDAP Servers
|
83
|
+
|
84
|
+
The project has docker provision for four opensource LDAP servers to test against;
|
85
|
+
see `spec/fixtures/vendors.yml` for connection details.
|
86
|
+
Allow the dependent services to boot before running the specs in the gem container.
|
87
|
+
|
88
|
+
$ cd docker
|
89
|
+
$ docker-compose up -d apacheds openldap 389ds opendj
|
90
|
+
$ docker-compose up rom
|
91
|
+
|
92
|
+
|
93
|
+
1. _[ApacheDS][apacheds]_ is an extensible and embeddable directory server entirely written in Java.
|
94
|
+
|
95
|
+
2. _[OpenLDAP][openldap]_ is a high performance replacement for Oracle Corporation's Berkeley DB.
|
96
|
+
It is mostly written in C and its functionality can be extended with additional modules.
|
97
|
+
|
98
|
+
3. _[389DS][389ds]_ from the Fedora Project is also written in Java.
|
99
|
+
|
100
|
+
4. _[OpenDJ][opendj]_ Community Edition from the Open Identity Platform is written in Java.
|
101
|
+
|
102
|
+
|
103
|
+
A custom schema is loaded into each of the servers and defines attribute types and object classes used
|
104
|
+
in the tests and [examples](#examples).
|
105
|
+
|
106
|
+
|
107
|
+
## Seed Data
|
108
|
+
|
109
|
+
_[Apache Directory Studio][apachestudio]_ is a cross-platform platform LDAP management application with a graphic interface.
|
110
|
+
For convenience, you can import the predefined connection settings for the docker environment using the included file
|
111
|
+
`spec/fixtures/vendors.lbc`.
|
112
|
+
|
113
|
+
Alternatively, if you have the `ldapmodify` command installed on your development machine,
|
114
|
+
you can use a rake task to import a folder of LDIF files:
|
115
|
+
|
116
|
+
$ LDAPURI=ldap://localhost:4389 \
|
117
|
+
LDAPBINDDN='cn=Directory Manager' \
|
118
|
+
LDAPBINDPW=topsecret \
|
119
|
+
LDAPDIR=./examples/ldif \
|
120
|
+
rake ldap:modify
|
121
|
+
|
122
|
+
Or, you could import the _1000_ example users included with this project, with no dependency on other software.
|
123
|
+
The `DEBUG` variable will print to screen any response from the server that would normally be logged.
|
124
|
+
|
125
|
+
$ DEBUG=y \
|
126
|
+
LDAPURI='ldap://cn=Directory Manager:topsecret@localhost:4389' \
|
127
|
+
rake 'ldif:import[examples/ldif/users.ldif]'
|
128
|
+
|
129
|
+
|
130
|
+
## Examples
|
131
|
+
|
132
|
+
The console script connects and loads [Pry][pry] so you can explore your directory on the command line.
|
133
|
+
|
134
|
+
$ ./bin/console
|
135
|
+
|
136
|
+
To see a demonstration in action you can explore the examples after loading the seed data.
|
137
|
+
|
138
|
+
$ rake 'ldif:import[examples/ldif/animals.ldif]'
|
139
|
+
|
140
|
+
$ ./examples/fauna.rb
|
141
|
+
|
142
|
+
Check out _[Fauna][fauna]_ which is a more complete version of the example above and models data on evolutionary taxonomy.
|
143
|
+
|
144
|
+
If you use _[Rails][rails]_ then try the _[rom-ldap-rails][rom-ldap-rails]_ repository,
|
145
|
+
for a skeleton version of this same example applied to the [Ruby on Rails][rails] framework.
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
[389ds]: https://www.port389.org
|
153
|
+
[apacheds]: http://directory.apache.org/apacheds/downloads
|
154
|
+
[apachestudio]: http://directory.apache.org/studio/downloads
|
155
|
+
[branch]: https://gitlab.com/peterdavidhamilton/rom-ldap/commits/master
|
156
|
+
[coverage]: https://gitlab.com/peterdavidhamilton/rom-ldap/badges/master/coverage.svg
|
157
|
+
[fauna]: https://gitlab.com/peterdavidhamilton/fauna
|
158
|
+
[ldap-ber]: https://gitlab.com/peterdavidhamilton/ldap-ber
|
159
|
+
[ldap]: https://ldap.com
|
160
|
+
[net-ldap]: https://github.com/ruby-ldap/ruby-net-ldap
|
161
|
+
[opendj]: https://www.openidentityplatform.org/opendj
|
162
|
+
[openldap]: http://www.openldap.org
|
163
|
+
[pdhamilton]: https://pdhamilton.uk/projects/rom-ldap
|
164
|
+
[pipeline]: https://gitlab.com/peterdavidhamilton/rom-ldap/badges/master/pipeline.svg
|
165
|
+
[pry]: http://pryrepl.org
|
166
|
+
[rails]: https://rubyonrails.org
|
167
|
+
[rom-ldap-rails]: https://gitlab.com/peterdavidhamilton/rom-ldap-rails
|
168
|
+
[rom-ldap]: https://gitlab.com/peterdavidhamilton/rom-ldap
|
169
|
+
[rom-rb]: https://rom-rb.org
|
170
|
+
[rom-sql]: https://rom-rb.org/5.0/learn/sql
|
171
|
+
[ruby]: https://www.ruby-lang.org/en/downloads
|
172
|
+
[sequel]: http://sequel.jeremyevans.net
|