[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