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