[asl-commit] ActiveSambaLdap r10:

null at cozmixng.org null at cozmixng.org
Fri Aug 3 22:31:26 EDT 2007


retro	2007-08-04 11:31:24 +0900 (Sat, 04 Aug 2007)

  New Revision: 10

  Modified files:
    trunk/lib/active_samba_ldap/populate.rb

  Log:


  Modified: trunk/lib/active_samba_ldap/populate.rb (+171 -170)
===================================================================
--- trunk/lib/active_samba_ldap/populate.rb	2006-11-12 20:52:41 +09:00 (rev 9)
+++ trunk/lib/active_samba_ldap/populate.rb	2007-08-04 11:31:24 +09:00 (rev 10)
@@ -7,208 +7,209 @@
     module ClassMethods
       def populate(options={})
         options = options.dup
-        populate_init_classes(options)
-        populate_init_options(options)
+        Private.init_classes(options)
+        Private.init_options(options)
 
         entries = []
-        entries.concat(populate_ensure_base(options))
-        entries.concat(populate_ensure_group_base(options))
-        entries.concat(populate_ensure_user_base(options))
-        entries.concat(populate_ensure_computer_base(options))
-        entries.concat(populate_ensure_idmap_base(options))
-        entries.concat(populate_make_groups(options))
-        entries.concat(populate_make_users(options))
-        entries.concat(populate_make_pool(options))
+        entries.concat(Private.ensure_base(options))
+        entries.concat(Private.ensure_group_base(options))
+        entries.concat(Private.ensure_user_base(options))
+        entries.concat(Private.ensure_computer_base(options))
+        entries.concat(Private.ensure_idmap_base(options))
+        entries.concat(Private.make_groups(options))
+        entries.concat(Private.make_users(options))
+        entries.concat(Private.make_pool(options))
 
         [entries, options]
       end
 
-      private
-      def populate_init_classes(options)
-        options[:user_class] = user_class = Class.new(User)
-        options[:group_class] = group_class = Class.new(Group)
-        options[:computer_class] = computer_class = Class.new(Computer)
-        options[:idmap_class] = idmap_class = Class.new(Idmap)
-        options[:unix_id_pool_class] = id_pool_class = Class.new(UnixIdPool)
+      module Private
+        module_function
+        def init_classes(options)
+          options[:user_class] = user_class = Class.new(User)
+          options[:group_class] = group_class = Class.new(Group)
+          options[:computer_class] = computer_class = Class.new(Computer)
+          options[:idmap_class] = idmap_class = Class.new(Idmap)
+          options[:unix_id_pool_class] = id_pool_class = Class.new(UnixIdPool)
 
-        user_class.ldap_mapping
-        group_class.ldap_mapping
-        computer_class.ldap_mapping
-        idmap_class.ldap_mapping
-        id_pool_class.ldap_mapping
+          user_class.ldap_mapping
+          group_class.ldap_mapping
+          computer_class.ldap_mapping
+          idmap_class.ldap_mapping
+          id_pool_class.ldap_mapping
 
-        user_class.set_associated_class(:primary_group, group_class)
-        computer_class.set_associated_class(:primary_group, group_class)
-        user_class.set_associated_class(:groups, group_class)
-        computer_class.set_associated_class(:groups, group_class)
+          user_class.set_associated_class(:primary_group, group_class)
+          computer_class.set_associated_class(:primary_group, group_class)
+          user_class.set_associated_class(:groups, group_class)
+          computer_class.set_associated_class(:groups, group_class)
 
-        group_class.set_associated_class(:users, user_class)
-        group_class.set_associated_class(:computers, computer_class)
-        group_class.set_associated_class(:primary_users, user_class)
-        group_class.set_associated_class(:primary_computers, computer_class)
-      end
+          group_class.set_associated_class(:users, user_class)
+          group_class.set_associated_class(:computers, computer_class)
+          group_class.set_associated_class(:primary_users, user_class)
+          group_class.set_associated_class(:primary_computers, computer_class)
+        end
 
-      def populate_init_options(options)
-        options[:start_uid] ||= Integer(Config.start_uid)
-        options[:start_gid] ||= Integer(Config.start_gid)
-        options[:administrator] ||= User::DOMAIN_ADMIN_NAME
-        options[:administrator_uid] ||= User.rid2uid(User::DOMAIN_ADMIN_RID)
-        options[:administrator_gid] ||= Group.rid2gid(Group::DOMAIN_ADMINS_RID)
-        options[:guest] ||= User::DOMAIN_GUEST_NAME
-        options[:guest_uid] ||= User.rid2uid(User::DOMAIN_GUEST_RID)
-        options[:guest_gid] ||= Group.rid2gid(Group::DOMAIN_GUESTS_RID)
-        options[:default_user_gid] ||= Config.default_user_gid
-        options[:default_computer_gid] ||= Config.default_computer_gid
-      end
+        def init_options(options)
+          options[:start_uid] ||= Integer(Config.start_uid)
+          options[:start_gid] ||= Integer(Config.start_gid)
+          options[:administrator] ||= User::DOMAIN_ADMIN_NAME
+          options[:administrator_uid] ||= User.rid2uid(User::DOMAIN_ADMIN_RID)
+          options[:administrator_gid] ||=
+            Group.rid2gid(Group::DOMAIN_ADMINS_RID)
+          options[:guest] ||= User::DOMAIN_GUEST_NAME
+          options[:guest_uid] ||= User.rid2uid(User::DOMAIN_GUEST_RID)
+          options[:guest_gid] ||= Group.rid2gid(Group::DOMAIN_GUESTS_RID)
+          options[:default_user_gid] ||= Config.default_user_gid
+          options[:default_computer_gid] ||= Config.default_computer_gid
+        end
 
-      def populate_ensure_container_base(dn, target_name, klass,
-                                         ignore_base=false)
-        entries = []
-        suffixes = []
-        dn.split(/,/).reverse_each do |suffix|
-          name, value = suffix.split(/=/, 2)
-          next unless name == target_name
-          container_class = Class.new(klass)
-          prefix = suffixes.reverse.join(",")
-          suffixes << suffix
-          if ignore_base
-            container_class.ldap_mapping :prefix => "", :scope => :base
-            container_class.instance_variable_set("@base", prefix)
-          else
-            container_class.ldap_mapping :prefix => prefix, :scope => :base
+        def ensure_container_base(dn, target_name, klass, ignore_base=false)
+          entries = []
+          suffixes = []
+          dn.split(/,/).reverse_each do |suffix|
+            name, value = suffix.split(/=/, 2)
+            next unless name == target_name
+            container_class = Class.new(klass)
+            prefix = suffixes.reverse.join(",")
+            suffixes << suffix
+            if ignore_base
+              container_class.ldap_mapping :prefix => "", :scope => :base
+              container_class.instance_variable_set("@base", prefix)
+            else
+              container_class.ldap_mapping :prefix => prefix, :scope => :base
+            end
+            next if container_class.exists?(value, :prefix => suffix)
+            container = container_class.new(value)
+            yield(container) if block_given?
+            container.save!
+            entries << container
           end
-          next if container_class.exists?(value, :prefix => suffix)
-          container = container_class.new(value)
-          yield(container) if block_given?
-          container.save!
-          entries << container
+          entries
         end
-        entries
-      end
 
-      def populate_ensure_base(options)
-        Config.required_variables :suffix
-        populate_ensure_container_base(Config.suffix, "dc", Dc, true) do |dc|
-          dc.o = dc.dc
+        def ensure_base(options)
+          Config.required_variables :suffix
+          ensure_container_base(Config.suffix, "dc", Dc, true) do |dc|
+            dc.o = dc.dc
+          end
         end
-      end
 
-      def populate_ensure_ou_base(dn)
-        populate_ensure_container_base(dn, "ou", Ou)
-      end
+        def ensure_ou_base(dn)
+          ensure_container_base(dn, "ou", Ou)
+        end
 
-      def populate_ensure_user_base(options)
-        populate_ensure_ou_base(options[:user_class].prefix)
-      end
+        def ensure_user_base(options)
+          ensure_ou_base(options[:user_class].prefix)
+        end
 
-      def populate_ensure_group_base(options)
-        populate_ensure_ou_base(options[:group_class].prefix)
-      end
+        def ensure_group_base(options)
+          ensure_ou_base(options[:group_class].prefix)
+        end
 
-      def populate_ensure_computer_base(options)
-        populate_ensure_ou_base(options[:computer_class].prefix)
-      end
+        def ensure_computer_base(options)
+          ensure_ou_base(options[:computer_class].prefix)
+        end
 
-      def populate_ensure_idmap_base(options)
-        populate_ensure_ou_base(options[:idmap_class].prefix)
-      end
+        def ensure_idmap_base(options)
+          ensure_ou_base(options[:idmap_class].prefix)
+        end
 
-      def populate_make_user(user_class, name, uid, group)
-        if user_class.exists?(name)
-          user = user_class.find(name)
-          group = nil
-        else
-          user = user_class.new(name)
-          user.init(uid, group)
-          user.save!
-          group.users << user
+        def make_user(user_class, name, uid, group)
+          if user_class.exists?(name)
+            user = user_class.find(name)
+            group = nil
+          else
+            user = user_class.new(name)
+            user.init(uid, group)
+            user.save!
+            group.users << user
+          end
+          [user, group]
         end
-        [user, group]
-      end
 
-      def populate_make_users(options)
-        user_class = options[:user_class]
-        group_class = options[:group_class]
-        entries = []
-        [
-         [options[:administrator], options[:administrator_uid],
-          options[:administrator_gid]],
-         [options[:guest], options[:guest_uid], options[:guest_gid]],
-        ].each do |name, uid, gid|
-          user, group = populate_make_user(user_class, name, uid,
-                                           group_class.find_by_gid_number(gid))
-          entries << user
-          if group
-            old_group = entries.find do |entry|
-              entry.is_a?(group_class) and entry.cn == group.cn
+        def make_users(options)
+          user_class = options[:user_class]
+          group_class = options[:group_class]
+          entries = []
+          [
+           [options[:administrator], options[:administrator_uid],
+            options[:administrator_gid]],
+           [options[:guest], options[:guest_uid], options[:guest_gid]],
+          ].each do |name, uid, gid|
+            user, group = make_user(user_class, name, uid,
+                                    group_class.find_by_gid_number(gid))
+            entries << user
+            if group
+              old_group = entries.find do |entry|
+                entry.is_a?(group_class) and entry.cn == group.cn
+              end
+              index = entries.index(old_group)
+              if index
+                entries[index] = group
+              else
+                entries << group
+              end
             end
-            index = entries.index(old_group)
-            if index
-              entries[index] = group
-            else
-              entries << group
-            end
           end
+          entries
         end
-        entries
-      end
 
-      def populate_make_group(group_class, name, gid, description=nil, type=nil)
-        if group_class.exists?(name)
-          group = group_class.find(name)
-        else
-          group = group_class.new(name)
-          group.change_type(type || "domain")
-          group.display_name = name
-          group.description = name || description
-          group.change_gid_number(gid)
+        def make_group(group_class, name, gid, description=nil, type=nil)
+          if group_class.exists?(name)
+            group = group_class.find(name)
+          else
+            group = group_class.new(name)
+            group.change_type(type || "domain")
+            group.display_name = name
+            group.description = name || description
+            group.change_gid_number(gid)
 
-          group.save!
+            group.save!
+          end
+          group
         end
-        group
-      end
 
-      def populate_make_groups(options)
-        group_class = options[:group_class]
-        entries = []
-        [
-         ["Domain Admins", options[:administrator_gid],
-          "Netbios Domain Administrators"],
-         ["Domain Users", options[:default_user_gid], "Netbios Domain Users"],
-         ["Domain Guests", options[:guest_gid],
-          "Netbios Domain Guest Users"],
-         ["Domain Computers", options[:default_computer_gid],
-          "Netbios Domain Computers"],
-         ["Administrators", nil, nil, "builtin", Group::LOCAL_ADMINS_RID],
-         ["Users", nil, nil, "builtin", Group::LOCAL_USERS_RID],
-         ["Guests", nil, nil, "builtin", Group::LOCAL_GUESTS_RID],
-         ["Power Users", nil, nil, "builtin", Group::LOCAL_POWER_USERS_RID],
-         ["Account Operators", nil, nil, "builtin",
-          Group::LOCAL_ACCOUNT_OPERATORS_RID],
-         ["System Operators", nil, nil, "builtin",
-          Group::LOCAL_SYSTEM_OPERATORS_RID],
-         ["Print Operators", nil, nil, "builtin",
-          Group::LOCAL_PRINT_OPERATORS_RID],
-         ["Backup Operators", nil, nil, "builtin",
-          Group::LOCAL_BACKUP_OPERATORS_RID],
-         ["Replicators", nil, nil, "builtin",
-          Group::LOCAL_REPLICATORS_RID],
-        ].each do |name, gid, description, type, rid|
-          gid ||= group_class.rid2gid(rid)
-          entries << populate_make_group(group_class, name, gid,
-                                         description, type)
+        def make_groups(options)
+          group_class = options[:group_class]
+          entries = []
+          [
+           ["Domain Admins", options[:administrator_gid],
+            "Netbios Domain Administrators"],
+           ["Domain Users", options[:default_user_gid], "Netbios Domain Users"],
+           ["Domain Guests", options[:guest_gid],
+            "Netbios Domain Guest Users"],
+           ["Domain Computers", options[:default_computer_gid],
+            "Netbios Domain Computers"],
+           ["Administrators", nil, nil, "builtin", Group::LOCAL_ADMINS_RID],
+           ["Users", nil, nil, "builtin", Group::LOCAL_USERS_RID],
+           ["Guests", nil, nil, "builtin", Group::LOCAL_GUESTS_RID],
+           ["Power Users", nil, nil, "builtin", Group::LOCAL_POWER_USERS_RID],
+           ["Account Operators", nil, nil, "builtin",
+            Group::LOCAL_ACCOUNT_OPERATORS_RID],
+           ["System Operators", nil, nil, "builtin",
+            Group::LOCAL_SYSTEM_OPERATORS_RID],
+           ["Print Operators", nil, nil, "builtin",
+            Group::LOCAL_PRINT_OPERATORS_RID],
+           ["Backup Operators", nil, nil, "builtin",
+            Group::LOCAL_BACKUP_OPERATORS_RID],
+           ["Replicators", nil, nil, "builtin",
+            Group::LOCAL_REPLICATORS_RID],
+          ].each do |name, gid, description, type, rid|
+            gid ||= group_class.rid2gid(rid)
+            entries << make_group(group_class, name, gid, description, type)
+          end
+          entries
         end
-        entries
-      end
 
-      def populate_make_pool(options)
-        Config.required_variables :samba_domain, :sid
-        pool = options[:unix_id_pool_class].new(Config.samba_domain)
-        pool.samba_sid = Config.sid
-        pool.uid_number = options[:start_uid]
-        pool.gid_number = options[:start_gid]
-        pool.save!
-        [pool]
+        def make_pool(options)
+          Config.required_variables :samba_domain, :sid
+          pool = options[:unix_id_pool_class].new(Config.samba_domain)
+          pool.samba_sid = Config.sid
+          pool.uid_number = options[:start_uid]
+          pool.gid_number = options[:start_gid]
+          pool.save!
+          [pool]
+        end
       end
     end
   end



More information about the asl-commit mailing list