class ActiveSambaLdap::Populate::ClassMethods::Private
Public Class Methods
new(base, options)
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 17 def initialize(base, options) @base = base @options = options.dup end
Public Instance Methods
computer_class()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 71 def computer_class @options[:computer_class] end
ensure_base()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 125 def ensure_base ensure_container_base(@base.base, "dc", Dc, true) do |dc| dc.o = dc.dc end end
ensure_computer_base()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 143 def ensure_computer_base ensure_ou_base(computer_class.prefix) end
ensure_container_base(dn, target_name, klass, ignore_base=false) { |container| ... }
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 97 def ensure_container_base(dn, target_name, klass, ignore_base=false) dn = dn.to_s if dn.is_a?(ActiveLdap::DN) 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.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? begin container.save! rescue ActiveLdap::OperationNotPermitted end entries << container end entries end
ensure_group_base()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 139 def ensure_group_base ensure_ou_base(group_class.prefix) end
ensure_idmap_base()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 147 def ensure_idmap_base ensure_ou_base(idmap_class.prefix) end
ensure_ou_base(dn)
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 131 def ensure_ou_base(dn) ensure_container_base(dn, "ou", Ou) end
ensure_user_base()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 135 def ensure_user_base ensure_ou_base(user_class.prefix) end
group_class()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 67 def group_class @options[:group_class] end
idmap_class()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 75 def idmap_class @options[:idmap_class] end
init_classes()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 39 def init_classes @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.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
init_options()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 79 def init_options config = @base.configuration @options[:start_uid] ||= Integer(config[:start_uid]) @options[:start_gid] ||= Integer(config[:start_gid]) @options[:administrator] ||= user_class::DOMAIN_ADMIN_NAME @options[:administrator_uid] ||= user_class.rid2uid(user_class::DOMAIN_ADMIN_RID) @options[:administrator_gid] ||= group_class.rid2gid(group_class::DOMAIN_ADMINS_RID) @options[:guest] ||= user_class::DOMAIN_GUEST_NAME @options[:guest_uid] ||= user_class.rid2uid(user_class::DOMAIN_GUEST_RID) @options[:guest_gid] ||= group_class.rid2gid(group_class::DOMAIN_GUESTS_RID) @options[:default_user_gid] ||= config[:default_user_gid] @options[:default_computer_gid] ||= config[:default_computer_gid] end
make_group(group_class, name, gid, description=nil, type=nil)
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 191 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! end group end
make_groups()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 206 def make_groups 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_class::LOCAL_ADMINS_RID], ["Users", nil, nil, "builtin", group_class::LOCAL_USERS_RID], ["Guests", nil, nil, "builtin", group_class::LOCAL_GUESTS_RID], ["Power Users", nil, nil, "builtin", group_class::LOCAL_POWER_USERS_RID], ["Account Operators", nil, nil, "builtin", group_class::LOCAL_ACCOUNT_OPERATORS_RID], ["System Operators", nil, nil, "builtin", group_class::LOCAL_SYSTEM_OPERATORS_RID], ["Print Operators", nil, nil, "builtin", group_class::LOCAL_PRINT_OPERATORS_RID], ["Backup Operators", nil, nil, "builtin", group_class::LOCAL_BACKUP_OPERATORS_RID], ["Replicators", nil, nil, "builtin", group_class::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
make_pool()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 240 def make_pool config = @base.configuration klass = @options[:unix_id_pool_class] name = config[:samba_domain] if klass.exists?(name) pool = klass.find(name) else pool = klass.new(name) pool.samba_sid = config[:sid] pool.uid_number = @options[:start_uid] pool.gid_number = @options[:start_gid] pool.save! end [pool] end
make_user(user_class, name, uid, group)
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 151 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.fill_default_values("uid_number" => uid, "group" => group) user.save! group.users << user end [user, group] end
make_users()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 164 def make_users 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 end entries end
populate()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 22 def populate init_classes init_options entries = [] entries.concat(ensure_base) entries.concat(ensure_group_base) entries.concat(ensure_user_base) entries.concat(ensure_computer_base) entries.concat(ensure_idmap_base) entries.concat(make_groups) entries.concat(make_users) entries.concat(make_pool) [entries, @options] end
user_class()
click to toggle source
# File lib/active_samba_ldap/populate.rb, line 63 def user_class @options[:user_class] end