[asl-commit] ActiveSambaLdap r52:
null at cozmixng.org
null at cozmixng.org
Fri Aug 3 22:33:30 EDT 2007
retro 2007-08-04 11:33:27 +0900 (Sat, 04 Aug 2007)
New Revision: 52
Modified files:
trunk/bin/asl-useradd
trunk/lib/active_samba_ldap/account.rb
trunk/lib/active_samba_ldap/computer_account.rb
trunk/lib/active_samba_ldap/entry.rb
trunk/lib/active_samba_ldap/user_account.rb
trunk/test/config.yaml.sample
Log:
Modified: trunk/lib/active_samba_ldap/entry.rb (+18 -0)
===================================================================
--- trunk/lib/active_samba_ldap/entry.rb 2006-11-16 16:39:26 +09:00 (rev 51)
+++ trunk/lib/active_samba_ldap/entry.rb 2007-08-04 11:33:27 +09:00 (rev 52)
@@ -9,6 +9,7 @@
def create(attributes=nil)
pool = nil
number_key = nil
+ ensure_ou((attributes || {})[dn_attribute.to_sym])
entry = super do |entry|
options = attributes || {}
options, pool, number_key = prepare_create_options(entry, options)
@@ -27,6 +28,23 @@
end
private
+ def ensure_ou(dn)
+ return if dn.nil?
+ dn_value, ou = dn.split(/,/, 2)
+ return if ou.nil?
+ prefixes = [prefix]
+ ou.split(/\s*,\s*/).reverse_each do |entry|
+ name, value = entry.split(/\s*=\s*/, 2).collect {|x| x.strip}
+ raise ArgumentError, "#{ou} must be only ou" if name != "ou"
+ ou_class = Class.new(ActiveSambaLdap::Ou)
+ ou_class.ldap_mapping :prefix => prefixes.join(',')
+ prefixes.unshift(entry)
+ next if ou_class.exists?(value)
+ ou = ou_class.new(value)
+ ou.save!
+ end
+ end
+
def prepare_create_options_for_number(key, entry, options)
options = {key => entry[key]}.merge(options)
number, pool = ensure_number(key, options)
Modified: trunk/lib/active_samba_ldap/computer_account.rb (+4 -1)
===================================================================
--- trunk/lib/active_samba_ldap/computer_account.rb 2006-11-16 16:39:26 +09:00 (rev 51)
+++ trunk/lib/active_samba_ldap/computer_account.rb 2007-08-04 11:33:27 +09:00 (rev 52)
@@ -1,13 +1,16 @@
module ActiveSambaLdap
module ComputerAccount
+ NAME_RE = /\A#{Account::NAME_RE_SRC}\$\z/
+
def self.included(base)
super
base.extend(ClassMethods)
+ base.validates_format_of :uid, :with => NAME_RE
end
module ClassMethods
def valid_name?(name)
- /\$\Z/ =~ name and super($PREMATCH)
+ NAME_RE =~ name ? true : false
end
private
Modified: trunk/lib/active_samba_ldap/account.rb (+2 -6)
===================================================================
--- trunk/lib/active_samba_ldap/account.rb 2006-11-16 16:39:26 +09:00 (rev 51)
+++ trunk/lib/active_samba_ldap/account.rb 2007-08-04 11:33:27 +09:00 (rev 52)
@@ -4,13 +4,13 @@
module ActiveSambaLdap
module Account
+ NAME_RE_SRC = "(?!\\d)[\\w @_\\-\\.]+"
+
def self.included(base)
super
base.extend(ClassMethods)
end
- NAME_RE = /\A(?!\d)[\w @_\-\.]+\z/
-
module ClassMethods
def ldap_mapping(options={})
options = default_options.merge(options)
@@ -19,10 +19,6 @@
belongs_to :groups, groups_options(options)
end
- def valid_name?(name)
- NAME_RE =~ name ? true : false
- end
-
def find_by_uid_number(number)
options = {:objects => true}
attribute = "uidNumber"
Modified: trunk/bin/asl-useradd (+1 -21)
===================================================================
--- trunk/bin/asl-useradd 2006-11-16 16:39:26 +09:00 (rev 51)
+++ trunk/bin/asl-useradd 2007-08-04 11:33:27 +09:00 (rev 52)
@@ -167,13 +167,6 @@
member_class = options.computer_account ? Computer : User
member_type = member_class.name.downcase
-member_base_re = /,#{Regexp.escape(ActiveSambaLdap::Base.base)}$/
-member_prefix = member_class.base.sub(member_base_re, '')
-opts = {}
-if options.ou
- opts[:prefix] = "#{options.ou},#{member_prefix}"
- member_class.ldap_mapping(opts)
-end
if options.computer_account
name = name.chomp("$") + "$"
@@ -189,21 +182,8 @@
exit 1
end
-if options.ou
- prefixes = [member_prefix]
- options.ou.split(/\s*,\s*/).reverse_each do |entry|
- _, value = entry.split(/\s*=\s*/, 2).collect {|x| x.strip}
- ou_class = Class.new(ActiveSambaLdap::Ou)
- ou_class.ldap_mapping :prefix => prefixes.join(',')
- prefixes.unshift(entry)
- next if ou_class.exists?(value)
- ou = ou_class.new(value)
- ou.save!
- end
-end
-
create_options = {
- :uid => name,
+ :uid => [name, options.ou].compact.join(","),
:uid_number => options.uid,
:gid_number => options.gid,
:create_group => options.create_group,
Modified: trunk/test/config.yaml.sample (+1 -1)
===================================================================
--- trunk/test/config.yaml.sample 2006-11-16 16:39:26 +09:00 (rev 51)
+++ trunk/test/config.yaml.sample 2007-08-04 11:33:27 +09:00 (rev 52)
@@ -1,6 +1,6 @@
common:
sid: S-1-5-21-915876905-2926214379-2876160357
- user_home: /home/%U
+ user_home_directory: /home/%U
user_login_shell: /bin/sh
update:
Modified: trunk/lib/active_samba_ldap/user_account.rb (+7 -0)
===================================================================
--- trunk/lib/active_samba_ldap/user_account.rb 2006-11-16 16:39:26 +09:00 (rev 51)
+++ trunk/lib/active_samba_ldap/user_account.rb 2007-08-04 11:33:27 +09:00 (rev 52)
@@ -1,11 +1,18 @@
module ActiveSambaLdap
module UserAccount
+ NAME_RE = /\A#{Account::NAME_RE_SRC}\z/
+
def self.included(base)
super
base.extend(ClassMethods)
+ base.validates_format_of :uid, :with => NAME_RE
end
module ClassMethods
+ def valid_name?(name)
+ NAME_RE =~ name ? true : false
+ end
+
private
def default_prefix
configuration[:users_suffix]
More information about the asl-commit
mailing list