Commit 6ce7c0f16552fdf8ee23bb76067893dd3b93355c
Committed by
Georg Hopp
1 parent
cdaf490a
cleanups and small changes
- move ldap specific config handling int storage/ldap.rb - update shadowlastchange only if the users password changes (actually not sure that this is the correct behaviour.) - change config accessor in storage to config reader - create a generic eval_pattern method in SdAdmin::Storage::Config
Showing
4 changed files
with
35 additions
and
20 deletions
| ... | ... | @@ -17,11 +17,21 @@ class DsAdmin::Storage::Config |
| 17 | 17 | @config[storage.config_key][@model.config_key][:map] |
| 18 | 18 | end |
| 19 | 19 | |
| 20 | - def object_class(storage) | |
| 21 | - @config[storage.config_key][@model.config_key][:objectClass] | |
| 22 | - end | |
| 20 | + ## | |
| 21 | + # replace special patterns within config strings with data | |
| 22 | + # given by the data hash param. These patterns also allow to send | |
| 23 | + # a message to the replaces data e.g. for some kind of subtitution. | |
| 24 | + # | |
| 25 | + def eval_pattern(pattern, data = {}) | |
| 26 | + scan_exp = /([^#]*)(#\{(:[^}|]+)(\|([^}]*))?\})?/ | |
| 27 | + | |
| 28 | + result = String.new | |
| 29 | + pattern.scan(scan_exp) do |m| | |
| 30 | + key = m[2][1..m[2].length].to_sym if m[2] | |
| 31 | + val = eval('"' + data[key] + '".send ' + m[4]) if data[key] && m[4] | |
| 23 | 32 | |
| 24 | - def dn_pat(storage) | |
| 25 | - @config[storage.config_key][@model.config_key][:dnPat] | |
| 33 | + result += m[0] + (val || "") | |
| 34 | + end | |
| 35 | + result | |
| 26 | 36 | end |
| 27 | 37 | end | ... | ... |
| 1 | 1 | require 'net/ldap' |
| 2 | 2 | |
| 3 | +## | |
| 4 | +# some additional ldap specific config handlings. | |
| 5 | +# | |
| 6 | +class DsAdmin::Storage::Config | |
| 7 | + def object_class(storage) | |
| 8 | + @config[storage.config_key][@model.config_key][:objectClass] | |
| 9 | + end | |
| 10 | + | |
| 11 | + def dn(storage, data) | |
| 12 | + eval_pattern( | |
| 13 | + @config[storage.config_key][@model.config_key][:dnPat], | |
| 14 | + data) + ',' + query(storage)[:base] | |
| 15 | + end | |
| 16 | +end | |
| 17 | + | |
| 3 | 18 | class DsAdmin::Storage::Ldap |
| 4 | 19 | include DsAdmin::Storage |
| 5 | 20 | |
| ... | ... | @@ -38,18 +53,7 @@ class DsAdmin::Storage::Ldap |
| 38 | 53 | |
| 39 | 54 | protected |
| 40 | 55 | def create(data) |
| 41 | - map = @config.map(self).invert | |
| 42 | - scan_exp = /(^|, *)([^=]*=)(([^#][^,]*)|#\{([^|}]*)(\|([^}]*))?\})/ | |
| 43 | - | |
| 44 | - dn = String.new | |
| 45 | - @config.dn_pat(self).scan(scan_exp) do |m| | |
| 46 | - val = m[3] if m[3] | |
| 47 | - val = data[m[4][1..m[4].length].to_sym] if m[4] | |
| 48 | - val = eval('"' + val + '".send ' + m[6]) if data && m[6] | |
| 49 | - | |
| 50 | - dn += m[0] + m[1] + val | |
| 51 | - end | |
| 52 | - dn += ',' + @config.query(self)[:base] | |
| 56 | + dn = @config.dn(self, data) | |
| 53 | 57 | |
| 54 | 58 | data.delete(:id) |
| 55 | 59 | |
| ... | ... | @@ -79,6 +83,7 @@ class DsAdmin::Storage::Ldap |
| 79 | 83 | replace.each do |key,value| |
| 80 | 84 | if old[:id] =~ /(^|, *)#{key.to_s}=([^, ]+)/ && $2 != value |
| 81 | 85 | delete(old[:id]) |
| 86 | + puts | |
| 82 | 87 | return create(new) |
| 83 | 88 | end |
| 84 | 89 | end | ... | ... |
Please
register
or
login
to post a comment