Sha256: 2eec24d2690041a28b36c6d1d6a7dd6731fc9bd0deca5fa156622b0bb9274b34

Contents?: true

Size: 1.02 KB

Versions: 1

Compression:

Stored size: 1.02 KB

Contents

module ActiveSambaLdap
  class UnixIdPool < Base
    include Reloadable::Subclasses

    class << self
      def ldap_mapping(options={})
        default_options = {
          :dn_attribute => "sambaDomainName",
          :prefix => "",
          :classes => ["top", "sambaDomain", "sambaUnixIdPool"],
        }
        options = default_options.merge(options)
        super options
      end
    end

    def find_available_uid_number(account_class)
      find_available_number(account_class, "uidNumber", uid_number) do
        account_class.configuration[:start_uid]
      end
    end

    def find_available_gid_number(group_class)
      find_available_number(group_class, "gidNumber", gid_number) do
        group_class.configuration[:start_gid]
      end
    end

    private
    def find_available_number(klass, key, start_value)
      number = Integer(start_value || yield)

      100.times do |i|
        return number if klass.search(:filter => "(#{key}=#{number})").empty?
        number += 1
      end

      nil
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activesambaldap-0.0.1 lib/active_samba_ldap/unix_id_pool.rb