rom-ldap 0.2.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 +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
|