From codesite-noreply at google.com Wed Aug 8 09:22:21 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Wed, 08 Aug 2007 06:22:21 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r211 - in trunk: . lib/active_ldap/association Message-ID: Author: koutou Date: Wed Aug 8 06:21:20 2007 New Revision: 211 Modified: trunk/README trunk/lib/active_ldap/association/belongs_to.rb Log: * supported :primary_key => "dn" with belongs_to. Thanks to Perry Smith!!! Modified: trunk/README ============================================================================== --- trunk/README (original) +++ trunk/README Wed Aug 8 06:21:20 2007 @@ -99,3 +99,4 @@ * Iain Pople: Bug reports and API improvement ideas. * Christoph Lipp: Tell us character escape syntax. * Kevin McCarthy: Patches. +* Perry Smith: Patches. Modified: trunk/lib/active_ldap/association/belongs_to.rb ============================================================================== --- trunk/lib/active_ldap/association/belongs_to.rb (original) +++ trunk/lib/active_ldap/association/belongs_to.rb Wed Aug 8 06:21:20 2007 @@ -30,10 +30,15 @@ def find_target value = @owner[@options[:foreign_key_name]] raise EntryNotFound if value.nil? - filter = {primary_key => value} - result = foreign_class.find(:all, :filter => filter, :limit => 1) - raise EntryNotFound if result.empty? - result.first + key = primary_key + if key == "dn" + result = foreign_class.find(value) + else + filter = {key => value} + result = foreign_class.find(:all, :filter => filter, :limit => 1).first + end + raise EntryNotFound if result.nil? + result end end end From codesite-noreply at google.com Wed Aug 8 09:49:24 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Wed, 08 Aug 2007 06:49:24 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r212 - trunk/lib/active_ldap/association Message-ID: Author: koutou Date: Wed Aug 8 06:48:43 2007 New Revision: 212 Added: trunk/lib/active_ldap/association/has_many_utils.rb Modified: trunk/lib/active_ldap/association/has_many.rb trunk/lib/active_ldap/association/has_many_wrap.rb Log: * cleanup. Modified: trunk/lib/active_ldap/association/has_many.rb ============================================================================== --- trunk/lib/active_ldap/association/has_many.rb (original) +++ trunk/lib/active_ldap/association/has_many.rb Wed Aug 8 06:48:43 2007 @@ -1,8 +1,11 @@ require 'active_ldap/association/collection' +require 'active_ldap/association/has_many_utils' module ActiveLdap module Association class HasMany < Collection + include HasManyUtils + private def insert_entry(entry) entry[primary_key] = @owner[@options[:foreign_key_name]] @@ -10,20 +13,25 @@ end def find_target + collect_targets(:foreign_key_name) foreign_base_key = primary_key - components = @owner[@options[:foreign_key_name], true].collect do |value| - key = val = nil - if foreign_base_key == "dn" - key, val = value.split(",")[0].split("=") unless value.empty? - else - key, val = foreign_base_key, value + return [] if foreign_base_key + + values = @owner[@options[:foreign_key_name], true] + + components = values.reject do |value| + value.nil? + end + unless foreign_base_key == "dn" + components = values.collect do |value| + [foreign_base_key, value] end - [key, val] - end.reject do |key, val| - key.nil? or val.nil? end - if components.empty? - [] + + return [] if components.empty? + + if foreign_base_key == "dn" + foreign_class.find(components) else foreign_class.find(:all, :filter => [:or, *components]) end Added: trunk/lib/active_ldap/association/has_many_utils.rb ============================================================================== --- (empty file) +++ trunk/lib/active_ldap/association/has_many_utils.rb Wed Aug 8 06:48:43 2007 @@ -0,0 +1,34 @@ +module ActiveLdap + module Association + module HasManyUtils + private + def collect_targets(requested_target_key, need_requested_targets=false) + foreign_base_key = primary_key + return [] if foreign_base_key.nil? + + requested_targets = @owner[@options[requested_target_key], true] + + components = requested_targets.reject(&:nil?) + unless foreign_base_key == "dn" + components = components.collect do |value| + [foreign_base_key, value] + end + end + + if components.empty? + targets = [] + elsif foreign_base_key == "dn" + targets = foreign_class.find(components) + else + targets = foreign_class.find(:all, :filter => [:or, *components]) + end + + if need_requested_targets + [targets, requested_targets] + else + targets + end + end + end + end +end Modified: trunk/lib/active_ldap/association/has_many_wrap.rb ============================================================================== --- trunk/lib/active_ldap/association/has_many_wrap.rb (original) +++ trunk/lib/active_ldap/association/has_many_wrap.rb Wed Aug 8 06:48:43 2007 @@ -1,8 +1,11 @@ require 'active_ldap/association/collection' +require 'active_ldap/association/has_many_utils' module ActiveLdap module Association class HasManyWrap < Collection + include HasManyUtils + private def insert_entry(entry) old_value = @owner[@options[:wrap], true] @@ -24,28 +27,16 @@ end def find_target - foreign_base_key = primary_key - requested_targets = @owner[@options[:wrap], true] - - components = requested_targets.collect do |value| - key = val = nil - if foreign_base_key == "dn" - key, val = value.split(",")[0].split("=") unless value.empty? - else - key, val = foreign_base_key, value - end - [key, val] - end.reject do |key, val| - key.nil? or val.nil? - end - return [] if components.empty? + targets, requested_targets = collect_targets(:wrap, true) + raise EntryNotFound if targets.nil? - klass = foreign_class found_targets = {} - klass.find(:all, :filter => [:or, *components]).each do |target| + foreign_base_key = primary_key + targets.each do |target| found_targets[target.send(foreign_base_key)] ||= target end + klass = foreign_class requested_targets.collect do |name| found_targets[name] || klass.new(name) end From codesite-noreply at google.com Wed Aug 8 09:54:25 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Wed, 08 Aug 2007 06:54:25 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r213 - trunk/lib/active_ldap/association Message-ID: Author: koutou Date: Wed Aug 8 06:53:44 2007 New Revision: 213 Modified: trunk/lib/active_ldap/association/has_many.rb trunk/lib/active_ldap/association/has_many_wrap.rb Log: * removed garbages in the previous commit. Modified: trunk/lib/active_ldap/association/has_many.rb ============================================================================== --- trunk/lib/active_ldap/association/has_many.rb (original) +++ trunk/lib/active_ldap/association/has_many.rb Wed Aug 8 06:53:44 2007 @@ -14,27 +14,6 @@ def find_target collect_targets(:foreign_key_name) - foreign_base_key = primary_key - return [] if foreign_base_key - - values = @owner[@options[:foreign_key_name], true] - - components = values.reject do |value| - value.nil? - end - unless foreign_base_key == "dn" - components = values.collect do |value| - [foreign_base_key, value] - end - end - - return [] if components.empty? - - if foreign_base_key == "dn" - foreign_class.find(components) - else - foreign_class.find(:all, :filter => [:or, *components]) - end end def delete_entries(entries) Modified: trunk/lib/active_ldap/association/has_many_wrap.rb ============================================================================== --- trunk/lib/active_ldap/association/has_many_wrap.rb (original) +++ trunk/lib/active_ldap/association/has_many_wrap.rb Wed Aug 8 06:53:44 2007 @@ -28,7 +28,7 @@ def find_target targets, requested_targets = collect_targets(:wrap, true) - raise EntryNotFound if targets.nil? + return [] if targets.nil? found_targets = {} foreign_base_key = primary_key From codesite-noreply at google.com Thu Aug 9 08:38:16 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 09 Aug 2007 05:38:16 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r214 - in trunk: . lib/active_ldap/adapter Message-ID: <00163600d06e04374388529db323f1c@google.com> Author: koutou Date: Thu Aug 9 05:38:08 2007 New Revision: 214 Modified: trunk/README trunk/lib/active_ldap/adapter/base.rb Log: * added nil check. Reported by Perry Smith. Thanks! Modified: trunk/README ============================================================================== --- trunk/README (original) +++ trunk/README Thu Aug 9 05:38:08 2007 @@ -99,4 +99,4 @@ * Iain Pople: Bug reports and API improvement ideas. * Christoph Lipp: Tell us character escape syntax. * Kevin McCarthy: Patches. -* Perry Smith: Patches. +* Perry Smith: Patches and bug reports. Modified: trunk/lib/active_ldap/adapter/base.rb ============================================================================== --- trunk/lib/active_ldap/adapter/base.rb (original) +++ trunk/lib/active_ldap/adapter/base.rb Thu Aug 9 05:38:08 2007 @@ -95,8 +95,7 @@ 'ldapSyntaxes', #'extendedAttributeInfo', # if we need RANGE-LOWER/UPPER. ] - key = 'subschemaSubentry' - base ||= root_dse([key], options)[0][key][0] + base ||= root_dse_values('subschemaSubentry', options)[0] base ||= 'cn=schema' dn, attributes = search(:base => base, :scope => :base, @@ -248,10 +247,8 @@ # Get all SASL mechanisms mechanisms = operation(options) do - key = "supportedSASLMechanisms" - root_dse([key])[0][key] + root_dse_values("supportedSASLMechanisms") end - mechanisms ||= [] if options.has_key?(:sasl_quiet) sasl_quiet = options[:sasl_quiet] @@ -463,6 +460,12 @@ reconnect_attempts = options[:reconnect_attempts] || 0 retry_limit < 0 or reconnect_attempts < (retry_limit - 1) + end + + def root_dse_values(key, options={}) + dse = root_dse([key], options)[0] + return [] if dse.nil? + dse[key] || dse[key.downcase] || [] end end end From codesite-noreply at google.com Fri Aug 10 08:45:59 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Fri, 10 Aug 2007 05:45:59 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r215 - trunk/lib/active_ldap/association Message-ID: <00163600d06e043757c1cce75557428@google.com> Author: koutou Date: Fri Aug 10 05:45:53 2007 New Revision: 215 Modified: trunk/lib/active_ldap/association/belongs_to_many.rb Log: * cleanup. Modified: trunk/lib/active_ldap/association/belongs_to_many.rb ============================================================================== --- trunk/lib/active_ldap/association/belongs_to_many.rb (original) +++ trunk/lib/active_ldap/association/belongs_to_many.rb Fri Aug 10 05:45:53 2007 @@ -27,16 +27,14 @@ end def find_target - key = @options[:many] values = @owner[@options[:foreign_key_name], true].compact + return [] if values.empty? + + key = @options[:many] components = values.collect do |value| [key, value] end - if components.empty? - [] - else - foreign_class.find(:all, :filter => [:or, *components]) - end + foreign_class.find(:all, :filter => [:or, *components]) end end end From codesite-noreply at google.com Sat Aug 11 05:58:58 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 11 Aug 2007 02:58:58 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r217 - in trunk: lib/active_ldap test Message-ID: <00c09ffb4bcf0437698a565a0229e0d@google.com> Author: koutou Date: Sat Aug 11 02:58:21 2007 New Revision: 217 Modified: trunk/lib/active_ldap/base.rb trunk/lib/active_ldap/connection.rb trunk/test/al-test-utils.rb trunk/test/test_connection_per_dn.rb Log: * clear association cache if establish_connection success. Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Sat Aug 11 02:58:21 2007 @@ -720,6 +720,7 @@ @connection = nil connection.connect @connection = connection + clear_association_cache rescue ActiveLdap::Error remove_connection @connection = before_connection Modified: trunk/lib/active_ldap/connection.rb ============================================================================== --- trunk/lib/active_ldap/connection.rb (original) +++ trunk/lib/active_ldap/connection.rb Sat Aug 11 02:58:21 2007 @@ -15,6 +15,12 @@ @active_connection_name ||= determine_active_connection_name end + def remove_active_connections! + active_connections.keys.each do |key| + remove_connection(key) + end + end + def clear_active_connections! connections = active_connections connections.each do |key, connection| Modified: trunk/test/al-test-utils.rb ============================================================================== --- trunk/test/al-test-utils.rb (original) +++ trunk/test/al-test-utils.rb Sat Aug 11 02:58:21 2007 @@ -64,7 +64,7 @@ end def teardown - ActiveLdap::Base.clear_active_connections! + ActiveLdap::Base.remove_active_connections! super end end @@ -187,7 +187,7 @@ @user_index += 1 uid = config[:uid] || "temp-user#{@user_index}" ensure_delete_user(uid) do - password = config[:password] || "password" + password = config[:password] || "password#{@user_index}" uid_number = config[:uid_number] || default_uid gid_number = config[:gid_number] || default_gid home_directory = config[:home_directory] || "/nonexistent" @@ -240,7 +240,10 @@ def ensure_delete_user(uid) yield(uid) ensure - @user_class.delete(uid) if @user_class.exists?(uid) + if @user_class.exists?(uid) + @user_class.find(uid).remove_connection + @user_class.delete(uid) + end end def ensure_delete_group(cn) Modified: trunk/test/test_connection_per_dn.rb ============================================================================== --- trunk/test/test_connection_per_dn.rb (original) +++ trunk/test/test_connection_per_dn.rb Sat Aug 11 02:58:21 2007 @@ -6,86 +6,73 @@ priority :must def test_establish_connection make_temporary_user do |user, password| - begin - assert_equal(user.class.connection, user.connection) - assert_raises(ActiveLdap::AuthenticationError) do - user.establish_connection(:bind_dn => nil, - :allow_anonymous => false, - :retry_limit => 0) - end - assert_equal(user.class.connection, user.connection) - - assert_nothing_raised do - user.establish_connection(:bind_dn => nil, - :allow_anonymous => true) - end - assert_not_equal(user.class.connection, user.connection) + assert_equal(user.class.connection, user.connection) + assert_raises(ActiveLdap::AuthenticationError) do + user.establish_connection(:bind_dn => nil, + :allow_anonymous => false, + :retry_limit => 0) + end + assert_equal(user.class.connection, user.connection) - assert_equal(user.connection, user.class.find(user.dn).connection) - assert_equal(user.connection, user.find(user.dn).connection) - ensure - user.remove_connection + assert_nothing_raised do + user.establish_connection(:bind_dn => nil, + :allow_anonymous => true) end + assert_not_equal(user.class.connection, user.connection) + + assert_equal(user.connection, user.class.find(user.dn).connection) + assert_equal(user.connection, user.find(user.dn).connection) end end def test_find make_temporary_user do |user, password| - begin - make_temporary_user do |user2, password2| - user.establish_connection(:bind_dn => user.dn, - :password => password) - assert_not_equal(user.class.connection, user.connection) + make_temporary_user do |user2, password2| + user.establish_connection(:bind_dn => user.dn, + :password => password) + assert_not_equal(user.class.connection, user.connection) - found_user2 = user.find(user2.dn) - assert_not_equal(user2.connection, found_user2.connection) - assert_equal(user.connection, found_user2.connection) - - assert_equal(found_user2.class.connection, - found_user2.class.find(found_user2.dn).connection) - - found_user2.establish_connection(:bind_dn => user2.dn, - :password => password2) - assert_not_equal(user.connection, found_user2.connection) - assert_equal(user2.connection, found_user2.connection) - end - ensure - user.remove_connection + found_user2 = user.find(user2.dn) + assert_not_equal(user2.connection, found_user2.connection) + assert_equal(user.connection, found_user2.connection) + + assert_equal(found_user2.class.connection, + found_user2.class.find(found_user2.dn).connection) + + found_user2.establish_connection(:bind_dn => user2.dn, + :password => password2) + assert_not_equal(user.connection, found_user2.connection) + assert_equal(user2.connection, found_user2.connection) end end end def test_associations make_temporary_user do |user, password| - begin - make_temporary_group do |group1| - make_temporary_group do |group2| - user.groups = [group1] - assert_equal(group1.connection, user.connection) - - user.establish_connection(:bind_dn => user.dn, - :password => password) - assert_not_equal(user.class.connection, user.connection) - assert_not_equal(group1.connection, user.connection) - - assert_raise(ActiveLdap::LdapError::InsufficientAccess) do - user.groups << group2 - end - assert_equal([group1.cn], user.groups.collect(&:cn)) - - assert_not_equal(group1.connection, user.connection) - assert_not_equal(user.groups[0].connection, user.connection) - user.reload - assert_equal(user.groups[0].connection, user.connection) - - found_user = user.class.find(user.dn) - assert_equal(user.connection, found_user.connection) - assert_equal(found_user.connection, - found_user.groups[0].connection) + make_temporary_group do |group1| + make_temporary_group do |group2| + user.groups = [group1] + assert_equal(group1.connection, user.connection) + + user.establish_connection(:bind_dn => user.dn, + :password => password) + assert_not_equal(user.class.connection, user.connection) + assert_not_equal(group1.connection, user.connection) + assert_equal(user.groups[0].connection, user.connection) + + assert_raise(ActiveLdap::LdapError::InsufficientAccess) do + user.groups << group2 end + assert_equal([group1.cn], user.groups.collect(&:cn)) + + assert_not_equal(group1.connection, user.connection) + assert_equal(user.groups[0].connection, user.connection) + + found_user = user.class.find(user.dn) + assert_equal(user.connection, found_user.connection) + assert_equal(found_user.connection, + found_user.groups[0].connection) end - ensure - user.remove_connection end end end From codesite-noreply at google.com Sat Aug 11 06:02:58 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 11 Aug 2007 03:02:58 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r218 - trunk/lib/active_ldap Message-ID: <00163600d06e04376998a69c0729dde@google.com> Author: koutou Date: Sat Aug 11 03:02:44 2007 New Revision: 218 Modified: trunk/lib/active_ldap/connection.rb Log: * fixed wrong condition. Modified: trunk/lib/active_ldap/connection.rb ============================================================================== --- trunk/lib/active_ldap/connection.rb (original) +++ trunk/lib/active_ldap/connection.rb Sat Aug 11 03:02:44 2007 @@ -95,10 +95,10 @@ end def remove_connection(klass_or_key=self) - if klass_or_key.is_a?(String) - key = klass_or_key - else + if klass_or_key.is_a?(Module) key = active_connection_key(klass_or_key) + else + key = klass_or_key end config = configuration(key) conn = active_connections[key] From codesite-noreply at google.com Sat Aug 11 07:44:02 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 11 Aug 2007 04:44:02 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r219 - in trunk/lib: . active_ldap Message-ID: <00163600d06e04376b020e81872d1a7@google.com> Author: koutou Date: Sat Aug 11 04:42:51 2007 New Revision: 219 Modified: trunk/lib/active_ldap.rb trunk/lib/active_ldap/base.rb trunk/lib/active_ldap/configuration.rb trunk/lib/active_ldap/connection.rb trunk/lib/active_ldap/operations.rb Log: * marked :ldap_scop is deprecated. Use :scope instead. Modified: trunk/lib/active_ldap.rb ============================================================================== --- trunk/lib/active_ldap.rb (original) +++ trunk/lib/active_ldap.rb Sat Aug 11 04:42:51 2007 @@ -177,7 +177,7 @@ # class Group < ActiveLdap::Base # ldap_mapping :dn_attribute => 'cn', # :prefix => 'ou=Groups', :classes => ['top', 'posixGroup'] -# :scope => LDAP::LDAP_SCOPE_ONELEVEL +# :scope => :one # end # # As you can see, this method is used for defining how this class maps in to LDAP. Let's say that @@ -473,7 +473,7 @@ # * :method indicates whether to use :ssl, :tls, or :plain # * :retries - indicates the number of attempts to reconnect that will be undertaken when a stale connection occurs. -1 means infinite. # * :retry_wait - seconds to wait before retrying a connection -# * :ldap_scope - dictates how to find objects. (Default: ONELEVEL) +# * :scope - dictates how to find objects. (Default: :one) # * :timeout - time in seconds - defaults to disabled. This CAN interrupt search() requests. Be warned. # * :retry_on_timeout - whether to reconnect when timeouts occur. Defaults to true # See lib/configuration.rb for defaults for each option Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Sat Aug 11 04:42:51 2007 @@ -201,7 +201,7 @@ end class_local_attr_accessor false, :prefix, :base, :dn_attribute - class_local_attr_accessor true, :ldap_scope + class_local_attr_accessor true, :scope class_local_attr_accessor true, :required_classes, :recommended_classes class << self @@ -234,7 +234,7 @@ # :sasl_quiet - if true, sets @sasl_quiet on the Ruby/LDAP connection # :method - whether to use :ssl, :tls, or :plain (unencrypted) # :retry_wait - seconds to wait before retrying a connection - # :ldap_scope - dictates how to find objects. ONELEVEL by default to + # :scope - dictates how to find objects. ONELEVEL by default to # avoid dn_attr collisions across OUs. Think before changing. # :timeout - time in seconds - defaults to disabled. This CAN interrupt # search() requests. Be warned. @@ -276,7 +276,7 @@ self.dn_attribute = dn_attribute self.prefix = prefix - self.ldap_scope = scope + self.scope = scope self.required_classes = classes self.recommended_classes = recommended_classes @@ -303,17 +303,16 @@ end.join(",") end - alias_method :ldap_scope_without_validation=, :ldap_scope= - def ldap_scope=(scope) - validate_ldap_scope(scope) - self.ldap_scope_without_validation = scope + alias_method :scope_without_validation=, :scope= + def scope=(scope) + validate_scope(scope) + self.scope_without_validation = scope end - def validate_ldap_scope(scope) + def validate_scope(scope) scope = scope.to_sym if scope.is_a?(String) return if scope.nil? or scope.is_a?(Symbol) - raise ConfigurationError, - ":ldap_scope '#{scope.inspect}' must be a Symbol" + raise ConfigurationError, "scope '#{scope.inspect}' must be a Symbol" end def base_class @@ -388,7 +387,7 @@ end end - self.ldap_scope = :sub + self.scope = :sub self.required_classes = ['top'] self.recommended_classes = [] @@ -817,7 +816,7 @@ @attr_aliases = {} # aliases of @attr_methods @last_oc = false # for use in other methods for "caching" @base = nil - @ldap_scope = nil + @scope = nil @connection ||= nil end @@ -880,15 +879,15 @@ @base = object_local_base end - alias_method :ldap_scope_of_class, :ldap_scope - def ldap_scope - @ldap_scope || ldap_scope_of_class + alias_method :scope_of_class, :scope + def scope + @scope || scope_of_class end - undef_method :ldap_scope= - def ldap_scope=(scope) - self.class.validate_ldap_scope(scope) - @ldap_scope = scope + undef_method :scope= + def scope=(scope) + self.class.validate_scope(scope) + @scope = scope end # get_attribute Modified: trunk/lib/active_ldap/configuration.rb ============================================================================== --- trunk/lib/active_ldap/configuration.rb (original) +++ trunk/lib/active_ldap/configuration.rb Sat Aug 11 04:42:51 2007 @@ -79,7 +79,7 @@ @@defined_configurations.delete_if {|key, value| value == config} end - CONNECTION_CONFIGURATION_KEYS = [:base, :ldap_scope, :adapter] + CONNECTION_CONFIGURATION_KEYS = [:base, :adapter] def remove_connection_related_configuration(config) config.reject do |key, value| CONNECTION_CONFIGURATION_KEYS.include?(key) @@ -93,8 +93,15 @@ when :base # Scrub before inserting target.base = value.gsub(/['}{#]/, '') - when :ldap_scope - target.ldap_scope = value + when :scope, :ldap_scope + if key == :ldap_scope + logger.warning do + ":ldap_scope configuration option is deprecated. " + + "Use :scope instead." + end + end + target.scope = value + configuration[:scope] = value else configuration[key] = value end Modified: trunk/lib/active_ldap/connection.rb ============================================================================== --- trunk/lib/active_ldap/connection.rb (original) +++ trunk/lib/active_ldap/connection.rb Sat Aug 11 04:42:51 2007 @@ -71,6 +71,12 @@ unless Adapter::Base.respond_to?(adapter_method) raise AdapterNotFound.new(adapter) end + if config.has_key?(:ldap_scope) + logger.warning do + ":ldap_scope connection option is deprecated. Use :scope instead." + end + config[:scope] ||= config.delete(:ldap_scope) + end config = remove_connection_related_configuration(config) Adapter::Base.send(adapter_method, config) end Modified: trunk/lib/active_ldap/operations.rb ============================================================================== --- trunk/lib/active_ldap/operations.rb (original) +++ trunk/lib/active_ldap/operations.rb Sat Aug 11 04:42:51 2007 @@ -43,9 +43,15 @@ filter ||= "(#{attr}=#{escape_filter_value(value, true)})" filter = [:and, filter, *object_class_filters(classes)] _base = [prefix, base].compact.reject{|x| x.empty?}.join(",") + if options.has_key?(:ldap_scope) + logger.warning do + ":ldap_scope search option is deprecated. Use :scope instead." + end + options[:scope] ||= options[:ldap_scope] + end search_options = { :base => _base, - :scope => options[:scope] || ldap_scope, + :scope => options[:scope] || scope, :filter => filter, :limit => options[:limit], :attributes => options[:attributes], @@ -281,7 +287,7 @@ module LDIF def dump(options={}) ldifs = [] - options = {:base => base, :scope => ldap_scope}.merge(options) + options = {:base => base, :scope => scope}.merge(options) conn = options[:connection] || connection conn.search(options) do |dn, attributes| ldifs << to_ldif(dn, attributes) @@ -332,7 +338,7 @@ end def delete_all(filter=nil, options={}) - options = {:base => base, :scope => ldap_scope}.merge(options) + options = {:base => base, :scope => scope}.merge(options) options = options.merge(:filter => filter) if filter conn = options[:connection] || connection targets = conn.search(options).collect do |dn, attributes| From codesite-noreply at google.com Sat Aug 11 07:53:02 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 11 Aug 2007 04:53:02 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r220 - trunk/benchmark Message-ID: <00c09ffb4bcf04376b224674072d49a@google.com> Author: koutou Date: Sat Aug 11 04:52:43 2007 New Revision: 220 Modified: trunk/benchmark/bench-al.rb Log: * catch unwilling result. Modified: trunk/benchmark/bench-al.rb ============================================================================== --- trunk/benchmark/bench-al.rb (original) +++ trunk/benchmark/bench-al.rb Sat Aug 11 04:52:43 2007 @@ -63,7 +63,10 @@ next if dc_class.exists?(value, :prefix => "dc=#{value}") dc = dc_class.new(value) dc.o = dc.dc - dc.save + begin + dc.save + rescue ActiveLdap::OperationNotPermitted + end end if ActiveLdap::Base.search.empty? From codesite-noreply at google.com Sat Aug 11 05:36:58 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 11 Aug 2007 02:36:58 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r216 - in trunk: lib lib/active_ldap lib/active_ldap/adapter lib/active_ldap/association test Message-ID: <00c09ff793780437693ba1aa1329b27@google.com> Author: koutou Date: Sat Aug 11 02:36:28 2007 New Revision: 216 Added: trunk/lib/active_ldap/operations.rb trunk/test/test_connection_per_dn.rb Modified: trunk/lib/active_ldap.rb trunk/lib/active_ldap/adapter/base.rb trunk/lib/active_ldap/association/belongs_to.rb trunk/lib/active_ldap/association/belongs_to_many.rb trunk/lib/active_ldap/association/collection.rb trunk/lib/active_ldap/association/has_many_utils.rb trunk/lib/active_ldap/association/proxy.rb trunk/lib/active_ldap/associations.rb trunk/lib/active_ldap/attributes.rb trunk/lib/active_ldap/base.rb trunk/lib/active_ldap/configuration.rb trunk/lib/active_ldap/connection.rb Log: * supported connection per DN. Modified: trunk/lib/active_ldap.rb ============================================================================== --- trunk/lib/active_ldap.rb (original) +++ trunk/lib/active_ldap.rb Sat Aug 11 02:36:28 2007 @@ -931,6 +931,7 @@ require 'active_ldap/associations' require 'active_ldap/configuration' require 'active_ldap/connection' +require 'active_ldap/operations' require 'active_ldap/attributes' require 'active_ldap/object_class' require 'active_ldap/distinguished_name' @@ -946,6 +947,7 @@ ActiveLdap::Base.class_eval do include ActiveLdap::Configuration include ActiveLdap::Connection + include ActiveLdap::Operations include ActiveLdap::Attributes include ActiveLdap::ObjectClass include ActiveLdap::Associations Modified: trunk/lib/active_ldap/adapter/base.rb ============================================================================== --- trunk/lib/active_ldap/adapter/base.rb (original) +++ trunk/lib/active_ldap/adapter/base.rb Sat Aug 11 02:36:28 2007 @@ -9,7 +9,8 @@ :retry_wait, :bind_dn, :password, :password_block, :try_sasl, :sasl_mechanisms, :sasl_quiet, - :allow_anonymous, :store_password] + :allow_anonymous, :store_password, + :scope] def initialize(configuration={}) @connection = nil @configuration = configuration.dup @@ -116,7 +117,7 @@ def search(options={}) filter = parse_filter(options[:filter]) || 'objectClass=*' attrs = options[:attributes] || [] - scope = ensure_scope(options[:scope]) + scope = ensure_scope(options[:scope] || @scope) base = options[:base] limit = options[:limit] || 0 limit = nil if limit <= 0 Modified: trunk/lib/active_ldap/association/belongs_to.rb ============================================================================== --- trunk/lib/active_ldap/association/belongs_to.rb (original) +++ trunk/lib/active_ldap/association/belongs_to.rb Sat Aug 11 02:36:28 2007 @@ -8,6 +8,7 @@ @target = @owner[@options[:foreign_key_name]] = nil else @target = (Proxy === entry ? entry.target : entry) + infect_connection(@target) unless entry.new_entry? @owner[@options[:foreign_key_name]] = entry[primary_key] end @@ -32,10 +33,11 @@ raise EntryNotFound if value.nil? key = primary_key if key == "dn" - result = foreign_class.find(value) + result = foreign_class.find(value, find_options) else filter = {key => value} - result = foreign_class.find(:all, :filter => filter, :limit => 1).first + options = find_options(:filter => filter, :limit => 1) + result = foreign_class.find(:all, options).first end raise EntryNotFound if result.nil? result Modified: trunk/lib/active_ldap/association/belongs_to_many.rb ============================================================================== --- trunk/lib/active_ldap/association/belongs_to_many.rb (original) +++ trunk/lib/active_ldap/association/belongs_to_many.rb Sat Aug 11 02:36:28 2007 @@ -34,7 +34,8 @@ components = values.collect do |value| [key, value] end - foreign_class.find(:all, :filter => [:or, *components]) + options = find_options(:filter => [:or, *components]) + foreign_class.find(:all, options) end end end Modified: trunk/lib/active_ldap/association/collection.rb ============================================================================== --- trunk/lib/active_ldap/association/collection.rb (original) +++ trunk/lib/active_ldap/association/collection.rb Sat Aug 11 02:36:28 2007 @@ -69,7 +69,10 @@ load_target flatten_deeper(entries).each do |entry| - result &&= insert_entry(entry) unless @owner.new_entry? + unless @owner.new_entry? + infect_connection(entry) + result &&= insert_entry(entry) + end @target << entry end Modified: trunk/lib/active_ldap/association/has_many_utils.rb ============================================================================== --- trunk/lib/active_ldap/association/has_many_utils.rb (original) +++ trunk/lib/active_ldap/association/has_many_utils.rb Sat Aug 11 02:36:28 2007 @@ -18,9 +18,10 @@ if components.empty? targets = [] elsif foreign_base_key == "dn" - targets = foreign_class.find(components) + targets = foreign_class.find(components, find_options) else - targets = foreign_class.find(:all, :filter => [:or, *components]) + options = find_options(:filter => [:or, *components]) + targets = foreign_class.find(:all, options) end if need_requested_targets Modified: trunk/lib/active_ldap/association/proxy.rb ============================================================================== --- trunk/lib/active_ldap/association/proxy.rb (original) +++ trunk/lib/active_ldap/association/proxy.rb Sat Aug 11 02:36:28 2007 @@ -84,6 +84,19 @@ loaded if target target end + + def find_options(options={}) + if @owner.connection != @owner.class.connection + {:connection => @owner.connection}.merge(options) + else + options + end + end + + def infect_connection(target) + conn = @owner.instance_variable_get("@connection") + target.connection = conn if conn + end end end end Modified: trunk/lib/active_ldap/associations.rb ============================================================================== --- trunk/lib/active_ldap/associations.rb (original) +++ trunk/lib/active_ldap/associations.rb Sat Aug 11 02:36:28 2007 @@ -13,6 +13,8 @@ def self.append_features(base) super base.extend(ClassMethods) + base.class_inheritable_array(:associations) + base.associations = [] end module ClassMethods @@ -122,6 +124,7 @@ define_method("__make_#{name}") do make_association.call(self) end + associations << name association_reader(name, &make_association) association_writer(name, &make_association) end @@ -156,6 +159,13 @@ :extend] def validate_has_many_options(options) options.assert_valid_keys(VALID_HAS_MANY_OPTIONS) + end + end + + def clear_association_cache + return if new_record? + (self.class.associations || []).each do |association| + instance_variable_set("@#{association}", nil) end end end Modified: trunk/lib/active_ldap/attributes.rb ============================================================================== --- trunk/lib/active_ldap/attributes.rb (original) +++ trunk/lib/active_ldap/attributes.rb Sat Aug 11 02:36:28 2007 @@ -1,7 +1,11 @@ module ActiveLdap module Attributes def self.included(base) - base.extend(ClassMethods) + base.class_eval do + extend(ClassMethods) + extend(Normalize) + include(Normalize) + end end module ClassMethods @@ -15,7 +19,9 @@ result + ancestor.instance_eval {@attr_protected ||= []} end end + end + module Normalize def normalize_attribute_name(name) name.to_s.downcase end @@ -55,7 +61,7 @@ else values.each do |value| if value.is_a?(Hash) - suffix, real_value = extract_subtypes(value) + suffix, real_value = extract_attribute_options(value) new_name = name + suffix result[new_name] ||= [] result[new_name].concat(real_value) @@ -92,8 +98,9 @@ end # Contents MUST be a String or an Array if !value.has_key?('binary') and schema.binary_required?(name) - suffix, real_value = extract_subtypes(value) - name, values = make_subtypes(name + suffix + ';binary', real_value) + suffix, real_value = extract_attribute_options(value) + name, values = + normalize_attribute_options("#{name}#{suffix};binary", real_value) values else [value] @@ -129,51 +136,39 @@ normalize_attribute_value_of_string(name, new_value) end - - # make_subtypes + # normalize_attribute_options # - # Makes the Hashized value from the full attributename + # Makes the Hashized value from the full attribute name # e.g. userCertificate;binary => "some_bin" # becomes userCertificate => {"binary" => "some_bin"} - def make_subtypes(attr, value) - logger.debug {"stub: called make_subtypes(#{attr.inspect}, " + - "#{value.inspect})"} + def normalize_attribute_options(attr, value) + logger.debug {"stub: called normalize_attribute_options" + + "(#{attr.inspect}, #{value.inspect})"} return [attr, value] unless attr.match(/;/) - ret_attr, *subtypes = attr.split(/;/) - return [ret_attr, [make_subtypes_helper(subtypes, value)]] - end - - # make_subtypes_helper - # - # This is a recursive function for building - # nested hashed from multi-subtyped values - def make_subtypes_helper(subtypes, value) - logger.debug {"stub: called make_subtypes_helper" + - "(#{subtypes.inspect}, #{value.inspect})"} - return value if subtypes.size == 0 - return {subtypes[0] => make_subtypes_helper(subtypes[1..-1], value)} + ret_attr, *options = attr.split(/;/) + [ret_attr, + [options.reverse.inject(value) {|result, option| {option => result}}]] end - # extract_subtypes + # extract_attribute_options # # Extracts all of the subtypes from a given set of nested hashes # and returns the attribute suffix and the final true value - def extract_subtypes(value) - logger.debug {"stub: called extract_subtypes(#{value.inspect})"} - subtype = '' + def extract_attribute_options(value) + logger.debug {"stub: called extract_attribute_options(#{value.inspect})"} + options = '' ret_val = value if value.class == Hash - subtype = ';' + value.keys[0] + options = ';' + value.keys[0] ret_val = value[value.keys[0]] - subsubtype = '' if ret_val.class == Hash - subsubtype, ret_val = extract_subtypes(ret_val) + sub_options, ret_val = extract_attribute_options(ret_val) + options += sub_options end - subtype += subsubtype end ret_val = [ret_val] unless ret_val.class == Array - return subtype, ret_val + [options, ret_val] end end Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Sat Aug 11 02:36:28 2007 @@ -168,9 +168,6 @@ VALID_LDAP_MAPPING_OPTIONS = [:dn_attribute, :prefix, :scope, :classes, :recommended_classes] - VALID_SEARCH_OPTIONS = [:attribute, :value, :filter, :prefix, - :classes, :scope, :limit, :attributes, - :sort_by, :order] cattr_accessor :logger cattr_accessor :configurations @@ -186,7 +183,7 @@ target = superclass value = nil loop do - break nil unless target.respond_to?("#{sym}") + break nil unless target.respond_to?(:#{sym}) value = target.#{sym} break if value target = target.superclass @@ -262,47 +259,6 @@ end end - def search(options={}, &block) - validate_search_options(options) - attr = options[:attribute] - value = options[:value] || '*' - filter = options[:filter] - prefix = options[:prefix] - classes = options[:classes] - - value = value.first if value.is_a?(Array) and value.first.size == 1 - if filter.nil? and !value.is_a?(String) - raise ArgumentError, "Search value must be a String" - end - - _attr, value, _prefix = split_search_value(value) - attr ||= _attr || dn_attribute || "objectClass" - prefix ||= _prefix - filter ||= "(#{attr}=#{escape_filter_value(value, true)})" - filter = [:and, filter, *object_class_filters(classes)] - _base = [prefix, base].compact.reject{|x| x.empty?}.join(",") - search_options = { - :base => _base, - :scope => options[:scope] || ldap_scope, - :filter => filter, - :limit => options[:limit], - :attributes => options[:attributes], - :sort_by => options[:sort_by], - :order => options[:order], - } - connection.search(search_options) do |dn, attrs| - attributes = {} - attrs.each do |key, value| - normalized_attr, normalized_value = make_subtypes(key, value) - attributes[normalized_attr] ||= [] - attributes[normalized_attr].concat(normalized_value) - end - value = [dn, attributes] - value = yield(value) if block_given? - value - end - end - # This class function is used to setup all mappings between the subclass # and ldap for use in activeldap # @@ -349,161 +305,15 @@ alias_method :ldap_scope_without_validation=, :ldap_scope= def ldap_scope=(scope) - scope = scope.to_sym if scope.is_a?(String) - if scope.nil? or scope.is_a?(Symbol) - self.ldap_scope_without_validation = scope - else - raise ConfigurationError, - ":ldap_scope '#{scope.inspect}' must be a Symbol" - end - end - - def dump(options={}) - ldifs = [] - options = {:base => base, :scope => ldap_scope}.merge(options) - connection.search(options) do |dn, attributes| - ldifs << to_ldif(dn, attributes) - end - ldifs.join("\n") - end - - def to_ldif(dn, attributes) - connection.to_ldif(dn, unnormalize_attributes(attributes)) - end - - def load(ldifs) - connection.load(ldifs) - end - - def destroy(targets, options={}) - targets = [targets] unless targets.is_a?(Array) - targets.each do |target| - find(target, options).destroy - end - end - - def destroy_all(filter=nil, options={}) - targets = [] - if filter.is_a?(Hash) - options = options.merge(filter) - filter = nil - end - options = options.merge(:filter => filter) if filter - find(:all, options).sort_by do |target| - target.dn.reverse - end.reverse.each do |target| - target.destroy - end + validate_ldap_scope(scope) + self.ldap_scope_without_validation = scope end - def delete(targets, options={}) - targets = [targets] unless targets.is_a?(Array) - targets = targets.collect do |target| - ensure_dn_attribute(ensure_base(target)) - end - connection.delete(targets, options) - end - - def delete_all(filter=nil, options={}) - options = {:base => base, :scope => ldap_scope}.merge(options) - options = options.merge(:filter => filter) if filter - targets = connection.search(options).collect do |dn, attributes| - dn - end.sort_by do |dn| - dn.reverse - end.reverse - - connection.delete(targets) - end - - def add(dn, entries, options={}) - unnormalized_entries = entries.collect do |type, key, value| - [type, key, unnormalize_attribute(key, value)] - end - connection.add(dn, unnormalized_entries, options) - end - - def modify(dn, entries, options={}) - unnormalized_entries = entries.collect do |type, key, value| - [type, key, unnormalize_attribute(key, value)] - end - connection.modify(dn, unnormalized_entries, options) - end - - # find - # - # Finds the first match for value where |value| is the value of some - # |field|, or the wildcard match. This is only useful for derived classes. - # usage: Subclass.find(:attribute => "cn", :value => "some*val") - # Subclass.find('some*val') - def find(*args) - options = extract_options_from_args!(args) - args = [:first] if args.empty? and !options.empty? - case args.first - when :first - find_initial(options) - when :all - options[:value] ||= args[1] - find_every(options) - else - find_from_dns(args, options) - end - end - - def exists?(dn, options={}) - prefix = /^#{Regexp.escape(truncate_base(ensure_dn_attribute(dn)))}/ # - dn_suffix = nil - not search({:value => dn}.merge(options)).find do |_dn,| - if prefix.match(_dn) - begin - dn_suffix ||= DN.parse(base) - dn_prefix = DN.parse(_dn) - dn_suffix - true - rescue DistinguishedNameInvalid, ArgumentError - false - end - else - false - end - end.nil? - end - - def update(dn, attributes, options={}) - if dn.is_a?(Array) - i = -1 - dns = dn - dns.collect do |dn| - i += 1 - update(dn, attributes[i], options) - end - else - object = find(dn, options) - object.update_attributes(attributes) - object - end - end - - def update_all(attributes, filter=nil, options={}) - search_options = options - if filter - if filter.is_a?(String) and /[=\(\)&\|]/ !~ filter - search_options = search_options.merge(:value => filter) - else - search_options = search_options.merge(:filter => filter) - end - end - targets = search(search_options).collect do |dn, attrs| - dn - end - - entries = attributes.collect do |name, value| - normalized_name, normalized_value = normalize_attribute(name, value) - [:replace, normalized_name, - unnormalize_attribute(normalized_name, normalized_value)] - end - targets.each do |dn| - connection.modify(dn, entries, options) - end + def validate_ldap_scope(scope) + scope = scope.to_sym if scope.is_a?(String) + return if scope.nil? or scope.is_a?(Symbol) + raise ConfigurationError, + ":ldap_scope '#{scope.inspect}' must be a Symbol" end def base_class @@ -523,172 +333,6 @@ options.assert_valid_keys(VALID_LDAP_MAPPING_OPTIONS) end - def validate_search_options(options) - options.assert_valid_keys(VALID_SEARCH_OPTIONS) - end - - def extract_options_from_args!(args) - args.last.is_a?(Hash) ? args.pop : {} - end - - def object_class_filters(classes=nil) - (classes || required_classes).collect do |name| - ["objectClass", escape_filter_value(name, true)] - end - end - - def find_initial(options) - find_every(options.merge(:limit => 1)).first - end - - def normalize_sort_order(value) - case value.to_s - when /\Aasc(?:end)?\z/i - :ascend - when /\Adesc(?:end)?\z/i - :descend - else - raise ArgumentError, "Invalid order: #{value.inspect}" - end - end - - def find_every(options) - options = options.dup - sort_by = options.delete(:sort_by) - order = options.delete(:order) - limit = options.delete(:limit) if sort_by or order - - results = search(options).collect do |dn, attrs| - instantiate([dn, attrs]) - end - return results if sort_by.nil? and order.nil? - - sort_by ||= "dn" - if sort_by.downcase == "dn" - results = results.sort_by {|result| DN.parse(result.dn)} - else - results = results.sort_by {|result| result.send(sort_by)} - end - - results.reverse! if normalize_sort_order(order || "ascend") == :descend - results = results[0, limit] if limit - results - end - - def find_from_dns(dns, options) - expects_array = dns.first.is_a?(Array) - return [] if expects_array and dns.first.empty? - - dns = dns.flatten.compact.uniq - - case dns.size - when 0 - raise EntryNotFound, "Couldn't find #{name} without a DN" - when 1 - result = find_one(dns.first, options) - expects_array ? [result] : result - else - find_some(dns, options) - end - end - - def find_one(dn, options) - attr, value, prefix = split_search_value(dn) - filter = [attr || dn_attribute, escape_filter_value(value, true)] - filter = [:and, filter, options[:filter]] if options[:filter] - options = {:prefix => prefix}.merge(options.merge(:filter => filter)) - result = find_initial(options) - if result - result - else - message = "Couldn't find #{name} with DN=#{dn}" - message << " #{options[:filter]}" if options[:filter] - raise EntryNotFound, message - end - end - - def find_some(dns, options) - dn_filters = dns.collect do |dn| - attr, value, prefix = split_search_value(dn) - attr ||= dn_attribute - filter = [attr, escape_filter_value(value, true)] - if prefix - filter = [:and, - filter, - [dn, "*,#{escape_filter_value(prefix)},#{base}"]] - end - filter - end - filter = [:or, *dn_filters] - filter = [:and, filter, options[:filter]] if options[:filter] - result = find_every(options.merge(:filter => filter)) - if result.size == dns.size - result - else - message = "Couldn't find all #{name} with DNs (#{dns.join(', ')})" - message << " #{options[:filter]}"if options[:filter] - raise EntryNotFound, message - end - end - - def split_search_value(value) - attr = prefix = nil - begin - dn = DN.parse(value) - attr, value = dn.rdns.first.to_a.first - rest = dn.rdns[1..-1] - prefix = DN.new(*rest).to_s unless rest.empty? - rescue DistinguishedNameInvalid - begin - dn = DN.parse("DUMMY=#{value}") - _, value = dn.rdns.first.to_a.first - rest = dn.rdns[1..-1] - prefix = DN.new(*rest).to_s unless rest.empty? - rescue DistinguishedNameInvalid - end - end - - prefix = nil if prefix == base - prefix = truncate_base(prefix) if prefix - [attr, value, prefix] - end - - def escape_filter_value(value, without_asterisk=false) - value.gsub(/[\*\(\)\\\0]/) do |x| - if without_asterisk and x == "*" - x - else - "\\%02x" % x[0] - end - end - end - - def ensure_dn(target) - attr, value, prefix = split_search_value(target) - "#{attr || dn_attribute}=#{value},#{prefix || base}" - end - - def ensure_dn_attribute(target) - "#{dn_attribute}=" + - target.gsub(/^\s*#{Regexp.escape(dn_attribute)}\s*=\s*/i, '') - end - - def ensure_base(target) - [truncate_base(target), base].join(',') - end - - def truncate_base(target) - if /,/ =~ target - begin - (DN.parse(target) - DN.parse(base)).to_s - rescue DistinguishedNameInvalid, ArgumentError - target - end - else - target - end - end - def ensure_logger @@logger ||= configuration[:logger] # Setup default logger to console @@ -702,8 +346,9 @@ configuration[:logger] ||= @@logger end - def instantiate(entry) - dn, attributes = entry + def instantiate(args) + dn, attributes, options = args + options ||= {} if self.class == Class klass = self.ancestors[0].to_s.split(':').last real_klass = self.ancestors[0] @@ -713,6 +358,8 @@ end obj = real_klass.allocate + conn = options[:connection] || connection + obj.connection = conn if conn != connection obj.instance_eval do initialize_by_ldap_data(dn, attributes) end @@ -883,6 +530,10 @@ end end + def delete(options={}) + super(dn, options) + end + # save # # Save and validate this object into LDAP @@ -997,7 +648,7 @@ end def to_ldif - self.class.to_ldif(dn, normalize_data(@data)) + super(dn, normalize_data(@data)) end def to_xml(options={}) @@ -1030,7 +681,8 @@ alias_method :has_attribute?, :have_attribute? def reload - _, attributes = self.class.search(:value => id).find do |_dn, _attributes| + clear_association_cache + _, attributes = search(:value => id).find do |_dn, _attributes| dn == _dn end raise EntryNotFound, "Can't find dn '#{dn}' to reload" if attributes.nil? @@ -1061,6 +713,21 @@ end end + def establish_connection(config={}) + super + before_connection = @connection + begin + @connection = nil + connection.connect + @connection = connection + rescue ActiveLdap::Error + remove_connection + @connection = before_connection + raise + end + true + end + private def extract_object_class(attributes) classes = [] @@ -1094,6 +761,18 @@ yield self if block_given? end + def instantiate(args) + dn, attributes, options = args + options ||= {} + + obj = self.class.allocate + obj.connection = options[:connection] || @connection + obj.instance_eval do + initialize_by_ldap_data(dn, attributes) + end + obj + end + def to_real_attribute_name(name, allow_normalized_name=false) ensure_apply_object_class name = name.to_s @@ -1123,7 +802,7 @@ logger.debug {"stub: enforce_type called"} ensure_apply_object_class # Enforce attribute value formatting - result = self.class.normalize_attribute(key, value)[1] + result = normalize_attribute(key, value)[1] logger.debug {"stub: enforce_types done"} result end @@ -1137,6 +816,8 @@ @attr_aliases = {} # aliases of @attr_methods @last_oc = false # for use in other methods for "caching" @base = nil + @ldap_scope = nil + @connection ||= nil end # apply_object_class @@ -1198,6 +879,17 @@ @base = object_local_base end + alias_method :ldap_scope_of_class, :ldap_scope + def ldap_scope + @ldap_scope || ldap_scope_of_class + end + + undef_method :ldap_scope= + def ldap_scope=(scope) + self.class.validate_ldap_scope(scope) + @ldap_scope = scope + end + # get_attribute # # Return the value of the attribute called by method_missing? @@ -1359,12 +1051,12 @@ result end - def collect_modified_entries(ldap_data, data) - entries = [] - # Now that all the subtypes will be treated as unique attributes + def collect_modified_attributes(ldap_data, data) + attributes = [] + # Now that all the options will be treated as unique attributes # we can see what's changed and add anything that is brand-spankin' # new. - logger.debug {'#collect_modified_entries: traversing ldap_data ' + + logger.debug {'#collect_modified_attributes: traversing ldap_data ' + 'determining replaces and deletes'} ldap_data.each do |k, v| value = data[k] || [] @@ -1376,60 +1068,59 @@ # Since some types do not have equality matching rules, # delete doesn't work # Replacing with nothing is equivalent. - logger.debug {"#save: removing attribute from existing entry: #{k}"} + logger.debug {"#save: removing attribute: #{k}"} if !data.has_key?(k) and schema.binary_required?(k) value = [{'binary' => []}] end else # Ditched delete then replace because attribs with no equality # match rules will fails - logger.debug {"#collect_modified_entries: updating attribute of" + - " existing entry: #{k}: #{value.inspect}"} + logger.debug {"#collect_modified_attributes: updating attribute:" + + " #{k}: #{value.inspect}"} end - entries.push([:replace, k, value]) + attributes.push([:replace, k, value]) end - logger.debug {'#collect_modified_entries: finished traversing' + + logger.debug {'#collect_modified_attributes: finished traversing' + ' ldap_data'} - logger.debug {'#collect_modified_entries: traversing data ' + + logger.debug {'#collect_modified_attributes: traversing data ' + 'determining adds'} data.each do |k, v| value = v || [] next if ldap_data.has_key?(k) or value.empty? # Detect subtypes and account for them - logger.debug {"#save: adding attribute to existing entry: " + - "#{k}: #{value.inspect}"} + logger.debug {"#save: adding attribute: #{k}: #{value.inspect}"} # REPLACE will function like ADD, but doesn't hit EQUALITY problems # TODO: Added equality(attr) to Schema - entries.push([:replace, k, value]) + attributes.push([:replace, k, value]) end - entries + attributes end - def collect_all_entries(data) + def collect_all_attributes(data) dn_attr = to_real_attribute_name(dn_attribute) dn_value = data[dn_attr] - logger.debug {'#collect_all_entries: adding all attribute value pairs'} - logger.debug {"#collect_all_entries: adding " + + logger.debug {'#collect_all_attributes: adding all attribute value pairs'} + logger.debug {"#collect_all_attributes: adding " + "#{dn_attr.inspect} = #{dn_value.inspect}"} - entries = [] - entries.push([:add, dn_attr, dn_value]) + attributes = [] + attributes.push([:add, dn_attr, dn_value]) oc_value = data['objectClass'] - logger.debug {"#collect_all_entries: adding objectClass = " + + logger.debug {"#collect_all_attributes: adding objectClass = " + "#{oc_value.inspect}"} - entries.push([:add, 'objectClass', oc_value]) + attributes.push([:add, 'objectClass', oc_value]) data.each do |key, value| next if value.empty? or key == 'objectClass' or key == dn_attr - logger.debug {"#collect_all_entries: adding attribute to new " + - "entry: #{key.inspect}: #{value.inspect}"} - entries.push([:add, key, value]) + logger.debug {"#collect_all_attributes: adding attribute: " + + "#{key.inspect}: #{value.inspect}"} + attributes.push([:add, key, value]) end - entries + attributes end def check_configuration @@ -1446,14 +1137,14 @@ def prepare_data_for_saving logger.debug {"stub: save called"} - # Expand subtypes to real ldap_data entries + # Expand subtypes to real ldap_data attributes # We can't reuse @ldap_data because an exception would leave # an object in an unknown state logger.debug {"#save: expanding subtypes in @ldap_data"} ldap_data = normalize_data(@ldap_data) logger.debug {'#save: subtypes expanded for @ldap_data'} - # Expand subtypes to real data entries, but leave @data alone + # Expand subtypes to real data attributes, but leave @data alone logger.debug {'#save: expanding subtypes for @data'} bad_attrs = @data.keys - attribute_names data = normalize_data(@data, bad_attrs) @@ -1480,9 +1171,9 @@ def create prepare_data_for_saving do |data, ldap_data| - entries = collect_all_entries(data) + attributes = collect_all_attributes(data) logger.debug {"#create: adding #{dn}"} - self.class.add(dn, entries) + add_entry(dn, attributes) logger.debug {"#create: add successful"} @new_entry = false true @@ -1491,10 +1182,10 @@ def update prepare_data_for_saving do |data, ldap_data| - entries = collect_modified_entries(ldap_data, data) + attributes = collect_modified_attributes(ldap_data, data) logger.debug {'#update: traversing data complete'} logger.debug {"#update: modifying #{dn}"} - self.class.modify(dn, entries) + modify_entry(dn, attributes) logger.debug {'#update: modify successful'} true end Modified: trunk/lib/active_ldap/configuration.rb ============================================================================== --- trunk/lib/active_ldap/configuration.rb (original) +++ trunk/lib/active_ldap/configuration.rb Sat Aug 11 02:36:28 2007 @@ -86,15 +86,15 @@ end end - def merge_configuration(config) + def merge_configuration(config, target=self) configuration = default_configuration config.symbolize_keys.each do |key, value| case key when :base # Scrub before inserting - self.base = value.gsub(/['}{#]/, '') + target.base = value.gsub(/['}{#]/, '') when :ldap_scope - self.ldap_scope = value + target.ldap_scope = value else configuration[key] = value end Modified: trunk/lib/active_ldap/connection.rb ============================================================================== --- trunk/lib/active_ldap/connection.rb (original) +++ trunk/lib/active_ldap/connection.rb Sat Aug 11 02:36:28 2007 @@ -47,18 +47,10 @@ def connection=(adapter) if adapter.is_a?(Adapter::Base) - @schema = nil active_connections[active_connection_name] = adapter elsif adapter.is_a?(Hash) config = adapter - adapter = (config[:adapter] || "ldap") - normalized_adapter = adapter.downcase.gsub(/-/, "_") - adapter_method = "#{normalized_adapter}_connection" - unless Adapter::Base.respond_to?(adapter_method) - raise AdapterNotFound.new(adapter) - end - config = remove_connection_related_configuration(config) - self.connection = Adapter::Base.send(adapter_method, config) + self.connection = instantiate_adapter(config) elsif adapter.nil? raise ConnectionNotEstablished else @@ -66,6 +58,17 @@ end end + def instantiate_adapter(config) + adapter = (config[:adapter] || "ldap") + normalized_adapter = adapter.downcase.gsub(/-/, "_") + adapter_method = "#{normalized_adapter}_connection" + unless Adapter::Base.respond_to?(adapter_method) + raise AdapterNotFound.new(adapter) + end + config = remove_connection_related_configuration(config) + Adapter::Base.send(adapter_method, config) + end + def connected? active_connections[active_connection_name] ? true : false end @@ -85,8 +88,12 @@ conn end - def remove_connection(klass=self) - key = active_connection_key(klass) + def remove_connection(klass_or_key=self) + if klass_or_key.is_a?(String) + key = klass_or_key + else + key = active_connection_key(klass_or_key) + end config = configuration(key) conn = active_connections[key] remove_configuration_by_configuration(config) @@ -107,7 +114,7 @@ # Return the schema object def schema - @schema ||= connection.schema + connection.schema end private @@ -127,16 +134,50 @@ end end + def establish_connection(config=nil) + config = self.class.ensure_configuration(config) + config = self.class.configuration.merge(config) + config = self.class.merge_configuration(config, self) + + remove_connection + self.class.define_configuration(dn, config) + end + + def remove_connection + self.class.remove_connection(dn) + end + def connection - self.class.connection + conn = @connection + conn ||= self.class.active_connections[dn] || retrieve_connection if id + conn || self.class.connection + end + + def connection=(adapter) + if adapter.nil? or adapter.is_a?(Adapter::Base) + @connection = adapter + elsif adapter.is_a?(Hash) + config = adapter + @connection = self.class.instantiate_adapter(config) + else + establish_connection(adapter) + end + end + + def retrieve_connection + conn = self.class.active_connections[dn] + return conn if conn + + config = self.class.configuration(dn) + return nil unless config + + conn = self.class.instantiate_adapter(config) + @connection = self.class.active_connections[dn] = conn + conn end - # schema - # - # Returns the value of self.class.schema - # This is just syntactic sugar def schema - self.class.schema + connection.schema end end end Added: trunk/lib/active_ldap/operations.rb ============================================================================== --- (empty file) +++ trunk/lib/active_ldap/operations.rb Sat Aug 11 02:36:28 2007 @@ -0,0 +1,405 @@ +module ActiveLdap + module Operations + class << self + def included(base) + super + base.class_eval do + extend(Common) + extend(Find) + extend(LDIF) + extend(Delete) + extend(Update) + + include(Common) + include(Find) + include(LDIF) + include(Delete) + include(Update) + end + end + end + + module Common + VALID_SEARCH_OPTIONS = [:attribute, :value, :filter, :prefix, + :classes, :scope, :limit, :attributes, + :sort_by, :order, :connection] + + def search(options={}, &block) + validate_search_options(options) + attr = options[:attribute] + value = options[:value] || '*' + filter = options[:filter] + prefix = options[:prefix] + classes = options[:classes] + + value = value.first if value.is_a?(Array) and value.first.size == 1 + if filter.nil? and !value.is_a?(String) + raise ArgumentError, "Search value must be a String" + end + + _attr, value, _prefix = split_search_value(value) + attr ||= _attr || dn_attribute || "objectClass" + prefix ||= _prefix + filter ||= "(#{attr}=#{escape_filter_value(value, true)})" + filter = [:and, filter, *object_class_filters(classes)] + _base = [prefix, base].compact.reject{|x| x.empty?}.join(",") + search_options = { + :base => _base, + :scope => options[:scope] || ldap_scope, + :filter => filter, + :limit => options[:limit], + :attributes => options[:attributes], + :sort_by => options[:sort_by], + :order => options[:order], + } + + conn = options[:connection] || connection + conn.search(search_options) do |dn, attrs| + attributes = {} + attrs.each do |key, value| + normalized_attr, normalized_value = + normalize_attribute_options(key, value) + attributes[normalized_attr] ||= [] + attributes[normalized_attr].concat(normalized_value) + end + value = [dn, attributes] + value = yield(value) if block_given? + value + end + end + + def exist?(dn, options={}) + prefix = /^#{Regexp.escape(truncate_base(ensure_dn_attribute(dn)))}/ # + dn_suffix = nil + not search({:value => dn}.merge(options)).find do |_dn,| + if prefix.match(_dn) + begin + dn_suffix ||= DN.parse(base) + dn_prefix = DN.parse(_dn) - dn_suffix + true + rescue DistinguishedNameInvalid, ArgumentError + false + end + else + false + end + end.nil? + end + alias_method :exists?, :exist? + + private + def validate_search_options(options) + options.assert_valid_keys(VALID_SEARCH_OPTIONS) + end + + def extract_options_from_args!(args) + args.last.is_a?(Hash) ? args.pop : {} + end + + def ensure_dn_attribute(target) + "#{dn_attribute}=" + + target.gsub(/^\s*#{Regexp.escape(dn_attribute)}\s*=\s*/i, '') + end + + def ensure_base(target) + [truncate_base(target), base].join(',') + end + + def truncate_base(target) + if /,/ =~ target + begin + (DN.parse(target) - DN.parse(base)).to_s + rescue DistinguishedNameInvalid, ArgumentError + target + end + else + target + end + end + + def object_class_filters(classes=nil) + (classes || required_classes).collect do |name| + ["objectClass", escape_filter_value(name, true)] + end + end + + def escape_filter_value(value, without_asterisk=false) + value.gsub(/[\*\(\)\\\0]/) do |x| + if without_asterisk and x == "*" + x + else + "\\%02x" % x[0] + end + end + end + + def split_search_value(value) + attr = prefix = nil + begin + dn = DN.parse(value) + attr, value = dn.rdns.first.to_a.first + rest = dn.rdns[1..-1] + prefix = DN.new(*rest).to_s unless rest.empty? + rescue DistinguishedNameInvalid + begin + dn = DN.parse("DUMMY=#{value}") + _, value = dn.rdns.first.to_a.first + rest = dn.rdns[1..-1] + prefix = DN.new(*rest).to_s unless rest.empty? + rescue DistinguishedNameInvalid + end + end + + prefix = nil if prefix == base + prefix = truncate_base(prefix) if prefix + [attr, value, prefix] + end + end + + module Find + # find + # + # Finds the first match for value where |value| is the value of some + # |field|, or the wildcard match. This is only useful for derived classes. + # usage: Subclass.find(:attribute => "cn", :value => "some*val") + # Subclass.find('some*val') + def find(*args) + options = extract_options_from_args!(args) + args = [:first] if args.empty? and !options.empty? + case args.first + when :first + find_initial(options) + when :all + options[:value] ||= args[1] + find_every(options) + else + find_from_dns(args, options) + end + end + + private + def find_initial(options) + find_every(options.merge(:limit => 1)).first + end + + def normalize_sort_order(value) + case value.to_s + when /\Aasc(?:end)?\z/i + :ascend + when /\Adesc(?:end)?\z/i + :descend + else + raise ArgumentError, "Invalid order: #{value.inspect}" + end + end + + def find_every(options) + options = options.dup + sort_by = options.delete(:sort_by) + order = options.delete(:order) + limit = options.delete(:limit) if sort_by or order + + results = search(options).collect do |dn, attrs| + instantiate([dn, attrs, {:connection => options[:connection]}]) + end + return results if sort_by.nil? and order.nil? + + sort_by ||= "dn" + if sort_by.downcase == "dn" + results = results.sort_by {|result| DN.parse(result.dn)} + else + results = results.sort_by {|result| result.send(sort_by)} + end + + results.reverse! if normalize_sort_order(order || "ascend") == :descend + results = results[0, limit] if limit + results + end + + def find_from_dns(dns, options) + expects_array = dns.first.is_a?(Array) + return [] if expects_array and dns.first.empty? + + dns = dns.flatten.compact.uniq + + case dns.size + when 0 + raise EntryNotFound, "Couldn't find #{name} without a DN" + when 1 + result = find_one(dns.first, options) + expects_array ? [result] : result + else + find_some(dns, options) + end + end + + def find_one(dn, options) + attr, value, prefix = split_search_value(dn) + filter = [attr || dn_attribute, escape_filter_value(value, true)] + filter = [:and, filter, options[:filter]] if options[:filter] + options = {:prefix => prefix}.merge(options.merge(:filter => filter)) + result = find_initial(options) + if result + result + else + message = "Couldn't find #{name} with DN=#{dn}" + message << " #{options[:filter]}" if options[:filter] + raise EntryNotFound, message + end + end + + def find_some(dns, options) + dn_filters = dns.collect do |dn| + attr, value, prefix = split_search_value(dn) + attr ||= dn_attribute + filter = [attr, escape_filter_value(value, true)] + if prefix + filter = [:and, + filter, + [dn, "*,#{escape_filter_value(prefix)},#{base}"]] + end + filter + end + filter = [:or, *dn_filters] + filter = [:and, filter, options[:filter]] if options[:filter] + result = find_every(options.merge(:filter => filter)) + if result.size == dns.size + result + else + message = "Couldn't find all #{name} with DNs (#{dns.join(', ')})" + message << " #{options[:filter]}"if options[:filter] + raise EntryNotFound, message + end + end + + def ensure_dn(target) + attr, value, prefix = split_search_value(target) + "#{attr || dn_attribute}=#{value},#{prefix || base}" + end + end + + module LDIF + def dump(options={}) + ldifs = [] + options = {:base => base, :scope => ldap_scope}.merge(options) + conn = options[:connection] || connection + conn.search(options) do |dn, attributes| + ldifs << to_ldif(dn, attributes) + end + ldifs.join("\n") + end + + def to_ldif(dn, attributes, options={}) + conn = options[:connection] || connection + conn.to_ldif(dn, unnormalize_attributes(attributes)) + end + + def load(ldifs, options={}) + conn = options[:connection] || connection + conn.load(ldifs) + end + end + + module Delete + def destroy(targets, options={}) + targets = [targets] unless targets.is_a?(Array) + targets.each do |target| + find(target, options).destroy + end + end + + def destroy_all(filter=nil, options={}) + targets = [] + if filter.is_a?(Hash) + options = options.merge(filter) + filter = nil + end + options = options.merge(:filter => filter) if filter + find(:all, options).sort_by do |target| + target.dn.reverse + end.reverse.each do |target| + target.destroy + end + end + + def delete(targets, options={}) + targets = [targets] unless targets.is_a?(Array) + targets = targets.collect do |target| + ensure_dn_attribute(ensure_base(target)) + end + conn = options[:connection] || connection + conn.delete(targets, options) + end + + def delete_all(filter=nil, options={}) + options = {:base => base, :scope => ldap_scope}.merge(options) + options = options.merge(:filter => filter) if filter + conn = options[:connection] || connection + targets = conn.search(options).collect do |dn, attributes| + dn + end.sort_by do |dn| + dn.reverse + end.reverse + + conn.delete(targets) + end + end + + module Update + def add_entry(dn, attributes, options={}) + unnormalized_attributes = attributes.collect do |type, key, value| + [type, key, unnormalize_attribute(key, value)] + end + conn = options[:connection] || connection + conn.add(dn, unnormalized_attributes, options) + end + + def modify_entry(dn, attributes, options={}) + unnormalized_attributes = attributes.collect do |type, key, value| + [type, key, unnormalize_attribute(key, value)] + end + conn = options[:connection] || connection + conn.modify(dn, unnormalized_attributes, options) + end + + def update(dn, attributes, options={}) + if dn.is_a?(Array) + i = -1 + dns = dn + dns.collect do |dn| + i += 1 + update(dn, attributes[i], options) + end + else + object = find(dn, options) + object.update_attributes(attributes) + object + end + end + + def update_all(attributes, filter=nil, options={}) + search_options = options.dup + if filter + if filter.is_a?(String) and /[=\(\)&\|]/ !~ filter + search_options = search_options.merge(:value => filter) + else + search_options = search_options.merge(:filter => filter) + end + end + targets = search(search_options).collect do |dn, attrs| + dn + end + + unnormalized_attributes = attributes.collect do |name, value| + normalized_name, normalized_value = normalize_attribute(name, value) + [:replace, normalized_name, + unnormalize_attribute(normalized_name, normalized_value)] + end + conn = options[:connection] || connection + targets.each do |dn| + conn.modify(dn, unnormalized_attributes, options) + end + end + end + end +end Added: trunk/test/test_connection_per_dn.rb ============================================================================== --- (empty file) +++ trunk/test/test_connection_per_dn.rb Sat Aug 11 02:36:28 2007 @@ -0,0 +1,92 @@ +require 'al-test-utils' + +class TestConnectionPerDN < Test::Unit::TestCase + include AlTestUtils + + priority :must + def test_establish_connection + make_temporary_user do |user, password| + begin + assert_equal(user.class.connection, user.connection) + assert_raises(ActiveLdap::AuthenticationError) do + user.establish_connection(:bind_dn => nil, + :allow_anonymous => false, + :retry_limit => 0) + end + assert_equal(user.class.connection, user.connection) + + assert_nothing_raised do + user.establish_connection(:bind_dn => nil, + :allow_anonymous => true) + end + assert_not_equal(user.class.connection, user.connection) + + assert_equal(user.connection, user.class.find(user.dn).connection) + assert_equal(user.connection, user.find(user.dn).connection) + ensure + user.remove_connection + end + end + end + + def test_find + make_temporary_user do |user, password| + begin + make_temporary_user do |user2, password2| + user.establish_connection(:bind_dn => user.dn, + :password => password) + assert_not_equal(user.class.connection, user.connection) + + found_user2 = user.find(user2.dn) + assert_not_equal(user2.connection, found_user2.connection) + assert_equal(user.connection, found_user2.connection) + + assert_equal(found_user2.class.connection, + found_user2.class.find(found_user2.dn).connection) + + found_user2.establish_connection(:bind_dn => user2.dn, + :password => password2) + assert_not_equal(user.connection, found_user2.connection) + assert_equal(user2.connection, found_user2.connection) + end + ensure + user.remove_connection + end + end + end + + def test_associations + make_temporary_user do |user, password| + begin + make_temporary_group do |group1| + make_temporary_group do |group2| + user.groups = [group1] + assert_equal(group1.connection, user.connection) + + user.establish_connection(:bind_dn => user.dn, + :password => password) + assert_not_equal(user.class.connection, user.connection) + assert_not_equal(group1.connection, user.connection) + + assert_raise(ActiveLdap::LdapError::InsufficientAccess) do + user.groups << group2 + end + assert_equal([group1.cn], user.groups.collect(&:cn)) + + assert_not_equal(group1.connection, user.connection) + assert_not_equal(user.groups[0].connection, user.connection) + user.reload + assert_equal(user.groups[0].connection, user.connection) + + found_user = user.class.find(user.dn) + assert_equal(user.connection, found_user.connection) + assert_equal(found_user.connection, + found_user.groups[0].connection) + end + end + ensure + user.remove_connection + end + end + end +end From codesite-noreply at google.com Sat Aug 11 23:55:32 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 11 Aug 2007 20:55:32 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r221 - trunk/lib/active_ldap Message-ID: <163600d6b30437789467459c1e686@google.com> Author: koutou Date: Sat Aug 11 20:55:12 2007 New Revision: 221 Modified: trunk/lib/active_ldap/base.rb trunk/lib/active_ldap/connection.rb trunk/lib/active_ldap/operations.rb Log: * improved API. Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Sat Aug 11 20:55:12 2007 @@ -713,7 +713,10 @@ end def establish_connection(config={}) - super + if config.is_a?(Hash) + config = {:bind_dn => dn, :allow_anonymous => false}.merge(config) + end + super(config) before_connection = @connection begin @connection = nil Modified: trunk/lib/active_ldap/connection.rb ============================================================================== --- trunk/lib/active_ldap/connection.rb (original) +++ trunk/lib/active_ldap/connection.rb Sat Aug 11 20:55:12 2007 @@ -165,6 +165,10 @@ conn || self.class.connection end + def connected? + connection != self.class.connection + end + def connection=(adapter) if adapter.nil? or adapter.is_a?(Adapter::Base) @connection = adapter Modified: trunk/lib/active_ldap/operations.rb ============================================================================== --- trunk/lib/active_ldap/operations.rb (original) +++ trunk/lib/active_ldap/operations.rb Sat Aug 11 20:55:12 2007 @@ -93,6 +93,10 @@ end alias_method :exists?, :exist? + def count(options={}) + search(options).size + end + private def validate_search_options(options) options.assert_valid_keys(VALID_SEARCH_OPTIONS) From codesite-noreply at google.com Sun Aug 12 00:45:34 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 11 Aug 2007 21:45:34 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r222 - trunk/lib/active_ldap Message-ID: Author: koutou Date: Sat Aug 11 21:45:04 2007 New Revision: 222 Modified: trunk/lib/active_ldap/attributes.rb trunk/lib/active_ldap/base.rb Log: * removed needless attributes= constraint. * supported retrieving unique attribute names. Modified: trunk/lib/active_ldap/attributes.rb ============================================================================== --- trunk/lib/active_ldap/attributes.rb (original) +++ trunk/lib/active_ldap/attributes.rb Sat Aug 11 21:45:04 2007 @@ -181,9 +181,9 @@ end targets.collect do |key, value| - [to_real_attribute_name(key), value] + [to_real_attribute_name(key) || key, value] end.reject do |key, value| - key.nil? or needless_attributes[key] + needless_attributes[key] end end Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Sat Aug 11 21:45:04 2007 @@ -463,10 +463,17 @@ # # Return attribute methods so that a program can determine available # attributes dynamically without schema awareness - def attribute_names + def attribute_names(normalize=false) logger.debug {"stub: attribute_names called"} ensure_apply_object_class - return @attr_methods.keys + names = @attr_methods.keys + if normalize + names.collect do |name| + to_real_attribute_name(name) + end.uniq + else + names + end end def attribute_present?(name) @@ -616,7 +623,7 @@ # Updates a given attribute and saves immediately def update_attribute(name, value) - set_attribute(name, value) if have_attribute?(name) + send("#{name}=", value) save end @@ -627,6 +634,11 @@ save end + def update_attributes!(attrs) + self.attributes = attrs + save! + end + # This returns the key value pairs in @data with all values # cloned def attributes @@ -642,7 +654,7 @@ def attributes=(hash_or_assoc) targets = remove_attributes_protected_from_mass_assignment(hash_or_assoc) targets.each do |key, value| - set_attribute(key, value) if have_attribute?(key) + send("#{key}=", value) end end From codesite-noreply at google.com Sun Aug 12 00:53:34 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 11 Aug 2007 21:53:34 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r223 - in trunk/lib/active_ldap: . adapter Message-ID: <163600d06e04377963fc81d220b54@google.com> Author: koutou Date: Sat Aug 11 21:52:28 2007 New Revision: 223 Modified: trunk/lib/active_ldap/adapter/base.rb trunk/lib/active_ldap/attributes.rb trunk/lib/active_ldap/base.rb trunk/lib/active_ldap/validations.rb Log: * removed needless log messages: benchmark(before): user system total real AL 0.770000 0.040000 0.810000 ( 1.131281) AL(No Obj) 0.070000 0.000000 0.070000 ( 0.174508) LDAP 0.010000 0.000000 0.010000 ( 0.023868) benchamrk(after): user system total real AL 0.760000 0.040000 0.800000 ( 0.989990) AL(No Obj) 0.020000 0.000000 0.020000 ( 0.140160) LDAP 0.010000 0.000000 0.010000 ( 0.005545) Entries processed by Ruby/ActiveLdap: 100 Entries processed by Ruby/ActiveLdap (without object creation): 100 Entries processed by Ruby/LDAP: 100 Modified: trunk/lib/active_ldap/adapter/base.rb ============================================================================== --- trunk/lib/active_ldap/adapter/base.rb (original) +++ trunk/lib/active_ldap/adapter/base.rb Sat Aug 11 21:52:28 2007 @@ -70,7 +70,6 @@ end def bind_as_anonymous(options={}) - @logger.info {"Attempting anonymous authentication"} operation(options) do yield end @@ -136,7 +135,7 @@ end rescue LdapError # Do nothing on failure - @logger.debug {"Ignore error #{$!.class}(#{$!.message}) " + + @logger.info {"Ignore error #{$!.class}(#{$!.message}) " + "for #{filter} and attrs #{attrs.inspect}"} end @@ -280,7 +279,6 @@ bound? end rescue LdapError::InvalidDnSyntax - @logger.debug {"DN is invalid: #{bind_dn}"} raise DistinguishedNameInvalid.new(bind_dn) rescue LdapError::InvalidCredentials false @@ -436,9 +434,11 @@ connect(options) break rescue => detail - @logger.error {"Reconnect to server failed: #{detail.exception}"} - @logger.error {"Reconnect to server failed backtrace:\n" + - detail.backtrace.join("\n")} + @logger.error do + "Reconnect to server failed: #{detail.exception}\n" + + "Reconnect to server failed backtrace:\n" + + detail.backtrace.join("\n") + end # Do not loop if forced raise ConnectionError, detail.message if force end Modified: trunk/lib/active_ldap/attributes.rb ============================================================================== --- trunk/lib/active_ldap/attributes.rb (original) +++ trunk/lib/active_ldap/attributes.rb Sat Aug 11 21:52:28 2007 @@ -30,8 +30,6 @@ # Hashes are for subtypes # Arrays are for multiple entries def normalize_attribute(name, value) - logger.debug {"stub: called normalize_attribute" + - "(#{name.inspect}, #{value.inspect})"} if name.nil? raise RuntimeError, 'The first argument, name, must not be nil. ' + 'Please report this as a bug!' @@ -142,8 +140,6 @@ # e.g. userCertificate;binary => "some_bin" # becomes userCertificate => {"binary" => "some_bin"} def normalize_attribute_options(attr, value) - logger.debug {"stub: called normalize_attribute_options" + - "(#{attr.inspect}, #{value.inspect})"} return [attr, value] unless attr.match(/;/) ret_attr, *options = attr.split(/;/) @@ -156,7 +152,6 @@ # Extracts all of the subtypes from a given set of nested hashes # and returns the attribute suffix and the final true value def extract_attribute_options(value) - logger.debug {"stub: called extract_attribute_options(#{value.inspect})"} options = '' ret_val = value if value.class == Hash Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Sat Aug 11 21:52:28 2007 @@ -464,7 +464,6 @@ # Return attribute methods so that a program can determine available # attributes dynamically without schema awareness def attribute_names(normalize=false) - logger.debug {"stub: attribute_names called"} ensure_apply_object_class names = @attr_methods.keys if normalize @@ -499,7 +498,6 @@ # # Return the authoritative dn def dn - logger.debug {"stub: dn called"} dn_value = id if dn_value.nil? raise DistinguishedNameNotSetError.new, @@ -527,7 +525,6 @@ # # Delete this entry from LDAP def destroy - logger.debug {"stub: delete called"} begin self.class.delete(dn) @new_entry = true @@ -563,29 +560,23 @@ # using class_eval instead of using method_missing. This would # give tab completion in irb. def method_missing(name, *args, &block) - logger.debug {"stub: called method_missing" + - "(#{name.inspect}, #{args.inspect})"} ensure_apply_object_class key = name.to_s case key when /=$/ real_key = $PREMATCH - logger.debug {"method_missing: have_attribute? #{real_key}"} if have_attribute?(real_key, ['objectClass']) if args.size != 1 raise ArgumentError, "wrong number of arguments (#{args.size} for 1)" end - logger.debug {"method_missing: calling set_attribute" + - "(#{real_key}, #{args.inspect})"} return set_attribute(real_key, *args, &block) end when /(?:(_before_type_cast)|(\?))?$/ real_key = $PREMATCH before_type_cast = !$1.nil? query = !$2.nil? - logger.debug {"method_missing: have_attribute? #{real_key}"} if have_attribute?(real_key, ['objectClass']) if args.size > 1 raise ArgumentError, @@ -814,12 +805,9 @@ # This means that if you set userCertificate to somebinary value, it will # wrap it up correctly. def enforce_type(key, value) - logger.debug {"stub: enforce_type called"} ensure_apply_object_class # Enforce attribute value formatting - result = normalize_attribute(key, value)[1] - logger.debug {"stub: enforce_types done"} - result + normalize_attribute(key, value)[1] end def init_instance_variables @@ -843,7 +831,6 @@ # removing defined attributes that are no longer valid # given the new objectclasses. def apply_object_class(val) - logger.debug {"stub: objectClass=(#{val.inspect}) called"} new_oc = val new_oc = [val] if new_oc.class != Array new_oc = new_oc.uniq @@ -885,7 +872,6 @@ alias_method :base_of_class, :base def base - logger.debug {"stub: called base"} [@base, base_of_class].compact.join(",") end @@ -909,14 +895,10 @@ # # Return the value of the attribute called by method_missing? def get_attribute(name, force_array=false) - logger.debug {"stub: called get_attribute" + - "(#{name.inspect}, #{force_array.inspect}"} get_attribute_before_type_cast(name, force_array) end def get_attribute_as_query(name, force_array=false) - logger.debug {"stub: called get_attribute_as_query" + - "(#{name.inspect}, #{force_array.inspect}"} value = get_attribute_before_type_cast(name, force_array) if force_array value.collect {|x| !false_value?(x)} @@ -931,8 +913,6 @@ end def get_attribute_before_type_cast(name, force_array=false) - logger.debug {"stub: called get_attribute_before_type_cast" + - "(#{name.inspect}, #{force_array.inspect}"} attr = to_real_attribute_name(name) value = @data[attr] || [] @@ -948,9 +928,6 @@ # # Set the value of the attribute called by method_missing? def set_attribute(name, value) - logger.debug {"stub: called set_attribute" + - "(#{name.inspect}, #{value.inspect})"} - # Get the attr and clean up the input attr = to_real_attribute_name(name) raise UnknownAttribute.new(name) if attr.nil? @@ -959,11 +936,7 @@ value, @base = split_dn_value(value) end - logger.debug {"set_attribute(#{name.inspect}, #{value.inspect}): " + - "method maps to #{attr}"} - # Enforce LDAP-pleasing values - logger.debug {"value = #{value.inspect}, value.class = #{value.class}"} real_value = value # Squash empty values if value.class == Array @@ -979,7 +952,6 @@ @data[attr] = enforce_type(attr, real_value) # Return the passed in value - logger.debug {"stub: exiting set_attribute"} @data[attr] end @@ -1007,19 +979,12 @@ # Make a method entry for _every_ alias of a valid attribute and map it # onto the first attribute passed in. def define_attribute_methods(attr) - logger.debug {"stub: called define_attribute_methods(#{attr.inspect})"} return if @attr_methods.has_key?(attr) schema.attribute_aliases(attr).each do |ali| - logger.debug {"associating #{ali} --> #{attr}"} @attr_methods[ali] = attr - logger.debug {"associating #{Inflector.underscore(ali)}" + - " --> #{attr}"} @attr_aliases[Inflector.underscore(ali)] = attr - logger.debug {"associating #{normalize_attribute_name(ali)}" + - " --> #{attr}"} @normalized_attr_names[normalize_attribute_name(ali)] = attr end - logger.debug {"stub: leaving define_attribute_methods(#{attr.inspect})"} end # array_of @@ -1027,8 +992,6 @@ # Returns the array form of a value, or not an array if # false is passed in. def array_of(value, to_a=true) - logger.debug {"stub: called array_of" + - "(#{value.inspect}, #{to_a.inspect})"} case value when Array if to_a or value.size > 1 @@ -1071,8 +1034,6 @@ # Now that all the options will be treated as unique attributes # we can see what's changed and add anything that is brand-spankin' # new. - logger.debug {'#collect_modified_attributes: traversing ldap_data ' + - 'determining replaces and deletes'} ldap_data.each do |k, v| value = data[k] || [] @@ -1083,28 +1044,20 @@ # Since some types do not have equality matching rules, # delete doesn't work # Replacing with nothing is equivalent. - logger.debug {"#save: removing attribute: #{k}"} if !data.has_key?(k) and schema.binary_required?(k) value = [{'binary' => []}] end else # Ditched delete then replace because attribs with no equality # match rules will fails - logger.debug {"#collect_modified_attributes: updating attribute:" + - " #{k}: #{value.inspect}"} end attributes.push([:replace, k, value]) end - logger.debug {'#collect_modified_attributes: finished traversing' + - ' ldap_data'} - logger.debug {'#collect_modified_attributes: traversing data ' + - 'determining adds'} data.each do |k, v| value = v || [] next if ldap_data.has_key?(k) or value.empty? # Detect subtypes and account for them - logger.debug {"#save: adding attribute: #{k}: #{value.inspect}"} # REPLACE will function like ADD, but doesn't hit EQUALITY problems # TODO: Added equality(attr) to Schema attributes.push([:replace, k, value]) @@ -1116,22 +1069,15 @@ def collect_all_attributes(data) dn_attr = to_real_attribute_name(dn_attribute) dn_value = data[dn_attr] - logger.debug {'#collect_all_attributes: adding all attribute value pairs'} - logger.debug {"#collect_all_attributes: adding " + - "#{dn_attr.inspect} = #{dn_value.inspect}"} attributes = [] attributes.push([:add, dn_attr, dn_value]) oc_value = data['objectClass'] - logger.debug {"#collect_all_attributes: adding objectClass = " + - "#{oc_value.inspect}"} attributes.push([:add, 'objectClass', oc_value]) data.each do |key, value| next if value.empty? or key == 'objectClass' or key == dn_attr - logger.debug {"#collect_all_attributes: adding attribute: " + - "#{key.inspect}: #{value.inspect}"} attributes.push([:add, key, value]) end @@ -1150,46 +1096,33 @@ end def prepare_data_for_saving - logger.debug {"stub: save called"} - # Expand subtypes to real ldap_data attributes # We can't reuse @ldap_data because an exception would leave # an object in an unknown state - logger.debug {"#save: expanding subtypes in @ldap_data"} ldap_data = normalize_data(@ldap_data) - logger.debug {'#save: subtypes expanded for @ldap_data'} # Expand subtypes to real data attributes, but leave @data alone - logger.debug {'#save: expanding subtypes for @data'} bad_attrs = @data.keys - attribute_names data = normalize_data(@data, bad_attrs) - logger.debug {'#save: subtypes expanded for @data'} success = yield(data, ldap_data) if success - logger.debug {"#save: resetting @ldap_data to a dup of @data"} @ldap_data = Marshal.load(Marshal.dump(data)) # Delete items disallowed by objectclasses. # They should have been removed from ldap. - logger.debug {'#save: removing attributes from @ldap_data not ' + - 'sent in data'} bad_attrs.each do |remove_me| @ldap_data.delete(remove_me) end - logger.debug {'#save: @ldap_data reset complete'} end - logger.debug {'stub: save exited'} success end def create prepare_data_for_saving do |data, ldap_data| attributes = collect_all_attributes(data) - logger.debug {"#create: adding #{dn}"} add_entry(dn, attributes) - logger.debug {"#create: add successful"} @new_entry = false true end @@ -1198,10 +1131,7 @@ def update prepare_data_for_saving do |data, ldap_data| attributes = collect_modified_attributes(ldap_data, data) - logger.debug {'#update: traversing data complete'} - logger.debug {"#update: modifying #{dn}"} modify_entry(dn, attributes) - logger.debug {'#update: modify successful'} true end end Modified: trunk/lib/active_ldap/validations.rb ============================================================================== --- trunk/lib/active_ldap/validations.rb (original) +++ trunk/lib/active_ldap/validations.rb Sat Aug 11 21:52:28 2007 @@ -37,8 +37,6 @@ # Basic validation: # - Verify that every 'MUST' specified in the schema has a value defined def validate_required_values - logger.debug {"stub: validate_required_values called"} - # Make sure all MUST attributes have a value @musts.each do |object_class, attributes| attributes.each do |required_attribute| @@ -60,7 +58,6 @@ end end end - logger.debug {"stub: validate_required_values finished"} end private From codesite-noreply at google.com Sun Aug 12 02:31:45 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 11 Aug 2007 23:31:45 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r224 - in al-admin/trunk: app/controllers app/helpers app/models app/views/account app/views/layo... Message-ID: <163600d1b504377ac31d4a362754c@google.com> Author: koutou Date: Sat Aug 11 23:30:20 2007 New Revision: 224 Added: al-admin/trunk/app/controllers/account_controller.rb al-admin/trunk/app/controllers/users_controller.rb al-admin/trunk/app/controllers/welcome_controller.rb al-admin/trunk/app/helpers/account_helper.rb al-admin/trunk/app/helpers/users_helper.rb al-admin/trunk/app/helpers/welcome_helper.rb al-admin/trunk/app/models/ldap_user.rb al-admin/trunk/app/models/user.rb al-admin/trunk/app/views/account/ al-admin/trunk/app/views/account/index.rhtml al-admin/trunk/app/views/account/login.rhtml al-admin/trunk/app/views/account/signup.rhtml al-admin/trunk/app/views/layouts/application.rhtml al-admin/trunk/app/views/users/ al-admin/trunk/app/views/users/_entry.rhtml al-admin/trunk/app/views/users/_form.rhtml al-admin/trunk/app/views/users/edit.rhtml al-admin/trunk/app/views/users/index.rhtml al-admin/trunk/app/views/users/show.rhtml al-admin/trunk/app/views/welcome/ al-admin/trunk/app/views/welcome/index.rhtml al-admin/trunk/db/migrate/ al-admin/trunk/db/migrate/001_create_users.rb al-admin/trunk/lib/authenticated_system.rb al-admin/trunk/lib/authenticated_test_helper.rb al-admin/trunk/public/stylesheets/rails.css al-admin/trunk/public/stylesheets/screen.css al-admin/trunk/test/fixtures/users.yml al-admin/trunk/test/functional/account_controller_test.rb al-admin/trunk/test/functional/users_controller_test.rb al-admin/trunk/test/functional/welcome_controller_test.rb al-admin/trunk/test/run-test.sh (contents, props changed) al-admin/trunk/test/unit/user_test.rb Removed: al-admin/trunk/public/index.html Modified: al-admin/trunk/app/controllers/application.rb al-admin/trunk/config/boot.rb al-admin/trunk/config/environment.rb al-admin/trunk/config/routes.rb al-admin/trunk/vendor/plugins/ (props changed) Log: * implemeneted login by LDAP. Added: al-admin/trunk/app/controllers/account_controller.rb ============================================================================== --- (empty file) +++ al-admin/trunk/app/controllers/account_controller.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,49 @@ +class AccountController < ApplicationController + # say something nice, you goof! something sweet. + def index + if logged_in? + redirect_to(top_path) + else + redirect_to(:action => 'login') + end + end + + def login + return unless request.post? + self.current_user = User.authenticate(params[:login], params[:password]) + if logged_in? + if params[:remember_me] == "1" + current_user.remember_me + cookies[:auth_token] = { + :value => current_user.remember_token, + :expires => current_user.remember_token_expires_at + } + end + redirect_back_or_default(top_url) + flash[:notice] = "Logged in successfully" + else + flash[:notice] = "Login or Password is incorrect" + end + end + + def signup + @user = LdapUser.new(params[:user]) + return unless request.post? + if @user.save + @system_user = User.create(:login => @user.id) + unless @system_user.new_record? + self.current_user = @system_user + redirect_back_or_default(top_path) + flash[:notice] = "Thanks for signing up!" + end + end + end + + def logout + current_user.forget_me if logged_in? + cookies.delete :auth_token + reset_session + flash[:notice] = "You have been logged out." + redirect_back_or_default(top_path) + end +end Modified: al-admin/trunk/app/controllers/application.rb ============================================================================== --- al-admin/trunk/app/controllers/application.rb (original) +++ al-admin/trunk/app/controllers/application.rb Sat Aug 11 23:30:20 2007 @@ -2,6 +2,9 @@ # Likewise, all the methods added will be available for all controllers. class ApplicationController < ActionController::Base + include AuthenticatedSystem + before_filter :login_from_cookie + # Pick a unique cookie name to distinguish our session data from others' session :session_key => '_al-admin_session_id' end Added: al-admin/trunk/app/controllers/users_controller.rb ============================================================================== --- (empty file) +++ al-admin/trunk/app/controllers/users_controller.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,36 @@ +class UsersController < ApplicationController + verify :method => :post, :only => [:update], + :redirect_to => {:action => :index} + + def index + @users = find(:all) + end + + def show + @user = find(params[:id]) + end + + def edit + @user = find(params[:id]) + end + + def update + @user = find(params[:id]) + previous_user_password = @user.user_password + if @user.update_attributes(params[:user]) + if previous_user_password != @user.user_password + @user.establish_connection(:password => @user.password) + end + flash[:notice] = 'User was successfully updated.' + redirect_to :action => 'show', :id => @user + else + @user.password = @user.password_confirmation = nil + render :action => 'edit' + end + end + + private + def find(*args) + current_user.ldap_user.find(*args) + end +end Added: al-admin/trunk/app/controllers/welcome_controller.rb ============================================================================== --- (empty file) +++ al-admin/trunk/app/controllers/welcome_controller.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,5 @@ +class WelcomeController < ApplicationController + def index + redirect_to(login_path) unless logged_in? + end +end Added: al-admin/trunk/app/helpers/account_helper.rb ============================================================================== --- (empty file) +++ al-admin/trunk/app/helpers/account_helper.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,2 @@ +module AccountHelper +end \ No newline at end of file Added: al-admin/trunk/app/helpers/users_helper.rb ============================================================================== --- (empty file) +++ al-admin/trunk/app/helpers/users_helper.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,2 @@ +module UsersHelper +end Added: al-admin/trunk/app/helpers/welcome_helper.rb ============================================================================== --- (empty file) +++ al-admin/trunk/app/helpers/welcome_helper.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,2 @@ +module WelcomeHelper +end Added: al-admin/trunk/app/models/ldap_user.rb ============================================================================== --- (empty file) +++ al-admin/trunk/app/models/ldap_user.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,46 @@ +require 'active_ldap/user_password' + +class LdapUser < ActiveLdap::Base + ldap_mapping :prefix => "ou=Users", + :classes => ["posixAccount"], + :dn_attribute => "uid" + + attr_accessor :password + + validates_presence_of :password, :if => :password_required? + validates_presence_of :password_confirmation, :if => :password_required? + validates_length_of :password, :within => 4..40, :if => :password_required? + validates_confirmation_of :password, :if => :password_required? + before_save :encrypt_password + + class << self + def authenticate(dn, password) + user = find(dn) + user.authenticated?(password) ? user : nil + rescue ActiveLdap::EntryNotFound + nil + end + end + + def authenticated?(password) + establish_connection(:password => password) + true + rescue ActiveLdap::AuthenticationError + false + end + + private + def encrypt_password + return if password.blank? + if /\A\{([A-Z][A-Z\d]+)\}/ =~ userPassword.to_s + hash_type = $1.downcase + self.user_password = ActiveLdap::UserPassword.send(hash_type, password) + else + self.user_password = password + end + end + + def password_required? + !password.blank? + end +end Added: al-admin/trunk/app/models/user.rb ============================================================================== --- (empty file) +++ al-admin/trunk/app/models/user.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,60 @@ +require 'digest/sha1' +class User < ActiveRecord::Base + validates_presence_of :login + validates_presence_of :dn + validates_uniqueness_of :login, :dn, :case_sensitive => false + before_validation :find_dn + + # Authenticates a user by their login name and unencrypted password. Returns the user or nil. + def self.authenticate(login, password) + u = find_by_login(login) # need to get the salt + if u.nil? + u = new + u.login = login + u = nil unless u.save + end + u && u.authenticated?(password) ? u : nil + end + + def authenticated?(password) + return false if ldap_user.nil? + ldap_user.authenticated?(password) + end + + def ldap_user + @ldap_user ||= LdapUser.find(dn) + end + + def remember_token? + remember_token_expires_at && Time.now.utc < remember_token_expires_at + end + + # These create and unset the fields required for remembering users between browser closes + def remember_me + self.remember_token_expires_at = 2.weeks.from_now.utc + self.remember_token = encrypt("#{email}--#{remember_token_expires_at}") + save(false) + end + + def forget_me + self.remember_token_expires_at = nil + self.remember_token = nil + save(false) + LdapUser.remove_connection(dn) if dn + @ldap_user = nil + end + + private + def find_dn + if login.blank? + self.dn = nil + else + begin + ldap_user = LdapUser.find(login) + self.dn = ldap_user.dn + rescue ActiveLdap::EntryNotFound + self.dn = nil + end + end + end +end Added: al-admin/trunk/app/views/account/index.rhtml ============================================================================== --- (empty file) +++ al-admin/trunk/app/views/account/index.rhtml Sat Aug 11 23:30:20 2007 @@ -0,0 +1,56 @@ +

In the Caboose.

+ +<% content_for 'poem' do -%> +"Train delayed? and what's to say?" +"Blocked by last night's snow they say." +Seven hours or so to wait; +Well, that's pleasant! but there's the freight. +Depot loafing no one fancies, +We'll try the caboose and take our chances. + +Cool this morning in Watertown, +Somewhat frosty___mercury down; +Enter caboose___roaring fire, +With never an air-hole; heat so dire +That we shrivel and pant; we are roasted through- +Outside, thermometer thirty-two. + +We start with a jerk and suddenly stop. +"What's broke?" says one; another "What's up?", +"Oh, nothing," they answer, "That's our way: +You must stand the jerking, sorry to say." +We "stand it" with oft this painful thought: +Are our heads on yet, or are they not? + +Comrades in misery___let me see; +Girl like a statue opposite me; +Back and forth the others jostle___ +She never winks, nor moves a muscle; +See her, as she sits there now; +She's "well balanced," anyhow. + +Woman in trouble, tearful eyes, +Sits by the window, softly cries, +Pity___for griefs we may not know, +For breasts that ache, for tears that flow, +Though we know not why. Her eyelids red +Tell a sorrowful tale___some hope is dead. + +Man who follows the Golden Rule, +And lends his papers___a pocket full, +Has a blank book___once in a minute +Has an idea, and writes it in it. +Guess him? Yes, of course I can, +He's a___well___a newspaper man. + +Blue-eyed fairy, wrapped in fur; +Sweet young mother tending her. +Fairy thinks it's "awful far," +Wants to get off this "naughty car." +So do we, young golden-hair; +All this crowd are with you there! +<% end -%> + +<%= simple_format @content_for_poem %> + +

-- Ellen P. Allerton.

\ No newline at end of file Added: al-admin/trunk/app/views/account/login.rhtml ============================================================================== --- (empty file) +++ al-admin/trunk/app/views/account/login.rhtml Sat Aug 11 23:30:20 2007 @@ -0,0 +1,12 @@ +<% form_tag do -%> +


+<%= text_field_tag 'login' %>

+ +


+<%= password_field_tag 'password' %>

+ +

+<%= check_box_tag 'remember_me' %>

+ +

<%= submit_tag 'Log in' %>

+<% end -%> Added: al-admin/trunk/app/views/account/signup.rhtml ============================================================================== --- (empty file) +++ al-admin/trunk/app/views/account/signup.rhtml Sat Aug 11 23:30:20 2007 @@ -0,0 +1,14 @@ +<%= error_messages_for :user %> +<%= error_messages_for :system_user %> +<% form_for :user do |f| -%> +


+<%= f.text_field :uid %>

+ +


+<%= f.password_field :password %>

+ +


+<%= f.password_field :password_confirmation %>

+ +

<%= submit_tag 'Sign up' %>

+<% end -%> Added: al-admin/trunk/app/views/layouts/application.rhtml ============================================================================== --- (empty file) +++ al-admin/trunk/app/views/layouts/application.rhtml Sat Aug 11 23:30:20 2007 @@ -0,0 +1,24 @@ + + + + + + + + + <%=h "#{controller.controller_name}: #{controller.action_name}" %> + + + <%= stylesheet_link_tag 'rails' %> + <%= stylesheet_link_tag 'screen' %> + <%= javascript_include_tag :defaults %> + + +

<%=h "#{controller.controller_name}: #{controller.action_name}" %>

+<% if flash[:notice] -%> +

<%=h flash[:notice] %>

+<% end -%> + <%= yield %> + + Added: al-admin/trunk/app/views/users/_entry.rhtml ============================================================================== --- (empty file) +++ al-admin/trunk/app/views/users/_entry.rhtml Sat Aug 11 23:30:20 2007 @@ -0,0 +1,18 @@ + +
+

+ <%= link_to_if(defined?(link_to_entry) && link_to_entry, + h(entry.dn), :action => "show", :id => entry) %> +<% if current_user and current_user.ldap_user == entry -%> + (<%= link_to("Edit", :action => "edit", :id => entry) %>) +<% end -%> +

+ +<% entry.attribute_names(true).sort.each do |name| -%> + + + + +<% end -%> +
<%= h name %><%= h entry[name, true].join(", ") %>
+
Added: al-admin/trunk/app/views/users/_form.rhtml ============================================================================== --- (empty file) +++ al-admin/trunk/app/views/users/_form.rhtml Sat Aug 11 23:30:20 2007 @@ -0,0 +1,24 @@ + +<%= error_messages_for "user" %> + + + + + + + + + + + +
Password<%= password_field("user", "password") %>
Password(confirm)<%= password_field("user", "password_confirmation") %>
+ + +<% names = @user.attribute_names(true) - ["objectClass", "userPassword"] -%> +<% names.sort.each do |name| -%> + + + + +<% end -%> +
<%= h name %><%= text_field("user", name) %>
Added: al-admin/trunk/app/views/users/edit.rhtml ============================================================================== --- (empty file) +++ al-admin/trunk/app/views/users/edit.rhtml Sat Aug 11 23:30:20 2007 @@ -0,0 +1,10 @@ +
+

<%= link_to(h(@user.dn), :action => "show", :id => @user) %>

+ <% form_tag :action => 'update', :id => @user do %> + <%= render :partial => 'form' %> + <%= submit_tag 'Edit' %> + <% end %> +
+ +<%= link_to 'Show', :action => 'show', :id => @user %> | +<%= link_to 'Back', :action => 'index' %> Added: al-admin/trunk/app/views/users/index.rhtml ============================================================================== --- (empty file) +++ al-admin/trunk/app/views/users/index.rhtml Sat Aug 11 23:30:20 2007 @@ -0,0 +1,2 @@ +<%= render(:partial => "entry", :collection => @users, + :locals => {:link_to_entry => true}) %> Added: al-admin/trunk/app/views/users/show.rhtml ============================================================================== --- (empty file) +++ al-admin/trunk/app/views/users/show.rhtml Sat Aug 11 23:30:20 2007 @@ -0,0 +1,3 @@ +<%= render(:partial => "entry", :locals => {:entry => @user}) %> + +<%= link_to 'Back', :action => 'index' %> Added: al-admin/trunk/app/views/welcome/index.rhtml ============================================================================== --- (empty file) +++ al-admin/trunk/app/views/welcome/index.rhtml Sat Aug 11 23:30:20 2007 @@ -0,0 +1,4 @@ +
    +
  • <%= link_to("Users list", :controller => "users") %>
  • +
  • <%= link_to("Logout", logout_path) %>
  • +
Modified: al-admin/trunk/config/boot.rb ============================================================================== --- al-admin/trunk/config/boot.rb (original) +++ al-admin/trunk/config/boot.rb Sat Aug 11 23:30:20 2007 @@ -3,7 +3,7 @@ unless defined?(RAILS_ROOT) root_path = File.join(File.dirname(__FILE__), '..') - unless RUBY_PLATFORM =~ /mswin32/ + unless RUBY_PLATFORM =~ /(:?mswin|mingw)/ require 'pathname' root_path = Pathname.new(root_path).cleanpath(true).to_s end @@ -26,7 +26,7 @@ rails_gem = Gem.cache.search('rails', "~>#{version}.0").sort_by { |g| g.version.version }.last if rails_gem - require_gem "rails", "=#{rails_gem.version.version}" + gem "rails", "=#{rails_gem.version.version}" require rails_gem.full_gem_path + '/lib/initializer' else STDERR.puts %(Cannot find gem for Rails ~>#{version}.0: @@ -36,10 +36,10 @@ exit 1 end else - require_gem "rails" + gem "rails" require 'initializer' end end Rails::Initializer.run(:set_load_path) -end \ No newline at end of file +end Modified: al-admin/trunk/config/environment.rb ============================================================================== --- al-admin/trunk/config/environment.rb (original) +++ al-admin/trunk/config/environment.rb Sat Aug 11 23:30:20 2007 @@ -5,7 +5,7 @@ # ENV['RAILS_ENV'] ||= 'production' # Specifies gem version of Rails to use when vendor/rails is not present -RAILS_GEM_VERSION = '1.2.1' unless defined? RAILS_GEM_VERSION +RAILS_GEM_VERSION = '1.2.3' unless defined? RAILS_GEM_VERSION # Bootstrap the Rails environment, frameworks, and default configuration require File.join(File.dirname(__FILE__), 'boot') @@ -20,7 +20,7 @@ # config.plugins = %W( exception_notification ssl_requirement ) # Add additional load paths for your own custom dirs - # config.load_paths += %W( #{RAILS_ROOT}/extras ) + config.load_paths += %W( #{RAILS_ROOT}/../activeldap/lib ) # Force all environments to use the same logger level # (by default production uses :info, the others :debug) @@ -57,4 +57,4 @@ # Mime::Type.register "text/richtext", :rtf # Mime::Type.register "application/x-mobile", :mobile -# Include your application configuration below \ No newline at end of file +# Include your application configuration below Modified: al-admin/trunk/config/routes.rb ============================================================================== --- al-admin/trunk/config/routes.rb (original) +++ al-admin/trunk/config/routes.rb Sat Aug 11 23:30:20 2007 @@ -11,7 +11,10 @@ # You can have the root of your site routed by hooking up '' # -- just remember to delete public/index.html. - # map.connect '', :controller => "welcome" + map.top '', :controller => "welcome" + + map.login 'login', :controller => "account", :action => "login" + map.logout 'logout', :controller => "account", :action => "logout" # Allow downloading Web Service WSDL as a file with an extension # instead of a file named 'wsdl' Added: al-admin/trunk/db/migrate/001_create_users.rb ============================================================================== --- (empty file) +++ al-admin/trunk/db/migrate/001_create_users.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,15 @@ +class CreateUsers < ActiveRecord::Migration + def self.up + create_table "users", :force => true do |t| + t.column :login, :string + t.column :dn, :string + t.column :updated_at, :datetime + t.column :remember_token, :string + t.column :remember_token_expires_at, :datetime + end + end + + def self.down + drop_table "users" + end +end Added: al-admin/trunk/lib/authenticated_system.rb ============================================================================== --- (empty file) +++ al-admin/trunk/lib/authenticated_system.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,120 @@ +module AuthenticatedSystem + protected + # Returns true or false if the user is logged in. + # Preloads @current_user with the user model if they're logged in. + def logged_in? + current_user != :false + end + + # Accesses the current user from the session. + def current_user + @current_user ||= (session[:user] && User.find_by_id(session[:user])) || :false + end + + # Store the given user in the session. + def current_user=(new_user) + session[:user] = (new_user.nil? || new_user.is_a?(Symbol)) ? nil : new_user.id + @current_user = new_user + end + + # Check if the user is authorized. + # + # Override this method in your controllers if you want to restrict access + # to only a few actions or if you want to check if the user + # has the correct rights. + # + # Example: + # + # # only allow nonbobs + # def authorize? + # current_user.login != "bob" + # end + def authorized? + true + end + + # Filter method to enforce a login requirement. + # + # To require logins for all actions, use this in your controllers: + # + # before_filter :login_required + # + # To require logins for specific actions, use this in your controllers: + # + # before_filter :login_required, :only => [ :edit, :update ] + # + # To skip this in a subclassed controller: + # + # skip_before_filter :login_required + # + def login_required + username, passwd = get_auth_data + self.current_user ||= User.authenticate(username, passwd) || :false if username && passwd + logged_in? && authorized? ? true : access_denied + end + + # Redirect as appropriate when an access request fails. + # + # The default action is to redirect to the login screen. + # + # Override this method in your controllers if you want to have special + # behavior in case the user is not authorized + # to access the requested action. For example, a popup window might + # simply close itself. + def access_denied + respond_to do |accepts| + accepts.html do + store_location + redirect_to :controller => '/account', :action => 'login' + end + accepts.xml do + headers["Status"] = "Unauthorized" + headers["WWW-Authenticate"] = %(Basic realm="Web Password") + render :text => "Could't authenticate you", :status => '401 Unauthorized' + end + end + false + end + + # Store the URI of the current request in the session. + # + # We can return to this location by calling #redirect_back_or_default. + def store_location + session[:return_to] = request.request_uri + end + + # Redirect to the URI stored by the most recent store_location call or + # to the passed default. + def redirect_back_or_default(default) + session[:return_to] ? redirect_to_url(session[:return_to]) : redirect_to(default) + session[:return_to] = nil + end + + # Inclusion hook to make #current_user and #logged_in? + # available as ActionView helper methods. + def self.included(base) + base.send :helper_method, :current_user, :logged_in? + end + + # When called with before_filter :login_from_cookie will check for an :auth_token + # cookie and log the user back in if apropriate + def login_from_cookie + return unless cookies[:auth_token] && !logged_in? + user = User.find_by_remember_token(cookies[:auth_token]) + if user && user.remember_token? + user.remember_me + self.current_user = user + cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at } + flash[:notice] = "Logged in successfully" + end + end + + private + @@http_auth_headers = %w(X-HTTP_AUTHORIZATION HTTP_AUTHORIZATION Authorization) + # gets BASIC auth info + def get_auth_data + auth_key = @@http_auth_headers.detect { |h| request.env.has_key?(h) } + auth_data = request.env[auth_key].to_s.split unless auth_key.blank? + return auth_data && auth_data[0] == 'Basic' ? Base64.decode64(auth_data[1]).split(':')[0..1] : [nil, nil] + end +end Added: al-admin/trunk/lib/authenticated_test_helper.rb ============================================================================== --- (empty file) +++ al-admin/trunk/lib/authenticated_test_helper.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,113 @@ +module AuthenticatedTestHelper + # Sets the current user in the session from the user fixtures. + def login_as(user) + @request.session[:user] = user ? users(user).id : nil + end + + def content_type(type) + @request.env['Content-Type'] = type + end + + def accept(accept) + @request.env["HTTP_ACCEPT"] = accept + end + + def authorize_as(user) + if user + @request.env["HTTP_AUTHORIZATION"] = "Basic #{Base64.encode64("#{users(user).login}:test")}" + accept 'application/xml' + content_type 'application/xml' + else + @request.env["HTTP_AUTHORIZATION"] = nil + accept nil + content_type nil + end + end + + # http://project.ioni.st/post/217#post-217 + # + # def test_new_publication + # assert_difference(Publication, :count) do + # post :create, :publication => {...} + # # ... + # end + # end + # + def assert_difference(object, method = nil, difference = 1) + initial_value = object.send(method) + yield + assert_equal initial_value + difference, object.send(method), "#{object}##{method}" + end + + def assert_no_difference(object, method, &block) + assert_difference object, method, 0, &block + end + + # Assert the block redirects to the login + # + # assert_requires_login(:bob) { |c| c.get :edit, :id => 1 } + # + def assert_requires_login(login = nil) + yield HttpLoginProxy.new(self, login) + end + + def assert_http_authentication_required(login = nil) + yield XmlLoginProxy.new(self, login) + end + + def reset!(*instance_vars) + instance_vars = [:controller, :request, :response] unless instance_vars.any? + instance_vars.collect! { |v| "@#{v}".to_sym } + instance_vars.each do |var| + instance_variable_set(var, instance_variable_get(var).class.new) + end + end +end + +class BaseLoginProxy + attr_reader :controller + attr_reader :options + def initialize(controller, login) + @controller = controller + @login = login + end + + private + def authenticated + raise NotImplementedError + end + + def check + raise NotImplementedError + end + + def method_missing(method, *args) + @controller.reset! + authenticate + @controller.send(method, *args) + check + end +end + +class HttpLoginProxy < BaseLoginProxy + protected + def authenticate + @controller.login_as @login if @login + end + + def check + @controller.assert_redirected_to :controller => 'account', :action => 'login' + end +end + +class XmlLoginProxy < BaseLoginProxy + protected + def authenticate + @controller.accept 'application/xml' + @controller.authorize_as @login if @login + end + + def check + @controller.assert_response 401 + end +end \ No newline at end of file Added: al-admin/trunk/public/stylesheets/rails.css ============================================================================== --- (empty file) +++ al-admin/trunk/public/stylesheets/rails.css Sat Aug 11 23:30:20 2007 @@ -0,0 +1,35 @@ +.fieldWithErrors { + padding: 2px; + background-color: red; + display: table; +} + +#errorExplanation { + width: 400px; + border: 2px solid red; + padding: 7px; + padding-bottom: 12px; + margin-bottom: 20px; + background-color: #f0f0f0; +} + +#errorExplanation h2 { + text-align: left; + font-weight: bold; + padding: 5px 5px 5px 15px; + font-size: 12px; + margin: -7px; + background-color: #c00; + color: #fff; +} + +#errorExplanation p { + color: #333; + margin-bottom: 0; + padding: 5px; +} + +#errorExplanation ul li { + font-size: 12px; + list-style: square; +} Added: al-admin/trunk/public/stylesheets/screen.css ============================================================================== --- (empty file) +++ al-admin/trunk/public/stylesheets/screen.css Sat Aug 11 23:30:20 2007 @@ -0,0 +1,25 @@ +table, tr, th, td +{ + border: 1px solid black; +} + +p.notice +{ + color: green; +} + +div.entry +{ + padding-bottom: 2em; + border-bottom: 1px solid black; +} + +div.entry table +{ + margin-left: 3em; +} + +div.entry table th +{ + text-align: left; +} Added: al-admin/trunk/test/fixtures/users.yml ============================================================================== --- (empty file) +++ al-admin/trunk/test/fixtures/users.yml Sat Aug 11 23:30:20 2007 @@ -0,0 +1,9 @@ +quentin: + id: 1 + login: quentin + updated_at: <%= 5.days.ago.to_s :db %> + +aaron: + id: 2 + login: aaron + updated_at: <%= 1.days.ago.to_s :db %> Added: al-admin/trunk/test/functional/account_controller_test.rb ============================================================================== --- (empty file) +++ al-admin/trunk/test/functional/account_controller_test.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,24 @@ +require File.dirname(__FILE__) + '/../test_helper' +require 'account_controller' + +# Re-raise errors caught by the controller. +class AccountController; def rescue_action(e) raise e end; end + +class AccountControllerTest < Test::Unit::TestCase + # Be sure to include AuthenticatedTestHelper in test/test_helper.rb instead + # Then, you can remove it from this and the units test. + include AuthenticatedTestHelper + + fixtures :users + + def setup + @controller = AccountController.new + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + end + + # Replace this with your real tests. + def test_truth + assert true + end +end Added: al-admin/trunk/test/functional/users_controller_test.rb ============================================================================== --- (empty file) +++ al-admin/trunk/test/functional/users_controller_test.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,18 @@ +require File.dirname(__FILE__) + '/../test_helper' +require 'users_controller' + +# Re-raise errors caught by the controller. +class UsersController; def rescue_action(e) raise e end; end + +class UsersControllerTest < Test::Unit::TestCase + def setup + @controller = UsersController.new + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + end + + # Replace this with your real tests. + def test_truth + assert true + end +end Added: al-admin/trunk/test/functional/welcome_controller_test.rb ============================================================================== --- (empty file) +++ al-admin/trunk/test/functional/welcome_controller_test.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,18 @@ +require File.dirname(__FILE__) + '/../test_helper' +require 'welcome_controller' + +# Re-raise errors caught by the controller. +class WelcomeController; def rescue_action(e) raise e end; end + +class WelcomeControllerTest < Test::Unit::TestCase + def setup + @controller = WelcomeController.new + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + end + + # Replace this with your real tests. + def test_truth + assert true + end +end Added: al-admin/trunk/test/run-test.sh ============================================================================== --- (empty file) +++ al-admin/trunk/test/run-test.sh Sat Aug 11 23:30:20 2007 @@ -0,0 +1,3 @@ +#!/bin/sh + +rake test Added: al-admin/trunk/test/unit/user_test.rb ============================================================================== --- (empty file) +++ al-admin/trunk/test/unit/user_test.rb Sat Aug 11 23:30:20 2007 @@ -0,0 +1,13 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class UserTest < Test::Unit::TestCase + # Be sure to include AuthenticatedTestHelper in test/test_helper.rb instead. + # Then, you can remove it from this and the functional test. + include AuthenticatedTestHelper + fixtures :users + + # Replace this with your real tests. + def test_truth + assert true + end +end From codesite-noreply at google.com Sun Aug 12 03:12:47 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sun, 12 Aug 2007 00:12:47 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r225 - trunk/lib/active_ldap Message-ID: Author: koutou Date: Sun Aug 12 00:12:21 2007 New Revision: 225 Modified: trunk/lib/active_ldap/base.rb trunk/lib/active_ldap/object_class.rb trunk/lib/active_ldap/schema.rb Log: * supported super class of objectClass. Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Sun Aug 12 00:12:21 2007 @@ -852,9 +852,9 @@ @mays = {} new_oc.each do |objc| # get all attributes for the class - attributes = schema.class_attributes(objc) - @musts[objc] = attributes[:must] - @mays[objc] = attributes[:may] + object_class = schema.object_class(objc) + @musts[objc] = object_class.must + @mays[objc] = object_class.may end @must = normalize_attribute_names(@musts.values) @may = normalize_attribute_names(@mays.values) Modified: trunk/lib/active_ldap/object_class.rb ============================================================================== --- trunk/lib/active_ldap/object_class.rb (original) +++ trunk/lib/active_ldap/object_class.rb Sun Aug 12 00:12:21 2007 @@ -65,7 +65,10 @@ def assert_have_all_required_classes(new_classes) normalized_new_classes = new_classes.collect(&:downcase) required_classes = self.class.required_classes.reject do |required_class| - normalized_new_classes.include?(required_class.downcase) + normalized_new_classes.include?(required_class.downcase) or + (normalized_new_classes.find do |new_class| + schema.object_class(new_class).super_class?(required_class) + end) end unless required_classes.empty? raise RequiredObjectClassMissed, Modified: trunk/lib/active_ldap/schema.rb ============================================================================== --- trunk/lib/active_ldap/schema.rb (original) +++ trunk/lib/active_ldap/schema.rb Sun Aug 12 00:12:21 2007 @@ -1,5 +1,69 @@ module ActiveLdap class Schema + class ObjectClass + attr_reader :must, :may, :super_classes + def initialize(name, schema) + @name = name + @schema = schema + collect_info + end + + def super_class?(object_class) + @super_classes.include?(object_class) + end + + private + def collect_info + @super_classes = collect_super_classes + @must, @may = collect_attributes + end + + def collect_super_classes + super_classes = attribute('SUP') + loop do + start_size = super_classes.size + new_super_classes = [] + super_classes.each do |super_class| + new_super_classes.concat(attribute('SUP', super_class)) + end + + super_classes.concat(new_super_classes) + super_classes.uniq! + break if super_classes.size == start_size + end + super_classes + end + + def collect_attributes + must = attribute('MUST') + may = attribute('MAY') + + @super_classes.each do |super_class| + must.concat(attribute('MUST', super_class)) + may.concat(attribute('MAY', super_class)) + end + + # Clean out the dupes. + must.uniq! + may.uniq! + if @name == "inetOrgPerson" + may.collect! do |name| + if name == "x500uniqueIdentifier" + "x500UniqueIdentifier" + else + name + end + end + end + + [must, may] + end + + def attribute(attribute_name, name=@name) + @schema.object_class_attribute(name, attribute_name) + end + end + def initialize(entries) @entries = default_entries.merge(entries || {}) @schema_info = {} @@ -131,51 +195,15 @@ end end - # class_attributes - # - # Returns an Array of all the valid attributes (but not with full aliases) - # for the given objectClass - def class_attributes(objc) - cache([:class_attributes, objc]) do - # First get all the current level attributes - must = object_class(objc, 'MUST') - may = object_class(objc, 'MAY') - - # Now add all attributes from the parent object (SUPerclasses) - # Hopefully an iterative approach will be pretty speedy - # 1. build complete list of SUPs - # 2. Add attributes from each - sups = object_class(objc, 'SUP') - loop do - start_size = sups.size - new_sups = [] - sups.each do |sup| - new_sups.concat(object_class(sup, 'SUP')) - end - - sups.concat(new_sups) - sups.uniq! - break if sups.size == start_size - end - sups.each do |sup| - must.concat(object_class(sup, 'MUST')) - may.concat(object_class(sup, 'MAY')) - end - - # Clean out the dupes. - must.uniq! - may.uniq! - if objc == "inetOrgPerson" - may.collect! do |name| - if name == "x500uniqueIdentifier" - "x500UniqueIdentifier" - else - name - end - end - end + def object_class(objc) + cache([:object_class, objc]) do + ObjectClass.new(objc, self) + end + end - {:must => must, :may => may} + def object_class_attribute(name, attribute_name) + cache([:object_class_attribute, name, attribute_name]) do + attribute("objectClasses", name, attribute_name) end end @@ -262,12 +290,6 @@ return [] unless @entries.has_key?("ldapSyntaxes") cache([:ldap_syntax, name, attribute_name]) do attribute("ldapSyntaxes", name, attribute_name) - end - end - - def object_class(name, attribute_name) - cache([:object_class, name, attribute_name]) do - attribute("objectClasses", name, attribute_name) end end From codesite-noreply at google.com Sun Aug 12 03:38:48 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sun, 12 Aug 2007 00:38:48 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r226 - trunk/lib/active_ldap Message-ID: <163600cf9704377bb2ddd4a028e60@google.com> Author: koutou Date: Sun Aug 12 00:38:14 2007 New Revision: 226 Modified: trunk/lib/active_ldap/connection.rb Log: * supported allow_concurrency option. Modified: trunk/lib/active_ldap/connection.rb ============================================================================== --- trunk/lib/active_ldap/connection.rb (original) +++ trunk/lib/active_ldap/connection.rb Sun Aug 12 00:38:14 2007 @@ -6,11 +6,34 @@ module ClassMethods @@active_connections = {} + @@allow_concurrency = false - def active_connections + def thread_safe_active_connections @@active_connections[Thread.current.object_id] ||= {} end + def single_threaded_active_connections + @@active_connections + end + + if @@allow_concurrency + alias_method :active_connections, :thread_safe_active_connections + else + alias_method :active_connections, :single_threaded_active_connections + end + + def allow_concurrency=(threaded) #:nodoc: + logger.debug {"allow_concurrency=#{threaded}"} if logger + return if @@allow_concurrency == threaded + clear_all_cached_connections! + @@allow_concurrency = threaded + method_prefix = threaded ? "thread_safe" : "single_threaded" + sing = (class << self; self; end) + [:active_connections].each do |method| + sing.send(:alias_method, method, "#{method_prefix}_#{method}") + end + end + def active_connection_name @active_connection_name ||= determine_active_connection_name end @@ -143,6 +166,18 @@ else superclass.active_connection_name end + end + + def clear_all_cached_connections! + if @@allow_concurrency + @@active_connections.each_value do |connection_hash_for_thread| + connection_hash_for_thread.each_value {|conn| conn.disconnect!} + connection_hash_for_thread.clear + end + else + @@active_connections.each_value {|conn| conn.disconnect!} + end + @@active_connections.clear end end From codesite-noreply at google.com Sun Aug 12 03:42:48 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sun, 12 Aug 2007 00:42:48 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r227 - in al-admin/trunk/app: controllers helpers models views/account views/users views/welcome Message-ID: <163600d1b504377bc12dcb4528b63@google.com> Author: koutou Date: Sun Aug 12 00:42:31 2007 New Revision: 227 Added: al-admin/trunk/app/views/account/sign_up.rhtml - copied, changed from r224, /al-admin/trunk/app/views/account/signup.rhtml Removed: al-admin/trunk/app/views/account/signup.rhtml Modified: al-admin/trunk/app/controllers/account_controller.rb al-admin/trunk/app/helpers/application_helper.rb al-admin/trunk/app/models/ldap_user.rb al-admin/trunk/app/views/users/_form.rhtml al-admin/trunk/app/views/welcome/index.rhtml Log: * supported sign-up. Modified: al-admin/trunk/app/controllers/account_controller.rb ============================================================================== --- al-admin/trunk/app/controllers/account_controller.rb (original) +++ al-admin/trunk/app/controllers/account_controller.rb Sun Aug 12 00:42:31 2007 @@ -26,7 +26,7 @@ end end - def signup + def sign_up @user = LdapUser.new(params[:user]) return unless request.post? if @user.save Modified: al-admin/trunk/app/helpers/application_helper.rb ============================================================================== --- al-admin/trunk/app/helpers/application_helper.rb (original) +++ al-admin/trunk/app/helpers/application_helper.rb Sun Aug 12 00:42:31 2007 @@ -1,3 +1,6 @@ # Methods added to this helper will be available to all templates in the application. module ApplicationHelper + def sign_up_path + url_for(:controller => "/account", :action => "sign_up") + end end Modified: al-admin/trunk/app/models/ldap_user.rb ============================================================================== --- al-admin/trunk/app/models/ldap_user.rb (original) +++ al-admin/trunk/app/models/ldap_user.rb Sun Aug 12 00:42:31 2007 @@ -2,7 +2,7 @@ class LdapUser < ActiveLdap::Base ldap_mapping :prefix => "ou=Users", - :classes => ["posixAccount"], + :classes => ["person", "posixAccount"], :dn_attribute => "uid" attr_accessor :password Copied: al-admin/trunk/app/views/account/sign_up.rhtml (from r224, /al-admin/trunk/app/views/account/signup.rhtml) ============================================================================== --- /al-admin/trunk/app/views/account/signup.rhtml (original) +++ al-admin/trunk/app/views/account/sign_up.rhtml Sun Aug 12 00:42:31 2007 @@ -11,4 +11,12 @@ <%= f.password_field :password_confirmation %>

<%= submit_tag 'Sign up' %>

+ +<% names = @user.attribute_names(true) - ["objectClass", "userPassword"] -%> +<% names.sort.each do |name| -%> +

+<% end -%> + +

<%= submit_tag 'Sign up' %>

<% end -%> Modified: al-admin/trunk/app/views/users/_form.rhtml ============================================================================== --- al-admin/trunk/app/views/users/_form.rhtml (original) +++ al-admin/trunk/app/views/users/_form.rhtml Sun Aug 12 00:42:31 2007 @@ -3,12 +3,12 @@ - + - +
Password <%= password_field("user", "password") %>
Password(confirm) <%= password_field("user", "password_confirmation") %>
@@ -17,7 +17,7 @@ <% names = @user.attribute_names(true) - ["objectClass", "userPassword"] -%> <% names.sort.each do |name| -%> - <%= h name %> + <%= text_field("user", name) %> <% end -%> Modified: al-admin/trunk/app/views/welcome/index.rhtml ============================================================================== --- al-admin/trunk/app/views/welcome/index.rhtml (original) +++ al-admin/trunk/app/views/welcome/index.rhtml Sun Aug 12 00:42:31 2007 @@ -1,4 +1,5 @@
  • <%= link_to("Users list", :controller => "users") %>
  • +
  • <%= link_to("Sign up", sign_up_path) %>
  • <%= link_to("Logout", logout_path) %>
From codesite-noreply at google.com Sun Aug 12 03:51:48 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sun, 12 Aug 2007 00:51:48 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r228 - in al-admin/trunk/app: helpers views/users Message-ID: <163600d1b504377be15fac3128e32@google.com> Author: koutou Date: Sun Aug 12 00:51:32 2007 New Revision: 228 Modified: al-admin/trunk/app/helpers/users_helper.rb al-admin/trunk/app/views/users/_entry.rhtml al-admin/trunk/app/views/users/edit.rhtml al-admin/trunk/app/views/users/index.rhtml Log: * don't show entry details in index. Modified: al-admin/trunk/app/helpers/users_helper.rb ============================================================================== --- al-admin/trunk/app/helpers/users_helper.rb (original) +++ al-admin/trunk/app/helpers/users_helper.rb Sun Aug 12 00:51:32 2007 @@ -1,2 +1,13 @@ module UsersHelper + def user_link(user, with_edit=false) + user_link_if(true, user, with_edit) + end + + def user_link_if(condition, user, with_edit=false) + result = link_to_if(condition, h(user.dn), :action => "show", :id => user) + if with_edit and current_user and current_user.ldap_user == user + result << "\n(#{link_to('Edit', :action => 'edit', :id => user)})" + end + result + end end Modified: al-admin/trunk/app/views/users/_entry.rhtml ============================================================================== --- al-admin/trunk/app/views/users/_entry.rhtml (original) +++ al-admin/trunk/app/views/users/_entry.rhtml Sun Aug 12 00:51:32 2007 @@ -1,11 +1,7 @@

- <%= link_to_if(defined?(link_to_entry) && link_to_entry, - h(entry.dn), :action => "show", :id => entry) %> -<% if current_user and current_user.ldap_user == entry -%> - (<%= link_to("Edit", :action => "edit", :id => entry) %>) -<% end -%> + <%= user_link_if(defined?(link_to_entry) && link_to_entry, entry, true) %>

<% entry.attribute_names(true).sort.each do |name| -%> Modified: al-admin/trunk/app/views/users/edit.rhtml ============================================================================== --- al-admin/trunk/app/views/users/edit.rhtml (original) +++ al-admin/trunk/app/views/users/edit.rhtml Sun Aug 12 00:51:32 2007 @@ -1,5 +1,5 @@
-

<%= link_to(h(@user.dn), :action => "show", :id => @user) %>

+

<%= user_link(@user) %>

<% form_tag :action => 'update', :id => @user do %> <%= render :partial => 'form' %> <%= submit_tag 'Edit' %> Modified: al-admin/trunk/app/views/users/index.rhtml ============================================================================== --- al-admin/trunk/app/views/users/index.rhtml (original) +++ al-admin/trunk/app/views/users/index.rhtml Sun Aug 12 00:51:32 2007 @@ -1,2 +1,9 @@ -<%= render(:partial => "entry", :collection => @users, - :locals => {:link_to_entry => true}) %> +<% if @users.empty? -%> +

No user.

+<% else -%> +
    +<% @users.each do |user| -%> +
  • <%= user_link(user, true) %>
  • +<% end -%> +
+<% end -%> From codesite-noreply at google.com Sun Aug 12 06:40:58 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sun, 12 Aug 2007 03:40:58 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r230 - trunk Message-ID: Author: koutou Date: Sun Aug 12 03:37:36 2007 New Revision: 230 Modified: trunk/Rakefile Log: * supported updating *.po and creating *.mo. Modified: trunk/Rakefile ============================================================================== --- trunk/Rakefile (original) +++ trunk/Rakefile Sun Aug 12 03:37:36 2007 @@ -73,10 +73,36 @@ end end - desc 'Tag the repository for release.' task :tag do system "svn copy -m 'New release tag' https://ruby-activeldap.googlecode.com/svn/trunk https://ruby-activeldap.googlecode.com/svn/tags/r#{ActiveLdap::VERSION}" +end + + +desc "Update *.po/*.pot files and create *.mo from *.po files" +task :gettext => ["getext:po:update", "gettext:mo:create"] + +namespace :gettext do + desc "Setup environment for GetText" + task :environment do + require "gettext/utils" + end + + namespace :po do + desc "Update po/pot files (GetText)" + task :update => "gettext:environment" do + GetText.update_pofiles("active-ldap", + Dir.glob("lib/**/*.rb"), + "Ruby/ActiveLdap #{ActiveLdap::VERSION}") + end + end + + namespace :mo do + desc "Create *.mo from *.po (GetText)" + task :create => "gettext:environment" do + GetText.create_mofiles(false) + end + end end # vim: syntax=ruby From codesite-noreply at google.com Sun Aug 12 06:44:58 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sun, 12 Aug 2007 03:44:58 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r231 - trunk Message-ID: Author: koutou Date: Sun Aug 12 03:39:02 2007 New Revision: 231 Modified: trunk/TODO Log: * removed Ruby-GetText support from TODO. Modified: trunk/TODO ============================================================================== --- trunk/TODO (original) +++ trunk/TODO Sun Aug 12 03:39:02 2007 @@ -1,4 +1,4 @@ -- Test SASL bind. +- Test SASL bind. - Add result pagination via LDAP::Controls - serialize & serialized_attributes - schema mgmt - how does AR handle it? @@ -8,7 +8,6 @@ - handle all exception raised from Ruby/LDAP and wrap as ActiveLdap exception. I think we need to develop an application using ActiveLdap. -- support Ruby/GetText. - Add locking around Timeout.alarm() to ensure a multithreaded ruby app doesn't hit any race conditions - Add AR matching exceptions: From codesite-noreply at google.com Sun Aug 12 06:55:59 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sun, 12 Aug 2007 03:55:59 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r232 - trunk Message-ID: Author: koutou Date: Sun Aug 12 03:55:26 2007 New Revision: 232 Modified: trunk/Manifest.txt trunk/Rakefile Log: * followed the recent changes. Modified: trunk/Manifest.txt ============================================================================== --- trunk/Manifest.txt (original) +++ trunk/Manifest.txt Sun Aug 12 03:55:26 2007 @@ -6,6 +6,7 @@ Rakefile TODO benchmark/bench-al.rb +data/locale/ja/LC_MESSAGES/active-ldap.mo examples/config.yaml.example examples/example.der examples/example.jpg @@ -37,6 +38,7 @@ lib/active_ldap/association/belongs_to_many.rb lib/active_ldap/association/collection.rb lib/active_ldap/association/has_many.rb +lib/active_ldap/association/has_many_utils.rb lib/active_ldap/association/has_many_wrap.rb lib/active_ldap/association/proxy.rb lib/active_ldap/associations.rb @@ -47,13 +49,16 @@ lib/active_ldap/configuration.rb lib/active_ldap/connection.rb lib/active_ldap/distinguished_name.rb +lib/active_ldap/get_text_fallback.rb lib/active_ldap/ldap_error.rb lib/active_ldap/object_class.rb +lib/active_ldap/operations.rb lib/active_ldap/schema.rb lib/active_ldap/timeout.rb lib/active_ldap/timeout_stub.rb lib/active_ldap/user_password.rb lib/active_ldap/validations.rb +po/ja/active-ldap.po rails/plugin/active_ldap/README rails/plugin/active_ldap/generators/scaffold_al/scaffold_al_generator.rb rails/plugin/active_ldap/generators/scaffold_al/templates/ldap.yml @@ -65,6 +70,8 @@ test/run-test.rb test/test-unit-ext.rb test/test-unit-ext/always-show-result.rb +test/test-unit-ext/backtrace-filter.rb +test/test-unit-ext/long-display-for-emacs.rb test/test-unit-ext/priority.rb test/test_adapter.rb test/test_associations.rb @@ -75,6 +82,7 @@ test/test_callback.rb test/test_connection.rb test/test_connection_per_class.rb +test/test_connection_per_dn.rb test/test_dn.rb test/test_find.rb test/test_groupadd.rb Modified: trunk/Rakefile ============================================================================== --- trunk/Rakefile (original) +++ trunk/Rakefile Sun Aug 12 03:55:26 2007 @@ -80,7 +80,7 @@ desc "Update *.po/*.pot files and create *.mo from *.po files" -task :gettext => ["getext:po:update", "gettext:mo:create"] +task :gettext => ["gettext:po:update", "gettext:mo:create"] namespace :gettext do desc "Setup environment for GetText" @@ -104,5 +104,7 @@ end end end + +task(:gem).prerequisites.unshift("gettext:mo:create") # vim: syntax=ruby From codesite-noreply at google.com Sun Aug 12 06:36:58 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sun, 12 Aug 2007 03:36:58 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r229 - in trunk: lib lib/active_ldap lib/active_ldap/adapter po po/ja test Message-ID: <163600d06e04377e300c4c542dfd7@google.com> Author: koutou Date: Sun Aug 12 03:36:07 2007 New Revision: 229 Added: trunk/lib/active_ldap/get_text_fallback.rb trunk/po/ trunk/po/ja/ trunk/po/ja/active-ldap.po Modified: trunk/lib/active_ldap.rb trunk/lib/active_ldap/adapter/base.rb trunk/lib/active_ldap/adapter/ldap.rb trunk/lib/active_ldap/adapter/net_ldap.rb trunk/lib/active_ldap/attributes.rb trunk/lib/active_ldap/base.rb trunk/lib/active_ldap/command.rb trunk/lib/active_ldap/configuration.rb trunk/lib/active_ldap/connection.rb trunk/lib/active_ldap/distinguished_name.rb trunk/lib/active_ldap/object_class.rb trunk/lib/active_ldap/operations.rb trunk/lib/active_ldap/schema.rb trunk/lib/active_ldap/user_password.rb trunk/lib/active_ldap/validations.rb trunk/test/test_reflection.rb trunk/test/test_user.rb Log: * supportege Ruby-GetText-Package. Modified: trunk/lib/active_ldap.rb ============================================================================== --- trunk/lib/active_ldap.rb (original) +++ trunk/lib/active_ldap.rb Sun Aug 12 03:36:07 2007 @@ -905,12 +905,6 @@ # package, and I'd like to see it prove helpful to more people than just myself. # -if RUBY_PLATFORM.match('linux') - require 'active_ldap/timeout' -else - require 'active_ldap/timeout_stub' -end - require_gem_if_need = Proc.new do |library_name, gem_name| begin require library_name @@ -927,6 +921,38 @@ Dependencies.load_paths << File.expand_path(File.dirname(__FILE__)) end +module ActiveLdap + VERSION = "0.8.2" +end + +if RUBY_PLATFORM.match('linux') + require 'active_ldap/timeout' +else + require 'active_ldap/timeout_stub' +end + +require_gem_if_need.call("active_record/base", "activerecord") +begin + require_gem_if_need.call("gettext/active_record", "gettext") + ActiveLdap.const_set("GetText", GetText) +rescue LoadError + require 'active_ldap/get_text_fallback' +end + +module ActiveLdap + module GetTextSupport + class << self + def included(base) + base.class_eval do + include(GetText) + bindtextdomain("active-ldap") + end + end + end + end +end + + require 'active_ldap/base' require 'active_ldap/associations' require 'active_ldap/configuration' @@ -936,13 +962,9 @@ require 'active_ldap/object_class' require 'active_ldap/distinguished_name' -require_gem_if_need.call("active_record/base", "activerecord") require 'active_ldap/validations' require 'active_ldap/callbacks' -module ActiveLdap - VERSION = "0.8.2" -end ActiveLdap::Base.class_eval do include ActiveLdap::Configuration Modified: trunk/lib/active_ldap/adapter/base.rb ============================================================================== --- trunk/lib/active_ldap/adapter/base.rb (original) +++ trunk/lib/active_ldap/adapter/base.rb Sun Aug 12 03:36:07 2007 @@ -4,6 +4,8 @@ module ActiveLdap module Adapter class Base + include GetTextSupport + VALID_ADAPTER_CONFIGURATION_KEYS = [:host, :port, :method, :timeout, :retry_on_timeout, :retry_limit, :retry_wait, :bind_dn, :password, @@ -55,14 +57,14 @@ # Attempt 2: SIMPLE with credentials if password block # Attempt 3: SIMPLE ANONYMOUS if 1 and 2 fail (or pwblock returns '') if try_sasl and sasl_bind(bind_dn, options) - @logger.info {'Bound SASL'} + @logger.info {_('Bound by SASL')} elsif simple_bind(bind_dn, options) - @logger.info {'Bound simple'} + @logger.info {_('Bound by simple')} elsif allow_anonymous and bind_as_anonymous(options) - @logger.info {'Bound anonymous'} + @logger.info {_('Bound as anonymous')} else message = yield if block_given? - message ||= 'All authentication methods exhausted.' + message ||= _('All authentication methods exhausted.') raise AuthenticationError, message end @@ -135,8 +137,10 @@ end rescue LdapError # Do nothing on failure - @logger.info {"Ignore error #{$!.class}(#{$!.message}) " + - "for #{filter} and attrs #{attrs.inspect}"} + @logger.info do + args = [$!.class, $!.message, filter, attrs.inspect] + _("Ignore error %s(%s): filter %s: attributes: %s") % args + end end values @@ -153,7 +157,7 @@ end end rescue LdapError::NoSuchObject - raise EntryNotFound, "No such entry: #{target}" + raise EntryNotFound, _("No such entry: %s") % target end end @@ -163,17 +167,17 @@ yield(dn, entries) end rescue LdapError::NoSuchObject - raise EntryNotFound, "No such entry: #{dn}" + raise EntryNotFound, _("No such entry: %s") % dn rescue LdapError::InvalidDnSyntax raise DistinguishedNameInvalid.new(dn) rescue LdapError::AlreadyExists - raise EntryAlreadyExist, "#{$!.message}: #{dn}" + raise EntryAlreadyExist, _("%s: %s") % [$!.message, dn] rescue LdapError::StrongAuthRequired - raise StrongAuthenticationRequired, "#{$!.message}: #{dn}" + raise StrongAuthenticationRequired, _("%s: %s") % [$!.message, dn] rescue LdapError::ObjectClassViolation - raise RequiredAttributeMissed, "#{$!.message}: #{dn}" + raise RequiredAttributeMissed, _("%s: %s") % [$!.message, dn] rescue LdapError::UnwillingToPerform - raise OperationNotPermitted, "#{$!.message}: #{dn}" + raise OperationNotPermitted, _("%s: %s") % [$!.message, dn] end end @@ -185,7 +189,7 @@ rescue LdapError::UndefinedType raise rescue LdapError::ObjectClassViolation - raise RequiredAttributeMissed, "#{$!.message}: #{dn}" + raise RequiredAttributeMissed, _("%s: %s") % [$!.message, dn] end end @@ -216,7 +220,7 @@ if password_block.respond_to?(:call) passwd = password_block.call(bind_dn) else - @logger.error {'password_block not nil or Proc object. Ignoring.'} + @logger.error {_('password_block not nil or Proc object. Ignoring.')} return nil end @@ -235,7 +239,7 @@ begin Timeout.alarm(@timeout, &block) rescue Timeout::Error => e - @logger.error {'Requested action timed out.'} + @logger.error {_('Requested action timed out.')} retry if try_reconnect and @retry_on_timeout and reconnect(options) @logger.error {e.message} raise TimeoutError, e.message @@ -404,8 +408,8 @@ return if operator.nil? unless filter_logical_operator?(operator) raise ArgumentError, - "invalid logical operator: #{operator.inspect}: " + - "available operators: #{LOGICAL_OPERATORS.inspect}" + _("invalid logical operator: %s: available operators: %s") % + [operator.inspect, LOGICAL_OPERATORS.inspect] end end @@ -421,10 +425,10 @@ loop do unless can_reconnect?(options) raise ConnectionError, - 'Giving up trying to reconnect to LDAP server.' + _('Giving up trying to reconnect to LDAP server.') end - @logger.debug {'Attempting to reconnect'} + @logger.debug {_('Attempting to reconnect')} disconnect! # Reset the attempts if this was forced. @@ -435,9 +439,9 @@ break rescue => detail @logger.error do - "Reconnect to server failed: #{detail.exception}\n" + - "Reconnect to server failed backtrace:\n" + - detail.backtrace.join("\n") + _("Reconnect to server failed: %s\n" \ + "Reconnect to server failed backtrace:\n" \ + "%s") % [detail.exception, detail.backtrace.join("\n")] end # Do not loop if forced raise ConnectionError, detail.message if force Modified: trunk/lib/active_ldap/adapter/ldap.rb ============================================================================== --- trunk/lib/active_ldap/adapter/ldap.rb (original) +++ trunk/lib/active_ldap/adapter/ldap.rb Sun Aug 12 03:36:07 2007 @@ -79,8 +79,10 @@ end rescue RuntimeError if $!.message == "no result returned by search" - @logger.debug {"No matches for #{filter} and attrs " + - "#{attrs.inspect}"} + @logger.debug do + args = [filter, attrs.inspect] + _("No matches: filter: %s: attributes: %s") % args + end else raise end @@ -148,7 +150,7 @@ begin super rescue LDAP::ServerDown => e - @logger.error {"LDAP server is down: #{e.message}"} + @logger.error {_("LDAP server is down: %s") % e.message} retry if try_reconnect and reconnect(options) raise ConnectionError.new(e.message) end @@ -164,9 +166,8 @@ available_methods = Method.constants.collect do |name| name.downcase.to_sym.inspect end.join(", ") - raise ConfigurationError, - "#{method.inspect} is not one of the available connect " + - "methods #{available_methods}" + format = _("%s is not one of the available connect methods: %s") + raise ConfigurationError, format % [method.inspect, available_methods] end def ensure_scope(scope) @@ -178,8 +179,8 @@ value = scope_map[scope || :sub] if value.nil? available_scopes = scope_map.keys.inspect - raise ArgumentError, "#{scope.inspect} is not one of the available " + - "LDAP scope #{available_scopes}" + format = _("%s is not one of the available LDAP scope: %s") + raise ArgumentError, format % [scope.inspect, available_scopes] end value end @@ -224,7 +225,7 @@ when :replace, :add LDAP.const_get("LDAP_MOD_#{type.to_s.upcase}") else - raise ArgumentError, "unknown type: #{type}" + raise ArgumentError, _("unknown type: %s") % type end end end Modified: trunk/lib/active_ldap/adapter/net_ldap.rb ============================================================================== --- trunk/lib/active_ldap/adapter/net_ldap.rb (original) +++ trunk/lib/active_ldap/adapter/net_ldap.rb Sun Aug 12 03:36:07 2007 @@ -156,9 +156,8 @@ return METHOD[normalized_method] if METHOD.has_key?(normalized_method) available_methods = METHOD.keys.collect {|m| m.inspect}.join(", ") - raise ConfigurationError, - "#{method.inspect} is not one of the available connect " + - "methods #{available_methods}" + format = _("%s is not one of the available connect methods: %s") + raise ConfigurationError, format % [method.inspect, available_methods] end def ensure_scope(scope) @@ -170,8 +169,8 @@ value = scope_map[scope || :sub] if value.nil? available_scopes = scope_map.keys.inspect - raise ArgumentError, "#{scope.inspect} is not one of the available " + - "LDAP scope #{available_scopes}" + format = _("%s is not one of the available LDAP scope: %s") + raise ArgumentError, format % [scope.inspect, available_scopes] end value end @@ -201,7 +200,10 @@ challenge_response = Proc.new do |cred| params = parse_sasl_digest_md5_credential(cred) qops = params["qop"].split(/,/) - return "unsupported qops: #{qops.inspect}" unless qops.include?("auth") + unless qops.include?("auth") + raise ActiveLdap::AuthenticationError, + _("unsupported qops: %s") % qops.inspect + end qop = "auth" server = @connection.instance_variable_get("@conn").addr[2] realm = params['realm'] @@ -280,7 +282,7 @@ when :replace, :add type else - raise ArgumentError, "unknown type: #{type}" + raise ArgumentError, _("unknown type: %s") % type end end end Modified: trunk/lib/active_ldap/attributes.rb ============================================================================== --- trunk/lib/active_ldap/attributes.rb (original) +++ trunk/lib/active_ldap/attributes.rb Sun Aug 12 03:36:07 2007 @@ -31,8 +31,8 @@ # Arrays are for multiple entries def normalize_attribute(name, value) if name.nil? - raise RuntimeError, 'The first argument, name, must not be nil. ' + - 'Please report this as a bug!' + raise RuntimeError, _('The first argument, name, must not be nil. ' \ + 'Please report this as a bug!') end name = normalize_attribute_name(name) @@ -75,7 +75,7 @@ private def normalize_attribute_value_of_array(name, value) if value.size > 1 and schema.single_value?(name) - raise TypeError, "Attribute #{name} can only have a single value" + raise TypeError, _("Attribute %s can only have a single value") % name end if value.empty? schema.binary_required?(name) ? [{'binary' => value}] : value @@ -88,11 +88,14 @@ def normalize_attribute_value_of_hash(name, value) if value.keys.size > 1 - raise TypeError, "Hashes must have one key-value pair only." + raise TypeError, + _("Hashes must have one key-value pair only: %s") % value.inspect end unless value.keys[0].match(/^(lang-[a-z][a-z]*)|(binary)$/) - logger.warn {"unknown subtype did not match lang-* or binary:" + - "#{value.keys[0]}"} + logger.warn do + format = _("unknown option did not match lang-* or binary: %s") + format % value.keys[0] + end end # Contents MUST be a String or an Array if !value.has_key?('binary') and schema.binary_required?(name) Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Sun Aug 12 03:36:07 2007 @@ -43,6 +43,7 @@ # If this isn't read-only then lists become multiple entries, etc. class Error < StandardError + include GetTextSupport end # ConfigurationError @@ -108,8 +109,11 @@ def initialize(dn, reason=nil) @dn = dn @reason = reason - message = "#{@dn} is invalid distinguished name (dn)" - message << ": #{@reason}"if @reason + if @reason + message = _("%s is invalid distinguished name (DN)") % @dn + else + message = _("%s is invalid distinguished name (DN): %s") % [@dn, @reason] + end super(message) end end @@ -142,7 +146,7 @@ attr_reader :adapter def initialize(adapter) @adapter = adapter - super("LDAP configuration specifies nonexistent #{@adapter} adapter") + super(_("LDAP configuration specifies nonexistent %s adapter") % adapter) end end @@ -150,7 +154,7 @@ attr_reader :name def initialize(name) @name = name - super("#{@name} is unknown attribute") + super(_("%s is unknown attribute") % @name) end end @@ -160,6 +164,9 @@ # ActiveLdap functionality. It is meant to only ever be subclassed # by extension classes. class Base + include GetTextSupport + public :gettext + if Reloadable.const_defined?(:Deprecated) include Reloadable::Deprecated else @@ -312,7 +319,8 @@ def validate_scope(scope) scope = scope.to_sym if scope.is_a?(String) return if scope.nil? or scope.is_a?(Symbol) - raise ConfigurationError, "scope '#{scope.inspect}' must be a Symbol" + raise ConfigurationError, + _("scope '%s' must be a Symbol") % scope.inspect end def base_class @@ -420,8 +428,8 @@ self.dn = normalized_attributes[dn_attribute] self.attributes = normalized_attributes else - message = "'#{attributes.inspect}' must be either " - message << "nil, DN value as String or Array or attributes as Hash" + message = _("'%s' must be either nil, DN value as String or Array " \ + "or attributes as Hash") % attributes.inspect raise ArgumentError, message end yield self if block_given? @@ -501,7 +509,7 @@ dn_value = id if dn_value.nil? raise DistinguishedNameNotSetError.new, - "#{dn_attribute} value of #{self} doesn't set" + _("%s's DN attribute (%s) isn't set") % [self, dn_attribute] end _base = base _base = nil if _base.empty? @@ -529,7 +537,7 @@ self.class.delete(dn) @new_entry = true rescue Error - raise DeleteError.new("Failed to delete LDAP entry: '#{dn}'") + raise DeleteError.new(_("Failed to delete LDAP entry: %s") % dn) end end @@ -548,7 +556,7 @@ def save! unless create_or_update - raise EntryNotSaved, "entry #{dn} can't saved" + raise EntryNotSaved, _("entry %s can't be saved") % dn end end @@ -569,7 +577,7 @@ if have_attribute?(real_key, ['objectClass']) if args.size != 1 raise ArgumentError, - "wrong number of arguments (#{args.size} for 1)" + _("wrong number of arguments (%d for 1)") % args.size end return set_attribute(real_key, *args, &block) end @@ -580,7 +588,7 @@ if have_attribute?(real_key, ['objectClass']) if args.size > 1 raise ArgumentError, - "wrong number of arguments (#{args.size} for 1)" + _("wrong number of arguments (%d for 1)") % args.size end if before_type_cast return get_attribute_before_type_cast(real_key, *args) @@ -687,7 +695,9 @@ _, attributes = search(:value => id).find do |_dn, _attributes| dn == _dn end - raise EntryNotFound, "Can't find dn '#{dn}' to reload" if attributes.nil? + if attributes.nil? + raise EntryNotFound, _("Can't find DN '%d' to reload") % dn + end @ldap_data.update(attributes) classes, attributes = extract_object_class(attributes) @@ -1087,7 +1097,7 @@ def check_configuration unless dn_attribute raise ConfigurationError, - "dn_attribute not set for this class: #{self.class}" + _("dn_attribute isn't set for this class: %s") % self.class end end Modified: trunk/lib/active_ldap/command.rb ============================================================================== --- trunk/lib/active_ldap/command.rb (original) +++ trunk/lib/active_ldap/command.rb Sun Aug 12 03:36:07 2007 @@ -3,6 +3,8 @@ module ActiveLdap module Command + include GetTextSupport + module_function def parse_options(argv=nil, version=nil) argv ||= ARGV.dup @@ -11,21 +13,21 @@ yield(opts, options) opts.separator "" - opts.separator "Common options:" + opts.separator _("Common options:") opts.on_tail("--config=CONFIG", - "Specify configuration file written as YAML") do |file| + _("Specify configuration file written as YAML")) do |file| require 'yaml' config = YAML.load(File.read(file)).symbolize_keys Configuration::DEFAULT_CONFIG.update(config) end - opts.on_tail("-h", "--help", "Show this message") do + opts.on_tail("-h", "--help", _("Show this message")) do puts opts exit end - opts.on_tail("--version", "Show version") do + opts.on_tail("--version", _("Show version")) do puts(version || VERSION) exit end Modified: trunk/lib/active_ldap/configuration.rb ============================================================================== --- trunk/lib/active_ldap/configuration.rb (original) +++ trunk/lib/active_ldap/configuration.rb Sun Aug 12 03:36:07 2007 @@ -55,7 +55,8 @@ if config.is_a?(Symbol) or config.is_a?(String) _config = configurations[config.to_s] unless _config - raise ConnectionError, "#{config} connection is not configured" + raise ConnectionError, + _("%s connection is not configured") % config end config = _config end @@ -96,8 +97,8 @@ when :scope, :ldap_scope if key == :ldap_scope logger.warning do - ":ldap_scope configuration option is deprecated. " + - "Use :scope instead." + _(":ldap_scope configuration option is deprecated. " \ + "Use :scope instead.") end end target.scope = value Modified: trunk/lib/active_ldap/connection.rb ============================================================================== --- trunk/lib/active_ldap/connection.rb (original) +++ trunk/lib/active_ldap/connection.rb Sun Aug 12 03:36:07 2007 @@ -96,7 +96,7 @@ end if config.has_key?(:ldap_scope) logger.warning do - ":ldap_scope connection option is deprecated. Use :scope instead." + _(":ldap_scope connection option is deprecated. Use :scope instead.") end config[:scope] ||= config.delete(:ldap_scope) end Modified: trunk/lib/active_ldap/distinguished_name.rb ============================================================================== --- trunk/lib/active_ldap/distinguished_name.rb (original) +++ trunk/lib/active_ldap/distinguished_name.rb Sun Aug 12 03:36:07 2007 @@ -2,7 +2,11 @@ module ActiveLdap class DistinguishedName + include GetTextSupport + class Parser + include GetTextSupport + attr_reader :dn def initialize(source) @dn = nil @@ -124,23 +128,23 @@ end def name_component_is_missing - invalid_dn("name component is missing") + invalid_dn(_("name component is missing")) end def rdn_is_missing - invalid_dn("relative distinguished name (RDN) is missing") + invalid_dn(_("relative distinguished name (RDN) is missing")) end def attribute_type_is_missing - invalid_dn("attribute type is missing") + invalid_dn(_("attribute type is missing")) end def attribute_value_is_missing - invalid_dn("attribute value is missing") + invalid_dn(_("attribute value is missing")) end def found_unmatched_quotation - invalid_dn("found unmatched quotation") + invalid_dn(_("found unmatched quotation")) end end @@ -165,7 +169,7 @@ if rdn == normalized_rdns.pop rdns.pop else - raise ArgumentError, "#{other} isn't sub DN of #{self}" + raise ArgumentError, _("%s isn't sub DN of %s") % [other, self] end end self.class.new(*rdns) Added: trunk/lib/active_ldap/get_text_fallback.rb ============================================================================== --- (empty file) +++ trunk/lib/active_ldap/get_text_fallback.rb Sun Aug 12 03:36:07 2007 @@ -0,0 +1,53 @@ +module ActiveLdap + module GetTextFallback + class << self + def included(base) + base.extend(self) + end + end + + module_function + def bindtextdomain(domain_name, *args) + end + + def gettext(msg_id) + msg_id + end + + def ngettext(arg1, arg2, arg3=nil) + if arg1.kind_of?(Array) + msg_id = arg1[0] + msg_id_plural = arg1[1] + n = arg2 + else + msg_id = arg1 + msg_id_plural = arg2 + n = arg3 + end + n == 1 ? msg_id : msg_id_plural + end + + def N_(msg_id) + msg_id + end + + def Nn_(msg_id, msg_id_plural) + [msg_id, msg_id_plural] + end + + def sgettext(msg_id, div='|') + index = msg.rindex(div) + if index + msg[(index + 1)..-1] + else + msg + end + end + + alias_method(:_, :gettext) + alias_method(:n_, :ngettext) + alias_method(:s_, :sgettext) + end + + GetText = GetTextFallback +end Modified: trunk/lib/active_ldap/object_class.rb ============================================================================== --- trunk/lib/active_ldap/object_class.rb (original) +++ trunk/lib/active_ldap/object_class.rb Sun Aug 12 03:36:07 2007 @@ -43,11 +43,11 @@ new_class.is_a?(String) end unless invalid_classes.empty? - message = "Value in objectClass array is not a String" + format = _("Value in objectClass array is not a String: %s") invalid_classes_info = invalid_classes.collect do |invalid_class| "#{invalid_class.class}:#{invalid_class.inspect}" end.join(", ") - raise TypeError, "#{message}: #{invalid_classes_info}" + raise TypeError, format % invalid_classes_info end end @@ -56,8 +56,8 @@ schema.exist_name?("objectClasses", new_class) end unless invalid_classes.empty? - message = "unknown objectClass in LDAP server" - message = "#{message}: #{invalid_classes.join(', ')}" + format = _("unknown objectClass in LDAP server: %s") + message = format % invalid_classes.join(', ') raise ObjectClassError, message end end @@ -71,9 +71,9 @@ end) end unless required_classes.empty? - raise RequiredObjectClassMissed, - "Can't remove required objectClass: " + - required_classes.join(", ") + format = _("Can't remove required objectClass: %s") + message = format % required_classes.join(", ") + raise RequiredObjectClassMissed, message end end end Modified: trunk/lib/active_ldap/operations.rb ============================================================================== --- trunk/lib/active_ldap/operations.rb (original) +++ trunk/lib/active_ldap/operations.rb Sun Aug 12 03:36:07 2007 @@ -34,7 +34,8 @@ value = value.first if value.is_a?(Array) and value.first.size == 1 if filter.nil? and !value.is_a?(String) - raise ArgumentError, "Search value must be a String" + message = _("Search value must be a String: %s") % value.inspect + raise ArgumentError, message end _attr, value, _prefix = split_search_value(value) @@ -45,7 +46,7 @@ _base = [prefix, base].compact.reject{|x| x.empty?}.join(",") if options.has_key?(:ldap_scope) logger.warning do - ":ldap_scope search option is deprecated. Use :scope instead." + _(":ldap_scope search option is deprecated. Use :scope instead.") end options[:scope] ||= options[:ldap_scope] end @@ -199,7 +200,7 @@ when /\Adesc(?:end)?\z/i :descend else - raise ArgumentError, "Invalid order: #{value.inspect}" + raise ArgumentError, _("Invalid order: %s") % value.inspect end end @@ -234,7 +235,7 @@ case dns.size when 0 - raise EntryNotFound, "Couldn't find #{name} without a DN" + raise EntryNotFound, _("Couldn't find %s without a DN") % name when 1 result = find_one(dns.first, options) expects_array ? [result] : result @@ -252,9 +253,14 @@ if result result else - message = "Couldn't find #{name} with DN=#{dn}" - message << " #{options[:filter]}" if options[:filter] - raise EntryNotFound, message + args = [name, dn] + if options[:filter] + format = _("Couldn't find %s: DN: %s: filter: %s") + args << options[:filter] + else + format = _("Couldn't find %s: DN: %s") + end + raise EntryNotFound, format % args end end @@ -276,9 +282,14 @@ if result.size == dns.size result else - message = "Couldn't find all #{name} with DNs (#{dns.join(', ')})" - message << " #{options[:filter]}"if options[:filter] - raise EntryNotFound, message + args = [name, dns.join(', ')] + if options[:filter] + format = _("Couldn't find all %s: DNs (%s): filter: %s") + args << options[:filter] + else + format = _("Couldn't find all %s: DNs (%s)") + end + raise EntryNotFound, format % args end end Modified: trunk/lib/active_ldap/schema.rb ============================================================================== --- trunk/lib/active_ldap/schema.rb (original) +++ trunk/lib/active_ldap/schema.rb Sun Aug 12 03:36:07 2007 @@ -102,7 +102,7 @@ return {} if group.empty? or id_or_name.empty? unless @entries.has_key?(group) - raise ArgumentError, "Unknown schema group: #{group}" + raise ArgumentError, _("Unknown schema group: %s") % group end # Initialize anything that is required Modified: trunk/lib/active_ldap/user_password.rb ============================================================================== --- trunk/lib/active_ldap/user_password.rb (original) +++ trunk/lib/active_ldap/user_password.rb Sun Aug 12 03:36:07 2007 @@ -8,19 +8,20 @@ module_function def valid?(password, hashed_password) unless /^\{([A-Z][A-Z\d]+)\}/ =~ hashed_password - raise ArgumentError, "Invalid hashed password" + raise ArgumentError, _("Invalid hashed password: %s") % hashed_password end type = $1 hashed_password_without_type = $POSTMATCH normalized_type = type.downcase unless respond_to?(normalized_type) - raise ArgumentError, "Unknown Hash type #{type}" + raise ArgumentError, _("Unknown Hash type: %s") % type end salt_extractor = "extract_salt_for_#{normalized_type}" if respond_to?(salt_extractor) salt = send(salt_extractor, hashed_password_without_type) if salt.nil? - raise ArgumentError, "Can't extract salt from hashed password" + raise ArgumentError, + _("Can't extract salt from hashed password: %s") % hashed_password end generated_password = send(normalized_type, password, salt) else @@ -48,7 +49,7 @@ def smd5(password, salt=nil) if salt and salt.size != 4 - raise ArgumentError.new("salt size must be == 4") + raise ArgumentError, _("salt size must be == 4: %s") % salt.inspect end salt ||= Salt.generate(4) md5_hash_with_salt = "#{MD5.md5(password + salt).digest}#{salt}" @@ -65,7 +66,7 @@ def ssha(password, salt=nil) if salt and salt.size != 4 - raise ArgumentError.new("salt size must be == 4") + raise ArgumentError, _("salt size must be == 4: %s") % salt.inspect end salt ||= Salt.generate(4) sha1_hash_with_salt = "#{SHA1.sha1(password + salt).digest}#{salt}" Modified: trunk/lib/active_ldap/validations.rb ============================================================================== --- trunk/lib/active_ldap/validations.rb (original) +++ trunk/lib/active_ldap/validations.rb Sun Aug 12 03:36:07 2007 @@ -9,6 +9,15 @@ alias_method :new_record?, :new_entry? include ActiveRecord::Validations + # Workaround for GetText's ugly implementation + begin + instance_method(:save_without_validation) + rescue NameError + alias_method_chain :save, :validation + alias_method_chain :save!, :validation + alias_method_chain :update_attribute, :validation_skipping + end + validate :validate_required_values class << self @@ -49,12 +58,25 @@ # Check for missing requirements. if value.empty? aliases = schema.attribute_aliases(real_name) - [real_name] - message = "is required attribute " - unless aliases.empty? - message << "(aliases: #{aliases.join(', ')}) " + args = [object_class] + if ActiveLdap.const_defined?(:GetTextFallback) + if aliases.empty? + format = "is required attribute by objectClass '%s'" + else + format = "is required attribute by objectClass '%s'" \ + ": aliases: %s" + args << aliases.join(', ') + end + else + if aliases.empty? + format = "%{fn} is required attribute by objectClass '%s'" + else + format = "%{fn} is required attribute by objectClass '%s'" \ + ": aliases: %s" + args << aliases.join(', ') + end end - message << "by objectClass '#{object_class}'" - errors.add(real_name, message) + errors.add(real_name, format % args) end end end Added: trunk/po/ja/active-ldap.po ============================================================================== --- (empty file) +++ trunk/po/ja/active-ldap.po Sun Aug 12 03:36:07 2007 @@ -0,0 +1,288 @@ +# a po-file for Ruby/ActiveLdap. +# Copyright (C) 2007 Kouhei Sutou +# This file is distributed under the same license as the Ruby/ActiveLdap package. +# Kouhei Sutou , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" +"POT-Creation-Date: 2007-08-12 19:33+0900\n" +"PO-Revision-Date: 2007-08-12 19:34+0900\n" +"Last-Translator: Kouhei Sutou \n" +"Language-Team: Japanese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: lib/active_ldap/adapter/ldap.rb:84 +msgid "No matches: filter: %s: attributes: %s" +msgstr "??????????: ????: %s: ??: %s" + +#: lib/active_ldap/adapter/ldap.rb:153 +msgid "LDAP server is down: %s" +msgstr "LDAP????????????: %s" + +#: lib/active_ldap/adapter/ldap.rb:169 lib/active_ldap/adapter/net_ldap.rb:159 +msgid "%s is not one of the available connect methods: %s" +msgstr "%s???????????????: %s" + +#: lib/active_ldap/adapter/ldap.rb:182 lib/active_ldap/adapter/net_ldap.rb:172 +msgid "%s is not one of the available LDAP scope: %s" +msgstr "%s????LDAP???????????: %s" + +#: lib/active_ldap/adapter/ldap.rb:228 lib/active_ldap/adapter/net_ldap.rb:285 +msgid "unknown type: %s" +msgstr "???????: %s" + +#: lib/active_ldap/adapter/net_ldap.rb:205 +msgid "unsupported qops: %s" +msgstr "???????qops??: %s" + +#: lib/active_ldap/adapter/base.rb:60 +msgid "Bound by SASL" +msgstr "SASL????????" + +#: lib/active_ldap/adapter/base.rb:62 +msgid "Bound by simple" +msgstr "??????????????" + +#: lib/active_ldap/adapter/base.rb:64 +msgid "Bound as anonymous" +msgstr "???????????????" + +#: lib/active_ldap/adapter/base.rb:67 +msgid "All authentication methods exhausted." +msgstr "?????????????????" + +#: lib/active_ldap/adapter/base.rb:142 +msgid "Ignore error %s(%s): filter %s: attributes: %s" +msgstr "???%s(%s)??????: ???? %s: ??: %s" + +#: lib/active_ldap/adapter/base.rb:160 lib/active_ldap/adapter/base.rb:170 +msgid "No such entry: %s" +msgstr "???????????????: %s" + +#: lib/active_ldap/adapter/base.rb:174 lib/active_ldap/adapter/base.rb:176 +#: lib/active_ldap/adapter/base.rb:178 lib/active_ldap/adapter/base.rb:180 +#: lib/active_ldap/adapter/base.rb:192 +msgid "%s: %s" +msgstr "%s: %s" + +#: lib/active_ldap/adapter/base.rb:223 +msgid "password_block not nil or Proc object. Ignoring." +msgstr "password_block?nil??Proc??????????????" + +#: lib/active_ldap/adapter/base.rb:242 +msgid "Requested action timed out." +msgstr "?????????????????????" + +#: lib/active_ldap/adapter/base.rb:411 +msgid "invalid logical operator: %s: available operators: %s" +msgstr "??????????: %s: ??????: %s\n" + +#: lib/active_ldap/adapter/base.rb:428 +msgid "Giving up trying to reconnect to LDAP server." +msgstr "LDAP???????????????" + +#: lib/active_ldap/adapter/base.rb:431 +msgid "Attempting to reconnect" +msgstr "???????????" + +#: lib/active_ldap/adapter/base.rb:442 +msgid "" +"Reconnect to server failed: %s\n" +"Reconnect to server failed backtrace:\n" +"%s" +msgstr "" +"???????????????: %s\\n\n" +"???????????????????:\\n\n" +"%s" + +#: lib/active_ldap/command.rb:16 +msgid "Common options:" +msgstr "????????" + +#: lib/active_ldap/command.rb:19 +msgid "Specify configuration file written as YAML" +msgstr "YAML?????????????????????" + +#: lib/active_ldap/command.rb:25 +msgid "Show this message" +msgstr "??????????????" + +#: lib/active_ldap/command.rb:30 +msgid "Show version" +msgstr "????????????" + +#: lib/active_ldap/attributes.rb:34 +msgid "The first argument, name, must not be nil. Please report this as a bug!" +msgstr "" +"?????name?nil????????????????????????????" +"??" + +#: lib/active_ldap/attributes.rb:78 +msgid "Attribute %s can only have a single value" +msgstr "??%s?????????????" + +#: lib/active_ldap/attributes.rb:92 +msgid "Hashes must have one key-value pair only: %s" +msgstr "????????????????????????????: %s" + +#: lib/active_ldap/attributes.rb:96 +msgid "unknown option did not match lang-* or binary: %s" +msgstr "lang-*??binary??????????????????: %s" + +#: lib/active_ldap/object_class.rb:46 +msgid "Value in objectClass array is not a String: %s" +msgstr "objectClass???????String???????: %s" + +#: lib/active_ldap/object_class.rb:59 +msgid "unknown objectClass in LDAP server: %s" +msgstr "LDAP????????objectClass??: %s" + +#: lib/active_ldap/object_class.rb:74 +msgid "Can't remove required objectClass: %s" +msgstr "???objectClass????????: %s" + +#: lib/active_ldap/connection.rb:99 +msgid ":ldap_scope connection option is deprecated. Use :scope instead." +msgstr "" +":ldap_scope???????????????????:scope?????????" + +#: lib/active_ldap/user_password.rb:11 +msgid "Invalid hashed password: %s" +msgstr "???????????????????: %s" + +#: lib/active_ldap/user_password.rb:17 +msgid "Unknown Hash type: %s" +msgstr "????????????: %s" + +#: lib/active_ldap/user_password.rb:24 +msgid "Can't extract salt from hashed password: %s" +msgstr "???????????????salt?????????????: %s" + +#: lib/active_ldap/user_password.rb:52 lib/active_ldap/user_password.rb:69 +msgid "salt size must be == 4: %s" +msgstr "salt?4????????????: %s" + +#: lib/active_ldap/schema.rb:105 +msgid "Unknown schema group: %s" +msgstr "?????????????: %s" + +#: lib/active_ldap/configuration.rb:59 +msgid "%s connection is not configured" +msgstr "%s??????????????" + +#: lib/active_ldap/configuration.rb:100 +msgid ":ldap_scope configuration option is deprecated. Use :scope instead." +msgstr "" +":ldap_scope???????????????????:scope?????????" + +#: lib/active_ldap/base.rb:113 +msgid "%s is invalid distinguished name (DN)" +msgstr "%s???????(DN)???" + +#: lib/active_ldap/base.rb:115 +msgid "%s is invalid distinguished name (DN): %s" +msgstr "%s???????(DN)??: %s" + +#: lib/active_ldap/base.rb:149 +msgid "LDAP configuration specifies nonexistent %s adapter" +msgstr "LDAP?????????%s?????????????" + +#: lib/active_ldap/base.rb:157 +msgid "%s is unknown attribute" +msgstr "%s?????????" + +#: lib/active_ldap/base.rb:323 +msgid "scope '%s' must be a Symbol" +msgstr "????'%s'????????????????" + +#: lib/active_ldap/base.rb:431 +msgid "" +"'%s' must be either nil, DN value as String or Array or attributes as Hash" +msgstr "" +"'%s'?nil?String???DN?DN????Hash??????????????????" +"??" + +#: lib/active_ldap/base.rb:512 +msgid "%s's DN attribute (%s) isn't set" +msgstr "%s?DN??(%s)???????????" + +#: lib/active_ldap/base.rb:540 +msgid "Failed to delete LDAP entry: %s" +msgstr "LDAP??????????????: %s" + +#: lib/active_ldap/base.rb:559 +msgid "entry %s can't be saved" +msgstr "????%s?????????" + +#: lib/active_ldap/base.rb:580 lib/active_ldap/base.rb:591 +msgid "wrong number of arguments (%d for 1)" +msgstr "??????????(1???????%d???????)" + +#: lib/active_ldap/base.rb:699 +msgid "Can't find DN '%d' to reload" +msgstr "???????DN '%s'?????????" + +#: lib/active_ldap/base.rb:1100 +msgid "dn_attribute isn't set for this class: %s" +msgstr "??????dn_attribute??????????: %s" + +#: lib/active_ldap/distinguished_name.rb:131 +msgid "name component is missing" +msgstr "???????????" + +#: lib/active_ldap/distinguished_name.rb:135 +msgid "relative distinguished name (RDN) is missing" +msgstr "?????(RDN)???????" + +#: lib/active_ldap/distinguished_name.rb:139 +msgid "attribute type is missing" +msgstr "????????????" + +#: lib/active_ldap/distinguished_name.rb:143 +msgid "attribute value is missing" +msgstr "???????????" + +#: lib/active_ldap/distinguished_name.rb:147 +msgid "found unmatched quotation" +msgstr "????????????????" + +#: lib/active_ldap/distinguished_name.rb:172 +msgid "%s isn't sub DN of %s" +msgstr "%s?%s???DN????????" + +#: lib/active_ldap/operations.rb:37 +msgid "Search value must be a String: %s" +msgstr "??????String??????????: %s" + +#: lib/active_ldap/operations.rb:49 +msgid ":ldap_scope search option is deprecated. Use :scope instead." +msgstr "" +":ldap_search???????????????????:scope?????????" + +#: lib/active_ldap/operations.rb:203 +msgid "Invalid order: %s" +msgstr "???????: %s" + +#: lib/active_ldap/operations.rb:238 +msgid "Couldn't find %s without a DN" +msgstr "DN?????%s?????????" + +#: lib/active_ldap/operations.rb:258 +msgid "Couldn't find %s: DN: %s: filter: %s" +msgstr "%s????????: DN: %s: ????: %s" + +#: lib/active_ldap/operations.rb:261 +msgid "Couldn't find %s: DN: %s" +msgstr "%s????????: DN: %s" + +#: lib/active_ldap/operations.rb:287 +msgid "Couldn't find all %s: DNs (%s): filter: %s" +msgstr "????%s????????????: DN (%s): ????: %s" + +#: lib/active_ldap/operations.rb:290 +msgid "Couldn't find all %s: DNs (%s)" +msgstr "????%s????????????: DN (%s)" Modified: trunk/test/test_reflection.rb ============================================================================== --- trunk/test/test_reflection.rb (original) +++ trunk/test/test_reflection.rb Sun Aug 12 03:36:07 2007 @@ -159,13 +159,13 @@ def collect_attributes(object_classes, with_aliases=true) attributes = [] object_classes.each do |object_class| - attrs = ActiveLdap::Base.schema.class_attributes(object_class) + object_klass = ActiveLdap::Base.schema.object_class(object_class) if with_aliases - (attrs[:must] + attrs[:may]).each do |name| + (object_klass.must + object_klass.may).each do |name| attributes.concat(ActiveLdap::Base.schema.attribute_aliases(name)) end else - attributes.concat(attrs[:must] + attrs[:may]) + attributes.concat(object_klass.must + object_klass.may) end end attributes Modified: trunk/test/test_user.rb ============================================================================== --- trunk/test/test_user.rb (original) +++ trunk/test/test_user.rb Sun Aug 12 03:36:07 2007 @@ -61,8 +61,14 @@ assert(user.errors.invalid?(:sn)) errors = %w(person organizationalPerson inetOrgPerson).collect do |object_class| - "is required attribute (aliases: surname) by " + - "objectClass '#{object_class}'" + if ActiveLdap.const_defined?(:GetTextFallback) + format = "is required attribute by objectClass '%s': aliases: %s" + user.gettext(format) % [object_class, "surname"] + else + format = "%{fn} is required attribute by objectClass '%s': aliases: %s" + format = user.gettext(format).gsub(/%\{fn\}/, "Sn") + format % [object_class, "surname"] + end end assert_equal(errors.sort, user.errors.on(:sn).sort) user.sn = ['User'] From codesite-noreply at google.com Mon Aug 13 09:12:52 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Mon, 13 Aug 2007 06:12:52 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r233 - in al-admin/trunk: app/controllers app/helpers app/models app/views/account app/views/user... Message-ID: <163600d06e0437947b6ade886664d@google.com> Author: koutou Date: Mon Aug 13 06:11:24 2007 New Revision: 233 Added: al-admin/trunk/lib/tasks/gettext.rake al-admin/trunk/po/ al-admin/trunk/po/ja/ al-admin/trunk/po/ja/al-admin.po Removed: al-admin/trunk/app/views/account/index.rhtml Modified: al-admin/trunk/app/controllers/account_controller.rb al-admin/trunk/app/controllers/application.rb al-admin/trunk/app/controllers/users_controller.rb al-admin/trunk/app/helpers/users_helper.rb al-admin/trunk/app/models/ldap_user.rb al-admin/trunk/app/models/user.rb al-admin/trunk/app/views/account/login.rhtml al-admin/trunk/app/views/account/sign_up.rhtml al-admin/trunk/app/views/users/_entry.rhtml al-admin/trunk/app/views/users/_form.rhtml al-admin/trunk/app/views/users/edit.rhtml al-admin/trunk/app/views/users/index.rhtml al-admin/trunk/app/views/users/show.rhtml al-admin/trunk/app/views/welcome/index.rhtml al-admin/trunk/config/environment.rb al-admin/trunk/db/migrate/001_create_users.rb al-admin/trunk/lib/authenticated_system.rb Log: * supported GetText. Modified: al-admin/trunk/app/controllers/account_controller.rb ============================================================================== --- al-admin/trunk/app/controllers/account_controller.rb (original) +++ al-admin/trunk/app/controllers/account_controller.rb Mon Aug 13 06:11:24 2007 @@ -20,9 +20,9 @@ } end redirect_back_or_default(top_url) - flash[:notice] = "Logged in successfully" + flash[:notice] = _("Logged in successfully") else - flash[:notice] = "Login or Password is incorrect" + flash[:notice] = _("Login or Password is incorrect") end end @@ -34,7 +34,7 @@ unless @system_user.new_record? self.current_user = @system_user redirect_back_or_default(top_path) - flash[:notice] = "Thanks for signing up!" + flash[:notice] = _("Thanks for signing up!") end end end @@ -43,7 +43,7 @@ current_user.forget_me if logged_in? cookies.delete :auth_token reset_session - flash[:notice] = "You have been logged out." + flash[:notice] = _("You have been logged out.") redirect_back_or_default(top_path) end end Modified: al-admin/trunk/app/controllers/application.rb ============================================================================== --- al-admin/trunk/app/controllers/application.rb (original) +++ al-admin/trunk/app/controllers/application.rb Mon Aug 13 06:11:24 2007 @@ -2,9 +2,11 @@ # Likewise, all the methods added will be available for all controllers. class ApplicationController < ActionController::Base + # Pick a unique cookie name to distinguish our session data from others' + session :session_key => '_al-admin_session_id' + include AuthenticatedSystem before_filter :login_from_cookie - # Pick a unique cookie name to distinguish our session data from others' - session :session_key => '_al-admin_session_id' + init_gettext "al-admin" end Modified: al-admin/trunk/app/controllers/users_controller.rb ============================================================================== --- al-admin/trunk/app/controllers/users_controller.rb (original) +++ al-admin/trunk/app/controllers/users_controller.rb Mon Aug 13 06:11:24 2007 @@ -21,7 +21,7 @@ if previous_user_password != @user.user_password @user.establish_connection(:password => @user.password) end - flash[:notice] = 'User was successfully updated.' + flash[:notice] = _('User was successfully updated.') redirect_to :action => 'show', :id => @user else @user.password = @user.password_confirmation = nil Modified: al-admin/trunk/app/helpers/users_helper.rb ============================================================================== --- al-admin/trunk/app/helpers/users_helper.rb (original) +++ al-admin/trunk/app/helpers/users_helper.rb Mon Aug 13 06:11:24 2007 @@ -6,7 +6,7 @@ def user_link_if(condition, user, with_edit=false) result = link_to_if(condition, h(user.dn), :action => "show", :id => user) if with_edit and current_user and current_user.ldap_user == user - result << "\n(#{link_to('Edit', :action => 'edit', :id => user)})" + result << "\n(#{link_to(_('Edit'), :action => 'edit', :id => user)})" end result end Modified: al-admin/trunk/app/models/ldap_user.rb ============================================================================== --- al-admin/trunk/app/models/ldap_user.rb (original) +++ al-admin/trunk/app/models/ldap_user.rb Mon Aug 13 06:11:24 2007 @@ -25,7 +25,8 @@ def authenticated?(password) establish_connection(:password => password) true - rescue ActiveLdap::AuthenticationError + rescue ActiveLdap::AuthenticationError, + ActiveLdap::LdapError::UnwillingToPerform false end Modified: al-admin/trunk/app/models/user.rb ============================================================================== --- al-admin/trunk/app/models/user.rb (original) +++ al-admin/trunk/app/models/user.rb Mon Aug 13 06:11:24 2007 @@ -1,19 +1,29 @@ require 'digest/sha1' + class User < ActiveRecord::Base validates_presence_of :login validates_presence_of :dn validates_uniqueness_of :login, :dn, :case_sensitive => false - before_validation :find_dn + before_validation :generate_salt, :find_dn + + class << self + def authenticate(login, password) + u = find_by_login(login) # need to get the salt + if u.nil? + u = new + u.login = login + u = nil unless u.save + end + u && u.authenticated?(password) ? u : nil + end - # Authenticates a user by their login name and unencrypted password. Returns the user or nil. - def self.authenticate(login, password) - u = find_by_login(login) # need to get the salt - if u.nil? - u = new - u.login = login - u = nil unless u.save + def encrypt(password, salt) + Digest::SHA1.hexdigest("--#{salt}--#{password}--") end - u && u.authenticated?(password) ? u : nil + end + + def encrypt(password) + self.class.encrypt(password, salt) end def authenticated?(password) @@ -32,7 +42,7 @@ # These create and unset the fields required for remembering users between browser closes def remember_me self.remember_token_expires_at = 2.weeks.from_now.utc - self.remember_token = encrypt("#{email}--#{remember_token_expires_at}") + self.remember_token = encrypt("#{dn}--#{remember_token_expires_at}") save(false) end @@ -45,6 +55,11 @@ end private + def generate_salt + return unless new_record? + self.salt = Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{login}--") + end + def find_dn if login.blank? self.dn = nil Modified: al-admin/trunk/app/views/account/login.rhtml ============================================================================== --- al-admin/trunk/app/views/account/login.rhtml (original) +++ al-admin/trunk/app/views/account/login.rhtml Mon Aug 13 06:11:24 2007 @@ -1,12 +1,12 @@ <% form_tag do -%> -


+


<%= text_field_tag 'login' %>

-


+


<%= password_field_tag 'password' %>

-

+

<%= check_box_tag 'remember_me' %>

-

<%= submit_tag 'Log in' %>

+

<%= submit_tag(_('Log in')) %>

<% end -%> Modified: al-admin/trunk/app/views/account/sign_up.rhtml ============================================================================== --- al-admin/trunk/app/views/account/sign_up.rhtml (original) +++ al-admin/trunk/app/views/account/sign_up.rhtml Mon Aug 13 06:11:24 2007 @@ -1,22 +1,22 @@ <%= error_messages_for :user %> <%= error_messages_for :system_user %> <% form_for :user do |f| -%> -


+


<%= f.text_field :uid %>

-


+


<%= f.password_field :password %>

-


+


<%= f.password_field :password_confirmation %>

-

<%= submit_tag 'Sign up' %>

+

<%= submit_tag(_('Sign up')) %>

<% names = @user.attribute_names(true) - ["objectClass", "userPassword"] -%> <% names.sort.each do |name| -%> -

<% end -%> -

<%= submit_tag 'Sign up' %>

+

<%= submit_tag(_('Sign up')) %>

<% end -%> Modified: al-admin/trunk/app/views/users/_entry.rhtml ============================================================================== --- al-admin/trunk/app/views/users/_entry.rhtml (original) +++ al-admin/trunk/app/views/users/_entry.rhtml Mon Aug 13 06:11:24 2007 @@ -6,7 +6,7 @@
<% entry.attribute_names(true).sort.each do |name| -%> - + <% end -%> Modified: al-admin/trunk/app/views/users/_form.rhtml ============================================================================== --- al-admin/trunk/app/views/users/_form.rhtml (original) +++ al-admin/trunk/app/views/users/_form.rhtml Mon Aug 13 06:11:24 2007 @@ -3,12 +3,16 @@
<%= h name %><%= h _(name) %> <%= h entry[name, true].join(", ") %>
- + - +
<%= password_field("user", "password") %>
+ + <%= password_field("user", "password_confirmation") %>
@@ -17,7 +21,7 @@ <% names = @user.attribute_names(true) - ["objectClass", "userPassword"] -%> <% names.sort.each do |name| -%> - + <%= text_field("user", name) %> <% end -%> Modified: al-admin/trunk/app/views/users/edit.rhtml ============================================================================== --- al-admin/trunk/app/views/users/edit.rhtml (original) +++ al-admin/trunk/app/views/users/edit.rhtml Mon Aug 13 06:11:24 2007 @@ -2,9 +2,9 @@

<%= user_link(@user) %>

<% form_tag :action => 'update', :id => @user do %> <%= render :partial => 'form' %> - <%= submit_tag 'Edit' %> + <%= submit_tag(_('Edit')) %> <% end %>
-<%= link_to 'Show', :action => 'show', :id => @user %> | -<%= link_to 'Back', :action => 'index' %> +<%= link_to _('Show'), :action => 'show', :id => @user %> | +<%= link_to _('Back'), :action => 'index' %> Modified: al-admin/trunk/app/views/users/index.rhtml ============================================================================== --- al-admin/trunk/app/views/users/index.rhtml (original) +++ al-admin/trunk/app/views/users/index.rhtml Mon Aug 13 06:11:24 2007 @@ -1,5 +1,5 @@ <% if @users.empty? -%> -

No user.

+

<%= _("No user.") %>

<% else -%>
    <% @users.each do |user| -%> Modified: al-admin/trunk/app/views/users/show.rhtml ============================================================================== --- al-admin/trunk/app/views/users/show.rhtml (original) +++ al-admin/trunk/app/views/users/show.rhtml Mon Aug 13 06:11:24 2007 @@ -1,3 +1,3 @@ <%= render(:partial => "entry", :locals => {:entry => @user}) %> -<%= link_to 'Back', :action => 'index' %> +<%= link_to _('Back'), :action => 'index' %> Modified: al-admin/trunk/app/views/welcome/index.rhtml ============================================================================== --- al-admin/trunk/app/views/welcome/index.rhtml (original) +++ al-admin/trunk/app/views/welcome/index.rhtml Mon Aug 13 06:11:24 2007 @@ -1,5 +1,5 @@
      -
    • <%= link_to("Users list", :controller => "users") %>
    • -
    • <%= link_to("Sign up", sign_up_path) %>
    • -
    • <%= link_to("Logout", logout_path) %>
    • +
    • <%= link_to(_("Users list"), :controller => "users") %>
    • +
    • <%= link_to(_("Sign up"), sign_up_path) %>
    • +
    • <%= link_to(_("Logout"), logout_path) %>
    Modified: al-admin/trunk/config/environment.rb ============================================================================== --- al-admin/trunk/config/environment.rb (original) +++ al-admin/trunk/config/environment.rb Mon Aug 13 06:11:24 2007 @@ -58,3 +58,7 @@ # Mime::Type.register "application/x-mobile", :mobile # Include your application configuration below + +AL_ADMIN_VERSION = "0.0.1" + +require 'gettext/rails' Modified: al-admin/trunk/db/migrate/001_create_users.rb ============================================================================== --- al-admin/trunk/db/migrate/001_create_users.rb (original) +++ al-admin/trunk/db/migrate/001_create_users.rb Mon Aug 13 06:11:24 2007 @@ -4,6 +4,7 @@ t.column :login, :string t.column :dn, :string t.column :updated_at, :datetime + t.column :salt, :string t.column :remember_token, :string t.column :remember_token_expires_at, :datetime end Modified: al-admin/trunk/lib/authenticated_system.rb ============================================================================== --- al-admin/trunk/lib/authenticated_system.rb (original) +++ al-admin/trunk/lib/authenticated_system.rb Mon Aug 13 06:11:24 2007 @@ -104,8 +104,11 @@ if user && user.remember_token? user.remember_me self.current_user = user - cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at } - flash[:notice] = "Logged in successfully" + cookies[:auth_token] = { + :value => current_user.remember_token, + :expires => current_user.remember_token_expires_at + } + flash[:notice] = _("Logged in successfully") end end Added: al-admin/trunk/lib/tasks/gettext.rake ============================================================================== --- (empty file) +++ al-admin/trunk/lib/tasks/gettext.rake Mon Aug 13 06:11:24 2007 @@ -0,0 +1,30 @@ +# -*- ruby -*- + +desc "Update *.po/*.pot files and create *.mo from *.po files" +task :gettext => ["gettext:po:update", "gettext:mo:create"] + +namespace :gettext do + namespace :environment do + desc "Setup environment for GetText" + task :setup => :environment do + require "gettext/utils" + end + end + + namespace :po do + desc "Update po/pot files (GetText)" + task :update => "gettext:environment:setup" do + GetText.update_pofiles("al-admin", + Dir.glob("{app,lib}/**/*.rb") + + Dir.glob("app/views/**/*.rhtml"), + "AL Admin #{AL_ADMIN_VERSION}") + end + end + + namespace :mo do + desc "Create *.mo from *.po (GetText)" + task :create => "gettext:environment:setup" do + GetText.create_mofiles(false, 'po', 'locale') + end + end +end Added: al-admin/trunk/po/ja/al-admin.po ============================================================================== --- (empty file) +++ al-admin/trunk/po/ja/al-admin.po Mon Aug 13 06:11:24 2007 @@ -0,0 +1,114 @@ +# AL Admin's translated messages for Japanese. +# Copyright (C) 2007 Kouhei Sutou +# This file is distributed under the same license as the AL Admin package. +# Kouhei Sutou , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: AL Admin 0.0.1\n" +"POT-Creation-Date: 2007-08-13 22:09+0900\n" +"PO-Revision-Date: 2007-08-13 22:09+0900\n" +"Last-Translator: Kouhei Sutou \n" +"Language-Team: Japanese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: app/controllers/account_controller.rb:23 lib/authenticated_system.rb:111 +msgid "Logged in successfully" +msgstr "????????????" + +#: app/controllers/account_controller.rb:25 +msgid "Login or Password is incorrect" +msgstr "??????????????????????" + +#: app/controllers/account_controller.rb:37 +msgid "Thanks for signing up!" +msgstr "?????????????" + +#: app/controllers/account_controller.rb:46 +msgid "You have been logged out." +msgstr "??????????" + +#: app/controllers/users_controller.rb:24 +msgid "User was successfully updated." +msgstr "??????????????" + +#: app/models/user.rb:- +msgid "user" +msgstr "???" + +#: app/models/user.rb:- +msgid "User|Login" +msgstr "?????" + +#: app/models/user.rb:- +msgid "User|Dn" +msgstr "DN" + +#: app/models/user.rb:- +msgid "User|Updated at" +msgstr "????" + +#: app/models/user.rb:- +msgid "User|Salt" +msgstr "???" + +#: app/models/user.rb:- +msgid "User|Remember token" +msgstr "??????" + +#: app/models/user.rb:- +msgid "User|Remember token expires at" +msgstr "??????????" + +#: app/views/account/login.rhtml:2 app/views/account/sign_up.rhtml:4 +msgid "Login" +msgstr "?????" + +#: app/views/account/login.rhtml:5 app/views/account/sign_up.rhtml:7 +#: app/views/users/_form.rhtml:6 +msgid "Password" +msgstr "?????" + +#: app/views/account/login.rhtml:8 +msgid "Remember me:" +msgstr "?????:" + +#: app/views/account/login.rhtml:11 +msgid "Log in" +msgstr "????" + +#: app/views/account/sign_up.rhtml:10 app/views/users/_form.rhtml:13 +msgid "Confirm Password" +msgstr "????????" + +#: app/views/account/sign_up.rhtml:13 app/views/account/sign_up.rhtml:21 +#: app/views/welcome/index.rhtml:3 +msgid "Sign up" +msgstr "??" + +#: app/views/welcome/index.rhtml:2 +msgid "Users list" +msgstr "?????" + +#: app/views/welcome/index.rhtml:4 +msgid "Logout" +msgstr "?????" + +#: app/views/users/index.rhtml:2 +msgid "No user." +msgstr "?????????" + +#: app/views/users/show.rhtml:3 app/views/users/edit.rhtml:10 +msgid "Back" +msgstr "??" + +#: app/views/users/edit.rhtml:5 +msgid "Edit" +msgstr "??" + +#: app/views/users/edit.rhtml:9 +msgid "Show" +msgstr "??" From codesite-noreply at google.com Tue Aug 14 09:09:37 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Tue, 14 Aug 2007 06:09:37 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r234 - in trunk: lib/active_ldap lib/active_ldap/adapter po/ja test Message-ID: <163600d1b50437a88dafe9dca380d@google.com> Author: koutou Date: Tue Aug 14 06:08:04 2007 New Revision: 234 Modified: trunk/lib/active_ldap/adapter/ldap.rb trunk/lib/active_ldap/attributes.rb trunk/lib/active_ldap/base.rb trunk/lib/active_ldap/object_class.rb trunk/lib/active_ldap/schema.rb trunk/lib/active_ldap/validations.rb trunk/po/ja/active-ldap.po trunk/test/test_adapter.rb trunk/test/test_associations.rb trunk/test/test_attributes.rb trunk/test/test_base.rb trunk/test/test_base_per_instance.rb trunk/test/test_callback.rb trunk/test/test_connection.rb trunk/test/test_connection_per_dn.rb trunk/test/test_dn.rb trunk/test/test_find.rb trunk/test/test_object_class.rb trunk/test/test_reflection.rb trunk/test/test_schema.rb trunk/test/test_user.rb Log: * handle objectClass, attributeType and ldapSyntax in schema as an object. This changes improves schema API but breakes backward compatibility. And this changes make more strictly. So, now, we have a test failure for loose schema handling... Modified: trunk/lib/active_ldap/adapter/ldap.rb ============================================================================== --- trunk/lib/active_ldap/adapter/ldap.rb (original) +++ trunk/lib/active_ldap/adapter/ldap.rb Tue Aug 14 06:08:04 2007 @@ -211,7 +211,7 @@ result = [] entries.each do |type, key, attributes| mod_type = ensure_mod_type(type) - binary = schema.binary?(key) + binary = schema.attribute(key).binary? mod_type |= LDAP::LDAP_MOD_BVALUES if binary attributes.each do |name, values| result << LDAP.mod(mod_type, name, values) Modified: trunk/lib/active_ldap/attributes.rb ============================================================================== --- trunk/lib/active_ldap/attributes.rb (original) +++ trunk/lib/active_ldap/attributes.rb Tue Aug 14 06:08:04 2007 @@ -74,11 +74,15 @@ private def normalize_attribute_value_of_array(name, value) - if value.size > 1 and schema.single_value?(name) + if value.size > 1 and schema.attribute(name).single_value? raise TypeError, _("Attribute %s can only have a single value") % name end if value.empty? - schema.binary_required?(name) ? [{'binary' => value}] : value + if schema.attribute(name).binary_required? + [{'binary' => value}] + else + value + end else value.collect do |entry| normalize_attribute(name, entry)[1][0] @@ -98,7 +102,7 @@ end end # Contents MUST be a String or an Array - if !value.has_key?('binary') and schema.binary_required?(name) + if !value.has_key?('binary') and schema.attribute(name).binary_required? suffix, real_value = extract_attribute_options(value) name, values = normalize_attribute_options("#{name}#{suffix};binary", real_value) @@ -109,11 +113,19 @@ end def normalize_attribute_value_of_nil_class(name, value) - schema.binary_required?(name) ? [{'binary' => []}] : [] + if schema.attribute(name).binary_required? + [{'binary' => []}] + else + [] + end end def normalize_attribute_value_of_string(name, value) - [schema.binary_required?(name) ? {'binary' => [value]} : value] + if schema.attribute(name).binary_required? + [{'binary' => [value]}] + else + [value] + end end def normalize_attribute_value_of_date(name, value) Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Tue Aug 14 06:08:04 2007 @@ -696,7 +696,7 @@ dn == _dn end if attributes.nil? - raise EntryNotFound, _("Can't find DN '%d' to reload") % dn + raise EntryNotFound, _("Can't find DN '%s' to reload") % dn end @ldap_data.update(attributes) @@ -850,7 +850,7 @@ @last_oc = new_oc.dup # Set the actual objectClass data - define_attribute_methods('objectClass') + define_attribute_methods(schema.attribute('objectClass')) replace_class(*new_oc) # Build |data| from schema @@ -858,28 +858,24 @@ @attr_methods = {} @normalized_attr_names = {} @attr_aliases = {} - @musts = {} - @mays = {} + @must = [] + @may = [] + @object_classes = [] new_oc.each do |objc| # get all attributes for the class object_class = schema.object_class(objc) - @musts[objc] = object_class.must - @mays[objc] = object_class.may - end - @must = normalize_attribute_names(@musts.values) - @may = normalize_attribute_names(@mays.values) - (@must + @may).uniq.each do |attr| + @object_classes << object_class + @must.concat(object_class.must) + @may.concat(object_class.may) + end + @must.uniq! + @may.uniq! + (@must + @may).each do |attr| # Update attr_method with appropriate define_attribute_methods(attr) end end - def normalize_attribute_names(names) - names.flatten.uniq.collect do |name| - schema.attribute_aliases(name).first || name - end - end - alias_method :base_of_class, :base def base [@base, base_of_class].compact.join(",") @@ -989,11 +985,12 @@ # Make a method entry for _every_ alias of a valid attribute and map it # onto the first attribute passed in. def define_attribute_methods(attr) - return if @attr_methods.has_key?(attr) - schema.attribute_aliases(attr).each do |ali| - @attr_methods[ali] = attr - @attr_aliases[Inflector.underscore(ali)] = attr - @normalized_attr_names[normalize_attribute_name(ali)] = attr + name = attr.name + return if @attr_methods.has_key?(name) + ([name] + attr.aliases).each do |ali| + @attr_methods[ali] = name + @attr_aliases[Inflector.underscore(ali)] = name + @normalized_attr_names[normalize_attribute_name(ali)] = name end end @@ -1054,7 +1051,7 @@ # Since some types do not have equality matching rules, # delete doesn't work # Replacing with nothing is equivalent. - if !data.has_key?(k) and schema.binary_required?(k) + if !data.has_key?(k) and schema.attribute(k).binary_required? value = [{'binary' => []}] end else Modified: trunk/lib/active_ldap/object_class.rb ============================================================================== --- trunk/lib/active_ldap/object_class.rb (original) +++ trunk/lib/active_ldap/object_class.rb Tue Aug 14 06:08:04 2007 @@ -5,6 +5,11 @@ end module ClassMethods + def classes + required_classes.collect do |name| + schema.object_class(name) + end + end end def add_class(*target_classes) Modified: trunk/lib/active_ldap/schema.rb ============================================================================== --- trunk/lib/active_ldap/schema.rb (original) +++ trunk/lib/active_ldap/schema.rb Tue Aug 14 06:08:04 2007 @@ -1,21 +1,147 @@ module ActiveLdap class Schema - class ObjectClass - attr_reader :must, :may, :super_classes - def initialize(name, schema) - @name = name + class Entry + include Comparable + + attr_reader :id, :name, :aliases, :description + def initialize(name, schema, group) @schema = schema + @name, *@aliases = attribute("NAME", name) + @name ||= name + @id = @schema.resolve_name(group, @name) collect_info + @schema = nil + end + + def eql?(other) + self.class == other.class and + id == other.id + end + + def hash + id.hash + end + + def <=>(other) + name <=> other.name + end + end + + class Syntax < Entry + def initialize(name, schema) + super(name, schema, "ldapSyntaxes") + end + + def binary_transfer_required? + @binary_transfer_required + end + + def human_readable? + @human_readable + end + + private + def attribute(attribute_name, name=@name) + @schema.ldap_syntax_attribute(name, attribute_name) + end + + def collect_info + @description = attribute("DESC")[0] + @binary_transfer_required = + (attribute('X-BINARY-TRANSFER-REQUIRED')[0] == 'TRUE') + @human_readable = (attribute('X-NOT-HUMAN-READABLE')[0] != 'TRUE') + end + end + + class Attribute < Entry + def initialize(name, schema) + super(name, schema, "attributeTypes") + end + + # read_only? + # + # Returns true if an attribute is read-only + # NO-USER-MODIFICATION + def read_only? + @read_only + end + + # single_value? + # + # Returns true if an attribute can only have one + # value defined + # SINGLE-VALUE + def single_value? + @single_value + end + + # binary? + # + # Returns true if the given attribute's syntax + # is X-NOT-HUMAN-READABLE or X-BINARY-TRANSFER-REQUIRED + def binary? + @binary + end + + # binary_required? + # + # Returns true if the value MUST be transferred in binary + def binary_required? + @binary_required + end + + private + def attribute(attribute_name, name=@name) + @schema.attribute_type(name, attribute_name) + end + + def collect_info + @description = attribute("DESC")[0] + @read_only = attribute('NO-USER-MODIFICATION')[0] == 'TRUE' + @single_value = attribute('SINGLE-VALUE')[0] == 'TRUE' + syntax = attribute("SYNTAX")[0] + syntax = @schema.ldap_syntax(syntax) if syntax + if syntax + @binary_required = syntax.binary_transfer_required? + @binary = (@binary_required or !syntax.human_readable?) + else + @binary_required = false + @binary = false + end + end + end + + class ObjectClass < Entry + attr_reader :super_classes + def initialize(name, schema) + super(name, schema, "objectClasses") end def super_class?(object_class) @super_classes.include?(object_class) end + def must(include_super_class=true) + if include_super_class + @all_must + else + @must + end + end + + def may(include_super_class=true) + if include_super_class + @all_may + else + @may + end + end + private def collect_info + @description = attribute("DESC")[0] @super_classes = collect_super_classes - @must, @may = collect_attributes + @must, @may, @all_must, @all_may = collect_attributes end def collect_super_classes @@ -31,32 +157,27 @@ super_classes.uniq! break if super_classes.size == start_size end - super_classes + super_classes.collect do |name| + @schema.object_class(name) + end end def collect_attributes - must = attribute('MUST') - may = attribute('MAY') + must = attribute('MUST').collect {|name| @schema.attribute(name)} + may = attribute('MAY').collect {|name| @schema.attribute(name)} + all_must = must.dup + all_may = may.dup @super_classes.each do |super_class| - must.concat(attribute('MUST', super_class)) - may.concat(attribute('MAY', super_class)) + all_must.concat(super_class.must(false)) + all_may.concat(super_class.may(false)) end # Clean out the dupes. - must.uniq! - may.uniq! - if @name == "inetOrgPerson" - may.collect! do |name| - if name == "x500uniqueIdentifier" - "x500UniqueIdentifier" - else - name - end - end - end + all_must.uniq! + all_may.uniq! - [must, may] + [must, may, all_must, all_may] end def attribute(attribute_name, name=@name) @@ -79,26 +200,29 @@ alias_map(group).has_key?(normalize_schema_name(name)) end - # attribute + def resolve_name(group, name) + alias_map(group)[normalize_schema_name(name)] + end + + # fetch # # This is just like LDAP::Schema#attribute except that it allows # look up in any of the given keys. # e.g. - # attribute('attributeTypes', 'cn', 'DESC') - # attribute('ldapSyntaxes', '1.3.6.1.4.1.1466.115.121.1.5', 'DESC') - def attribute(group, id_or_name, attribute_name) + # fetch('attributeTypes', 'cn', 'DESC') + # fetch('ldapSyntaxes', '1.3.6.1.4.1.1466.115.121.1.5', 'DESC') + def fetch(group, id_or_name, attribute_name) return [] if attribute_name.empty? attribute_name = normalize_attribute_name(attribute_name) - value = attributes(group, id_or_name)[attribute_name] + value = entry(group, id_or_name)[attribute_name] value ? value.dup : [] end - alias_method :[], :attribute - alias_method :attr, :attribute + alias_method :[], :fetch NUMERIC_OID_RE = "\\d[\\d\\.]+" DESCRIPTION_RE = "[a-zA-Z][a-zA-Z\\d\\-]*" OID_RE = "(?:#{NUMERIC_OID_RE}|#{DESCRIPTION_RE}-oid)" - def attributes(group, id_or_name) + def entry(group, id_or_name) return {} if group.empty? or id_or_name.empty? unless @entries.has_key?(group) @@ -138,72 +262,63 @@ ids[id || aliases[name]] || {} end - # attribute_aliases - # - # Returns all names from the LDAP schema for the - # attribute given. - def attribute_aliases(name) - cache([:attribute_aliases, name]) do - attribute_type(name, 'NAME') + def attribute(name) + cache([:attribute, name]) do + Attribute.new(name, self) end end - # read_only? - # - # Returns true if an attribute is read-only - # NO-USER-MODIFICATION - def read_only?(name) - cache([:read_only?, name]) do - attribute_type(name, 'NO-USER-MODIFICATION')[0] == 'TRUE' + def attributes + cache([:attributes]) do + names("attributeTypes").collect do |name| + attribute(name) + end end end - # single_value? - # - # Returns true if an attribute can only have one - # value defined - # SINGLE-VALUE - def single_value?(name) - cache([:single_value?, name]) do - attribute_type(name, 'SINGLE-VALUE')[0] == 'TRUE' + def attribute_type(name, attribute_name) + cache([:attribute_type, name, attribute_name]) do + fetch("attributeTypes", name, attribute_name) end end - # binary? - # - # Returns true if the given attribute's syntax - # is X-NOT-HUMAN-READABLE or X-BINARY-TRANSFER-REQUIRED - def binary?(name) - cache([:binary?, name]) do - # Get syntax OID - syntax = attribute_type(name, 'SYNTAX')[0] - !syntax.nil? and - (ldap_syntax(syntax, 'X-NOT-HUMAN-READABLE') == ["TRUE"] or - ldap_syntax(syntax, 'X-BINARY-TRANSFER-REQUIRED') == ["TRUE"]) + def object_class(name) + cache([:object_class, name]) do + ObjectClass.new(name, self) end end - # binary_required? - # - # Returns true if the value MUST be transferred in binary - def binary_required?(name) - cache([:binary_required?, name]) do - # Get syntax OID - syntax = attribute_type(name, 'SYNTAX')[0] - !syntax.nil? and - ldap_syntax(syntax, 'X-BINARY-TRANSFER-REQUIRED') == ["TRUE"] + def object_classes + cache([:object_classes]) do + names("objectClasses").collect do |name| + object_class(name) + end end end - def object_class(objc) - cache([:object_class, objc]) do - ObjectClass.new(objc, self) + def object_class_attribute(name, attribute_name) + cache([:object_class_attribute, name, attribute_name]) do + fetch("objectClasses", name, attribute_name) end end - def object_class_attribute(name, attribute_name) - cache([:object_class_attribute, name, attribute_name]) do - attribute("objectClasses", name, attribute_name) + def ldap_syntax(name) + cache([:ldap_syntax, name]) do + Syntax.new(name, self) + end + end + + def ldap_syntaxes + cache([:ldap_syntaxes]) do + names("ldapSyntaxes").collect do |name| + ldap_syntax(name) + end + end + end + + def ldap_syntax_attribute(name, attribute_name) + cache([:ldap_syntax_attribute, name, attribute_name]) do + fetch("ldapSyntaxes", name, attribute_name) end end @@ -280,19 +395,6 @@ end end - def attribute_type(name, attribute_name) - cache([:attribute_type, name, attribute_name]) do - attribute("attributeTypes", name, attribute_name) - end - end - - def ldap_syntax(name, attribute_name) - return [] unless @entries.has_key?("ldapSyntaxes") - cache([:ldap_syntax, name, attribute_name]) do - attribute("ldapSyntaxes", name, attribute_name) - end - end - def alias_map(group) ensure_parse(group) return {} if @schema_info[group].nil? @@ -302,7 +404,7 @@ def ensure_parse(group) return if @entries[group].nil? unless @entries[group].empty? - attribute(group, 'nonexistent', 'nonexistent') + fetch(group, 'nonexistent', 'nonexistent') end end Modified: trunk/lib/active_ldap/validations.rb ============================================================================== --- trunk/lib/active_ldap/validations.rb (original) +++ trunk/lib/active_ldap/validations.rb Tue Aug 14 06:08:04 2007 @@ -47,18 +47,19 @@ # - Verify that every 'MUST' specified in the schema has a value defined def validate_required_values # Make sure all MUST attributes have a value - @musts.each do |object_class, attributes| - attributes.each do |required_attribute| + @object_classes.each do |object_class| + object_class.must.each do |required_attribute| # Normalize to ensure we catch schema problems - real_name = to_real_attribute_name(required_attribute, true) + # needed? + real_name = to_real_attribute_name(required_attribute.name, true) raise UnknownAttribute.new(required_attribute) if real_name.nil? # # Set default if it wasn't yet set. # @data[real_name] ||= [] # need? value = @data[real_name] || [] # Check for missing requirements. if value.empty? - aliases = schema.attribute_aliases(real_name) - [real_name] - args = [object_class] + aliases = required_attribute.aliases + args = [object_class.name] if ActiveLdap.const_defined?(:GetTextFallback) if aliases.empty? format = "is required attribute by objectClass '%s'" Modified: trunk/po/ja/active-ldap.po ============================================================================== --- trunk/po/ja/active-ldap.po (original) +++ trunk/po/ja/active-ldap.po Tue Aug 14 06:08:04 2007 @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" -"POT-Creation-Date: 2007-08-12 19:33+0900\n" -"PO-Revision-Date: 2007-08-12 19:34+0900\n" +"POT-Creation-Date: 2007-08-14 22:04+0900\n" +"PO-Revision-Date: 2007-08-14 22:05+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -125,23 +125,23 @@ msgid "Attribute %s can only have a single value" msgstr "??%s?????????????" -#: lib/active_ldap/attributes.rb:92 +#: lib/active_ldap/attributes.rb:96 msgid "Hashes must have one key-value pair only: %s" msgstr "????????????????????????????: %s" -#: lib/active_ldap/attributes.rb:96 +#: lib/active_ldap/attributes.rb:100 msgid "unknown option did not match lang-* or binary: %s" msgstr "lang-*??binary??????????????????: %s" -#: lib/active_ldap/object_class.rb:46 +#: lib/active_ldap/object_class.rb:51 msgid "Value in objectClass array is not a String: %s" msgstr "objectClass???????String???????: %s" -#: lib/active_ldap/object_class.rb:59 +#: lib/active_ldap/object_class.rb:64 msgid "unknown objectClass in LDAP server: %s" msgstr "LDAP????????objectClass??: %s" -#: lib/active_ldap/object_class.rb:74 +#: lib/active_ldap/object_class.rb:79 msgid "Can't remove required objectClass: %s" msgstr "???objectClass????????: %s" @@ -166,7 +166,7 @@ msgid "salt size must be == 4: %s" msgstr "salt?4????????????: %s" -#: lib/active_ldap/schema.rb:105 +#: lib/active_ldap/schema.rb:229 msgid "Unknown schema group: %s" msgstr "?????????????: %s" @@ -223,10 +223,10 @@ msgstr "??????????(1???????%d???????)" #: lib/active_ldap/base.rb:699 -msgid "Can't find DN '%d' to reload" +msgid "Can't find DN '%s' to reload" msgstr "???????DN '%s'?????????" -#: lib/active_ldap/base.rb:1100 +#: lib/active_ldap/base.rb:1097 msgid "dn_attribute isn't set for this class: %s" msgstr "??????dn_attribute??????????: %s" Modified: trunk/test/test_adapter.rb ============================================================================== --- trunk/test/test_adapter.rb (original) +++ trunk/test/test_adapter.rb Tue Aug 14 06:08:04 2007 @@ -10,6 +10,8 @@ end priority :must + + priority :normal def test_filter_with_escaped_character assert_parse_filter("(uid=Alice\\3DBob)", {:uid => "Alice=Bob"}) assert_parse_filter("(uid=Alice\\2CBob)", {:uid => "Alice,Bob"}) @@ -17,7 +19,6 @@ assert_parse_filter("(uid=Alice\\3D\\2CBob)", {:uid => "Alice=,Bob"}) end - priority :normal def test_empty_filter assert_parse_filter(nil, nil) assert_parse_filter(nil, "") Modified: trunk/test/test_associations.rb ============================================================================== --- trunk/test/test_associations.rb (original) +++ trunk/test/test_associations.rb Tue Aug 14 06:08:04 2007 @@ -4,6 +4,8 @@ include AlTestUtils priority :must + + priority :normal def test_belongs_to_many_with_dn_key @user_class.belongs_to :groups, :many => "memberUid", :foreign_key => "dn" @user_class.set_associated_class(:groups, @group_class) @@ -21,7 +23,6 @@ end end - priority :normal def test_belongs_to_many_delete make_temporary_group do |group1| make_temporary_group do |group2| Modified: trunk/test/test_attributes.rb ============================================================================== --- trunk/test/test_attributes.rb (original) +++ trunk/test/test_attributes.rb Tue Aug 14 06:08:04 2007 @@ -4,6 +4,8 @@ include AlTestUtils priority :must + + priority :normal def test_to_real_attribute_name user = @user_class.new("user") assert_nil(user.__send__(:to_real_attribute_name, "objectclass")) @@ -11,7 +13,6 @@ user.__send__(:to_real_attribute_name, "objectclass", true)) end - priority :normal def test_protect_object_class_from_mass_assignment classes = @user_class.required_classes + ["inetOrgPerson"] user = @user_class.new(:uid => "XXX", :object_class => classes) Modified: trunk/test/test_base.rb ============================================================================== --- trunk/test/test_base.rb (original) +++ trunk/test/test_base.rb Tue Aug 14 06:08:04 2007 @@ -4,6 +4,8 @@ include AlTestUtils priority :must + + priority :normal def test_case_insensitive_nested_ou ou_class("ou=Users").new("Sub").save! make_temporary_user(:uid => "test-user,ou=SUB") do |user, password| @@ -14,7 +16,6 @@ end end - priority :normal def test_nested_ou make_ou("units") units = ou_class("ou=units") Modified: trunk/test/test_base_per_instance.rb ============================================================================== --- trunk/test/test_base_per_instance.rb (original) +++ trunk/test/test_base_per_instance.rb Tue Aug 14 06:08:04 2007 @@ -9,6 +9,8 @@ end priority :must + + priority :normal def test_loose_dn user = @user_class.new("test-user , ou = Sub") assert_equal("uid=test-user,ou=Sub,#{@user_class.base}", user.dn) @@ -17,7 +19,6 @@ assert_equal("uid=test-user,ou=Sub,#{@user_class.base}", user.dn) end - priority :normal def test_exists? make_temporary_user(:uid => "test-user,ou=Sub") do |user, password| assert(@user_class.exists?(user.uid)) Modified: trunk/test/test_callback.rb ============================================================================== --- trunk/test/test_callback.rb (original) +++ trunk/test/test_callback.rb Tue Aug 14 06:08:04 2007 @@ -4,6 +4,8 @@ include AlTestUtils priority :must + + priority :normal def test_callback_after_find_and_after_initialize make_temporary_group do |group| found_entries = [] @@ -30,6 +32,4 @@ initialized_entries.collect {|g| g.cn}.sort) end end - - priority :normal end Modified: trunk/test/test_connection.rb ============================================================================== --- trunk/test/test_connection.rb (original) +++ trunk/test/test_connection.rb Tue Aug 14 06:08:04 2007 @@ -14,6 +14,8 @@ end priority :must + + priority :normal def test_bind_format_check connector = Class.new(ActiveLdap::Base) assert(!connector.connected?) @@ -30,7 +32,6 @@ assert_equal("Unknown key(s): bind_format", exception.message) end - priority :normal def test_can_reconnect? assert(!ActiveLdap::Base.connected?) Modified: trunk/test/test_connection_per_dn.rb ============================================================================== --- trunk/test/test_connection_per_dn.rb (original) +++ trunk/test/test_connection_per_dn.rb Tue Aug 14 06:08:04 2007 @@ -4,6 +4,8 @@ include AlTestUtils priority :must + + priority :normal def test_establish_connection make_temporary_user do |user, password| assert_equal(user.class.connection, user.connection) Modified: trunk/test/test_dn.rb ============================================================================== --- trunk/test/test_dn.rb (original) +++ trunk/test/test_dn.rb Tue Aug 14 06:08:04 2007 @@ -10,11 +10,12 @@ end priority :must + + priority :normal def test_case_insensitive_dn_minus assert_dn_minus("dc=xxx", "dc=xxx,dc=LoCaL,dc=net", "dc=LOCAL,dc=net") end - priority :normal def test_dn_hash dn1 = ActiveLdap::DN.parse("o=xxx,dc=local,dc=net") dn2 = ActiveLdap::DN.parse("O = xxx , DC = local , DC = net") Modified: trunk/test/test_find.rb ============================================================================== --- trunk/test/test_find.rb (original) +++ trunk/test/test_find.rb Tue Aug 14 06:08:04 2007 @@ -4,6 +4,8 @@ include AlTestUtils priority :must + + priority :normal def test_find_with_limit make_temporary_user(:uid => "user1") do |user1,| make_temporary_user(:uid => "user2") do |user2,| @@ -28,7 +30,6 @@ end end - priority :normal def test_find_all_with_dn_attribute_value make_temporary_user(:uid => "user1") do |user1,| make_temporary_user(:uid => "user2") do |user2,| Modified: trunk/test/test_object_class.rb ============================================================================== --- trunk/test/test_object_class.rb (original) +++ trunk/test/test_object_class.rb Tue Aug 14 06:08:04 2007 @@ -4,6 +4,8 @@ include AlTestUtils priority :must + + priority :normal def test_case_insensitive_match assert_nothing_raised do @group_class.instantiate(["cn=test-group,#{@group_class.base}", @@ -14,7 +16,6 @@ end end - priority :normal def test_ensure_recommended_classes make_temporary_group do |group| added_class = "labeledURIObject" Modified: trunk/test/test_reflection.rb ============================================================================== --- trunk/test/test_reflection.rb (original) +++ trunk/test/test_reflection.rb Tue Aug 14 06:08:04 2007 @@ -15,7 +15,7 @@ def test_respond_to? make_temporary_user do |user, password| - attributes = user.must + user.may + attributes = (user.must + user.may).collect(&:name) _wrap_assertion do attributes.each do |name| assert(user.respond_to?(name), name) @@ -59,7 +59,8 @@ end make_temporary_user do |user, password| - attributes = user.must + user.may - ["objectClass"] + attributes = user.must.collect(&:name) + user.may.collect(&:name) + attributes -= ["objectClass"] assert_equal([], attributes - user.methods) assert_equal([], attributes - user.methods(false)) @@ -68,7 +69,8 @@ make_temporary_user do |user, password| user.remove_class("inetOrgPerson") - attributes = user.must + user.may - ["objectClass"] + attributes = user.must.collect(&:name) + user.may.collect(&:name) + attributes -= ["objectClass"] assert_equal([], attributes - user.methods) assert_equal([], attributes - user.methods(false)) @@ -76,7 +78,8 @@ end make_temporary_user do |user, password| - attributes = user.must + user.may - ["objectClass"] + attributes = user.must.collect(&:name) + user.may.collect(&:name) + attributes -= ["objectClass"] attributes = attributes.collect {|x| x.downcase} assert_not_equal([], attributes - user.methods) assert_not_equal([], attributes - user.methods(false)) @@ -91,7 +94,8 @@ end make_temporary_user do |user, password| - attributes = user.must + user.may - ["objectClass"] + attributes = user.must.collect(&:name) + user.may.collect(&:name) + attributes -= ["objectClass"] attributes = attributes.collect do |x| Inflector.underscore(x) end @@ -109,7 +113,8 @@ make_temporary_user do |user, password| user.remove_class("inetOrgPerson") - attributes = user.must + user.may - ["objectClass"] + attributes = user.must.collect(&:name) + user.may.collect(&:name) + attributes -= ["objectClass"] attributes = attributes.collect do |x| Inflector.underscore(x) end @@ -161,11 +166,12 @@ object_classes.each do |object_class| object_klass = ActiveLdap::Base.schema.object_class(object_class) if with_aliases - (object_klass.must + object_klass.may).each do |name| - attributes.concat(ActiveLdap::Base.schema.attribute_aliases(name)) + (object_klass.must + object_klass.may).each do |attribute| + attributes << attribute.name + attributes.concat(attribute.aliases) end else - attributes.concat(object_klass.must + object_klass.may) + attributes.concat((object_klass.must + object_klass.may).collect(&:name)) end end attributes Modified: trunk/test/test_schema.rb ============================================================================== --- trunk/test/test_schema.rb (original) +++ trunk/test/test_schema.rb Tue Aug 14 06:08:04 2007 @@ -2,6 +2,8 @@ class TestSchema < Test::Unit::TestCase priority :must + + priority :normal def test_duplicate_schema sasNMASProductOptions_schema = "( 2.16.840.1.113719.1.39.42.1.0.38 NAME 'sasNMASProductOptions' " + @@ -314,7 +316,7 @@ schema = ActiveLdap::Schema.new({"attributeTypes" => [jpeg_photo_schema], "ldapSyntaxes" => [jpeg_schema]}) - assert(schema.binary?("jpegPhoto")) + assert(schema.attribute("jpegPhoto").binary?) end private @@ -348,7 +350,7 @@ schema.send(:ensure_parse, group) if ensure_parse result = [] expected.each do |key,| - result << [key, schema.attribute_aliases(key.to_s)] + result << [key, schema.attribute(key.to_s).aliases] end assert_equal(expected, result) end Modified: trunk/test/test_user.rb ============================================================================== --- trunk/test/test_user.rb (original) +++ trunk/test/test_user.rb Tue Aug 14 06:08:04 2007 @@ -80,10 +80,10 @@ user.user_certificate = certificate user.jpeg_photo = jpeg_photo - assert(ActiveLdap::Base.schema.binary?('jpegPhoto'), + assert(ActiveLdap::Base.schema.attribute('jpegPhoto').binary?, 'jpegPhoto is binary?') - assert(ActiveLdap::Base.schema.binary?('userCertificate'), + assert(ActiveLdap::Base.schema.attribute('userCertificate').binary?, 'userCertificate is binary?') assert_nothing_raised {user.save!} end From codesite-noreply at google.com Thu Aug 16 20:12:42 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 16 Aug 2007 17:12:42 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r242 - trunk/test Message-ID: Author: koutou Date: Thu Aug 16 04:05:07 2007 New Revision: 242 Modified: trunk/test/al-test-utils.rb trunk/test/test_dn.rb trunk/test/test_user.rb Log: * used GetText in test. Modified: trunk/test/al-test-utils.rb ============================================================================== --- trunk/test/al-test-utils.rb (original) +++ trunk/test/al-test-utils.rb Thu Aug 16 04:05:07 2007 @@ -17,6 +17,7 @@ module AlTestUtils def self.included(base) base.class_eval do + include ActiveLdap::GetTextSupport include Config include Connection include Populate Modified: trunk/test/test_dn.rb ============================================================================== --- trunk/test/test_dn.rb (original) +++ trunk/test/test_dn.rb Thu Aug 16 04:05:07 2007 @@ -136,7 +136,7 @@ end assert_not_nil(exception) assert_equal(dn, exception.dn) - assert_equal(reason, exception.reason) + assert_equal(_(reason), exception.reason) end def assert_dn_parser_collect_pairs(expected, source) Modified: trunk/test/test_user.rb ============================================================================== --- trunk/test/test_user.rb (original) +++ trunk/test/test_user.rb Thu Aug 16 04:05:07 2007 @@ -66,7 +66,7 @@ user.gettext(format) % [object_class, "surname"] else format = "%{fn} is required attribute by objectClass '%s': aliases: %s" - format = user.gettext(format).gsub(/%\{fn\}/, "Sn") + format = user.gettext(format).gsub(/%\{fn\}/, "sn") format % [object_class, "surname"] end end From codesite-noreply at google.com Thu Aug 16 20:16:15 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 16 Aug 2007 17:16:15 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r244 - al-admin/trunk/lib/tasks Message-ID: Author: koutou Date: Thu Aug 16 04:37:29 2007 New Revision: 244 Modified: al-admin/trunk/lib/tasks/gettext.rake Log: * supported ActiveLdap::GetText::Parser. Modified: al-admin/trunk/lib/tasks/gettext.rake ============================================================================== --- al-admin/trunk/lib/tasks/gettext.rake (original) +++ al-admin/trunk/lib/tasks/gettext.rake Thu Aug 16 04:37:29 2007 @@ -14,9 +14,11 @@ namespace :po do desc "Update po/pot files (GetText)" task :update => "gettext:environment:setup" do - GetText.update_pofiles("al-admin", - Dir.glob("{app,lib}/**/*.rb") + - Dir.glob("app/views/**/*.rhtml"), + require 'active_ldap/get_text/parser' + GetText::RGetText.add_parser(ActiveLdap::GetText::Parser.new) + + files = Dir.glob("{app,lib,components}/**/*.{rb,rhtml,rxml}") + GetText.update_pofiles("al-admin", files, "AL Admin #{AL_ADMIN_VERSION}") end end From codesite-noreply at google.com Thu Aug 16 20:19:39 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 16 Aug 2007 17:19:39 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r241 - trunk/test Message-ID: Author: koutou Date: Thu Aug 16 04:01:38 2007 New Revision: 241 Modified: trunk/test/test_schema.rb Log: * added tests for ObjectClass#super_class? Modified: trunk/test/test_schema.rb ============================================================================== --- trunk/test/test_schema.rb (original) +++ trunk/test/test_schema.rb Thu Aug 16 04:01:38 2007 @@ -3,6 +3,66 @@ class TestSchema < Test::Unit::TestCase priority :must + def test_super_class? + group = 'objectClasses' + entry = { + group => [ + "( 2.5.6.6 NAME 'person' DESC 'RFC2256: a person' SUP " + + "top STRUCTURAL MUST ( sn $ cn ) MAY ( userPassword $ " + + "telephoneNumber $ seeAlso $ description ) )", + + "( 2.5.6.7 NAME 'organizationalPerson' DESC 'RFC2256: " + + "an organizational person' SUP person STRUCTURAL MAY ( " + + "title $ x121Address $ registeredAddress $ " + + "destinationIndicator $ preferredDeliveryMethod $ " + + "telexNumber $ teletexTerminalIdentifier $ telephoneNumber " + + "$ internationaliSDNNumber $ facsimileTelephoneNumber $ " + + "street $ postOfficeBox $ postalCode $ postalAddress $ " + + "physicalDeliveryOfficeName $ ou $ st $ l ) )", + + "( 2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' DESC " + + "'RFC2798: Internet Organizational Person' SUP " + + "organizationalPerson STRUCTURAL MAY ( audio $ " + + "businessCategory $ carLicense $ departmentNumber $ " + + "displayName $ employeeNumber $ employeeType $ givenName " + + "$ homePhone $ homePostalAddress $ initials $ jpegPhoto " + + "$ labeledURI $ mail $ manager $ mobile $ o $ pager $ " + + "photo $ roomNumber $ secretary $ uid $ userCertificate $ " + + "x500UniqueIdentifier $ preferredLanguage $ " + + "userSMIMECertificate $ userPKCS12 ) )", + ] + } + schema = ActiveLdap::Schema.new(entry) + + person = schema.object_class('person') + organizational_person = schema.object_class("organizationalPerson") + inet_org_person = schema.object_class("inetOrgPerson") + + assert_equal([[false, false, false]] * 2, + [[person.super_class?(person), + person.super_class?(organizational_person), + person.super_class?(inet_org_person)], + [person.super_class?("person"), + person.super_class?("organizationalPerson"), + person.super_class?("inetOrgPerson")]]) + + assert_equal([[true, false, false]] * 2, + [[organizational_person.super_class?(person), + organizational_person.super_class?(organizational_person), + organizational_person.super_class?(inet_org_person)], + [organizational_person.super_class?("person"), + organizational_person.super_class?("organizationalPerson"), + organizational_person.super_class?("inetOrgPerson")]]) + + assert_equal([[true, true, false]] * 2, + [[inet_org_person.super_class?(person), + inet_org_person.super_class?(organizational_person), + inet_org_person.super_class?(inet_org_person)], + [inet_org_person.super_class?("person"), + inet_org_person.super_class?("organizationalPerson"), + inet_org_person.super_class?("inetOrgPerson")]]) + end + priority :normal def test_duplicate_schema sasNMASProductOptions_schema = From codesite-noreply at google.com Thu Aug 16 20:25:25 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 16 Aug 2007 17:25:25 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r238 - trunk/lib/active_ldap Message-ID: Author: koutou Date: Wed Aug 15 06:08:59 2007 New Revision: 238 Modified: trunk/lib/active_ldap/schema.rb trunk/lib/active_ldap/validations.rb Log: * fixed super_class?. * added a workaround for GetText's ugly implementation. Modified: trunk/lib/active_ldap/schema.rb ============================================================================== --- trunk/lib/active_ldap/schema.rb (original) +++ trunk/lib/active_ldap/schema.rb Wed Aug 15 06:08:59 2007 @@ -354,9 +354,13 @@ attr_reader :super_classes def initialize(name, schema) super(name, schema, "objectClasses") + @schema = schema end def super_class?(object_class) + unless object_class.is_a?(ObjectClass) + object_class = @schema.object_class(object_class) + end @super_classes.include?(object_class) end Modified: trunk/lib/active_ldap/validations.rb ============================================================================== --- trunk/lib/active_ldap/validations.rb (original) +++ trunk/lib/active_ldap/validations.rb Wed Aug 15 06:08:59 2007 @@ -7,7 +7,17 @@ base.class_eval do alias_method :new_record?, :new_entry? + class << self + alias_method :human_attribute_name_active_ldap, + :human_attribute_name + end include ActiveRecord::Validations + class << self + alias_method :human_attribute_name, + :human_attribute_name_active_ldap + alias_method :human_attribute_table_name_for_error, + :human_object_class_name + end # Workaround for GetText's ugly implementation begin From codesite-noreply at google.com Thu Aug 16 20:43:45 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 16 Aug 2007 17:43:45 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r237 - in trunk/lib/active_ldap: . get_text Message-ID: Author: koutou Date: Wed Aug 15 05:31:53 2007 New Revision: 237 Modified: trunk/lib/active_ldap/base.rb trunk/lib/active_ldap/get_text/parser.rb Log: * msgids are reusable. Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Wed Aug 15 05:31:53 2007 @@ -331,8 +331,66 @@ end end - def human_attribute_name(attribute_key_name) - attribute_key_name.humanize + def human_attribute_name(attribute_or_name) + s_(human_attribute_name_msgid(attribute_or_name)) + end + + def human_attribute_name_msgid(attribute_or_name) + if attribute_or_name.is_a?(Schema::Attribute) + name = attribute_or_name.name + else + name = attribute_or_name + end + "LDAP|Attribute|#{name}" + end + + def human_attribute_description(attribute_or_name) + msgid = human_attribute_description_msgid(attribute_or_name) + return nil if msgid.nil? + s_(msgid) + end + + def human_attribute_description_msgid(attribute_or_name) + if attribute_or_name.is_a?(Schema::Attribute) + attribute = attribute_or_name + else + attribute = schema.attribute(attribute_or_name) + return nil if attribute.nil? + end + description = attribute.description + return nil if description.nil? + "LDAP|Description|Attribute|#{attribute.name}|#{description}" + end + + def human_object_class_name(object_class_or_name) + s_(human_object_class_name_msgid(object_class_or_name)) + end + + def human_object_class_name_msgid(object_class_or_name) + if object_class_or_name.is_a?(Schema::ObjectClass) + name = object_class_or_name.name + else + name = object_class_or_name + end + "LDAP|ObjectClass|#{name}" + end + + def human_object_class_description(object_class_or_name) + msgid = human_object_class_description_msgid(object_class_or_name) + return nil if msgid.nil? + s_(msgid) + end + + def human_object_class_description_msgid(object_class_or_name) + if object_class_or_name.is_a?(Schema::ObjectClass) + object_class = object_class_or_name + else + object_class = schema.object_class(object_class_or_name) + return nil if object_class.nil? + end + description = object_class.description + return nil if description.nil? + "LDAP|Description|ObjectClass|#{object_class.name}|#{description}" end private Modified: trunk/lib/active_ldap/get_text/parser.rb ============================================================================== --- trunk/lib/active_ldap/get_text/parser.rb (original) +++ trunk/lib/active_ldap/get_text/parser.rb Wed Aug 15 05:31:53 2007 @@ -94,12 +94,12 @@ def register_object_class(object_class, file) [object_class.name, *object_class.aliases].each do |name| - register("LDAP|ObjectClass|#{name}", file) + register(ActiveLdap::Base.human_object_class_name_msgid(name), file) end if object_class.description - prefix = "LDAP|Description|ObjectClass|" - register("#{prefix}#{object_class.name}|#{object_class.description}", - file) + msgid = + ActiveLdap::Base.human_object_class_description_msgid(object_class) + register(msgid, file) end (object_class.must(false) + object_class.may(false)).each do |attribute| register_attribute(attribute, file) @@ -111,11 +111,12 @@ def register_attribute(attribute, file) [attribute.name, *attribute.aliases].each do |name| - register("LDAP|Attribute|#{name}", file) + register(ActiveLdap::Base.human_attribute_name_msgid(name), + file) end if attribute.description - prefix = "LDAP|Description|Attribute|" - register("#{prefix}#{attribute.name}|#{attribute.description}", file) + msgid = ActiveLdap::Base.human_attribute_description_msgid(attribute) + register(msgid, file) end end end From codesite-noreply at google.com Thu Aug 16 20:47:10 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 16 Aug 2007 17:47:10 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r235 - in trunk: lib/active_ldap test Message-ID: Author: koutou Date: Wed Aug 15 04:04:03 2007 New Revision: 235 Modified: trunk/lib/active_ldap/schema.rb trunk/test/test_schema.rb Log: * followed the recent changes. all tests are passed. Modified: trunk/lib/active_ldap/schema.rb ============================================================================== --- trunk/lib/active_ldap/schema.rb (original) +++ trunk/lib/active_ldap/schema.rb Wed Aug 15 04:04:03 2007 @@ -1,190 +1,5 @@ module ActiveLdap class Schema - class Entry - include Comparable - - attr_reader :id, :name, :aliases, :description - def initialize(name, schema, group) - @schema = schema - @name, *@aliases = attribute("NAME", name) - @name ||= name - @id = @schema.resolve_name(group, @name) - collect_info - @schema = nil - end - - def eql?(other) - self.class == other.class and - id == other.id - end - - def hash - id.hash - end - - def <=>(other) - name <=> other.name - end - end - - class Syntax < Entry - def initialize(name, schema) - super(name, schema, "ldapSyntaxes") - end - - def binary_transfer_required? - @binary_transfer_required - end - - def human_readable? - @human_readable - end - - private - def attribute(attribute_name, name=@name) - @schema.ldap_syntax_attribute(name, attribute_name) - end - - def collect_info - @description = attribute("DESC")[0] - @binary_transfer_required = - (attribute('X-BINARY-TRANSFER-REQUIRED')[0] == 'TRUE') - @human_readable = (attribute('X-NOT-HUMAN-READABLE')[0] != 'TRUE') - end - end - - class Attribute < Entry - def initialize(name, schema) - super(name, schema, "attributeTypes") - end - - # read_only? - # - # Returns true if an attribute is read-only - # NO-USER-MODIFICATION - def read_only? - @read_only - end - - # single_value? - # - # Returns true if an attribute can only have one - # value defined - # SINGLE-VALUE - def single_value? - @single_value - end - - # binary? - # - # Returns true if the given attribute's syntax - # is X-NOT-HUMAN-READABLE or X-BINARY-TRANSFER-REQUIRED - def binary? - @binary - end - - # binary_required? - # - # Returns true if the value MUST be transferred in binary - def binary_required? - @binary_required - end - - private - def attribute(attribute_name, name=@name) - @schema.attribute_type(name, attribute_name) - end - - def collect_info - @description = attribute("DESC")[0] - @read_only = attribute('NO-USER-MODIFICATION')[0] == 'TRUE' - @single_value = attribute('SINGLE-VALUE')[0] == 'TRUE' - syntax = attribute("SYNTAX")[0] - syntax = @schema.ldap_syntax(syntax) if syntax - if syntax - @binary_required = syntax.binary_transfer_required? - @binary = (@binary_required or !syntax.human_readable?) - else - @binary_required = false - @binary = false - end - end - end - - class ObjectClass < Entry - attr_reader :super_classes - def initialize(name, schema) - super(name, schema, "objectClasses") - end - - def super_class?(object_class) - @super_classes.include?(object_class) - end - - def must(include_super_class=true) - if include_super_class - @all_must - else - @must - end - end - - def may(include_super_class=true) - if include_super_class - @all_may - else - @may - end - end - - private - def collect_info - @description = attribute("DESC")[0] - @super_classes = collect_super_classes - @must, @may, @all_must, @all_may = collect_attributes - end - - def collect_super_classes - super_classes = attribute('SUP') - loop do - start_size = super_classes.size - new_super_classes = [] - super_classes.each do |super_class| - new_super_classes.concat(attribute('SUP', super_class)) - end - - super_classes.concat(new_super_classes) - super_classes.uniq! - break if super_classes.size == start_size - end - super_classes.collect do |name| - @schema.object_class(name) - end - end - - def collect_attributes - must = attribute('MUST').collect {|name| @schema.attribute(name)} - may = attribute('MAY').collect {|name| @schema.attribute(name)} - - all_must = must.dup - all_may = may.dup - @super_classes.each do |super_class| - all_must.concat(super_class.must(false)) - all_may.concat(super_class.may(false)) - end - - # Clean out the dupes. - all_must.uniq! - all_may.uniq! - - [must, may, all_must, all_may] - end - - def attribute(attribute_name, name=@name) - @schema.object_class_attribute(name, attribute_name) - end - end - def initialize(entries) @entries = default_entries.merge(entries || {}) @schema_info = {} @@ -423,5 +238,190 @@ "ldapSyntaxes" => [], } end - end # Schema + + class Entry + include Comparable + + attr_reader :id, :name, :aliases, :description + def initialize(name, schema, group) + @schema = schema + @name, *@aliases = attribute("NAME", name) + @name ||= name + @id = @schema.resolve_name(group, @name) + collect_info + @schema = nil + end + + def eql?(other) + self.class == other.class and + id == other.id + end + + def hash + id.hash + end + + def <=>(other) + name <=> other.name + end + end + + class Syntax < Entry + def initialize(name, schema) + super(name, schema, "ldapSyntaxes") + end + + def binary_transfer_required? + @binary_transfer_required + end + + def human_readable? + @human_readable + end + + private + def attribute(attribute_name, name=@name) + @schema.ldap_syntax_attribute(name, attribute_name) + end + + def collect_info + @description = attribute("DESC")[0] + @binary_transfer_required = + (attribute('X-BINARY-TRANSFER-REQUIRED')[0] == 'TRUE') + @human_readable = (attribute('X-NOT-HUMAN-READABLE')[0] != 'TRUE') + end + end + + class Attribute < Entry + def initialize(name, schema) + super(name, schema, "attributeTypes") + end + + # read_only? + # + # Returns true if an attribute is read-only + # NO-USER-MODIFICATION + def read_only? + @read_only + end + + # single_value? + # + # Returns true if an attribute can only have one + # value defined + # SINGLE-VALUE + def single_value? + @single_value + end + + # binary? + # + # Returns true if the given attribute's syntax + # is X-NOT-HUMAN-READABLE or X-BINARY-TRANSFER-REQUIRED + def binary? + @binary + end + + # binary_required? + # + # Returns true if the value MUST be transferred in binary + def binary_required? + @binary_required + end + + private + def attribute(attribute_name, name=@name) + @schema.attribute_type(name, attribute_name) + end + + def collect_info + @description = attribute("DESC")[0] + @read_only = attribute('NO-USER-MODIFICATION')[0] == 'TRUE' + @single_value = attribute('SINGLE-VALUE')[0] == 'TRUE' + syntax = attribute("SYNTAX")[0] + syntax = @schema.ldap_syntax(syntax) if syntax + if syntax + @binary_required = syntax.binary_transfer_required? + @binary = (@binary_required or !syntax.human_readable?) + else + @binary_required = false + @binary = false + end + end + end + + class ObjectClass < Entry + attr_reader :super_classes + def initialize(name, schema) + super(name, schema, "objectClasses") + end + + def super_class?(object_class) + @super_classes.include?(object_class) + end + + def must(include_super_class=true) + if include_super_class + @all_must + else + @must + end + end + + def may(include_super_class=true) + if include_super_class + @all_may + else + @may + end + end + + private + def collect_info + @description = attribute("DESC")[0] + @super_classes = collect_super_classes + @must, @may, @all_must, @all_may = collect_attributes + end + + def collect_super_classes + super_classes = attribute('SUP') + loop do + start_size = super_classes.size + new_super_classes = [] + super_classes.each do |super_class| + new_super_classes.concat(attribute('SUP', super_class)) + end + + super_classes.concat(new_super_classes) + super_classes.uniq! + break if super_classes.size == start_size + end + super_classes.collect do |name| + @schema.object_class(name) + end + end + + def collect_attributes + must = attribute('MUST').collect {|name| @schema.attribute(name)} + may = attribute('MAY').collect {|name| @schema.attribute(name)} + + all_must = must.dup + all_may = may.dup + @super_classes.each do |super_class| + all_must.concat(super_class.must(false)) + all_may.concat(super_class.may(false)) + end + + # Clean out the dupes. + all_must.uniq! + all_may.uniq! + + [must, may, all_must, all_may] + end + + def attribute(attribute_name, name=@name) + @schema.object_class_attribute(name, attribute_name) + end + end + end end Modified: trunk/test/test_schema.rb ============================================================================== --- trunk/test/test_schema.rb (original) +++ trunk/test/test_schema.rb Wed Aug 15 04:04:03 2007 @@ -17,58 +17,62 @@ sasNMASProductOptions = 'sasNMASProductOptions' rADIUSActiveConnections = 'rADIUSActiveConnections' sasNMASProductOptions_aliases = - [sasNMASProductOptions, [sasNMASProductOptions]] + [sasNMASProductOptions, []] rADIUSActiveConnections_aliases = - [rADIUSActiveConnections, [rADIUSActiveConnections]] - sas__sas_radius_aliases = - [sasNMASProductOptions, [sasNMASProductOptions, - rADIUSActiveConnections]] - radius__sas_radius_aliases = - [rADIUSActiveConnections, [sasNMASProductOptions, - rADIUSActiveConnections]] - sas__radius_sas_aliases = - [sasNMASProductOptions, [rADIUSActiveConnections, - sasNMASProductOptions]] - radius__radius_sas_aliases = - [rADIUSActiveConnections, [rADIUSActiveConnections, - sasNMASProductOptions]] + [rADIUSActiveConnections, []] + sas_radius_aliases = [sasNMASProductOptions, [rADIUSActiveConnections]] + radius_sas_aliases = [rADIUSActiveConnections, [sasNMASProductOptions]] assert_attribute_aliases([sasNMASProductOptions_aliases], + [sasNMASProductOptions], [sasNMASProductOptions_schema], false) assert_attribute_aliases([rADIUSActiveConnections_aliases], + [rADIUSActiveConnections], [rADIUSActiveConnections_schema], false) assert_attribute_aliases([sasNMASProductOptions_aliases, - radius__sas_radius_aliases], + sas_radius_aliases], + [sasNMASProductOptions, + rADIUSActiveConnections], [sasNMASProductOptions_schema, rADIUSActiveConnections_schema], false) assert_attribute_aliases([rADIUSActiveConnections_aliases, - sas__radius_sas_aliases], + radius_sas_aliases], + [rADIUSActiveConnections, + sasNMASProductOptions], [rADIUSActiveConnections_schema, sasNMASProductOptions_schema], false) - assert_attribute_aliases([radius__sas_radius_aliases, - sas__sas_radius_aliases], + assert_attribute_aliases([sas_radius_aliases, + sas_radius_aliases], + [rADIUSActiveConnections, + sasNMASProductOptions], [sasNMASProductOptions_schema, rADIUSActiveConnections_schema], false) - assert_attribute_aliases([sas__radius_sas_aliases, - radius__radius_sas_aliases], + assert_attribute_aliases([radius_sas_aliases, + radius_sas_aliases], + [sasNMASProductOptions, + rADIUSActiveConnections], [rADIUSActiveConnections_schema, sasNMASProductOptions_schema], false) - assert_attribute_aliases([sas__sas_radius_aliases, - radius__sas_radius_aliases], + assert_attribute_aliases([sas_radius_aliases, + sas_radius_aliases], + [sasNMASProductOptions, + rADIUSActiveConnections], [sasNMASProductOptions_schema, rADIUSActiveConnections_schema], true) - assert_attribute_aliases([radius__radius_sas_aliases, - sas__radius_sas_aliases], + assert_attribute_aliases([radius_sas_aliases, + radius_sas_aliases], + [rADIUSActiveConnections, + sasNMASProductOptions], [rADIUSActiveConnections_schema, sasNMASProductOptions_schema], true) @@ -343,14 +347,14 @@ assert_equal([], schema["objectClasses", "posixAccount", "MUST"]) end - def assert_attribute_aliases(expected, schemata, ensure_parse) + def assert_attribute_aliases(expected, keys, schemata, ensure_parse) group = 'attributeTypes' entry = {group => schemata} schema = ActiveLdap::Schema.new(entry) schema.send(:ensure_parse, group) if ensure_parse - result = [] - expected.each do |key,| - result << [key, schema.attribute(key.to_s).aliases] + result = keys.collect do |key| + attribute = schema.attribute(key) + [attribute.name, attribute.aliases] end assert_equal(expected, result) end From codesite-noreply at google.com Thu Aug 16 21:00:15 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 16 Aug 2007 18:00:15 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r240 - trunk/test Message-ID: <163600d6b30437dab6bc0c4f1240fa@google.com> Author: koutou Date: Thu Aug 16 03:57:50 2007 New Revision: 240 Modified: trunk/test/run-test.rb Log: * added $KCODE. Modified: trunk/test/run-test.rb ============================================================================== --- trunk/test/run-test.rb (original) +++ trunk/test/run-test.rb Thu Aug 16 03:57:50 2007 @@ -1,5 +1,7 @@ #!/usr/bin/env ruby +$KCODE = 'u' + require 'yaml' require "test/unit" From codesite-noreply at google.com Thu Aug 16 21:04:23 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 16 Aug 2007 18:04:23 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r246 - in trunk/rails/plugin/active_ldap: . lib Message-ID: Author: koutou Date: Thu Aug 16 05:11:37 2007 New Revision: 246 Added: trunk/rails/plugin/active_ldap/lib/ trunk/rails/plugin/active_ldap/lib/active_ldap_helper.rb Modified: trunk/rails/plugin/active_ldap/init.rb Log: * improved Rails view support. Modified: trunk/rails/plugin/active_ldap/init.rb ============================================================================== --- trunk/rails/plugin/active_ldap/init.rb (original) +++ trunk/rails/plugin/active_ldap/init.rb Thu Aug 16 05:11:37 2007 @@ -10,3 +10,7 @@ "to make #{ldap_configuration_file}" ActiveLdap::Base.logger.error(message) end + +class ActionView::Base + include ActiveLdapHelper +end Added: trunk/rails/plugin/active_ldap/lib/active_ldap_helper.rb ============================================================================== --- (empty file) +++ trunk/rails/plugin/active_ldap/lib/active_ldap_helper.rb Thu Aug 16 05:11:37 2007 @@ -0,0 +1,21 @@ +module ActiveLdapHelper + def ldap_attribute_name_gettext(attribute) + ActiveLdap::Base.human_attribute_name(attribute) + end + alias_method(:la_, :ldap_attribute_name_gettext) + + def ldap_attribute_description_gettext(attribute) + ActiveLdap::Base.human_attribute_description(attribute) + end + alias_method(:lad_, :ldap_attribute_description_gettext) + + def ldap_object_class_name_gettext(object_class) + ActiveLdap::Base.human_object_class_name(object_class) + end + alias_method(:loc_, :ldap_object_class_name_gettext) + + def ldap_object_class_description_gettext(object_class) + ActiveLdap::Base.human_object_class_description(object_class) + end + alias_method(:locd_, :ldap_object_class_description_gettext) +end From codesite-noreply at google.com Thu Aug 16 21:08:28 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 16 Aug 2007 18:08:28 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r248 - in al-admin/trunk: app/views/layouts app/views/users public/stylesheets Message-ID: Author: koutou Date: Thu Aug 16 05:19:41 2007 New Revision: 248 Modified: al-admin/trunk/app/views/layouts/application.rhtml al-admin/trunk/app/views/users/_entry.rhtml al-admin/trunk/public/stylesheets/screen.css Log: * improved UI. Modified: al-admin/trunk/app/views/layouts/application.rhtml ============================================================================== --- al-admin/trunk/app/views/layouts/application.rhtml (original) +++ al-admin/trunk/app/views/layouts/application.rhtml Thu Aug 16 05:19:41 2007 @@ -20,5 +20,8 @@

    <%=h flash[:notice] %>

    <% end -%> <%= yield %> + +
    + <%= link_to(_("Top"), top_path) %> Modified: al-admin/trunk/app/views/users/_entry.rhtml ============================================================================== --- al-admin/trunk/app/views/users/_entry.rhtml (original) +++ al-admin/trunk/app/views/users/_entry.rhtml Thu Aug 16 05:19:41 2007 @@ -4,11 +4,22 @@ <%= user_link_if(defined?(link_to_entry) && link_to_entry, entry, true) %> + + + + + + + + + <% entry.attribute_names(true).sort.each do |name| -%> - - - - + + + + + <% end -%> +
    <%= _("attribute name") %><%= _("value") %><%= _("description") %>
    <%= h _(name) %><%= h entry[name, true].join(", ") %>
    <%= h la_(name) %><%= h entry[name, true].join(", ") %><%= h lad_(name) %>
    Modified: al-admin/trunk/public/stylesheets/screen.css ============================================================================== --- al-admin/trunk/public/stylesheets/screen.css (original) +++ al-admin/trunk/public/stylesheets/screen.css Thu Aug 16 05:19:41 2007 @@ -19,7 +19,7 @@ margin-left: 3em; } -div.entry table th +div.entry table tbody th { text-align: left; } From codesite-noreply at google.com Thu Aug 16 21:12:33 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 16 Aug 2007 18:12:33 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r239 - in trunk/lib: . active_ldap Message-ID: <163600d6b30437dae2b9fc4d124ce9@google.com> Author: koutou Date: Thu Aug 16 03:34:52 2007 New Revision: 239 Added: trunk/lib/active_ldap/get_text_support.rb Modified: trunk/lib/active_ldap.rb Log: * split ActiveLdap::GetTextSupport. Modified: trunk/lib/active_ldap.rb ============================================================================== --- trunk/lib/active_ldap.rb (original) +++ trunk/lib/active_ldap.rb Thu Aug 16 03:34:52 2007 @@ -939,19 +939,7 @@ require 'active_ldap/get_text_fallback' end -module ActiveLdap - module GetTextSupport - class << self - def included(base) - base.class_eval do - include(GetText) - bindtextdomain("active-ldap") - end - end - end - end -end - +require 'active_ldap/get_text_support' require 'active_ldap/base' require 'active_ldap/associations' Added: trunk/lib/active_ldap/get_text_support.rb ============================================================================== --- (empty file) +++ trunk/lib/active_ldap/get_text_support.rb Thu Aug 16 03:34:52 2007 @@ -0,0 +1,12 @@ +module ActiveLdap + module GetTextSupport + class << self + def included(base) + base.class_eval do + include(GetText) + bindtextdomain("active-ldap") + end + end + end + end +end From codesite-noreply at google.com Thu Aug 16 21:16:36 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 16 Aug 2007 18:16:36 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r243 - in trunk/lib/active_ldap: . get_text Message-ID: Author: koutou Date: Thu Aug 16 04:36:30 2007 New Revision: 243 Modified: trunk/lib/active_ldap/get_text/parser.rb trunk/lib/active_ldap/validations.rb Log: * improved GetText support. Modified: trunk/lib/active_ldap/get_text/parser.rb ============================================================================== --- trunk/lib/active_ldap/get_text/parser.rb (original) +++ trunk/lib/active_ldap/get_text/parser.rb Thu Aug 16 04:36:30 2007 @@ -6,7 +6,7 @@ class Parser include GetText - def initialize(configuration={}) + def initialize(configuration=nil) configuration = ensure_configuration(configuration) classes = configuration.delete(:classes) || ["ActiveLdap::Base"] @classes_re = /class.*#{Regexp.union(*classes)}/ @@ -21,7 +21,7 @@ klass = name.constantize next unless klass.is_a?(Class) next unless klass < ActiveLdap::Base - register(klass.name, file) + register(klass.name.singularize.underscore.gsub(/_/, " "), file) klass.classes.each do |object_class| register_object_class(object_class, file) end @@ -50,6 +50,8 @@ end def ensure_configuration(configuration) + configuration ||= RAILS_ENV if Object.const_defined?(:RAILS_ENV) + configuration ||= {} if configuration.is_a?(String) if File.exists?(configuration) require 'erb' @@ -58,6 +60,7 @@ else ENV["RAILS_ENV"] = configuration require 'config/environment' + configuration = ActiveLdap::Base.configurations[configuration] end end configuration = configuration.symbolize_keys Modified: trunk/lib/active_ldap/validations.rb ============================================================================== --- trunk/lib/active_ldap/validations.rb (original) +++ trunk/lib/active_ldap/validations.rb Thu Aug 16 04:36:30 2007 @@ -15,8 +15,6 @@ class << self alias_method :human_attribute_name, :human_attribute_name_active_ldap - alias_method :human_attribute_table_name_for_error, - :human_object_class_name end # Workaround for GetText's ugly implementation From codesite-noreply at google.com Thu Aug 16 21:20:50 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 16 Aug 2007 18:20:50 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r247 - al-admin/trunk/app/models Message-ID: Author: koutou Date: Thu Aug 16 05:19:18 2007 New Revision: 247 Modified: al-admin/trunk/app/models/user.rb Log: * improved remember me. Modified: al-admin/trunk/app/models/user.rb ============================================================================== --- al-admin/trunk/app/models/user.rb (original) +++ al-admin/trunk/app/models/user.rb Thu Aug 16 05:19:18 2007 @@ -36,7 +36,12 @@ end def remember_token? - remember_token_expires_at && Time.now.utc < remember_token_expires_at + begin + remember_token_expires_at && Time.now.utc < remember_token_expires_at && + ldap_user.connected? + rescue ActiveLdap::EntryNotFound + false + end end # These create and unset the fields required for remembering users between browser closes From codesite-noreply at google.com Thu Aug 16 21:25:04 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 16 Aug 2007 18:25:04 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r245 - trunk/lib/active_ldap/get_text Message-ID: Author: koutou Date: Thu Aug 16 05:09:25 2007 New Revision: 245 Modified: trunk/lib/active_ldap/get_text/parser.rb Log: * used ENV["RAILS_ENV"] too. Modified: trunk/lib/active_ldap/get_text/parser.rb ============================================================================== --- trunk/lib/active_ldap/get_text/parser.rb (original) +++ trunk/lib/active_ldap/get_text/parser.rb Thu Aug 16 05:09:25 2007 @@ -51,7 +51,7 @@ def ensure_configuration(configuration) configuration ||= RAILS_ENV if Object.const_defined?(:RAILS_ENV) - configuration ||= {} + configuration ||= ENV["RAILS_ENV"] || {} if configuration.is_a?(String) if File.exists?(configuration) require 'erb' From codesite-noreply at google.com Thu Aug 16 20:56:04 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 16 Aug 2007 17:56:04 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r249 - trunk/po/ja Message-ID: <163600d06e0437daa7c6a837124647@google.com> Author: koutou Date: Thu Aug 16 05:58:14 2007 New Revision: 249 Modified: trunk/po/ja/active-ldap.po Log: * translated some messages. Modified: trunk/po/ja/active-ldap.po ============================================================================== --- trunk/po/ja/active-ldap.po (original) +++ trunk/po/ja/active-ldap.po Thu Aug 16 05:58:14 2007 @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" -"POT-Creation-Date: 2007-08-14 22:04+0900\n" -"PO-Revision-Date: 2007-08-14 22:05+0900\n" +"POT-Creation-Date: 2007-08-16 21:20+0900\n" +"PO-Revision-Date: 2007-08-16 21:57+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -15,6 +15,2707 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: -:- +msgid "LDAP|ObjectClass|LDAProotDSE" +msgstr "LDAP???DSA??????(LDAProotDSE)" + +#: -:- +msgid "LDAP|Attribute|olcArgsFile" +msgstr "OpenLDAP??: ?????????(olcArgsFile)" + +#: -:- +msgid "LDAP|Description|Attribute|secretary|RFC1274: DN of secretary" +msgstr "RFC1274: ??????(DN)" + +#: -:- +msgid "LDAP|Attribute|shadowFlag" +msgstr "???????(shadowFlag)" + +#: -:- +msgid "" +"LDAP|Description|Attribute|olcDbCacheFree|Number of extra entries to free " +"when max is reached" +msgstr "??????????????????????" + +#: -:- +msgid "LDAP|Attribute|domainComponent" +msgstr "??????(domainComponent)" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|simpleSecurityObject|RFC1274: simple security " +"object" +msgstr "RFC1274: ???????????????" + +#: -:- +msgid "LDAP|ObjectClass|simpleSecurityObject" +msgstr "???????????????(simpleSecurityObject)" + +#: -:- +msgid "LDAP|Attribute|oncRpcNumber" +msgstr "ONC RPC??(oncRpcNumber)" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|bootableDevice|A device with boot parameters" +msgstr "????????????" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaNextUserRid|Next NT rid to give our for users" +msgstr "??????????NT RID" + +#: -:- +msgid "LDAP|Attribute|olcObjectClasses" +msgstr "OpenLDAP??: objectClass(olcObjectClasses)" + +#: -:- +msgid "LDAP|Attribute|st" +msgstr "?(st)" + +#: -:- +msgid "LDAP|Description|Attribute|seeAlso|RFC2256: DN of related object" +msgstr "RFC2256: ??????????????" + +#: -:- +msgid "LDAP|Description|Attribute|matchingRules|RFC2252: matching rules" +msgstr "RFC2252: ?????" + +#: -:- +msgid "LDAP|Description|Attribute|sambaShareName|Share Name" +msgstr "???" + +#: -:- +msgid "LDAP|Attribute|objectClass" +msgstr "?????????(objectClass)" + +#: -:- +msgid "LDAP|Attribute|olcPasswordHash" +msgstr "OpenLDAP??: ?????????(olcPasswordHash)" + +#: -:- +msgid "LDAP|Attribute|manager" +msgstr "???" + +#: -:- +msgid "LDAP|ObjectClass|olcLdifConfig" +msgstr "OpenLDAP??: LDIF??(olcLdifConfig)" + +#: -:- +msgid "LDAP|ObjectClass|posixAccount" +msgstr "POSIX?????" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|extensibleObject|RFC2252: extensible object" +msgstr "RFC2252: ???????????" + +#: -:- +msgid "LDAP|ObjectClass|extensibleObject" +msgstr "???????????(extensibleObject)" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|shadowAccount|Additional attributes for shadow " +"passwords" +msgstr "??????????????" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaLogonToChgPwd|Force Users to logon for " +"password change (default: 0 => off, 2 => on)" +msgstr "?????????????????????????? (?????: 0 => ??, 2 => ??)" + +#: -:- +msgid "LDAP|Attribute|sambaSID" +msgstr "Samba: ??????ID(sambaSID)" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|dSA|RFC2256: a directory system agent (a server)" +msgstr "RFC2256: ????????????????(???)" + +#: -:- +msgid "LDAP|Description|Attribute|userPassword|RFC2256/2307: password of user" +msgstr "RFC2256/2307: ?????????" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaLockoutObservationWindow|Reset time after " +"lockout in minutes (default: 30)" +msgstr "????????????????(?) (?????: 30)" + +#: -:- +msgid "LDAP|Attribute|sambaPwdHistoryLength" +msgstr "Samba: ????????(sambaPwdHistoryLength)" + +#: -:- +msgid "LDAP|Attribute|nSRecord" +msgstr "NS????(nSRecord)" + +#: -:- +msgid "LDAP|ObjectClass|sambaIdmapEntry" +msgstr "Samba: ID??????(sambaIdmapEntry)" + +#: -:- +msgid "LDAP|Attribute|olcIndexSubstrIfMaxLen" +msgstr "OpenLDAP??: ????????????????(olcIndexSubstrIfMaxLen)" + +#: -:- +msgid "LDAP|Description|Attribute|sambaBoolOption|A boolean option" +msgstr "?????????" + +#: -:- +msgid "" +"LDAP|Description|Attribute|documentLocation|RFC1274: location of document " +"original" +msgstr "RFC1274: ??????" + +#: -:- +msgid "LDAP|Attribute|olcDbCacheSize" +msgstr "OpenLDAP??: DB??????(olcDbCacheSize)" + +#: -:- +msgid "LDAP|Attribute|postalCode" +msgstr "????(postalCode)" + +#: -:- +msgid "LDAP|Attribute|olcDefaultSearchBase" +msgstr "OpenLDAP??: ??????????(olcDefaultSearchBase)" + +#: -:- +msgid "" +"LDAP|Description|Attribute|serialNumber|RFC2256: serial number of the entity" +msgstr "RFC2256: ?????????" + +#: -:- +msgid "LDAP|Attribute|sambaPasswordHistory" +msgstr "Samba: ???????(sambaPasswordHistory)" + +#: -:- +msgid "LDAP|Description|Attribute|sambaOptionName|Option Name" +msgstr "??????" + +#: -:- +msgid "LDAP|Attribute|olcPasswordCryptSaltFormat" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|telephoneNumber" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|shadowMax" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|ipNetwork" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDbIDLcacheSize" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcBackend" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|subentry" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcLogLevel" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|facsimileTelephoneNumber" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaLMPassword" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|shadowExpire" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|shadowLastChange" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|applicationEntity" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|ipProtocol" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|groupOfNames" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|subschema" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|jpegPhoto" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|employeeNumber" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|sambaShare|Samba Share Section" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|domainRelatedObject" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|memberNisNetgroup" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|audio" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|ipHost" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|mail|RFC1274: RFC822 Mailbox" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|pkiCA|RFC2587: PKI certificate authority" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|ipServiceProtocol" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcAttributeOptions" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|posixAccount|Abstraction of an account with " +"POSIX attributes" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaBadPasswordCount|Bad password attempt count" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|gn" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaNextGroupRid|Next NT rid to give out for " +"groups" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaNTPassword" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|olcBackendConfig" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaBadPasswordTime" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|c|RFC2256: ISO-3166 country 2-letter code" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|cNAMERecord" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaStringListOption|A string list option" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|postOfficeBox|RFC2256: Post Office Box" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|host" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|olcDbDirtyRead|Allow reads of uncommitted data" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaPasswordHistory|Concatenated MD4 hashes of " +"the unicode passwords used on this account" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaLogonScript|Logon script path" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|memberUid" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|sambaShare" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDbLockDetect" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcAuthzRegexp" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|gecos|The GECOS field; the common name" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|userPKCS12" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|subtreeMaximumQuality|RFC1274: Subtree Maximun " +"Quality" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|olcDbNoSync|Disable synchronous database writes" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|sambaGroupMapping" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|uidNumber" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|uid" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|sambaSidEntry|Structural Class for a SID" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|preferredLanguage|RFC2798: preferred written or " +"spoken language for a person" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDbDirectory" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaLogoffTime|Timestamp of last logoff" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|oncRpc|Abstraction of an ONC/RPC binding" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|dNSDomain" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaLockoutObservationWindow" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaStringListOption" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcRestrict" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|street" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcTLSDHParamFile" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|olcAccess|Access Control List" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|loginShell" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|cACertificate|RFC2256: X.509 CA certificate, use ;" +"binary" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|sambaSamAccount" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|sambaUnixIdPool|Pool for allocating UNIX uids/" +"gids" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|labeledURI|RFC2079: Uniform Resource Identifier " +"with optional label" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|destinationIndicator|RFC2256: destination " +"indicator" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|x500UniqueIdentifier" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|ipProtocolNumber" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDbCacheFree" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|OpenLDAProotDSE|OpenLDAP Root DSE object" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|stateOrProvinceName" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|inetOrgPerson" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaAlgorithmicRidBase" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaNextRid" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|description" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|mailPreferenceOption|RFC1274: mail preference " +"option" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|seeAlso" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|homePhone|RFC1274: home telephone number" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcReplicationInterval" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|internationaliSDNNumber|RFC2256: international " +"ISDN number" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcSchemaDN" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|streetAddress" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|uid|RFC1274: user identifier" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|bootFile|Boot image name" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|alias|RFC2256: an alias" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|ipProtocol|Abstraction of an IP protocol" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|subtreeMaximumQuality" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|loginShell|The path to the login shell" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|personalTitle|RFC1274: personal title" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|RFC822localPart" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|olcGlobal|OpenLDAP Global configuration options" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcPlugin" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|documentPublisher|RFC1274: publisher of document" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcReplicaPidFile" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|departmentNumber" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaStringOption|A string option" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|favouriteDrink" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDbDirtyRead" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|ipHostNumber" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaBadPasswordTime|Time of the last bad " +"password attempt" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|shadowMin" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaGroupType" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|olcDitContentRules|OpenLDAP DIT content rules" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|description|RFC2256: descriptive information" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|givenName" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|domainRelatedObject|RFC1274: an object related " +"to an domain" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|organizationalPerson|RFC2256: an organizational " +"person" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|supportedApplicationContext" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|olcDbCheckpoint|Database checkpoint interval in " +"kbytes and minutes" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|ipService|Abstraction an Internet Protocol " +"service" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaHomeDrive" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaLockoutThreshold|Lockout users after bad " +"logon attempts (default: 0 => off)" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaNextGroupRid" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|commonName" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|dmdName" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|textEncodedORAddress" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaNTPassword|MD4 hash of the unicode password" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|bootableDevice" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|olcDbMode|Unix permissions of database files" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcSecurity" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDbIndex" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|organizationalStatus" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcAuthIDRewrite" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|dmdName|RFC2256: name of DMD" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|ipNetworkNumber|IP network" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|ipNetwork|Abstraction of an IP network" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|uidNumber|An integer uniquely identifying a user " +"in an administrative domain" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|residentialPerson" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|sambaTrustPassword|Samba Trust Password" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDatabase" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaGroupType|NT Group Type" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|secretary" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|postalCode|RFC2256: postal code" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaPwdMustChange" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|attributeTypes" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sOARecord" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|userSecurityInformation" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|owner|RFC2256: owner (of the object)" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDbShmKey" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|olcOverlayConfig" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|sambaDomain|Samba Domain Information" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcRequires" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|uidObject|RFC2377: uid object" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|attributeTypes|RFC2252: attribute types" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcReverseLookup" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|pilotPerson" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcConfigDir" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaHomePath|Home directory UNC path" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|associatedName|RFC1274: DN of entry associated " +"with domain" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|givenName|RFC2256: first name(s) for which the " +"entity is known by" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaRefuseMachinePwdChange" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|organizationalUnitName" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|authorityRevocationList|RFC2256: X.509 authority " +"revocation list, use ;binary" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|presentationAddress|RFC2256: presentation address" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|labeledURIObject" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaAcctFlags|Account Flags" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaPwdMustChange|Timestamp of when the password " +"will expire" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|homeDirectory" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|host|RFC1274: host computer" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcConcurrency" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcPidFile" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|oncRpc" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|cRLDistributionPoint" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|objectClass|RFC2256: object classes of the entity" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|subtreeSpecification" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|sambaConfig|Samba Configuration Section" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|initials|RFC2256: initials of some or all of " +"names, but not the surname(s)." +msgstr "" + +#: -:- +msgid "LDAP|Attribute|documentTitle" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|searchGuide" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcReadOnly" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|preferredDeliveryMethod|RFC2256: preferred " +"delivery method" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|dc|RFC1274/2247: domain component" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|uniqueMember" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaLockoutDuration|Lockout duration in minutes " +"(default: 30, -1 => forever)" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaBoolOption" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|pagerTelephoneNumber" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sn|RFC2256: last (family) name(s) for which the " +"entity is known by" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|shadowInactive" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|carLicense|RFC2798: vehicle license or " +"registration plate" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|knowledgeInformation|RFC2256: knowledge " +"information" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|pager|RFC1274: pager telephone number" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|olcModuleList" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaSID|Security ID" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaSIDList|Security ID List" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcToolThreads" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaLogonHours|Logon Hours" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaHomePath" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|co|RFC1274: friendly country name" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|nameForms" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|audio|RFC1274: audio (u-law)" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|crossCertificatePair|RFC2256: X.509 cross " +"certificate pair, use ;binary" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDbSearchStack" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|telephoneNumber|RFC2256: Telephone Number" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcReplogFile" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|title|RFC2256: title associated with the entity" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|x500UniqueIdentifier|RFC2256: X.500 unique " +"identifier" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|organizationName" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|searchGuide|RFC2256: search guide, deprecated by " +"enhancedSearchGuide" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|applicationProcess|RFC2256: an application " +"process" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|pkiUser|RFC2587: a PKI user" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|deltaCRL|RFC2587: PKI user" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|otherMailbox" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|mobileTelephoneNumber" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|qualityLabelledData" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|organizationalUnit|RFC2256: an organizational " +"unit" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|presentationAddress" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|sambaConfigOption" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcSuffix" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|street|RFC2256: street address of this object" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|postalAddress|RFC2256: postal address" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|documentPublisher" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|olcLdifConfig|LDIF backend configuration" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|device|RFC2256: a device" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaMungedDial|Base64 encoded user parameter " +"string" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaLMPassword|LanManager Password" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|macAddress" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|groupOfUniqueNames" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|sambaIdmapEntry|Mapping from a SID to an ID" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|olcDbSearchStack|Depth of search stack in IDLs" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|owner" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcSrvtab" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|olcArgsFile|File for slapd command line options" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcSaslRealm" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|employeeType|RFC2798: type of employment for a " +"person" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|crossCertificatePair" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|documentVersion|RFC1274: version of document" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcConfigFile" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDbCheckpoint" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|ou" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaLogonTime" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|uniqueMember|RFC2256: unique member of a group" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaMaxPwdAge|Maximum password age, in seconds " +"(default: -1 => never expire passwords)" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcIndexSubstrAnyStep" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|organization" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcLocalSSF" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|teletexTerminalIdentifier" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaNextRid|Next NT rid to give out for anything" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|sambaDomain" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|supportedAlgorithms" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|locality|RFC2256: a locality" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|certificationAuthority-V2" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaMungedDial" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|olcModuleList|OpenLDAP dynamic module info" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|ref" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaLogonToChgPwd" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|homeDirectory|The absolute path to the home " +"directory" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|ou|RFC2256: organizational unit this object " +"belongs to" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaDomainName|Windows NT domain to which the " +"user belongs" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|gidNumber" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|labeledURIObject|RFC2079: object that contains " +"the URI attribute type" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcMaxDerefDepth" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|uidObject" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|deltaCRL" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|destinationIndicator" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|gecos" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaForceLogoff|Disconnect Users outside logon " +"hours (default: -1 => off, 0 => on)" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|userClass" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|st|RFC2256: state or province which this object " +"resides in" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|organizationalRole" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|displayName" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcSyncrepl" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaMinPwdAge" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|physicalDeliveryOfficeName|RFC2256: Physical " +"Delivery Office Name" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDisallows" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|pilotOrganization" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|olcDatabaseConfig" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|userSMIMECertificate|RFC2798: PKCS#7 SignedData " +"used to support S/MIME" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|documentIdentifier" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcGentleHUP" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|drink|RFC1274: favorite drink" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|olcBackendConfig|OpenLDAP Backend-specific " +"options" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|documentAuthor|RFC1274: DN of author of document" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|buildingName" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|olcDbCacheSize|Entry cache size in entries" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|dcObject|RFC2247: domain component object" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaLogonTime|Timestamp of last logon" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|shadowWarning" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|shadowAccount" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|olcFrontendConfig" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|olcAttributeTypes|OpenLDAP attributeTypes" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|olcDbLockDetect|Deadlock detection algorithm" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcSaslSecProps" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|personalTitle" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaKickoffTime" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|room" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|sambaUnixIdPool" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaLockoutDuration" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaMinPwdLength" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|mobile|RFC1274: mobile telephone number" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|cn" +msgstr "???(cn)" + +#: -:- +msgid "LDAP|Attribute|sambaBadPasswordCount" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|co" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|gidNumber|An integer uniquely identifying a group " +"in an administrative domain" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|olcSchemaConfig|OpenLDAP schema object" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|olcIncludeFile" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|ieee802Device|A device with a MAC address" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|domain" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaIntegerOption|An integer option" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcUpdateDN" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|internationaliSDNNumber" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|sambaConfig" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|strongAuthenticationUser" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|nisObject|An entry in a NIS map" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|fax" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|telexNumber" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|personalSignature" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|carLicense" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|drink" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|x121Address" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|roleOccupant" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|bootFile" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|userPKCS12|RFC2798: personal identity " +"information, a PKCS #12 PFX" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|documentAuthor" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|olcDatabaseConfig|OpenLDAP Database-specific " +"options" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|associatedDomain" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|sambaSamAccount|Samba 3.0 Auxilary SAM Account" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcThreads" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDbConfig" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|dmd" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|userid" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|applicationEntity|RFC2256: an application entity" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|postOfficeBox" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcSaslHost" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcPluginLogFile" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|userSecurityInformation|RFC2256: a user " +"security information" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcTLSCertificateFile" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|applicationProcess" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|sambaTrustPassword" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|olcConfig|OpenLDAP configuration object" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|c" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcTLSCRLCheck" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|dSAQuality|RFC1274: DSA Quality" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|rfc822Mailbox" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|certificationAuthority|RFC2256: a certificate " +"authority" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|aRecord" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|olcDbShmKey|Key for shared memory region" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDbLinearIndex" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|nisNetgroupTriple" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|teletexTerminalIdentifier|RFC2256: Teletex " +"Terminal Identifier" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcObjectIdentifier" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|olcBackend|A type of backend" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcAuthzPolicy" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|nisObject" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaTrustFlags|Trust Password Flags" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaPwdCanChange|Timestamp of when the user is " +"allowed to update the password" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaLockoutThreshold" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcIdleTimeout" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcModulePath" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|postalAddress" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|aliasedObjectName|RFC2256: name of aliased object" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|manager|RFC1274: DN of manager" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|ref|namedref: subordinate referral URL" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaPwdLastSet" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaTrustFlags" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|documentIdentifier|RFC1274: unique identifier of " +"document" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|nisNetgroup" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|referral|namedref: named subordinate referral" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|mDRecord" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|olcDbIndex|Attribute index parameters" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|OpenLDAProotDSE" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|homePostalAddress|RFC1274: home postal address" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|ipNetworkNumber" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|jpegPhoto|RFC2798: a JPEG image" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcOverlay" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcUpdateRef" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|person" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|registeredAddress|RFC2256: registered postal " +"address" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|title" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|mailPreferenceOption" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|country" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcSockbufMaxIncomingAuth" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|l" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|member|RFC2256: member of a group" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|pkiCA" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|olcDbConfig|BerkeleyDB DB_CONFIG configuration " +"directives" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaDomainName" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|mobile" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|ipNetmaskNumber" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaShareName" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcReferral" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|l|RFC2256: locality which this object resides in" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaKickoffTime|Timestamp of when the user will " +"be logged off automatically" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcInclude" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|subtreeMinimumQuality|RFC1274: Subtree Mininum " +"Quality" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|roomNumber" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|physicalDeliveryOfficeName" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|ipHostNumber|IP address" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|o" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|o|RFC2256: organization this object belongs to" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcAttributeTypes" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaIntegerOption" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|roleOccupant|RFC2256: occupant of role" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|pilotDSA" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcIndexSubstrIfMinLen" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|nisMap|A generic abstraction of a NIS map" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaHomeDrive|Driver letter of home directory " +"mapping" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcModuleLoad" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcTLSCertificateKeyFile" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|olcDatabase|The backend type for a database " +"instance" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|olcConfigDir|Directory for slapd configuration " +"backend" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|olcFrontendConfig|OpenLDAP frontend " +"configuration" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|preferredDeliveryMethod" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|olcGlobal" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|userCertificate|RFC2256: X.509 user certificate, " +"use ;binary" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|pkiUser" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|ipNetmaskNumber|IP netmask" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|dITContentRules" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|dcObject" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaPrimaryGroupSID" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaForceLogoff" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|newPilotPerson" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|olcDbLinearIndex|Index attributes one at a time" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|nisNetgroup|Abstraction of a netgroup" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|nisMapName" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|businessCategory|RFC2256: business category" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|top|top of the superclass chain" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaLogonScript" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|countryName" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|friendlyCountryName" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|associatedName" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDitContentRules" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|personalSignature|RFC1274: Personal Signature (G3 " +"fax)" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcReplicaArgsFile" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|objectClasses" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|subschema|RFC2252: controlling subschema (sub)" +"entry" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|bootParameter" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|dSA" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcLimits" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|olcAllows|Allowed set of deprecated features" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|organizationalPerson" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|organizationalStatus|RFC1274: organizational " +"status" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaMaxPwdAge" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaPwdLastSet|Timestamp of the last password " +"update" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcSubordinate" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaSIDList" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDbNoSync" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|friendlyCountry" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|photo|RFC1274: photo (G3 fax)" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|olcHdbConfig|HDB backend configuration" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaLogonHours" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|documentSeries" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcSizeLimit" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|documentVersion" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|userCertificate" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|localityName" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcSockbufMaxIncoming" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|groupOfUniqueNames|RFC2256: a group of unique " +"names (DN and Unique Identifier)" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|documentTitle|RFC1274: title of document" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|authorityRevocationList" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|nisMapEntry" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaPrimaryGroupSID|Primary Group Security ID" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|matchingRuleUse|RFC2252: matching rule uses" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|photo" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaRefuseMachinePwdChange|Allow Machine " +"Password changes (default: 0 => off)" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|organizationalRole|RFC2256: an organizational " +"role" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|supportedApplicationContext|RFC2256: supported " +"application context" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|olcIncludeFile|OpenLDAP configuration include " +"file" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcConnMaxPending" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|sambaGroupMapping|Samba Group Mapping" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaPwdCanChange" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|posixGroup|Abstraction of a group of accounts" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|deltaRevocationList" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|alias" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|dc" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|member" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|document" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcTLSCipherSuite" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|organizationalUnit" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaPwdHistoryLength|Length of Password History " +"Entries (default: 0 => off)" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|olcDbDirectory|Directory for database content" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|organization|RFC2256: an organization" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|homePhone" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|certificationAuthority" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|janetMailbox" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaAcctFlags" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|userSMIMECertificate" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|departmentNumber|RFC2798: identifies a department " +"within an organization" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|pager" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|employeeNumber|RFC2798: numerically identifies an " +"employee within an organization" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|olcHdbConfig" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|cn|RFC2256: common name(s) for which the entity " +"is known by" +msgstr "RFC2256: ???????????" + +#: -:- +msgid "LDAP|Attribute|preferredLanguage" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|subtreeMinimumQuality" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|roomNumber|RFC1274: room number" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcReplica" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|olcConfig" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|nisMap" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaProfilePath" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|matchingRules" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|employeeType" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcConnMaxPendingAuth" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|businessCategory" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|olcConfigFile|File for slapd configuration " +"directives" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|knowledgeInformation" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|registeredAddress" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|residentialPerson|RFC2256: an residential person" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|homeTelephoneNumber" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaAlgorithmicRidBase|Base at which the samba " +"RID generation algorithm should operate" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|telexNumber|RFC2256: Telex Number" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|x121Address|RFC2256: X.121 Address" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|groupOfNames|RFC2256: a group of names (DNs)" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|device" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|olcOverlayConfig|OpenLDAP Overlay-specific " +"options" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|country|RFC2256: a country" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|supportedAlgorithms|RFC2256: supported algorithms" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|nisNetgroupTriple|Netgroup triple" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|top" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcAllows" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaMinPwdLength|Minimal password length " +"(default: 5)" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaNextUserRid" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|certificateRevocationList|RFC2256: X.509 " +"certificate revocation list, use ;binary" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcAccess" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcTLSCACertificateFile" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcDbMode" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcRootPW" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|sambaConfigOption|Samba Configuration Option" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|locality" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|olcSchemaConfig" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|labeledURI" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaLogoffTime" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|olcDbIDLcacheSize|IDL cache size in IDLs" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|ieee802Device" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|matchingRuleUse" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaMinPwdAge|Minimum password age, in seconds " +"(default: 0 => allow immediate password change)" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|associatedDomain|RFC1274: domain associated with " +"object" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|mail" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|buildingName|RFC1274: name of building" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|aliasedEntryName" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|janetMailbox|RFC1274: Janet mailbox" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|ipService" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|sambaProfilePath|Roaming profile path" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|displayName|RFC2798: preferred name to be used " +"when displaying entries" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|serialNumber" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaStringOption" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaOptionName" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcTimeLimit" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcTLSRandFile" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcIndexSubstrAnyLen" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|aliasedObjectName" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|sambaUserWorkstations|List of user workstations " +"the user is allowed to logon to" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|homePostalAddress" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|strongAuthenticationUser|RFC2256: a strong " +"authentication user" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|ipHost|Abstraction of a host, an IP device" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|account" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sambaUserWorkstations" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|dITStructureRules" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|referral" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|initials" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|dSAQuality" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|deltaRevocationList|RFC2256: delta revocation " +"list; use ;binary" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|objectClasses|RFC2252: object classes" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|userClass|RFC1274: category of user" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|ipServicePort" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|Attribute|facsimileTelephoneNumber|RFC2256: Facsimile (Fax) " +"Telephone Number" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcRootDN" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|person|RFC2256: a person" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcTLSVerifyClient" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|sn" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|userPassword" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|surname" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|olcObjectClasses|OpenLDAP object classes" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|cACertificate" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|sambaSidEntry" +msgstr "" + +#: -:- +msgid "" +"LDAP|Description|ObjectClass|inetOrgPerson|RFC2798: Internet Organizational " +"Person" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|documentLocation" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|certificateRevocationList" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcRootDSE" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcLastMod" +msgstr "" + +#: -:- +msgid "LDAP|ObjectClass|posixGroup" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|macAddress|MAC address" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|bootParameter|rpc.bootparamd parameter" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|mXRecord" +msgstr "" + +#: -:- +msgid "LDAP|Attribute|olcTLSCACertificatePath" +msgstr "" + #: lib/active_ldap/adapter/ldap.rb:84 msgid "No matches: filter: %s: attributes: %s" msgstr "??????????: ????: %s: ??: %s" @@ -115,6 +2816,10 @@ msgid "Show version" msgstr "????????????" +#: lib/active_ldap/get_text/parser.rb:74 +msgid "Ignored '%{file}'. Solve dependencies first." +msgstr "" + #: lib/active_ldap/attributes.rb:34 msgid "The first argument, name, must not be nil. Please report this as a bug!" msgstr "" @@ -166,7 +2871,7 @@ msgid "salt size must be == 4: %s" msgstr "salt?4????????????: %s" -#: lib/active_ldap/schema.rb:229 +#: lib/active_ldap/schema.rb:44 msgid "Unknown schema group: %s" msgstr "?????????????: %s" @@ -199,34 +2904,34 @@ msgid "scope '%s' must be a Symbol" msgstr "????'%s'????????????????" -#: lib/active_ldap/base.rb:431 +#: lib/active_ldap/base.rb:489 msgid "" "'%s' must be either nil, DN value as String or Array or attributes as Hash" msgstr "" "'%s'?nil?String???DN?DN????Hash??????????????????" "??" -#: lib/active_ldap/base.rb:512 +#: lib/active_ldap/base.rb:570 msgid "%s's DN attribute (%s) isn't set" msgstr "%s?DN??(%s)???????????" -#: lib/active_ldap/base.rb:540 +#: lib/active_ldap/base.rb:598 msgid "Failed to delete LDAP entry: %s" msgstr "LDAP??????????????: %s" -#: lib/active_ldap/base.rb:559 +#: lib/active_ldap/base.rb:617 msgid "entry %s can't be saved" msgstr "????%s?????????" -#: lib/active_ldap/base.rb:580 lib/active_ldap/base.rb:591 +#: lib/active_ldap/base.rb:638 lib/active_ldap/base.rb:649 msgid "wrong number of arguments (%d for 1)" msgstr "??????????(1???????%d???????)" -#: lib/active_ldap/base.rb:699 +#: lib/active_ldap/base.rb:757 msgid "Can't find DN '%s' to reload" msgstr "???????DN '%s'?????????" -#: lib/active_ldap/base.rb:1097 +#: lib/active_ldap/base.rb:1155 msgid "dn_attribute isn't set for this class: %s" msgstr "??????dn_attribute??????????: %s" From codesite-noreply at google.com Fri Aug 17 09:39:44 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Fri, 17 Aug 2007 06:39:44 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r250 - trunk/po/ja Message-ID: Author: koutou Date: Fri Aug 17 06:39:01 2007 New Revision: 250 Modified: trunk/po/ja/active-ldap.po Log: * updated translations. Modified: trunk/po/ja/active-ldap.po ============================================================================== --- trunk/po/ja/active-ldap.po (original) +++ trunk/po/ja/active-ldap.po Fri Aug 17 06:39:01 2007 @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" -"POT-Creation-Date: 2007-08-16 21:20+0900\n" -"PO-Revision-Date: 2007-08-16 21:57+0900\n" +"POT-Creation-Date: 2007-08-16 22:01+0900\n" +"PO-Revision-Date: 2007-08-17 22:38+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -16,1732 +16,1672 @@ "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: -:- -msgid "LDAP|ObjectClass|LDAProotDSE" -msgstr "LDAP???DSA??????(LDAProotDSE)" - -#: -:- -msgid "LDAP|Attribute|olcArgsFile" -msgstr "OpenLDAP??: ?????????(olcArgsFile)" +msgid "LDAP|Attribute|aRecord" +msgstr "A????(aRecord)" #: -:- -msgid "LDAP|Description|Attribute|secretary|RFC1274: DN of secretary" -msgstr "RFC1274: ??????(DN)" +msgid "LDAP|Attribute|aliasedEntryName" +msgstr "?????????(aliasedEntryName)" #: -:- -msgid "LDAP|Attribute|shadowFlag" -msgstr "???????(shadowFlag)" +msgid "LDAP|Attribute|aliasedObjectName" +msgstr "???????????(aliasedObjectName)" #: -:- -msgid "" -"LDAP|Description|Attribute|olcDbCacheFree|Number of extra entries to free " -"when max is reached" -msgstr "??????????????????????" +msgid "LDAP|Attribute|associatedDomain" +msgstr "????????(associatedDomain)" #: -:- -msgid "LDAP|Attribute|domainComponent" -msgstr "??????(domainComponent)" +msgid "LDAP|Attribute|associatedName" +msgstr "??????(associatedName)" #: -:- -msgid "" -"LDAP|Description|ObjectClass|simpleSecurityObject|RFC1274: simple security " -"object" -msgstr "RFC1274: ???????????????" +msgid "LDAP|Attribute|attributeTypes" +msgstr "????(attributeTypes)" #: -:- -msgid "LDAP|ObjectClass|simpleSecurityObject" -msgstr "???????????????(simpleSecurityObject)" +msgid "LDAP|Attribute|audio" +msgstr "??(audio)" #: -:- -msgid "LDAP|Attribute|oncRpcNumber" -msgstr "ONC RPC??(oncRpcNumber)" +msgid "LDAP|Attribute|authorityRevocationList" +msgstr "???????(authorityRevocationList)" #: -:- -msgid "" -"LDAP|Description|ObjectClass|bootableDevice|A device with boot parameters" -msgstr "????????????" +msgid "LDAP|Attribute|bootFile" +msgstr "??????????(bootFile)" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaNextUserRid|Next NT rid to give our for users" -msgstr "??????????NT RID" +msgid "LDAP|Attribute|bootParameter" +msgstr "???????(bootParameter)" #: -:- -msgid "LDAP|Attribute|olcObjectClasses" -msgstr "OpenLDAP??: objectClass(olcObjectClasses)" +msgid "LDAP|Attribute|buildingName" +msgstr "???(buildingName)" #: -:- -msgid "LDAP|Attribute|st" -msgstr "?(st)" +msgid "LDAP|Attribute|businessCategory" +msgstr "??(businessCategory)" #: -:- -msgid "LDAP|Description|Attribute|seeAlso|RFC2256: DN of related object" -msgstr "RFC2256: ??????????????" +msgid "LDAP|Attribute|c" +msgstr "????(c)" #: -:- -msgid "LDAP|Description|Attribute|matchingRules|RFC2252: matching rules" -msgstr "RFC2252: ?????" +msgid "LDAP|Attribute|cACertificate" +msgstr "CA???(cACertificate)" #: -:- -msgid "LDAP|Description|Attribute|sambaShareName|Share Name" -msgstr "???" +msgid "LDAP|Attribute|cNAMERecord" +msgstr "CNAME????(cNAMERecord)" #: -:- -msgid "LDAP|Attribute|objectClass" -msgstr "?????????(objectClass)" +msgid "LDAP|Attribute|carLicense" +msgstr "????(carLicense)" #: -:- -msgid "LDAP|Attribute|olcPasswordHash" -msgstr "OpenLDAP??: ?????????(olcPasswordHash)" +msgid "LDAP|Attribute|certificateRevocationList" +msgstr "???????(certificateRevocationList)" #: -:- -msgid "LDAP|Attribute|manager" -msgstr "???" +msgid "LDAP|Attribute|cn" +msgstr "???(cn)" #: -:- -msgid "LDAP|ObjectClass|olcLdifConfig" -msgstr "OpenLDAP??: LDIF??(olcLdifConfig)" +msgid "LDAP|Attribute|co" +msgstr "??(co)" #: -:- -msgid "LDAP|ObjectClass|posixAccount" -msgstr "POSIX?????" +msgid "LDAP|Attribute|commonName" +msgstr "???(commonName)" #: -:- -msgid "" -"LDAP|Description|ObjectClass|extensibleObject|RFC2252: extensible object" -msgstr "RFC2252: ???????????" +msgid "LDAP|Attribute|countryName" +msgstr "??(countryName)" #: -:- -msgid "LDAP|ObjectClass|extensibleObject" -msgstr "???????????(extensibleObject)" +msgid "LDAP|Attribute|crossCertificatePair" +msgstr "?????(crossCertificatePair)" #: -:- -msgid "" -"LDAP|Description|ObjectClass|shadowAccount|Additional attributes for shadow " -"passwords" -msgstr "??????????????" +msgid "LDAP|Attribute|dITContentRules" +msgstr "???????????????(dITContentRules)" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaLogonToChgPwd|Force Users to logon for " -"password change (default: 0 => off, 2 => on)" -msgstr "?????????????????????????? (?????: 0 => ??, 2 => ??)" +msgid "LDAP|Attribute|dITStructureRules" +msgstr "???????????????(dITStructureRules)" #: -:- -msgid "LDAP|Attribute|sambaSID" -msgstr "Samba: ??????ID(sambaSID)" +msgid "LDAP|Attribute|dSAQuality" +msgstr "DSA??(dSAQuality)" #: -:- -msgid "" -"LDAP|Description|ObjectClass|dSA|RFC2256: a directory system agent (a server)" -msgstr "RFC2256: ????????????????(???)" +msgid "LDAP|Attribute|dc" +msgstr "??????(dc)" #: -:- -msgid "LDAP|Description|Attribute|userPassword|RFC2256/2307: password of user" -msgstr "RFC2256/2307: ?????????" +msgid "LDAP|Attribute|deltaRevocationList" +msgstr "??????(deltaRevocationList)" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaLockoutObservationWindow|Reset time after " -"lockout in minutes (default: 30)" -msgstr "????????????????(?) (?????: 30)" +msgid "LDAP|Attribute|departmentNumber" +msgstr "????(departmentNumber)" #: -:- -msgid "LDAP|Attribute|sambaPwdHistoryLength" -msgstr "Samba: ????????(sambaPwdHistoryLength)" +msgid "LDAP|Attribute|description" +msgstr "??(description)" #: -:- -msgid "LDAP|Attribute|nSRecord" -msgstr "NS????(nSRecord)" +msgid "LDAP|Attribute|destinationIndicator" +msgstr "?????(destinationIndicator)" #: -:- -msgid "LDAP|ObjectClass|sambaIdmapEntry" -msgstr "Samba: ID??????(sambaIdmapEntry)" +msgid "LDAP|Attribute|displayName" +msgstr "???(displayName)" #: -:- -msgid "LDAP|Attribute|olcIndexSubstrIfMaxLen" -msgstr "OpenLDAP??: ????????????????(olcIndexSubstrIfMaxLen)" +msgid "LDAP|Attribute|dmdName" +msgstr "?????????????(dmdName)" #: -:- -msgid "LDAP|Description|Attribute|sambaBoolOption|A boolean option" -msgstr "?????????" +msgid "LDAP|Attribute|documentAuthor" +msgstr "?????(documentAuthor)" #: -:- -msgid "" -"LDAP|Description|Attribute|documentLocation|RFC1274: location of document " -"original" -msgstr "RFC1274: ??????" +msgid "LDAP|Attribute|documentIdentifier" +msgstr "?????(documentIdentifier)" #: -:- -msgid "LDAP|Attribute|olcDbCacheSize" -msgstr "OpenLDAP??: DB??????(olcDbCacheSize)" +msgid "LDAP|Attribute|documentLocation" +msgstr "????(documentLocation)" #: -:- -msgid "LDAP|Attribute|postalCode" -msgstr "????(postalCode)" +msgid "LDAP|Attribute|documentPublisher" +msgstr "?????(documentPublisher)" #: -:- -msgid "LDAP|Attribute|olcDefaultSearchBase" -msgstr "OpenLDAP??: ??????????(olcDefaultSearchBase)" +msgid "LDAP|Attribute|documentTitle" +msgstr "??????(documentTitle)" #: -:- -msgid "" -"LDAP|Description|Attribute|serialNumber|RFC2256: serial number of the entity" -msgstr "RFC2256: ?????????" +msgid "LDAP|Attribute|documentVersion" +msgstr "???????(documentVersion)" #: -:- -msgid "LDAP|Attribute|sambaPasswordHistory" -msgstr "Samba: ???????(sambaPasswordHistory)" +msgid "LDAP|Attribute|domainComponent" +msgstr "??????(domainComponent)" #: -:- -msgid "LDAP|Description|Attribute|sambaOptionName|Option Name" -msgstr "??????" +msgid "LDAP|Attribute|drink" +msgstr "???(drink)" #: -:- -msgid "LDAP|Attribute|olcPasswordCryptSaltFormat" -msgstr "" +msgid "LDAP|Attribute|employeeNumber" +msgstr "?????(employeeNumber)" #: -:- -msgid "LDAP|Attribute|telephoneNumber" -msgstr "" +msgid "LDAP|Attribute|employeeType" +msgstr "?????(employeeType)" #: -:- -msgid "LDAP|Attribute|shadowMax" -msgstr "" +msgid "LDAP|Attribute|facsimileTelephoneNumber" +msgstr "FAX??(facsimileTelephoneNumber)" #: -:- -msgid "LDAP|ObjectClass|ipNetwork" -msgstr "" +msgid "LDAP|Attribute|favouriteDrink" +msgstr "??????(favouriteDrink)" #: -:- -msgid "LDAP|Attribute|olcDbIDLcacheSize" -msgstr "" +msgid "LDAP|Attribute|fax" +msgstr "FAX(fax)" #: -:- -msgid "LDAP|Attribute|olcBackend" -msgstr "" +msgid "LDAP|Attribute|friendlyCountryName" +msgstr "????(friendlyCountryName)" #: -:- -msgid "LDAP|ObjectClass|subentry" -msgstr "" +msgid "LDAP|Attribute|gecos" +msgstr "GECOS(gecos)" #: -:- -msgid "LDAP|Attribute|olcLogLevel" -msgstr "" +msgid "LDAP|Attribute|gidNumber" +msgstr "GID??(gidNumber)" #: -:- -msgid "LDAP|Attribute|facsimileTelephoneNumber" -msgstr "" +msgid "LDAP|Attribute|givenName" +msgstr "??(givenName)" #: -:- -msgid "LDAP|Attribute|sambaLMPassword" -msgstr "" +msgid "LDAP|Attribute|gn" +msgstr "??(gn)" #: -:- -msgid "LDAP|Attribute|shadowExpire" -msgstr "" +msgid "LDAP|Attribute|homeDirectory" +msgstr "?????????(homeDirectory)" #: -:- -msgid "LDAP|Attribute|shadowLastChange" -msgstr "" +msgid "LDAP|Attribute|homePhone" +msgstr "????(homePhone)" #: -:- -msgid "LDAP|ObjectClass|applicationEntity" -msgstr "" +msgid "LDAP|Attribute|homePostalAddress" +msgstr "??????(homePostalAddress)" #: -:- -msgid "LDAP|ObjectClass|ipProtocol" -msgstr "" +msgid "LDAP|Attribute|homeTelephoneNumber" +msgstr "??????(homeTelephoneNumber)" #: -:- -msgid "LDAP|ObjectClass|groupOfNames" -msgstr "" +msgid "LDAP|Attribute|host" +msgstr "???(host)" #: -:- -msgid "LDAP|ObjectClass|subschema" -msgstr "" +msgid "LDAP|Attribute|initials" +msgstr "???(initials)" #: -:- -msgid "LDAP|Attribute|jpegPhoto" -msgstr "" +msgid "LDAP|Attribute|internationaliSDNNumber" +msgstr "??IDSN??(internationaliSDNNumber)" #: -:- -msgid "LDAP|Attribute|employeeNumber" -msgstr "" +msgid "LDAP|Attribute|ipHostNumber" +msgstr "IP: ?????(ipHostNumber)" #: -:- -msgid "LDAP|Description|ObjectClass|sambaShare|Samba Share Section" -msgstr "" +msgid "LDAP|Attribute|ipNetmaskNumber" +msgstr "IP: ????????(ipNetmaskNumber)" #: -:- -msgid "LDAP|ObjectClass|domainRelatedObject" -msgstr "" +msgid "LDAP|Attribute|ipNetworkNumber" +msgstr "IP: ????????(ipNetworkNumber)" #: -:- -msgid "LDAP|Attribute|memberNisNetgroup" -msgstr "" +msgid "LDAP|Attribute|ipProtocolNumber" +msgstr "IP: ???????(ipProtocolNumber)" #: -:- -msgid "LDAP|Attribute|audio" -msgstr "" +msgid "LDAP|Attribute|ipServicePort" +msgstr "IP: ???????(ipServicePort)" #: -:- -msgid "LDAP|ObjectClass|ipHost" -msgstr "" +msgid "LDAP|Attribute|ipServiceProtocol" +msgstr "IP: ?????????(ipServiceProtocol)" #: -:- -msgid "LDAP|Description|Attribute|mail|RFC1274: RFC822 Mailbox" -msgstr "" +msgid "LDAP|Attribute|janetMailbox" +msgstr "JANET????????(janetMailbox)" #: -:- -msgid "LDAP|Description|ObjectClass|pkiCA|RFC2587: PKI certificate authority" -msgstr "" +msgid "LDAP|Attribute|jpegPhoto" +msgstr "JPEG???(jpegPhoto)" #: -:- -msgid "LDAP|Attribute|ipServiceProtocol" -msgstr "" +msgid "LDAP|Attribute|knowledgeInformation" +msgstr "????(knowledgeInformation)" #: -:- -msgid "LDAP|Attribute|olcAttributeOptions" -msgstr "" +msgid "LDAP|Attribute|l" +msgstr "??(l)" #: -:- -msgid "" -"LDAP|Description|ObjectClass|posixAccount|Abstraction of an account with " -"POSIX attributes" -msgstr "" +msgid "LDAP|Attribute|labeledURI" +msgstr "????????URI(labeledURI)" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaBadPasswordCount|Bad password attempt count" -msgstr "" +msgid "LDAP|Attribute|localityName" +msgstr "???(localityName)" #: -:- -msgid "LDAP|Attribute|gn" -msgstr "" +msgid "LDAP|Attribute|loginShell" +msgstr "???????(loginShell)" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaNextGroupRid|Next NT rid to give out for " -"groups" -msgstr "" +msgid "LDAP|Attribute|mDRecord" +msgstr "MD????(mDRecord)" #: -:- -msgid "LDAP|Attribute|sambaNTPassword" -msgstr "" +msgid "LDAP|Attribute|mXRecord" +msgstr "MX????(mXRecord)" #: -:- -msgid "LDAP|ObjectClass|olcBackendConfig" -msgstr "" +msgid "LDAP|Attribute|macAddress" +msgstr "MAC????(macAddress)" #: -:- -msgid "LDAP|Attribute|sambaBadPasswordTime" -msgstr "" +msgid "LDAP|Attribute|mail" +msgstr "???(mail)" #: -:- -msgid "LDAP|Description|Attribute|c|RFC2256: ISO-3166 country 2-letter code" -msgstr "" +msgid "LDAP|Attribute|mailPreferenceOption" +msgstr "??????????(mailPreferenceOption)" #: -:- -msgid "LDAP|Attribute|cNAMERecord" -msgstr "" +msgid "LDAP|Attribute|manager" +msgstr "???(manager)" #: -:- -msgid "LDAP|Description|Attribute|sambaStringListOption|A string list option" -msgstr "" +msgid "LDAP|Attribute|matchingRuleUse" +msgstr "?????????(matchingRuleUse)" #: -:- -msgid "LDAP|Description|Attribute|postOfficeBox|RFC2256: Post Office Box" -msgstr "" +msgid "LDAP|Attribute|matchingRules" +msgstr "?????(matchingRules)" #: -:- -msgid "LDAP|Attribute|host" -msgstr "" +msgid "LDAP|Attribute|member" +msgstr "????(member)" #: -:- -msgid "" -"LDAP|Description|Attribute|olcDbDirtyRead|Allow reads of uncommitted data" -msgstr "" +msgid "LDAP|Attribute|memberNisNetgroup" +msgstr "NIS: ????????????(memberNisNetgroup)" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaPasswordHistory|Concatenated MD4 hashes of " -"the unicode passwords used on this account" -msgstr "" +msgid "LDAP|Attribute|memberUid" +msgstr "?????UID(memberUid)" #: -:- -msgid "LDAP|Description|Attribute|sambaLogonScript|Logon script path" -msgstr "" +msgid "LDAP|Attribute|mobile" +msgstr "????(mobile)" #: -:- -msgid "LDAP|Attribute|memberUid" -msgstr "" +msgid "LDAP|Attribute|mobileTelephoneNumber" +msgstr "???????(mobileTelephoneNumber)" #: -:- -msgid "LDAP|ObjectClass|sambaShare" -msgstr "" +msgid "LDAP|Attribute|nSRecord" +msgstr "NS????(nSRecord)" #: -:- -msgid "LDAP|Attribute|olcDbLockDetect" -msgstr "" +msgid "LDAP|Attribute|nameForms" +msgstr "?????(nameForms)" #: -:- -msgid "LDAP|Attribute|olcAuthzRegexp" -msgstr "" +msgid "LDAP|Attribute|nisMapEntry" +msgstr "NIS: ??????(nisMapEntry)" #: -:- -msgid "LDAP|Description|Attribute|gecos|The GECOS field; the common name" -msgstr "" +msgid "LDAP|Attribute|nisMapName" +msgstr "NIS: ???(nisMapName)" #: -:- -msgid "LDAP|Attribute|userPKCS12" -msgstr "" +msgid "LDAP|Attribute|nisNetgroupTriple" +msgstr "NIS: ???????????(nisNetgroupTriple)" #: -:- -msgid "" -"LDAP|Description|Attribute|subtreeMaximumQuality|RFC1274: Subtree Maximun " -"Quality" -msgstr "" +msgid "LDAP|Attribute|o" +msgstr "??(o)" #: -:- -msgid "" -"LDAP|Description|Attribute|olcDbNoSync|Disable synchronous database writes" -msgstr "" +msgid "LDAP|Attribute|objectClass" +msgstr "?????????(objectClass)" #: -:- -msgid "LDAP|ObjectClass|sambaGroupMapping" -msgstr "" +msgid "LDAP|Attribute|objectClasses" +msgstr "?????????(objectClasses)" #: -:- -msgid "LDAP|Attribute|uidNumber" -msgstr "" +msgid "LDAP|Attribute|olcAccess" +msgstr "OpenLDAP??: ??????(olcAccess)" #: -:- -msgid "LDAP|Attribute|uid" -msgstr "" +msgid "LDAP|Attribute|olcAllows" +msgstr "OpenLDAP??: ??(olcAllows)" #: -:- -msgid "LDAP|Description|ObjectClass|sambaSidEntry|Structural Class for a SID" -msgstr "" +msgid "LDAP|Attribute|olcArgsFile" +msgstr "OpenLDAP??: ?????????(olcArgsFile)" #: -:- -msgid "" -"LDAP|Description|Attribute|preferredLanguage|RFC2798: preferred written or " -"spoken language for a person" -msgstr "" +msgid "LDAP|Attribute|olcAttributeOptions" +msgstr "OpenLDAP??: ???????(olcAttributeOptions)" #: -:- -msgid "LDAP|Attribute|olcDbDirectory" -msgstr "" +msgid "LDAP|Attribute|olcAttributeTypes" +msgstr "OpenLDAP??: ????(olcAttributeTypes)" #: -:- -msgid "LDAP|Description|Attribute|sambaLogoffTime|Timestamp of last logoff" -msgstr "" +msgid "LDAP|Attribute|olcAuthIDRewrite" +msgstr "OpenLDAP??: ??ID????(olcAuthIDRewrite)" #: -:- -msgid "LDAP|Description|ObjectClass|oncRpc|Abstraction of an ONC/RPC binding" -msgstr "" +msgid "LDAP|Attribute|olcAuthzPolicy" +msgstr "OpenLDAP??: ??????(olcAuthzPolicy)" #: -:- -msgid "LDAP|ObjectClass|dNSDomain" -msgstr "" +msgid "LDAP|Attribute|olcAuthzRegexp" +msgstr "OpenLDAP??: ??????(olcAuthzRegexp)" #: -:- -msgid "LDAP|Attribute|sambaLockoutObservationWindow" -msgstr "" +msgid "LDAP|Attribute|olcBackend" +msgstr "OpenLDAP??: ??????(olcBackend)" #: -:- -msgid "LDAP|Attribute|sambaStringListOption" -msgstr "" +msgid "LDAP|Attribute|olcConcurrency" +msgstr "OpenLDAP??: ?????(olcConcurrency)" #: -:- -msgid "LDAP|Attribute|olcRestrict" -msgstr "" +msgid "LDAP|Attribute|olcConfigDir" +msgstr "OpenLDAP??: ????????(olcConfigDir)" #: -:- -msgid "LDAP|Attribute|street" -msgstr "" +msgid "LDAP|Attribute|olcConfigFile" +msgstr "OpenLDAP??: ??????(olcConfigFile)" #: -:- -msgid "LDAP|Attribute|olcTLSDHParamFile" -msgstr "" +msgid "LDAP|Attribute|olcConnMaxPending" +msgstr "OpenLDAP??: ???????(olcConnMaxPending)" #: -:- -msgid "LDAP|Description|Attribute|olcAccess|Access Control List" -msgstr "" +msgid "LDAP|Attribute|olcConnMaxPendingAuth" +msgstr "OpenLDAP??: ?????????(olcConnMaxPendingAuth)" #: -:- -msgid "LDAP|Attribute|loginShell" -msgstr "" +msgid "LDAP|Attribute|olcDatabase" +msgstr "OpenLDAP??: ??????(olcDatabase)" #: -:- -msgid "" -"LDAP|Description|Attribute|cACertificate|RFC2256: X.509 CA certificate, use ;" -"binary" +msgid "LDAP|Attribute|olcDbCacheFree" msgstr "" #: -:- -msgid "LDAP|ObjectClass|sambaSamAccount" -msgstr "" +msgid "LDAP|Attribute|olcDbCacheSize" +msgstr "OpenLDAP??: DB??????(olcDbCacheSize)" #: -:- -msgid "" -"LDAP|Description|ObjectClass|sambaUnixIdPool|Pool for allocating UNIX uids/" -"gids" +msgid "LDAP|Attribute|olcDbCheckpoint" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|labeledURI|RFC2079: Uniform Resource Identifier " -"with optional label" +msgid "LDAP|Attribute|olcDbConfig" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|destinationIndicator|RFC2256: destination " -"indicator" +msgid "LDAP|Attribute|olcDbDirectory" msgstr "" #: -:- -msgid "LDAP|Attribute|x500UniqueIdentifier" +msgid "LDAP|Attribute|olcDbDirtyRead" msgstr "" #: -:- -msgid "LDAP|Attribute|ipProtocolNumber" +msgid "LDAP|Attribute|olcDbIDLcacheSize" msgstr "" #: -:- -msgid "LDAP|Attribute|olcDbCacheFree" +msgid "LDAP|Attribute|olcDbIndex" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|OpenLDAProotDSE|OpenLDAP Root DSE object" +msgid "LDAP|Attribute|olcDbLinearIndex" msgstr "" #: -:- -msgid "LDAP|Attribute|stateOrProvinceName" +msgid "LDAP|Attribute|olcDbLockDetect" msgstr "" #: -:- -msgid "LDAP|ObjectClass|inetOrgPerson" +msgid "LDAP|Attribute|olcDbMode" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaAlgorithmicRidBase" +msgid "LDAP|Attribute|olcDbNoSync" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaNextRid" +msgid "LDAP|Attribute|olcDbSearchStack" msgstr "" #: -:- -msgid "LDAP|Attribute|description" +msgid "LDAP|Attribute|olcDbShmKey" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|mailPreferenceOption|RFC1274: mail preference " -"option" -msgstr "" +msgid "LDAP|Attribute|olcDefaultSearchBase" +msgstr "OpenLDAP??: ??????????(olcDefaultSearchBase)" #: -:- -msgid "LDAP|Attribute|seeAlso" +msgid "LDAP|Attribute|olcDisallows" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|homePhone|RFC1274: home telephone number" +msgid "LDAP|Attribute|olcDitContentRules" msgstr "" #: -:- -msgid "LDAP|Attribute|olcReplicationInterval" +msgid "LDAP|Attribute|olcGentleHUP" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|internationaliSDNNumber|RFC2256: international " -"ISDN number" +msgid "LDAP|Attribute|olcIdleTimeout" msgstr "" #: -:- -msgid "LDAP|Attribute|olcSchemaDN" +msgid "LDAP|Attribute|olcInclude" msgstr "" #: -:- -msgid "LDAP|Attribute|streetAddress" +msgid "LDAP|Attribute|olcIndexSubstrAnyLen" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|uid|RFC1274: user identifier" +msgid "LDAP|Attribute|olcIndexSubstrAnyStep" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|bootFile|Boot image name" -msgstr "" +msgid "LDAP|Attribute|olcIndexSubstrIfMaxLen" +msgstr "OpenLDAP??: ????????????????(olcIndexSubstrIfMaxLen)" #: -:- -msgid "LDAP|Description|ObjectClass|alias|RFC2256: an alias" +msgid "LDAP|Attribute|olcIndexSubstrIfMinLen" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|ipProtocol|Abstraction of an IP protocol" +msgid "LDAP|Attribute|olcLastMod" msgstr "" #: -:- -msgid "LDAP|Attribute|subtreeMaximumQuality" +msgid "LDAP|Attribute|olcLimits" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|loginShell|The path to the login shell" +msgid "LDAP|Attribute|olcLocalSSF" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|personalTitle|RFC1274: personal title" +msgid "LDAP|Attribute|olcLogLevel" msgstr "" #: -:- -msgid "LDAP|ObjectClass|RFC822localPart" +msgid "LDAP|Attribute|olcMaxDerefDepth" msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|olcGlobal|OpenLDAP Global configuration options" +msgid "LDAP|Attribute|olcModuleLoad" msgstr "" #: -:- -msgid "LDAP|Attribute|olcPlugin" +msgid "LDAP|Attribute|olcModulePath" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|documentPublisher|RFC1274: publisher of document" -msgstr "" +msgid "LDAP|Attribute|olcObjectClasses" +msgstr "OpenLDAP??: objectClass(olcObjectClasses)" #: -:- -msgid "LDAP|Attribute|olcReplicaPidFile" +msgid "LDAP|Attribute|olcObjectIdentifier" msgstr "" #: -:- -msgid "LDAP|Attribute|departmentNumber" +msgid "LDAP|Attribute|olcOverlay" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|sambaStringOption|A string option" +msgid "LDAP|Attribute|olcPasswordCryptSaltFormat" msgstr "" #: -:- -msgid "LDAP|Attribute|favouriteDrink" -msgstr "" +msgid "LDAP|Attribute|olcPasswordHash" +msgstr "OpenLDAP??: ?????????(olcPasswordHash)" #: -:- -msgid "LDAP|Attribute|olcDbDirtyRead" +msgid "LDAP|Attribute|olcPidFile" msgstr "" #: -:- -msgid "LDAP|Attribute|ipHostNumber" +msgid "LDAP|Attribute|olcPlugin" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaBadPasswordTime|Time of the last bad " -"password attempt" +msgid "LDAP|Attribute|olcPluginLogFile" msgstr "" #: -:- -msgid "LDAP|Attribute|shadowMin" +msgid "LDAP|Attribute|olcReadOnly" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaGroupType" +msgid "LDAP|Attribute|olcReferral" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|olcDitContentRules|OpenLDAP DIT content rules" +msgid "LDAP|Attribute|olcReplica" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|description|RFC2256: descriptive information" +msgid "LDAP|Attribute|olcReplicaArgsFile" msgstr "" #: -:- -msgid "LDAP|Attribute|givenName" +msgid "LDAP|Attribute|olcReplicaPidFile" msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|domainRelatedObject|RFC1274: an object related " -"to an domain" +msgid "LDAP|Attribute|olcReplicationInterval" msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|organizationalPerson|RFC2256: an organizational " -"person" +msgid "LDAP|Attribute|olcReplogFile" msgstr "" #: -:- -msgid "LDAP|Attribute|supportedApplicationContext" +msgid "LDAP|Attribute|olcRequires" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|olcDbCheckpoint|Database checkpoint interval in " -"kbytes and minutes" +msgid "LDAP|Attribute|olcRestrict" msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|ipService|Abstraction an Internet Protocol " -"service" +msgid "LDAP|Attribute|olcReverseLookup" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaHomeDrive" +msgid "LDAP|Attribute|olcRootDN" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaLockoutThreshold|Lockout users after bad " -"logon attempts (default: 0 => off)" +msgid "LDAP|Attribute|olcRootDSE" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaNextGroupRid" +msgid "LDAP|Attribute|olcRootPW" msgstr "" #: -:- -msgid "LDAP|Attribute|commonName" +msgid "LDAP|Attribute|olcSaslHost" msgstr "" #: -:- -msgid "LDAP|Attribute|dmdName" +msgid "LDAP|Attribute|olcSaslRealm" msgstr "" #: -:- -msgid "LDAP|Attribute|textEncodedORAddress" +msgid "LDAP|Attribute|olcSaslSecProps" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaNTPassword|MD4 hash of the unicode password" +msgid "LDAP|Attribute|olcSchemaDN" msgstr "" #: -:- -msgid "LDAP|ObjectClass|bootableDevice" +msgid "LDAP|Attribute|olcSecurity" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|olcDbMode|Unix permissions of database files" +msgid "LDAP|Attribute|olcSizeLimit" msgstr "" #: -:- -msgid "LDAP|Attribute|olcSecurity" +msgid "LDAP|Attribute|olcSockbufMaxIncoming" msgstr "" #: -:- -msgid "LDAP|Attribute|olcDbIndex" +msgid "LDAP|Attribute|olcSockbufMaxIncomingAuth" msgstr "" #: -:- -msgid "LDAP|Attribute|organizationalStatus" +msgid "LDAP|Attribute|olcSrvtab" msgstr "" #: -:- -msgid "LDAP|Attribute|olcAuthIDRewrite" +msgid "LDAP|Attribute|olcSubordinate" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|dmdName|RFC2256: name of DMD" +msgid "LDAP|Attribute|olcSuffix" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|ipNetworkNumber|IP network" +msgid "LDAP|Attribute|olcSyncrepl" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|ipNetwork|Abstraction of an IP network" +msgid "LDAP|Attribute|olcTLSCACertificateFile" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|uidNumber|An integer uniquely identifying a user " -"in an administrative domain" +msgid "LDAP|Attribute|olcTLSCACertificatePath" msgstr "" #: -:- -msgid "LDAP|ObjectClass|residentialPerson" +msgid "LDAP|Attribute|olcTLSCRLCheck" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|sambaTrustPassword|Samba Trust Password" +msgid "LDAP|Attribute|olcTLSCertificateFile" msgstr "" #: -:- -msgid "LDAP|Attribute|olcDatabase" +msgid "LDAP|Attribute|olcTLSCertificateKeyFile" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|sambaGroupType|NT Group Type" +msgid "LDAP|Attribute|olcTLSCipherSuite" msgstr "" #: -:- -msgid "LDAP|Attribute|secretary" +msgid "LDAP|Attribute|olcTLSDHParamFile" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|postalCode|RFC2256: postal code" +msgid "LDAP|Attribute|olcTLSRandFile" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaPwdMustChange" +msgid "LDAP|Attribute|olcTLSVerifyClient" msgstr "" #: -:- -msgid "LDAP|Attribute|attributeTypes" +msgid "LDAP|Attribute|olcThreads" msgstr "" #: -:- -msgid "LDAP|Attribute|sOARecord" +msgid "LDAP|Attribute|olcTimeLimit" msgstr "" #: -:- -msgid "LDAP|ObjectClass|userSecurityInformation" +msgid "LDAP|Attribute|olcToolThreads" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|owner|RFC2256: owner (of the object)" +msgid "LDAP|Attribute|olcUpdateDN" msgstr "" #: -:- -msgid "LDAP|Attribute|olcDbShmKey" +msgid "LDAP|Attribute|olcUpdateRef" msgstr "" #: -:- -msgid "LDAP|ObjectClass|olcOverlayConfig" -msgstr "" +msgid "LDAP|Attribute|oncRpcNumber" +msgstr "ONC RPC??(oncRpcNumber)" #: -:- -msgid "LDAP|Description|ObjectClass|sambaDomain|Samba Domain Information" +msgid "LDAP|Attribute|organizationName" msgstr "" #: -:- -msgid "LDAP|Attribute|olcRequires" +msgid "LDAP|Attribute|organizationalStatus" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|uidObject|RFC2377: uid object" +msgid "LDAP|Attribute|organizationalUnitName" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|attributeTypes|RFC2252: attribute types" +msgid "LDAP|Attribute|otherMailbox" msgstr "" #: -:- -msgid "LDAP|Attribute|olcReverseLookup" +msgid "LDAP|Attribute|ou" msgstr "" #: -:- -msgid "LDAP|ObjectClass|pilotPerson" +msgid "LDAP|Attribute|owner" msgstr "" #: -:- -msgid "LDAP|Attribute|olcConfigDir" +msgid "LDAP|Attribute|pager" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|sambaHomePath|Home directory UNC path" +msgid "LDAP|Attribute|pagerTelephoneNumber" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|associatedName|RFC1274: DN of entry associated " -"with domain" +msgid "LDAP|Attribute|personalSignature" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|givenName|RFC2256: first name(s) for which the " -"entity is known by" +msgid "LDAP|Attribute|personalTitle" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaRefuseMachinePwdChange" +msgid "LDAP|Attribute|photo" msgstr "" #: -:- -msgid "LDAP|Attribute|organizationalUnitName" +msgid "LDAP|Attribute|physicalDeliveryOfficeName" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|authorityRevocationList|RFC2256: X.509 authority " -"revocation list, use ;binary" +msgid "LDAP|Attribute|postOfficeBox" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|presentationAddress|RFC2256: presentation address" +msgid "LDAP|Attribute|postalAddress" msgstr "" #: -:- -msgid "LDAP|ObjectClass|labeledURIObject" -msgstr "" +msgid "LDAP|Attribute|postalCode" +msgstr "????(postalCode)" #: -:- -msgid "LDAP|Description|Attribute|sambaAcctFlags|Account Flags" +msgid "LDAP|Attribute|preferredDeliveryMethod" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaPwdMustChange|Timestamp of when the password " -"will expire" +msgid "LDAP|Attribute|preferredLanguage" msgstr "" #: -:- -msgid "LDAP|Attribute|homeDirectory" +msgid "LDAP|Attribute|presentationAddress" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|host|RFC1274: host computer" +msgid "LDAP|Attribute|ref" msgstr "" #: -:- -msgid "LDAP|Attribute|olcConcurrency" +msgid "LDAP|Attribute|registeredAddress" msgstr "" #: -:- -msgid "LDAP|Attribute|olcPidFile" +msgid "LDAP|Attribute|rfc822Mailbox" msgstr "" #: -:- -msgid "LDAP|ObjectClass|oncRpc" +msgid "LDAP|Attribute|roleOccupant" msgstr "" #: -:- -msgid "LDAP|ObjectClass|cRLDistributionPoint" +msgid "LDAP|Attribute|roomNumber" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|objectClass|RFC2256: object classes of the entity" +msgid "LDAP|Attribute|sOARecord" msgstr "" #: -:- -msgid "LDAP|Attribute|subtreeSpecification" +msgid "LDAP|Attribute|sambaAcctFlags" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|sambaConfig|Samba Configuration Section" +msgid "LDAP|Attribute|sambaAlgorithmicRidBase" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|initials|RFC2256: initials of some or all of " -"names, but not the surname(s)." +msgid "LDAP|Attribute|sambaBadPasswordCount" msgstr "" #: -:- -msgid "LDAP|Attribute|documentTitle" +msgid "LDAP|Attribute|sambaBadPasswordTime" msgstr "" #: -:- -msgid "LDAP|Attribute|searchGuide" +msgid "LDAP|Attribute|sambaBoolOption" msgstr "" #: -:- -msgid "LDAP|Attribute|olcReadOnly" +msgid "LDAP|Attribute|sambaDomainName" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|preferredDeliveryMethod|RFC2256: preferred " -"delivery method" +msgid "LDAP|Attribute|sambaForceLogoff" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|dc|RFC1274/2247: domain component" +msgid "LDAP|Attribute|sambaGroupType" msgstr "" #: -:- -msgid "LDAP|Attribute|uniqueMember" +msgid "LDAP|Attribute|sambaHomeDrive" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaLockoutDuration|Lockout duration in minutes " -"(default: 30, -1 => forever)" +msgid "LDAP|Attribute|sambaHomePath" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaBoolOption" +msgid "LDAP|Attribute|sambaIntegerOption" msgstr "" #: -:- -msgid "LDAP|Attribute|pagerTelephoneNumber" +msgid "LDAP|Attribute|sambaKickoffTime" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sn|RFC2256: last (family) name(s) for which the " -"entity is known by" +msgid "LDAP|Attribute|sambaLMPassword" msgstr "" #: -:- -msgid "LDAP|Attribute|shadowInactive" +msgid "LDAP|Attribute|sambaLockoutDuration" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|carLicense|RFC2798: vehicle license or " -"registration plate" +msgid "LDAP|Attribute|sambaLockoutObservationWindow" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|knowledgeInformation|RFC2256: knowledge " -"information" +msgid "LDAP|Attribute|sambaLockoutThreshold" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|pager|RFC1274: pager telephone number" +msgid "LDAP|Attribute|sambaLogoffTime" msgstr "" #: -:- -msgid "LDAP|ObjectClass|olcModuleList" +msgid "LDAP|Attribute|sambaLogonHours" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|sambaSID|Security ID" +msgid "LDAP|Attribute|sambaLogonScript" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|sambaSIDList|Security ID List" +msgid "LDAP|Attribute|sambaLogonTime" msgstr "" #: -:- -msgid "LDAP|Attribute|olcToolThreads" +msgid "LDAP|Attribute|sambaLogonToChgPwd" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|sambaLogonHours|Logon Hours" +msgid "LDAP|Attribute|sambaMaxPwdAge" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaHomePath" +msgid "LDAP|Attribute|sambaMinPwdAge" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|co|RFC1274: friendly country name" +msgid "LDAP|Attribute|sambaMinPwdLength" msgstr "" #: -:- -msgid "LDAP|Attribute|nameForms" +msgid "LDAP|Attribute|sambaMungedDial" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|audio|RFC1274: audio (u-law)" +msgid "LDAP|Attribute|sambaNTPassword" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|crossCertificatePair|RFC2256: X.509 cross " -"certificate pair, use ;binary" +msgid "LDAP|Attribute|sambaNextGroupRid" msgstr "" #: -:- -msgid "LDAP|Attribute|olcDbSearchStack" +msgid "LDAP|Attribute|sambaNextRid" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|telephoneNumber|RFC2256: Telephone Number" +msgid "LDAP|Attribute|sambaNextUserRid" msgstr "" #: -:- -msgid "LDAP|Attribute|olcReplogFile" +msgid "LDAP|Attribute|sambaOptionName" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|title|RFC2256: title associated with the entity" -msgstr "" +msgid "LDAP|Attribute|sambaPasswordHistory" +msgstr "Samba: ???????(sambaPasswordHistory)" #: -:- -msgid "" -"LDAP|Description|Attribute|x500UniqueIdentifier|RFC2256: X.500 unique " -"identifier" +msgid "LDAP|Attribute|sambaPrimaryGroupSID" msgstr "" #: -:- -msgid "LDAP|Attribute|organizationName" +msgid "LDAP|Attribute|sambaProfilePath" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|searchGuide|RFC2256: search guide, deprecated by " -"enhancedSearchGuide" +msgid "LDAP|Attribute|sambaPwdCanChange" msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|applicationProcess|RFC2256: an application " -"process" -msgstr "" +msgid "LDAP|Attribute|sambaPwdHistoryLength" +msgstr "Samba: ????????(sambaPwdHistoryLength)" #: -:- -msgid "LDAP|Description|ObjectClass|pkiUser|RFC2587: a PKI user" +msgid "LDAP|Attribute|sambaPwdLastSet" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|deltaCRL|RFC2587: PKI user" +msgid "LDAP|Attribute|sambaPwdMustChange" msgstr "" #: -:- -msgid "LDAP|Attribute|otherMailbox" +msgid "LDAP|Attribute|sambaRefuseMachinePwdChange" msgstr "" #: -:- -msgid "LDAP|Attribute|mobileTelephoneNumber" -msgstr "" +msgid "LDAP|Attribute|sambaSID" +msgstr "Samba: ??????ID(sambaSID)" #: -:- -msgid "LDAP|ObjectClass|qualityLabelledData" +msgid "LDAP|Attribute|sambaSIDList" msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|organizationalUnit|RFC2256: an organizational " -"unit" +msgid "LDAP|Attribute|sambaShareName" msgstr "" #: -:- -msgid "LDAP|Attribute|presentationAddress" +msgid "LDAP|Attribute|sambaStringListOption" msgstr "" #: -:- -msgid "LDAP|ObjectClass|sambaConfigOption" +msgid "LDAP|Attribute|sambaStringOption" msgstr "" #: -:- -msgid "LDAP|Attribute|olcSuffix" +msgid "LDAP|Attribute|sambaTrustFlags" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|street|RFC2256: street address of this object" +msgid "LDAP|Attribute|sambaUserWorkstations" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|postalAddress|RFC2256: postal address" +msgid "LDAP|Attribute|searchGuide" msgstr "" #: -:- -msgid "LDAP|Attribute|documentPublisher" +msgid "LDAP|Attribute|secretary" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|olcLdifConfig|LDIF backend configuration" -msgstr "" +msgid "LDAP|Attribute|seeAlso" +msgstr "??(seeAlso)" #: -:- -msgid "LDAP|Description|ObjectClass|device|RFC2256: a device" +msgid "LDAP|Attribute|serialNumber" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaMungedDial|Base64 encoded user parameter " -"string" +msgid "LDAP|Attribute|shadowExpire" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|sambaLMPassword|LanManager Password" -msgstr "" +msgid "LDAP|Attribute|shadowFlag" +msgstr "???????(shadowFlag)" #: -:- -msgid "LDAP|Attribute|macAddress" +msgid "LDAP|Attribute|shadowInactive" msgstr "" #: -:- -msgid "LDAP|ObjectClass|groupOfUniqueNames" +msgid "LDAP|Attribute|shadowLastChange" msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|sambaIdmapEntry|Mapping from a SID to an ID" +msgid "LDAP|Attribute|shadowMax" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|olcDbSearchStack|Depth of search stack in IDLs" +msgid "LDAP|Attribute|shadowMin" msgstr "" #: -:- -msgid "LDAP|Attribute|owner" +msgid "LDAP|Attribute|shadowWarning" msgstr "" #: -:- -msgid "LDAP|Attribute|olcSrvtab" +msgid "LDAP|Attribute|sn" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|olcArgsFile|File for slapd command line options" -msgstr "" +msgid "LDAP|Attribute|st" +msgstr "?(st)" #: -:- -msgid "LDAP|Attribute|olcSaslRealm" +msgid "LDAP|Attribute|stateOrProvinceName" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|employeeType|RFC2798: type of employment for a " -"person" +msgid "LDAP|Attribute|street" msgstr "" #: -:- -msgid "LDAP|Attribute|crossCertificatePair" +msgid "LDAP|Attribute|streetAddress" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|documentVersion|RFC1274: version of document" +msgid "LDAP|Attribute|subtreeMaximumQuality" msgstr "" #: -:- -msgid "LDAP|Attribute|olcConfigFile" +msgid "LDAP|Attribute|subtreeMinimumQuality" msgstr "" #: -:- -msgid "LDAP|Attribute|olcDbCheckpoint" +msgid "LDAP|Attribute|subtreeSpecification" msgstr "" #: -:- -msgid "LDAP|Attribute|ou" +msgid "LDAP|Attribute|supportedAlgorithms" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaLogonTime" +msgid "LDAP|Attribute|supportedApplicationContext" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|uniqueMember|RFC2256: unique member of a group" +msgid "LDAP|Attribute|surname" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaMaxPwdAge|Maximum password age, in seconds " -"(default: -1 => never expire passwords)" +msgid "LDAP|Attribute|telephoneNumber" msgstr "" #: -:- -msgid "LDAP|Attribute|olcIndexSubstrAnyStep" +msgid "LDAP|Attribute|teletexTerminalIdentifier" msgstr "" #: -:- -msgid "LDAP|ObjectClass|organization" +msgid "LDAP|Attribute|telexNumber" msgstr "" #: -:- -msgid "LDAP|Attribute|olcLocalSSF" +msgid "LDAP|Attribute|textEncodedORAddress" msgstr "" #: -:- -msgid "LDAP|Attribute|teletexTerminalIdentifier" +msgid "LDAP|Attribute|title" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaNextRid|Next NT rid to give out for anything" +msgid "LDAP|Attribute|uid" msgstr "" #: -:- -msgid "LDAP|ObjectClass|sambaDomain" +msgid "LDAP|Attribute|uidNumber" msgstr "" #: -:- -msgid "LDAP|Attribute|supportedAlgorithms" +msgid "LDAP|Attribute|uniqueMember" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|locality|RFC2256: a locality" +msgid "LDAP|Attribute|userCertificate" msgstr "" #: -:- -msgid "LDAP|ObjectClass|certificationAuthority-V2" +msgid "LDAP|Attribute|userClass" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaMungedDial" +msgid "LDAP|Attribute|userPKCS12" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|olcModuleList|OpenLDAP dynamic module info" +msgid "LDAP|Attribute|userPassword" msgstr "" #: -:- -msgid "LDAP|Attribute|ref" +msgid "LDAP|Attribute|userSMIMECertificate" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaLogonToChgPwd" +msgid "LDAP|Attribute|userid" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|homeDirectory|The absolute path to the home " -"directory" +msgid "LDAP|Attribute|x121Address" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|ou|RFC2256: organizational unit this object " -"belongs to" +msgid "LDAP|Attribute|x500UniqueIdentifier" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|sambaDomainName|Windows NT domain to which the " -"user belongs" +"LDAP|Description|Attribute|aliasedObjectName|RFC2256: name of aliased object" msgstr "" #: -:- -msgid "LDAP|Attribute|gidNumber" +msgid "" +"LDAP|Description|Attribute|associatedDomain|RFC1274: domain associated with " +"object" msgstr "" #: -:- msgid "" -"LDAP|Description|ObjectClass|labeledURIObject|RFC2079: object that contains " -"the URI attribute type" +"LDAP|Description|Attribute|associatedName|RFC1274: DN of entry associated " +"with domain" msgstr "" #: -:- -msgid "LDAP|Attribute|olcMaxDerefDepth" +msgid "LDAP|Description|Attribute|attributeTypes|RFC2252: attribute types" msgstr "" #: -:- -msgid "LDAP|ObjectClass|uidObject" +msgid "LDAP|Description|Attribute|audio|RFC1274: audio (u-law)" msgstr "" #: -:- -msgid "LDAP|ObjectClass|deltaCRL" +msgid "" +"LDAP|Description|Attribute|authorityRevocationList|RFC2256: X.509 authority " +"revocation list, use ;binary" msgstr "" #: -:- -msgid "LDAP|Attribute|destinationIndicator" +msgid "LDAP|Description|Attribute|bootFile|Boot image name" msgstr "" #: -:- -msgid "LDAP|Attribute|gecos" +msgid "LDAP|Description|Attribute|bootParameter|rpc.bootparamd parameter" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaForceLogoff|Disconnect Users outside logon " -"hours (default: -1 => off, 0 => on)" +msgid "LDAP|Description|Attribute|buildingName|RFC1274: name of building" msgstr "" #: -:- -msgid "LDAP|Attribute|userClass" +msgid "LDAP|Description|Attribute|businessCategory|RFC2256: business category" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|st|RFC2256: state or province which this object " -"resides in" +"LDAP|Description|Attribute|cACertificate|RFC2256: X.509 CA certificate, use ;" +"binary" msgstr "" #: -:- -msgid "LDAP|ObjectClass|organizationalRole" +msgid "" +"LDAP|Description|Attribute|carLicense|RFC2798: vehicle license or " +"registration plate" msgstr "" #: -:- -msgid "LDAP|Attribute|displayName" +msgid "" +"LDAP|Description|Attribute|certificateRevocationList|RFC2256: X.509 " +"certificate revocation list, use ;binary" msgstr "" #: -:- -msgid "LDAP|Attribute|olcSyncrepl" -msgstr "" +msgid "" +"LDAP|Description|Attribute|cn|RFC2256: common name(s) for which the entity " +"is known by" +msgstr "RFC2256: ???????????" #: -:- -msgid "LDAP|Attribute|sambaMinPwdAge" +msgid "LDAP|Description|Attribute|co|RFC1274: friendly country name" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|physicalDeliveryOfficeName|RFC2256: Physical " -"Delivery Office Name" +"LDAP|Description|Attribute|crossCertificatePair|RFC2256: X.509 cross " +"certificate pair, use ;binary" msgstr "" #: -:- -msgid "LDAP|Attribute|olcDisallows" +msgid "LDAP|Description|Attribute|c|RFC2256: ISO-3166 country 2-letter code" msgstr "" #: -:- -msgid "LDAP|ObjectClass|pilotOrganization" +msgid "LDAP|Description|Attribute|dSAQuality|RFC1274: DSA Quality" msgstr "" #: -:- -msgid "LDAP|ObjectClass|olcDatabaseConfig" +msgid "LDAP|Description|Attribute|dc|RFC1274/2247: domain component" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|userSMIMECertificate|RFC2798: PKCS#7 SignedData " -"used to support S/MIME" -msgstr "" - -#: -:- -msgid "LDAP|Attribute|documentIdentifier" +"LDAP|Description|Attribute|deltaRevocationList|RFC2256: delta revocation " +"list; use ;binary" msgstr "" #: -:- -msgid "LDAP|Attribute|olcGentleHUP" +msgid "" +"LDAP|Description|Attribute|departmentNumber|RFC2798: identifies a department " +"within an organization" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|drink|RFC1274: favorite drink" +msgid "LDAP|Description|Attribute|description|RFC2256: descriptive information" msgstr "" #: -:- msgid "" -"LDAP|Description|ObjectClass|olcBackendConfig|OpenLDAP Backend-specific " -"options" +"LDAP|Description|Attribute|destinationIndicator|RFC2256: destination " +"indicator" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|documentAuthor|RFC1274: DN of author of document" +"LDAP|Description|Attribute|displayName|RFC2798: preferred name to be used " +"when displaying entries" msgstr "" #: -:- -msgid "LDAP|Attribute|buildingName" +msgid "LDAP|Description|Attribute|dmdName|RFC2256: name of DMD" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|olcDbCacheSize|Entry cache size in entries" +msgid "" +"LDAP|Description|Attribute|documentAuthor|RFC1274: DN of author of document" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|dcObject|RFC2247: domain component object" +msgid "" +"LDAP|Description|Attribute|documentIdentifier|RFC1274: unique identifier of " +"document" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|sambaLogonTime|Timestamp of last logon" -msgstr "" +msgid "" +"LDAP|Description|Attribute|documentLocation|RFC1274: location of document " +"original" +msgstr "RFC1274: ??????" #: -:- -msgid "LDAP|Attribute|shadowWarning" +msgid "" +"LDAP|Description|Attribute|documentPublisher|RFC1274: publisher of document" msgstr "" #: -:- -msgid "LDAP|ObjectClass|shadowAccount" +msgid "LDAP|Description|Attribute|documentTitle|RFC1274: title of document" msgstr "" #: -:- -msgid "LDAP|ObjectClass|olcFrontendConfig" +msgid "LDAP|Description|Attribute|documentVersion|RFC1274: version of document" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|olcAttributeTypes|OpenLDAP attributeTypes" +msgid "LDAP|Description|Attribute|drink|RFC1274: favorite drink" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|olcDbLockDetect|Deadlock detection algorithm" +msgid "" +"LDAP|Description|Attribute|employeeNumber|RFC2798: numerically identifies an " +"employee within an organization" msgstr "" #: -:- -msgid "LDAP|Attribute|olcSaslSecProps" +msgid "" +"LDAP|Description|Attribute|employeeType|RFC2798: type of employment for a " +"person" msgstr "" #: -:- -msgid "LDAP|Attribute|personalTitle" +msgid "" +"LDAP|Description|Attribute|facsimileTelephoneNumber|RFC2256: Facsimile (Fax) " +"Telephone Number" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaKickoffTime" +msgid "LDAP|Description|Attribute|gecos|The GECOS field; the common name" msgstr "" #: -:- -msgid "LDAP|ObjectClass|room" +msgid "" +"LDAP|Description|Attribute|gidNumber|An integer uniquely identifying a group " +"in an administrative domain" msgstr "" #: -:- -msgid "LDAP|ObjectClass|sambaUnixIdPool" +msgid "" +"LDAP|Description|Attribute|givenName|RFC2256: first name(s) for which the " +"entity is known by" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaLockoutDuration" +msgid "" +"LDAP|Description|Attribute|homeDirectory|The absolute path to the home " +"directory" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaMinPwdLength" +msgid "LDAP|Description|Attribute|homePhone|RFC1274: home telephone number" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|mobile|RFC1274: mobile telephone number" +msgid "" +"LDAP|Description|Attribute|homePostalAddress|RFC1274: home postal address" msgstr "" #: -:- -msgid "LDAP|Attribute|cn" -msgstr "???(cn)" - -#: -:- -msgid "LDAP|Attribute|sambaBadPasswordCount" +msgid "LDAP|Description|Attribute|host|RFC1274: host computer" msgstr "" #: -:- -msgid "LDAP|Attribute|co" +msgid "" +"LDAP|Description|Attribute|initials|RFC2256: initials of some or all of " +"names, but not the surname(s)." msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|gidNumber|An integer uniquely identifying a group " -"in an administrative domain" +"LDAP|Description|Attribute|internationaliSDNNumber|RFC2256: international " +"ISDN number" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|olcSchemaConfig|OpenLDAP schema object" +msgid "LDAP|Description|Attribute|ipHostNumber|IP address" msgstr "" #: -:- -msgid "LDAP|ObjectClass|olcIncludeFile" +msgid "LDAP|Description|Attribute|ipNetmaskNumber|IP netmask" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|ieee802Device|A device with a MAC address" +msgid "LDAP|Description|Attribute|ipNetworkNumber|IP network" msgstr "" #: -:- -msgid "LDAP|ObjectClass|domain" +msgid "LDAP|Description|Attribute|janetMailbox|RFC1274: Janet mailbox" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|sambaIntegerOption|An integer option" +msgid "LDAP|Description|Attribute|jpegPhoto|RFC2798: a JPEG image" msgstr "" #: -:- -msgid "LDAP|Attribute|olcUpdateDN" +msgid "" +"LDAP|Description|Attribute|knowledgeInformation|RFC2256: knowledge " +"information" msgstr "" #: -:- -msgid "LDAP|Attribute|internationaliSDNNumber" +msgid "" +"LDAP|Description|Attribute|labeledURI|RFC2079: Uniform Resource Identifier " +"with optional label" msgstr "" #: -:- -msgid "LDAP|ObjectClass|sambaConfig" +msgid "LDAP|Description|Attribute|loginShell|The path to the login shell" msgstr "" #: -:- -msgid "LDAP|ObjectClass|strongAuthenticationUser" +msgid "" +"LDAP|Description|Attribute|l|RFC2256: locality which this object resides in" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|nisObject|An entry in a NIS map" +msgid "LDAP|Description|Attribute|macAddress|MAC address" msgstr "" #: -:- -msgid "LDAP|Attribute|fax" +msgid "" +"LDAP|Description|Attribute|mailPreferenceOption|RFC1274: mail preference " +"option" msgstr "" #: -:- -msgid "LDAP|Attribute|telexNumber" +msgid "LDAP|Description|Attribute|mail|RFC1274: RFC822 Mailbox" msgstr "" #: -:- -msgid "LDAP|Attribute|personalSignature" +msgid "LDAP|Description|Attribute|manager|RFC1274: DN of manager" msgstr "" #: -:- -msgid "LDAP|Attribute|carLicense" +msgid "LDAP|Description|Attribute|matchingRuleUse|RFC2252: matching rule uses" msgstr "" #: -:- -msgid "LDAP|Attribute|drink" -msgstr "" +msgid "LDAP|Description|Attribute|matchingRules|RFC2252: matching rules" +msgstr "RFC2252: ?????" #: -:- -msgid "LDAP|Attribute|x121Address" +msgid "LDAP|Description|Attribute|member|RFC2256: member of a group" msgstr "" #: -:- -msgid "LDAP|Attribute|roleOccupant" +msgid "LDAP|Description|Attribute|mobile|RFC1274: mobile telephone number" msgstr "" #: -:- -msgid "LDAP|Attribute|bootFile" +msgid "LDAP|Description|Attribute|nisNetgroupTriple|Netgroup triple" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|userPKCS12|RFC2798: personal identity " -"information, a PKCS #12 PFX" +msgid "LDAP|Description|Attribute|objectClasses|RFC2252: object classes" msgstr "" #: -:- -msgid "LDAP|Attribute|documentAuthor" +msgid "" +"LDAP|Description|Attribute|objectClass|RFC2256: object classes of the entity" msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|olcDatabaseConfig|OpenLDAP Database-specific " -"options" +msgid "LDAP|Description|Attribute|olcAccess|Access Control List" msgstr "" #: -:- -msgid "LDAP|Attribute|associatedDomain" +msgid "LDAP|Description|Attribute|olcAllows|Allowed set of deprecated features" msgstr "" #: -:- msgid "" -"LDAP|Description|ObjectClass|sambaSamAccount|Samba 3.0 Auxilary SAM Account" +"LDAP|Description|Attribute|olcArgsFile|File for slapd command line options" msgstr "" #: -:- -msgid "LDAP|Attribute|olcThreads" +msgid "LDAP|Description|Attribute|olcAttributeTypes|OpenLDAP attributeTypes" msgstr "" #: -:- -msgid "LDAP|Attribute|olcDbConfig" +msgid "LDAP|Description|Attribute|olcBackend|A type of backend" msgstr "" #: -:- -msgid "LDAP|ObjectClass|dmd" +msgid "" +"LDAP|Description|Attribute|olcConfigDir|Directory for slapd configuration " +"backend" msgstr "" #: -:- -msgid "LDAP|Attribute|userid" +msgid "" +"LDAP|Description|Attribute|olcConfigFile|File for slapd configuration " +"directives" msgstr "" #: -:- msgid "" -"LDAP|Description|ObjectClass|applicationEntity|RFC2256: an application entity" +"LDAP|Description|Attribute|olcDatabase|The backend type for a database " +"instance" msgstr "" #: -:- -msgid "LDAP|Attribute|postOfficeBox" -msgstr "" +msgid "" +"LDAP|Description|Attribute|olcDbCacheFree|Number of extra entries to free " +"when max is reached" +msgstr "??????????????????????" #: -:- -msgid "LDAP|Attribute|olcSaslHost" +msgid "LDAP|Description|Attribute|olcDbCacheSize|Entry cache size in entries" msgstr "" #: -:- -msgid "LDAP|Attribute|olcPluginLogFile" +msgid "" +"LDAP|Description|Attribute|olcDbCheckpoint|Database checkpoint interval in " +"kbytes and minutes" msgstr "" #: -:- msgid "" -"LDAP|Description|ObjectClass|userSecurityInformation|RFC2256: a user " -"security information" +"LDAP|Description|Attribute|olcDbConfig|BerkeleyDB DB_CONFIG configuration " +"directives" msgstr "" #: -:- -msgid "LDAP|Attribute|olcTLSCertificateFile" +msgid "" +"LDAP|Description|Attribute|olcDbDirectory|Directory for database content" msgstr "" #: -:- -msgid "LDAP|ObjectClass|applicationProcess" +msgid "" +"LDAP|Description|Attribute|olcDbDirtyRead|Allow reads of uncommitted data" msgstr "" #: -:- -msgid "LDAP|ObjectClass|sambaTrustPassword" +msgid "LDAP|Description|Attribute|olcDbIDLcacheSize|IDL cache size in IDLs" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|olcConfig|OpenLDAP configuration object" +msgid "LDAP|Description|Attribute|olcDbIndex|Attribute index parameters" msgstr "" #: -:- -msgid "LDAP|Attribute|c" +msgid "" +"LDAP|Description|Attribute|olcDbLinearIndex|Index attributes one at a time" msgstr "" #: -:- -msgid "LDAP|Attribute|olcTLSCRLCheck" +msgid "LDAP|Description|Attribute|olcDbLockDetect|Deadlock detection algorithm" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|dSAQuality|RFC1274: DSA Quality" +msgid "LDAP|Description|Attribute|olcDbMode|Unix permissions of database files" msgstr "" #: -:- -msgid "LDAP|Attribute|rfc822Mailbox" +msgid "" +"LDAP|Description|Attribute|olcDbNoSync|Disable synchronous database writes" msgstr "" #: -:- msgid "" -"LDAP|Description|ObjectClass|certificationAuthority|RFC2256: a certificate " -"authority" +"LDAP|Description|Attribute|olcDbSearchStack|Depth of search stack in IDLs" msgstr "" #: -:- -msgid "LDAP|Attribute|aRecord" +msgid "LDAP|Description|Attribute|olcDbShmKey|Key for shared memory region" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|olcDbShmKey|Key for shared memory region" +msgid "" +"LDAP|Description|Attribute|olcDitContentRules|OpenLDAP DIT content rules" msgstr "" #: -:- -msgid "LDAP|Attribute|olcDbLinearIndex" +msgid "LDAP|Description|Attribute|olcObjectClasses|OpenLDAP object classes" msgstr "" #: -:- -msgid "LDAP|Attribute|nisNetgroupTriple" +msgid "" +"LDAP|Description|Attribute|organizationalStatus|RFC1274: organizational " +"status" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|teletexTerminalIdentifier|RFC2256: Teletex " -"Terminal Identifier" +"LDAP|Description|Attribute|ou|RFC2256: organizational unit this object " +"belongs to" msgstr "" #: -:- -msgid "LDAP|Attribute|olcObjectIdentifier" +msgid "LDAP|Description|Attribute|owner|RFC2256: owner (of the object)" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|olcBackend|A type of backend" +msgid "" +"LDAP|Description|Attribute|o|RFC2256: organization this object belongs to" msgstr "" #: -:- -msgid "LDAP|Attribute|olcAuthzPolicy" +msgid "LDAP|Description|Attribute|pager|RFC1274: pager telephone number" msgstr "" #: -:- -msgid "LDAP|ObjectClass|nisObject" +msgid "" +"LDAP|Description|Attribute|personalSignature|RFC1274: Personal Signature (G3 " +"fax)" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|sambaTrustFlags|Trust Password Flags" +msgid "LDAP|Description|Attribute|personalTitle|RFC1274: personal title" +msgstr "" + +#: -:- +msgid "LDAP|Description|Attribute|photo|RFC1274: photo (G3 fax)" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|sambaPwdCanChange|Timestamp of when the user is " -"allowed to update the password" +"LDAP|Description|Attribute|physicalDeliveryOfficeName|RFC2256: Physical " +"Delivery Office Name" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaLockoutThreshold" +msgid "LDAP|Description|Attribute|postOfficeBox|RFC2256: Post Office Box" msgstr "" #: -:- -msgid "LDAP|Attribute|olcIdleTimeout" +msgid "LDAP|Description|Attribute|postalAddress|RFC2256: postal address" msgstr "" #: -:- -msgid "LDAP|Attribute|olcModulePath" +msgid "LDAP|Description|Attribute|postalCode|RFC2256: postal code" msgstr "" #: -:- -msgid "LDAP|Attribute|postalAddress" +msgid "" +"LDAP|Description|Attribute|preferredDeliveryMethod|RFC2256: preferred " +"delivery method" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|aliasedObjectName|RFC2256: name of aliased object" +"LDAP|Description|Attribute|preferredLanguage|RFC2798: preferred written or " +"spoken language for a person" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|manager|RFC1274: DN of manager" +msgid "" +"LDAP|Description|Attribute|presentationAddress|RFC2256: presentation address" msgstr "" #: -:- @@ -1749,461 +1689,531 @@ msgstr "" #: -:- -msgid "LDAP|Attribute|sambaPwdLastSet" +msgid "" +"LDAP|Description|Attribute|registeredAddress|RFC2256: registered postal " +"address" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaTrustFlags" +msgid "LDAP|Description|Attribute|roleOccupant|RFC2256: occupant of role" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|documentIdentifier|RFC1274: unique identifier of " -"document" +msgid "LDAP|Description|Attribute|roomNumber|RFC1274: room number" msgstr "" #: -:- -msgid "LDAP|ObjectClass|nisNetgroup" +msgid "LDAP|Description|Attribute|sambaAcctFlags|Account Flags" msgstr "" #: -:- msgid "" -"LDAP|Description|ObjectClass|referral|namedref: named subordinate referral" +"LDAP|Description|Attribute|sambaAlgorithmicRidBase|Base at which the samba " +"RID generation algorithm should operate" msgstr "" #: -:- -msgid "LDAP|Attribute|mDRecord" +msgid "" +"LDAP|Description|Attribute|sambaBadPasswordCount|Bad password attempt count" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|olcDbIndex|Attribute index parameters" +msgid "" +"LDAP|Description|Attribute|sambaBadPasswordTime|Time of the last bad " +"password attempt" msgstr "" #: -:- -msgid "LDAP|ObjectClass|OpenLDAProotDSE" -msgstr "" +msgid "LDAP|Description|Attribute|sambaBoolOption|A boolean option" +msgstr "?????????" #: -:- msgid "" -"LDAP|Description|Attribute|homePostalAddress|RFC1274: home postal address" +"LDAP|Description|Attribute|sambaDomainName|Windows NT domain to which the " +"user belongs" msgstr "" #: -:- -msgid "LDAP|Attribute|ipNetworkNumber" +msgid "" +"LDAP|Description|Attribute|sambaForceLogoff|Disconnect Users outside logon " +"hours (default: -1 => off, 0 => on)" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|jpegPhoto|RFC2798: a JPEG image" +msgid "LDAP|Description|Attribute|sambaGroupType|NT Group Type" msgstr "" #: -:- -msgid "LDAP|Attribute|olcOverlay" +msgid "" +"LDAP|Description|Attribute|sambaHomeDrive|Driver letter of home directory " +"mapping" msgstr "" #: -:- -msgid "LDAP|Attribute|olcUpdateRef" +msgid "LDAP|Description|Attribute|sambaHomePath|Home directory UNC path" msgstr "" #: -:- -msgid "LDAP|ObjectClass|person" +msgid "LDAP|Description|Attribute|sambaIntegerOption|An integer option" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|registeredAddress|RFC2256: registered postal " -"address" +"LDAP|Description|Attribute|sambaKickoffTime|Timestamp of when the user will " +"be logged off automatically" msgstr "" #: -:- -msgid "LDAP|Attribute|title" +msgid "LDAP|Description|Attribute|sambaLMPassword|LanManager Password" msgstr "" #: -:- -msgid "LDAP|Attribute|mailPreferenceOption" +msgid "" +"LDAP|Description|Attribute|sambaLockoutDuration|Lockout duration in minutes " +"(default: 30, -1 => forever)" msgstr "" #: -:- -msgid "LDAP|ObjectClass|country" -msgstr "" +msgid "" +"LDAP|Description|Attribute|sambaLockoutObservationWindow|Reset time after " +"lockout in minutes (default: 30)" +msgstr "????????????????(?) (?????: 30)" #: -:- -msgid "LDAP|Attribute|olcSockbufMaxIncomingAuth" +msgid "" +"LDAP|Description|Attribute|sambaLockoutThreshold|Lockout users after bad " +"logon attempts (default: 0 => off)" msgstr "" #: -:- -msgid "LDAP|Attribute|l" +msgid "LDAP|Description|Attribute|sambaLogoffTime|Timestamp of last logoff" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|member|RFC2256: member of a group" +msgid "LDAP|Description|Attribute|sambaLogonHours|Logon Hours" msgstr "" #: -:- -msgid "LDAP|ObjectClass|pkiCA" +msgid "LDAP|Description|Attribute|sambaLogonScript|Logon script path" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|olcDbConfig|BerkeleyDB DB_CONFIG configuration " -"directives" +msgid "LDAP|Description|Attribute|sambaLogonTime|Timestamp of last logon" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaDomainName" +msgid "" +"LDAP|Description|Attribute|sambaLogonToChgPwd|Force Users to logon for " +"password change (default: 0 => off, 2 => on)" msgstr "" +"?????????????????????????? (?????: 0 => ??, " +"2 => ??)" #: -:- -msgid "LDAP|Attribute|mobile" +msgid "" +"LDAP|Description|Attribute|sambaMaxPwdAge|Maximum password age, in seconds " +"(default: -1 => never expire passwords)" msgstr "" #: -:- -msgid "LDAP|Attribute|ipNetmaskNumber" +msgid "" +"LDAP|Description|Attribute|sambaMinPwdAge|Minimum password age, in seconds " +"(default: 0 => allow immediate password change)" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaShareName" +msgid "" +"LDAP|Description|Attribute|sambaMinPwdLength|Minimal password length " +"(default: 5)" msgstr "" #: -:- -msgid "LDAP|Attribute|olcReferral" +msgid "" +"LDAP|Description|Attribute|sambaMungedDial|Base64 encoded user parameter " +"string" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|l|RFC2256: locality which this object resides in" +"LDAP|Description|Attribute|sambaNTPassword|MD4 hash of the unicode password" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|sambaKickoffTime|Timestamp of when the user will " -"be logged off automatically" +"LDAP|Description|Attribute|sambaNextGroupRid|Next NT rid to give out for " +"groups" msgstr "" #: -:- -msgid "LDAP|Attribute|olcInclude" +msgid "" +"LDAP|Description|Attribute|sambaNextRid|Next NT rid to give out for anything" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|subtreeMinimumQuality|RFC1274: Subtree Mininum " -"Quality" -msgstr "" +"LDAP|Description|Attribute|sambaNextUserRid|Next NT rid to give our for users" +msgstr "??????????NT RID" #: -:- -msgid "LDAP|Attribute|roomNumber" -msgstr "" +msgid "LDAP|Description|Attribute|sambaOptionName|Option Name" +msgstr "??????" #: -:- -msgid "LDAP|Attribute|physicalDeliveryOfficeName" +msgid "" +"LDAP|Description|Attribute|sambaPasswordHistory|Concatenated MD4 hashes of " +"the unicode passwords used on this account" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|ipHostNumber|IP address" +msgid "" +"LDAP|Description|Attribute|sambaPrimaryGroupSID|Primary Group Security ID" msgstr "" #: -:- -msgid "LDAP|Attribute|o" +msgid "LDAP|Description|Attribute|sambaProfilePath|Roaming profile path" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|o|RFC2256: organization this object belongs to" +"LDAP|Description|Attribute|sambaPwdCanChange|Timestamp of when the user is " +"allowed to update the password" msgstr "" #: -:- -msgid "LDAP|Attribute|olcAttributeTypes" +msgid "" +"LDAP|Description|Attribute|sambaPwdHistoryLength|Length of Password History " +"Entries (default: 0 => off)" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaIntegerOption" +msgid "" +"LDAP|Description|Attribute|sambaPwdLastSet|Timestamp of the last password " +"update" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|roleOccupant|RFC2256: occupant of role" +msgid "" +"LDAP|Description|Attribute|sambaPwdMustChange|Timestamp of when the password " +"will expire" msgstr "" #: -:- -msgid "LDAP|ObjectClass|pilotDSA" +msgid "" +"LDAP|Description|Attribute|sambaRefuseMachinePwdChange|Allow Machine " +"Password changes (default: 0 => off)" msgstr "" #: -:- -msgid "LDAP|Attribute|olcIndexSubstrIfMinLen" +msgid "LDAP|Description|Attribute|sambaSIDList|Security ID List" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|nisMap|A generic abstraction of a NIS map" +msgid "LDAP|Description|Attribute|sambaSID|Security ID" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaHomeDrive|Driver letter of home directory " -"mapping" +msgid "LDAP|Description|Attribute|sambaShareName|Share Name" +msgstr "???" + +#: -:- +msgid "LDAP|Description|Attribute|sambaStringListOption|A string list option" msgstr "" #: -:- -msgid "LDAP|Attribute|olcModuleLoad" +msgid "LDAP|Description|Attribute|sambaStringOption|A string option" msgstr "" #: -:- -msgid "LDAP|Attribute|olcTLSCertificateKeyFile" +msgid "LDAP|Description|Attribute|sambaTrustFlags|Trust Password Flags" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|olcDatabase|The backend type for a database " -"instance" +"LDAP|Description|Attribute|sambaUserWorkstations|List of user workstations " +"the user is allowed to logon to" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|olcConfigDir|Directory for slapd configuration " -"backend" +"LDAP|Description|Attribute|searchGuide|RFC2256: search guide, deprecated by " +"enhancedSearchGuide" msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|olcFrontendConfig|OpenLDAP frontend " -"configuration" -msgstr "" +msgid "LDAP|Description|Attribute|secretary|RFC1274: DN of secretary" +msgstr "RFC1274: ??????(DN)" #: -:- -msgid "LDAP|Attribute|preferredDeliveryMethod" -msgstr "" +msgid "LDAP|Description|Attribute|seeAlso|RFC2256: DN of related object" +msgstr "RFC2256: ??????????????" #: -:- -msgid "LDAP|ObjectClass|olcGlobal" -msgstr "" +msgid "" +"LDAP|Description|Attribute|serialNumber|RFC2256: serial number of the entity" +msgstr "RFC2256: ?????????" #: -:- msgid "" -"LDAP|Description|Attribute|userCertificate|RFC2256: X.509 user certificate, " -"use ;binary" +"LDAP|Description|Attribute|sn|RFC2256: last (family) name(s) for which the " +"entity is known by" msgstr "" #: -:- -msgid "LDAP|ObjectClass|pkiUser" +msgid "" +"LDAP|Description|Attribute|street|RFC2256: street address of this object" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|ipNetmaskNumber|IP netmask" +msgid "" +"LDAP|Description|Attribute|st|RFC2256: state or province which this object " +"resides in" msgstr "" #: -:- -msgid "LDAP|Attribute|dITContentRules" +msgid "" +"LDAP|Description|Attribute|subtreeMaximumQuality|RFC1274: Subtree Maximun " +"Quality" msgstr "" #: -:- -msgid "LDAP|ObjectClass|dcObject" +msgid "" +"LDAP|Description|Attribute|subtreeMinimumQuality|RFC1274: Subtree Mininum " +"Quality" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaPrimaryGroupSID" +msgid "" +"LDAP|Description|Attribute|supportedAlgorithms|RFC2256: supported algorithms" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaForceLogoff" +msgid "" +"LDAP|Description|Attribute|supportedApplicationContext|RFC2256: supported " +"application context" msgstr "" #: -:- -msgid "LDAP|ObjectClass|newPilotPerson" +msgid "LDAP|Description|Attribute|telephoneNumber|RFC2256: Telephone Number" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|olcDbLinearIndex|Index attributes one at a time" +"LDAP|Description|Attribute|teletexTerminalIdentifier|RFC2256: Teletex " +"Terminal Identifier" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|nisNetgroup|Abstraction of a netgroup" +msgid "LDAP|Description|Attribute|telexNumber|RFC2256: Telex Number" msgstr "" #: -:- -msgid "LDAP|Attribute|nisMapName" +msgid "" +"LDAP|Description|Attribute|title|RFC2256: title associated with the entity" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|businessCategory|RFC2256: business category" +msgid "" +"LDAP|Description|Attribute|uidNumber|An integer uniquely identifying a user " +"in an administrative domain" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|top|top of the superclass chain" +msgid "LDAP|Description|Attribute|uid|RFC1274: user identifier" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaLogonScript" +msgid "" +"LDAP|Description|Attribute|uniqueMember|RFC2256: unique member of a group" msgstr "" #: -:- -msgid "LDAP|Attribute|countryName" +msgid "" +"LDAP|Description|Attribute|userCertificate|RFC2256: X.509 user certificate, " +"use ;binary" msgstr "" #: -:- -msgid "LDAP|Attribute|friendlyCountryName" +msgid "LDAP|Description|Attribute|userClass|RFC1274: category of user" msgstr "" #: -:- -msgid "LDAP|Attribute|associatedName" +msgid "" +"LDAP|Description|Attribute|userPKCS12|RFC2798: personal identity " +"information, a PKCS #12 PFX" msgstr "" #: -:- -msgid "LDAP|Attribute|olcDitContentRules" -msgstr "" +msgid "LDAP|Description|Attribute|userPassword|RFC2256/2307: password of user" +msgstr "RFC2256/2307: ?????????" #: -:- msgid "" -"LDAP|Description|Attribute|personalSignature|RFC1274: Personal Signature (G3 " -"fax)" -msgstr "" - -#: -:- -msgid "LDAP|Attribute|olcReplicaArgsFile" +"LDAP|Description|Attribute|userSMIMECertificate|RFC2798: PKCS#7 SignedData " +"used to support S/MIME" msgstr "" #: -:- -msgid "LDAP|Attribute|objectClasses" +msgid "LDAP|Description|Attribute|x121Address|RFC2256: X.121 Address" msgstr "" #: -:- msgid "" -"LDAP|Description|ObjectClass|subschema|RFC2252: controlling subschema (sub)" -"entry" +"LDAP|Description|Attribute|x500UniqueIdentifier|RFC2256: X.500 unique " +"identifier" msgstr "" #: -:- -msgid "LDAP|Attribute|bootParameter" +msgid "LDAP|Description|ObjectClass|OpenLDAProotDSE|OpenLDAP Root DSE object" msgstr "" #: -:- -msgid "LDAP|ObjectClass|dSA" +msgid "LDAP|Description|ObjectClass|alias|RFC2256: an alias" msgstr "" #: -:- -msgid "LDAP|Attribute|olcLimits" +msgid "" +"LDAP|Description|ObjectClass|applicationEntity|RFC2256: an application entity" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|olcAllows|Allowed set of deprecated features" +msgid "" +"LDAP|Description|ObjectClass|applicationProcess|RFC2256: an application " +"process" msgstr "" #: -:- -msgid "LDAP|ObjectClass|organizationalPerson" -msgstr "" +msgid "" +"LDAP|Description|ObjectClass|bootableDevice|A device with boot parameters" +msgstr "????????????" #: -:- msgid "" -"LDAP|Description|Attribute|organizationalStatus|RFC1274: organizational " -"status" +"LDAP|Description|ObjectClass|certificationAuthority|RFC2256: a certificate " +"authority" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaMaxPwdAge" +msgid "LDAP|Description|ObjectClass|country|RFC2256: a country" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|sambaPwdLastSet|Timestamp of the last password " -"update" -msgstr "" +"LDAP|Description|ObjectClass|dSA|RFC2256: a directory system agent (a server)" +msgstr "RFC2256: ????????????????(???)" #: -:- -msgid "LDAP|Attribute|olcSubordinate" +msgid "LDAP|Description|ObjectClass|dcObject|RFC2247: domain component object" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaSIDList" +msgid "LDAP|Description|ObjectClass|deltaCRL|RFC2587: PKI user" msgstr "" #: -:- -msgid "LDAP|Attribute|olcDbNoSync" +msgid "LDAP|Description|ObjectClass|device|RFC2256: a device" msgstr "" #: -:- -msgid "LDAP|ObjectClass|friendlyCountry" +msgid "" +"LDAP|Description|ObjectClass|domainRelatedObject|RFC1274: an object related " +"to an domain" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|photo|RFC1274: photo (G3 fax)" -msgstr "" +msgid "" +"LDAP|Description|ObjectClass|extensibleObject|RFC2252: extensible object" +msgstr "RFC2252: ???????????" #: -:- -msgid "LDAP|Description|ObjectClass|olcHdbConfig|HDB backend configuration" +msgid "" +"LDAP|Description|ObjectClass|groupOfNames|RFC2256: a group of names (DNs)" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaLogonHours" +msgid "" +"LDAP|Description|ObjectClass|groupOfUniqueNames|RFC2256: a group of unique " +"names (DN and Unique Identifier)" msgstr "" #: -:- -msgid "LDAP|ObjectClass|documentSeries" +msgid "LDAP|Description|ObjectClass|ieee802Device|A device with a MAC address" msgstr "" #: -:- -msgid "LDAP|Attribute|olcSizeLimit" +msgid "" +"LDAP|Description|ObjectClass|inetOrgPerson|RFC2798: Internet Organizational " +"Person" msgstr "" #: -:- -msgid "LDAP|Attribute|documentVersion" +msgid "LDAP|Description|ObjectClass|ipHost|Abstraction of a host, an IP device" msgstr "" #: -:- -msgid "LDAP|Attribute|userCertificate" +msgid "LDAP|Description|ObjectClass|ipNetwork|Abstraction of an IP network" msgstr "" #: -:- -msgid "LDAP|Attribute|localityName" +msgid "LDAP|Description|ObjectClass|ipProtocol|Abstraction of an IP protocol" msgstr "" #: -:- -msgid "LDAP|Attribute|olcSockbufMaxIncoming" +msgid "" +"LDAP|Description|ObjectClass|ipService|Abstraction an Internet Protocol " +"service" msgstr "" #: -:- msgid "" -"LDAP|Description|ObjectClass|groupOfUniqueNames|RFC2256: a group of unique " -"names (DN and Unique Identifier)" +"LDAP|Description|ObjectClass|labeledURIObject|RFC2079: object that contains " +"the URI attribute type" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|documentTitle|RFC1274: title of document" +msgid "LDAP|Description|ObjectClass|locality|RFC2256: a locality" msgstr "" #: -:- -msgid "LDAP|Attribute|authorityRevocationList" +msgid "LDAP|Description|ObjectClass|nisMap|A generic abstraction of a NIS map" msgstr "" #: -:- -msgid "LDAP|Attribute|nisMapEntry" +msgid "LDAP|Description|ObjectClass|nisNetgroup|Abstraction of a netgroup" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaPrimaryGroupSID|Primary Group Security ID" +msgid "LDAP|Description|ObjectClass|nisObject|An entry in a NIS map" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|matchingRuleUse|RFC2252: matching rule uses" +msgid "" +"LDAP|Description|ObjectClass|olcBackendConfig|OpenLDAP Backend-specific " +"options" msgstr "" #: -:- -msgid "LDAP|Attribute|photo" +msgid "LDAP|Description|ObjectClass|olcConfig|OpenLDAP configuration object" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|sambaRefuseMachinePwdChange|Allow Machine " -"Password changes (default: 0 => off)" +"LDAP|Description|ObjectClass|olcDatabaseConfig|OpenLDAP Database-specific " +"options" msgstr "" #: -:- msgid "" -"LDAP|Description|ObjectClass|organizationalRole|RFC2256: an organizational " -"role" +"LDAP|Description|ObjectClass|olcFrontendConfig|OpenLDAP frontend " +"configuration" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|supportedApplicationContext|RFC2256: supported " -"application context" +"LDAP|Description|ObjectClass|olcGlobal|OpenLDAP Global configuration options" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|olcHdbConfig|HDB backend configuration" msgstr "" #: -:- @@ -2213,461 +2223,455 @@ msgstr "" #: -:- -msgid "LDAP|Attribute|olcConnMaxPending" +msgid "LDAP|Description|ObjectClass|olcLdifConfig|LDIF backend configuration" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|sambaGroupMapping|Samba Group Mapping" +msgid "LDAP|Description|ObjectClass|olcModuleList|OpenLDAP dynamic module info" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaPwdCanChange" +msgid "" +"LDAP|Description|ObjectClass|olcOverlayConfig|OpenLDAP Overlay-specific " +"options" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|olcSchemaConfig|OpenLDAP schema object" +msgstr "" + +#: -:- +msgid "LDAP|Description|ObjectClass|oncRpc|Abstraction of an ONC/RPC binding" msgstr "" #: -:- msgid "" -"LDAP|Description|ObjectClass|posixGroup|Abstraction of a group of accounts" +"LDAP|Description|ObjectClass|organizationalPerson|RFC2256: an organizational " +"person" msgstr "" #: -:- -msgid "LDAP|Attribute|deltaRevocationList" +msgid "" +"LDAP|Description|ObjectClass|organizationalRole|RFC2256: an organizational " +"role" msgstr "" #: -:- -msgid "LDAP|ObjectClass|alias" +msgid "" +"LDAP|Description|ObjectClass|organizationalUnit|RFC2256: an organizational " +"unit" msgstr "" #: -:- -msgid "LDAP|Attribute|dc" +msgid "LDAP|Description|ObjectClass|organization|RFC2256: an organization" msgstr "" #: -:- -msgid "LDAP|Attribute|member" +msgid "LDAP|Description|ObjectClass|person|RFC2256: a person" msgstr "" #: -:- -msgid "LDAP|ObjectClass|document" +msgid "LDAP|Description|ObjectClass|pkiCA|RFC2587: PKI certificate authority" msgstr "" #: -:- -msgid "LDAP|Attribute|olcTLSCipherSuite" +msgid "LDAP|Description|ObjectClass|pkiUser|RFC2587: a PKI user" msgstr "" #: -:- -msgid "LDAP|ObjectClass|organizationalUnit" +msgid "" +"LDAP|Description|ObjectClass|posixAccount|Abstraction of an account with " +"POSIX attributes" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|sambaPwdHistoryLength|Length of Password History " -"Entries (default: 0 => off)" +"LDAP|Description|ObjectClass|posixGroup|Abstraction of a group of accounts" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|olcDbDirectory|Directory for database content" +"LDAP|Description|ObjectClass|referral|namedref: named subordinate referral" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|organization|RFC2256: an organization" +msgid "" +"LDAP|Description|ObjectClass|residentialPerson|RFC2256: an residential person" msgstr "" #: -:- -msgid "LDAP|Attribute|homePhone" +msgid "" +"LDAP|Description|ObjectClass|sambaConfigOption|Samba Configuration Option" msgstr "" #: -:- -msgid "LDAP|ObjectClass|certificationAuthority" +msgid "LDAP|Description|ObjectClass|sambaConfig|Samba Configuration Section" msgstr "" #: -:- -msgid "LDAP|Attribute|janetMailbox" +msgid "LDAP|Description|ObjectClass|sambaDomain|Samba Domain Information" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaAcctFlags" +msgid "LDAP|Description|ObjectClass|sambaGroupMapping|Samba Group Mapping" msgstr "" #: -:- -msgid "LDAP|Attribute|userSMIMECertificate" +msgid "" +"LDAP|Description|ObjectClass|sambaIdmapEntry|Mapping from a SID to an ID" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|departmentNumber|RFC2798: identifies a department " -"within an organization" +"LDAP|Description|ObjectClass|sambaSamAccount|Samba 3.0 Auxilary SAM Account" msgstr "" #: -:- -msgid "LDAP|Attribute|pager" +msgid "LDAP|Description|ObjectClass|sambaShare|Samba Share Section" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|employeeNumber|RFC2798: numerically identifies an " -"employee within an organization" +msgid "LDAP|Description|ObjectClass|sambaSidEntry|Structural Class for a SID" msgstr "" #: -:- -msgid "LDAP|ObjectClass|olcHdbConfig" +msgid "LDAP|Description|ObjectClass|sambaTrustPassword|Samba Trust Password" msgstr "" #: -:- msgid "" -"LDAP|Description|Attribute|cn|RFC2256: common name(s) for which the entity " -"is known by" -msgstr "RFC2256: ???????????" - -#: -:- -msgid "LDAP|Attribute|preferredLanguage" +"LDAP|Description|ObjectClass|sambaUnixIdPool|Pool for allocating UNIX uids/" +"gids" msgstr "" #: -:- -msgid "LDAP|Attribute|subtreeMinimumQuality" -msgstr "" +msgid "" +"LDAP|Description|ObjectClass|shadowAccount|Additional attributes for shadow " +"passwords" +msgstr "??????????????" #: -:- -msgid "LDAP|Description|Attribute|roomNumber|RFC1274: room number" -msgstr "" +msgid "" +"LDAP|Description|ObjectClass|simpleSecurityObject|RFC1274: simple security " +"object" +msgstr "RFC1274: ???????????????" #: -:- -msgid "LDAP|Attribute|olcReplica" +msgid "" +"LDAP|Description|ObjectClass|strongAuthenticationUser|RFC2256: a strong " +"authentication user" msgstr "" #: -:- -msgid "LDAP|ObjectClass|olcConfig" +msgid "" +"LDAP|Description|ObjectClass|subschema|RFC2252: controlling subschema (sub)" +"entry" msgstr "" #: -:- -msgid "LDAP|ObjectClass|nisMap" +msgid "LDAP|Description|ObjectClass|top|top of the superclass chain" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaProfilePath" +msgid "LDAP|Description|ObjectClass|uidObject|RFC2377: uid object" msgstr "" #: -:- -msgid "LDAP|Attribute|matchingRules" +msgid "" +"LDAP|Description|ObjectClass|userSecurityInformation|RFC2256: a user " +"security information" msgstr "" #: -:- -msgid "LDAP|Attribute|employeeType" -msgstr "" +msgid "LDAP|ObjectClass|LDAProotDSE" +msgstr "LDAP???DSA??????(LDAProotDSE)" #: -:- -msgid "LDAP|Attribute|olcConnMaxPendingAuth" +msgid "LDAP|ObjectClass|OpenLDAProotDSE" msgstr "" #: -:- -msgid "LDAP|Attribute|businessCategory" +msgid "LDAP|ObjectClass|RFC822localPart" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|olcConfigFile|File for slapd configuration " -"directives" +msgid "LDAP|ObjectClass|account" msgstr "" #: -:- -msgid "LDAP|Attribute|knowledgeInformation" +msgid "LDAP|ObjectClass|alias" msgstr "" #: -:- -msgid "LDAP|Attribute|registeredAddress" +msgid "LDAP|ObjectClass|applicationEntity" msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|residentialPerson|RFC2256: an residential person" +msgid "LDAP|ObjectClass|applicationProcess" msgstr "" #: -:- -msgid "LDAP|Attribute|homeTelephoneNumber" +msgid "LDAP|ObjectClass|bootableDevice" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaAlgorithmicRidBase|Base at which the samba " -"RID generation algorithm should operate" +msgid "LDAP|ObjectClass|cRLDistributionPoint" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|telexNumber|RFC2256: Telex Number" +msgid "LDAP|ObjectClass|certificationAuthority" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|x121Address|RFC2256: X.121 Address" +msgid "LDAP|ObjectClass|certificationAuthority-V2" msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|groupOfNames|RFC2256: a group of names (DNs)" +msgid "LDAP|ObjectClass|country" msgstr "" #: -:- -msgid "LDAP|ObjectClass|device" +msgid "LDAP|ObjectClass|dNSDomain" msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|olcOverlayConfig|OpenLDAP Overlay-specific " -"options" +msgid "LDAP|ObjectClass|dSA" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|country|RFC2256: a country" +msgid "LDAP|ObjectClass|dcObject" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|supportedAlgorithms|RFC2256: supported algorithms" +msgid "LDAP|ObjectClass|deltaCRL" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|nisNetgroupTriple|Netgroup triple" +msgid "LDAP|ObjectClass|device" msgstr "" #: -:- -msgid "LDAP|ObjectClass|top" +msgid "LDAP|ObjectClass|dmd" msgstr "" #: -:- -msgid "LDAP|Attribute|olcAllows" +msgid "LDAP|ObjectClass|document" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaMinPwdLength|Minimal password length " -"(default: 5)" +msgid "LDAP|ObjectClass|documentSeries" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaNextUserRid" +msgid "LDAP|ObjectClass|domain" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|certificateRevocationList|RFC2256: X.509 " -"certificate revocation list, use ;binary" +msgid "LDAP|ObjectClass|domainRelatedObject" msgstr "" #: -:- -msgid "LDAP|Attribute|olcAccess" -msgstr "" +msgid "LDAP|ObjectClass|extensibleObject" +msgstr "???????????(extensibleObject)" #: -:- -msgid "LDAP|Attribute|olcTLSCACertificateFile" +msgid "LDAP|ObjectClass|friendlyCountry" msgstr "" #: -:- -msgid "LDAP|Attribute|olcDbMode" +msgid "LDAP|ObjectClass|groupOfNames" msgstr "" #: -:- -msgid "LDAP|Attribute|olcRootPW" +msgid "LDAP|ObjectClass|groupOfUniqueNames" msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|sambaConfigOption|Samba Configuration Option" +msgid "LDAP|ObjectClass|ieee802Device" msgstr "" #: -:- -msgid "LDAP|ObjectClass|locality" +msgid "LDAP|ObjectClass|inetOrgPerson" msgstr "" #: -:- -msgid "LDAP|ObjectClass|olcSchemaConfig" +msgid "LDAP|ObjectClass|ipHost" msgstr "" #: -:- -msgid "LDAP|Attribute|labeledURI" +msgid "LDAP|ObjectClass|ipNetwork" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaLogoffTime" +msgid "LDAP|ObjectClass|ipProtocol" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|olcDbIDLcacheSize|IDL cache size in IDLs" +msgid "LDAP|ObjectClass|ipService" msgstr "" #: -:- -msgid "LDAP|ObjectClass|ieee802Device" +msgid "LDAP|ObjectClass|labeledURIObject" msgstr "" #: -:- -msgid "LDAP|Attribute|matchingRuleUse" +msgid "LDAP|ObjectClass|locality" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaMinPwdAge|Minimum password age, in seconds " -"(default: 0 => allow immediate password change)" +msgid "LDAP|ObjectClass|newPilotPerson" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|associatedDomain|RFC1274: domain associated with " -"object" +msgid "LDAP|ObjectClass|nisMap" msgstr "" #: -:- -msgid "LDAP|Attribute|mail" +msgid "LDAP|ObjectClass|nisNetgroup" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|buildingName|RFC1274: name of building" +msgid "LDAP|ObjectClass|nisObject" msgstr "" #: -:- -msgid "LDAP|Attribute|aliasedEntryName" +msgid "LDAP|ObjectClass|olcBackendConfig" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|janetMailbox|RFC1274: Janet mailbox" +msgid "LDAP|ObjectClass|olcConfig" msgstr "" #: -:- -msgid "LDAP|ObjectClass|ipService" +msgid "LDAP|ObjectClass|olcDatabaseConfig" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|sambaProfilePath|Roaming profile path" +msgid "LDAP|ObjectClass|olcFrontendConfig" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|displayName|RFC2798: preferred name to be used " -"when displaying entries" +msgid "LDAP|ObjectClass|olcGlobal" msgstr "" #: -:- -msgid "LDAP|Attribute|serialNumber" +msgid "LDAP|ObjectClass|olcHdbConfig" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaStringOption" +msgid "LDAP|ObjectClass|olcIncludeFile" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaOptionName" -msgstr "" +msgid "LDAP|ObjectClass|olcLdifConfig" +msgstr "OpenLDAP??: LDIF??(olcLdifConfig)" #: -:- -msgid "LDAP|Attribute|olcTimeLimit" +msgid "LDAP|ObjectClass|olcModuleList" msgstr "" #: -:- -msgid "LDAP|Attribute|olcTLSRandFile" +msgid "LDAP|ObjectClass|olcOverlayConfig" msgstr "" #: -:- -msgid "LDAP|Attribute|olcIndexSubstrAnyLen" +msgid "LDAP|ObjectClass|olcSchemaConfig" msgstr "" #: -:- -msgid "LDAP|Attribute|aliasedObjectName" +msgid "LDAP|ObjectClass|oncRpc" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|sambaUserWorkstations|List of user workstations " -"the user is allowed to logon to" +msgid "LDAP|ObjectClass|organization" msgstr "" #: -:- -msgid "LDAP|Attribute|homePostalAddress" +msgid "LDAP|ObjectClass|organizationalPerson" msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|strongAuthenticationUser|RFC2256: a strong " -"authentication user" +msgid "LDAP|ObjectClass|organizationalRole" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|ipHost|Abstraction of a host, an IP device" +msgid "LDAP|ObjectClass|organizationalUnit" msgstr "" #: -:- -msgid "LDAP|ObjectClass|account" +msgid "LDAP|ObjectClass|person" msgstr "" #: -:- -msgid "LDAP|Attribute|sambaUserWorkstations" +msgid "LDAP|ObjectClass|pilotDSA" msgstr "" #: -:- -msgid "LDAP|Attribute|dITStructureRules" +msgid "LDAP|ObjectClass|pilotOrganization" msgstr "" #: -:- -msgid "LDAP|ObjectClass|referral" +msgid "LDAP|ObjectClass|pilotPerson" msgstr "" #: -:- -msgid "LDAP|Attribute|initials" +msgid "LDAP|ObjectClass|pkiCA" msgstr "" #: -:- -msgid "LDAP|Attribute|dSAQuality" +msgid "LDAP|ObjectClass|pkiUser" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|deltaRevocationList|RFC2256: delta revocation " -"list; use ;binary" -msgstr "" +msgid "LDAP|ObjectClass|posixAccount" +msgstr "POSIX?????(posixAccount)" #: -:- -msgid "LDAP|Description|Attribute|objectClasses|RFC2252: object classes" -msgstr "" +msgid "LDAP|ObjectClass|posixGroup" +msgstr "POSIX????(posixGroup)" #: -:- -msgid "LDAP|Description|Attribute|userClass|RFC1274: category of user" +msgid "LDAP|ObjectClass|qualityLabelledData" msgstr "" #: -:- -msgid "LDAP|Attribute|ipServicePort" +msgid "LDAP|ObjectClass|referral" msgstr "" #: -:- -msgid "" -"LDAP|Description|Attribute|facsimileTelephoneNumber|RFC2256: Facsimile (Fax) " -"Telephone Number" +msgid "LDAP|ObjectClass|residentialPerson" msgstr "" #: -:- -msgid "LDAP|Attribute|olcRootDN" +msgid "LDAP|ObjectClass|room" msgstr "" #: -:- -msgid "LDAP|Description|ObjectClass|person|RFC2256: a person" +msgid "LDAP|ObjectClass|sambaConfig" msgstr "" #: -:- -msgid "LDAP|Attribute|olcTLSVerifyClient" +msgid "LDAP|ObjectClass|sambaConfigOption" msgstr "" #: -:- -msgid "LDAP|Attribute|sn" +msgid "LDAP|ObjectClass|sambaDomain" msgstr "" #: -:- -msgid "LDAP|Attribute|userPassword" +msgid "LDAP|ObjectClass|sambaGroupMapping" msgstr "" #: -:- -msgid "LDAP|Attribute|surname" -msgstr "" +msgid "LDAP|ObjectClass|sambaIdmapEntry" +msgstr "Samba: ID??????(sambaIdmapEntry)" #: -:- -msgid "LDAP|Description|Attribute|olcObjectClasses|OpenLDAP object classes" +msgid "LDAP|ObjectClass|sambaSamAccount" msgstr "" #: -:- -msgid "LDAP|Attribute|cACertificate" +msgid "LDAP|ObjectClass|sambaShare" msgstr "" #: -:- @@ -2675,45 +2679,43 @@ msgstr "" #: -:- -msgid "" -"LDAP|Description|ObjectClass|inetOrgPerson|RFC2798: Internet Organizational " -"Person" +msgid "LDAP|ObjectClass|sambaTrustPassword" msgstr "" #: -:- -msgid "LDAP|Attribute|documentLocation" +msgid "LDAP|ObjectClass|sambaUnixIdPool" msgstr "" #: -:- -msgid "LDAP|Attribute|certificateRevocationList" +msgid "LDAP|ObjectClass|shadowAccount" msgstr "" #: -:- -msgid "LDAP|Attribute|olcRootDSE" -msgstr "" +msgid "LDAP|ObjectClass|simpleSecurityObject" +msgstr "???????????????(simpleSecurityObject)" #: -:- -msgid "LDAP|Attribute|olcLastMod" +msgid "LDAP|ObjectClass|strongAuthenticationUser" msgstr "" #: -:- -msgid "LDAP|ObjectClass|posixGroup" +msgid "LDAP|ObjectClass|subentry" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|macAddress|MAC address" +msgid "LDAP|ObjectClass|subschema" msgstr "" #: -:- -msgid "LDAP|Description|Attribute|bootParameter|rpc.bootparamd parameter" +msgid "LDAP|ObjectClass|top" msgstr "" #: -:- -msgid "LDAP|Attribute|mXRecord" +msgid "LDAP|ObjectClass|uidObject" msgstr "" #: -:- -msgid "LDAP|Attribute|olcTLSCACertificatePath" +msgid "LDAP|ObjectClass|userSecurityInformation" msgstr "" #: lib/active_ldap/adapter/ldap.rb:84 From codesite-noreply at google.com Fri Aug 17 21:56:17 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Fri, 17 Aug 2007 18:56:17 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r251 - trunk/lib/active_ldap/get_text Message-ID: <163600d6b30437ef9cf8d695160571@google.com> Author: koutou Date: Fri Aug 17 18:55:42 2007 New Revision: 251 Modified: trunk/lib/active_ldap/get_text/parser.rb Log: * improved Rails support. Modified: trunk/lib/active_ldap/get_text/parser.rb ============================================================================== --- trunk/lib/active_ldap/get_text/parser.rb (original) +++ trunk/lib/active_ldap/get_text/parser.rb Fri Aug 17 18:55:42 2007 @@ -8,10 +8,10 @@ def initialize(configuration=nil) configuration = ensure_configuration(configuration) - classes = configuration.delete(:classes) || ["ActiveLdap::Base"] - @classes_re = /class.*#{Regexp.union(*classes)}/ - @configuration = default_configuration.merge(configuration) - ActiveLdap::Base.establish_connection(@configuration) + configuration = default_configuration.merge(configuration) + + configuration = extract_options(configuration) + ActiveLdap::Base.establish_connection(configuration) end def parse(file, targets=[]) @@ -22,6 +22,7 @@ next unless klass.is_a?(Class) next unless klass < ActiveLdap::Base register(klass.name.singularize.underscore.gsub(/_/, " "), file) + next unless @extract_schema klass.classes.each do |object_class| register_object_class(object_class, file) end @@ -42,15 +43,23 @@ end private + def extract_options(configuration) + configuration = configuration.dup + classes = configuration.delete(:classes) || ["ActiveLdap::Base"] + @classes_re = /class.*#{Regexp.union(*classes)}/ # + @extract_schema = configuration.delete(:extract_schema) + configuration + end + def default_configuration { :host => "127.0.0.1", :allow_anonymous => true, + :extract_schema => false, } end def ensure_configuration(configuration) - configuration ||= RAILS_ENV if Object.const_defined?(:RAILS_ENV) configuration ||= ENV["RAILS_ENV"] || {} if configuration.is_a?(String) if File.exists?(configuration) @@ -63,6 +72,10 @@ configuration = ActiveLdap::Base.configurations[configuration] end end + if Object.const_defined?(:RAILS_ENV) + rails_configuration = ActiveLdap::Base.configurations[RAILS_ENV] + configuration = rails_configuration.merge(configuration) + end configuration = configuration.symbolize_keys end @@ -86,6 +99,8 @@ yield @targets.collect do |id, file_infos| [id, *file_infos.uniq] + end.sort_by do |id,| + id end end From codesite-noreply at google.com Fri Aug 17 22:00:17 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Fri, 17 Aug 2007 19:00:17 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r252 - in trunk: lib/active_ldap test Message-ID: Author: koutou Date: Fri Aug 17 18:56:17 2007 New Revision: 252 Modified: trunk/lib/active_ldap/base.rb trunk/lib/active_ldap/object_class.rb trunk/lib/active_ldap/schema.rb trunk/test/test_schema.rb Log: * improved dynamic schema definition. Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Fri Aug 17 18:56:17 2007 @@ -709,9 +709,20 @@ # Also be sure to only pass in key-value pairs of your choosing. # Do not let URL/form hackers supply the keys. def attributes=(hash_or_assoc) + _schema = nil targets = remove_attributes_protected_from_mass_assignment(hash_or_assoc) targets.each do |key, value| - send("#{key}=", value) + setter = "#{key}=" + unless respond_to?(setter) + _schema ||= schema + attribute = _schema.attribute(key) + if attribute.id.nil? + self.class.send(:attr_accessor, key) + else + define_attribute_methods(attribute) + end + end + send(setter, value) end end @@ -1082,12 +1093,14 @@ end def normalize_data(data, except=[]) + _schema = schema result = {} data.each do |key, values| next if except.include?(key) real_name = to_real_attribute_name(key) next if real_name and except.include?(real_name) real_name ||= key + next if _schema.attribute(real_name).id.nil? result[real_name] ||= [] result[real_name].concat(values) end Modified: trunk/lib/active_ldap/object_class.rb ============================================================================== --- trunk/lib/active_ldap/object_class.rb (original) +++ trunk/lib/active_ldap/object_class.rb Fri Aug 17 18:56:17 2007 @@ -68,11 +68,12 @@ end def assert_have_all_required_classes(new_classes) + _schema = schema normalized_new_classes = new_classes.collect(&:downcase) required_classes = self.class.required_classes.reject do |required_class| normalized_new_classes.include?(required_class.downcase) or (normalized_new_classes.find do |new_class| - schema.object_class(new_class).super_class?(required_class) + _schema.object_class(new_class).super_class?(required_class) end) end unless required_classes.empty? Modified: trunk/lib/active_ldap/schema.rb ============================================================================== --- trunk/lib/active_ldap/schema.rb (original) +++ trunk/lib/active_ldap/schema.rb Fri Aug 17 18:56:17 2007 @@ -354,13 +354,9 @@ attr_reader :super_classes def initialize(name, schema) super(name, schema, "objectClasses") - @schema = schema end def super_class?(object_class) - unless object_class.is_a?(ObjectClass) - object_class = @schema.object_class(object_class) - end @super_classes.include?(object_class) end Modified: trunk/test/test_schema.rb ============================================================================== --- trunk/test/test_schema.rb (original) +++ trunk/test/test_schema.rb Fri Aug 17 18:56:17 2007 @@ -38,29 +38,20 @@ organizational_person = schema.object_class("organizationalPerson") inet_org_person = schema.object_class("inetOrgPerson") - assert_equal([[false, false, false]] * 2, - [[person.super_class?(person), + assert_equal([false, false, false], + [person.super_class?(person), person.super_class?(organizational_person), - person.super_class?(inet_org_person)], - [person.super_class?("person"), - person.super_class?("organizationalPerson"), - person.super_class?("inetOrgPerson")]]) + person.super_class?(inet_org_person)]) - assert_equal([[true, false, false]] * 2, - [[organizational_person.super_class?(person), - organizational_person.super_class?(organizational_person), - organizational_person.super_class?(inet_org_person)], - [organizational_person.super_class?("person"), - organizational_person.super_class?("organizationalPerson"), - organizational_person.super_class?("inetOrgPerson")]]) + assert_equal([true, false, false], + [organizational_person.super_class?(person), + organizational_person.super_class?(organizational_person), + organizational_person.super_class?(inet_org_person)]) - assert_equal([[true, true, false]] * 2, - [[inet_org_person.super_class?(person), - inet_org_person.super_class?(organizational_person), - inet_org_person.super_class?(inet_org_person)], - [inet_org_person.super_class?("person"), - inet_org_person.super_class?("organizationalPerson"), - inet_org_person.super_class?("inetOrgPerson")]]) + assert_equal([true, true, false], + [inet_org_person.super_class?(person), + inet_org_person.super_class?(organizational_person), + inet_org_person.super_class?(inet_org_person)]) end priority :normal From codesite-noreply at google.com Fri Aug 17 22:04:18 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Fri, 17 Aug 2007 19:04:18 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r253 - trunk/lib/active_ldap Message-ID: <163600d06e0437efb9a7e7c4162d98@google.com> Author: koutou Date: Fri Aug 17 18:57:27 2007 New Revision: 253 Modified: trunk/lib/active_ldap/base.rb Log: * don't define accessor automatically. Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Fri Aug 17 18:57:27 2007 @@ -716,11 +716,8 @@ unless respond_to?(setter) _schema ||= schema attribute = _schema.attribute(key) - if attribute.id.nil? - self.class.send(:attr_accessor, key) - else - define_attribute_methods(attribute) - end + next if attribute.id.nil? + define_attribute_methods(attribute) end send(setter, value) end From codesite-noreply at google.com Fri Aug 17 22:53:24 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Fri, 17 Aug 2007 19:53:24 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r254 - trunk/po/ja Message-ID: Author: koutou Date: Fri Aug 17 19:52:39 2007 New Revision: 254 Modified: trunk/po/ja/active-ldap.po Log: * updated messages. Modified: trunk/po/ja/active-ldap.po ============================================================================== --- trunk/po/ja/active-ldap.po (original) +++ trunk/po/ja/active-ldap.po Fri Aug 17 19:52:39 2007 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" "POT-Creation-Date: 2007-08-16 22:01+0900\n" -"PO-Revision-Date: 2007-08-17 22:38+0900\n" +"PO-Revision-Date: 2007-08-18 11:52+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -53,7 +53,7 @@ #: -:- msgid "LDAP|Attribute|bootParameter" -msgstr "???????(bootParameter)" +msgstr "??????(bootParameter)" #: -:- msgid "LDAP|Attribute|buildingName" @@ -389,7 +389,7 @@ #: -:- msgid "LDAP|Attribute|olcArgsFile" -msgstr "OpenLDAP??: ?????????(olcArgsFile)" +msgstr "OpenLDAP??: ?????????????(olcArgsFile)" #: -:- msgid "LDAP|Attribute|olcAttributeOptions" @@ -441,59 +441,59 @@ #: -:- msgid "LDAP|Attribute|olcDbCacheFree" -msgstr "" +msgstr "OpenLDAP??: DB: ????????(olcDbCacheFree)" #: -:- msgid "LDAP|Attribute|olcDbCacheSize" -msgstr "OpenLDAP??: DB??????(olcDbCacheSize)" +msgstr "OpenLDAP??: DB: ??????(olcDbCacheSize)" #: -:- msgid "LDAP|Attribute|olcDbCheckpoint" -msgstr "" +msgstr "OpenLDAP??: DB: ????????(olcDbCheckpoint)" #: -:- msgid "LDAP|Attribute|olcDbConfig" -msgstr "" +msgstr "OpenLDAP??: DB: ??(olcDbConfig)" #: -:- msgid "LDAP|Attribute|olcDbDirectory" -msgstr "" +msgstr "OpenLDAP??: DB: ??????(olcDbDirectory)" #: -:- msgid "LDAP|Attribute|olcDbDirtyRead" -msgstr "" +msgstr "OpenLDAP??: DB: ????(olcDbDirtyRead)" #: -:- msgid "LDAP|Attribute|olcDbIDLcacheSize" -msgstr "" +msgstr "OpenLDAP??: DB: IDL??????(olcDbIDLcacheSize)" #: -:- msgid "LDAP|Attribute|olcDbIndex" -msgstr "" +msgstr "OpenLDAP??: DB: ??(olcDbIndex)" #: -:- msgid "LDAP|Attribute|olcDbLinearIndex" -msgstr "" +msgstr "OpenLDAP??: DB: ????(olcDbLinearIndex)" #: -:- msgid "LDAP|Attribute|olcDbLockDetect" -msgstr "" +msgstr "OpenLDAP??: DB: ?????(olcDbLockDetect)" #: -:- msgid "LDAP|Attribute|olcDbMode" -msgstr "" +msgstr "OpenLDAP??: DB: ???(olcDbMode)" #: -:- msgid "LDAP|Attribute|olcDbNoSync" -msgstr "" +msgstr "OpenLDAP??: DB: ???(olcDbNoSync)" #: -:- msgid "LDAP|Attribute|olcDbSearchStack" -msgstr "" +msgstr "OpenLDAP??: DB: ??????(olcDbSearchStack)" #: -:- msgid "LDAP|Attribute|olcDbShmKey" -msgstr "" +msgstr "OpenLDAP??: DB: ???????(olcDbShmKey)" #: -:- msgid "LDAP|Attribute|olcDefaultSearchBase" @@ -501,31 +501,31 @@ #: -:- msgid "LDAP|Attribute|olcDisallows" -msgstr "" +msgstr "OpenLDAP??: ??(olcDisallows)" #: -:- msgid "LDAP|Attribute|olcDitContentRules" -msgstr "" +msgstr "OpenLDAP??: DIT????(olcDitContentRules)" #: -:- msgid "LDAP|Attribute|olcGentleHUP" -msgstr "" +msgstr "OpenLDAP??: ????HUP(olcGentleHUP)" #: -:- msgid "LDAP|Attribute|olcIdleTimeout" -msgstr "" +msgstr "OpenLDAP??: ????????(olcIdleTimeout)" #: -:- msgid "LDAP|Attribute|olcInclude" -msgstr "" +msgstr "OpenLDAP??: ????(olcInclude)" #: -:- msgid "LDAP|Attribute|olcIndexSubstrAnyLen" -msgstr "" +msgstr "OpenLDAP??: ?????????????(olcIndexSubstrAnyLen)" #: -:- msgid "LDAP|Attribute|olcIndexSubstrAnyStep" -msgstr "" +msgstr "OpenLDAP??: ?????????????(olcIndexSubstrAnyStep)" #: -:- msgid "LDAP|Attribute|olcIndexSubstrIfMaxLen" @@ -533,51 +533,51 @@ #: -:- msgid "LDAP|Attribute|olcIndexSubstrIfMinLen" -msgstr "" +msgstr "OpenLDAP?? ????????????????(olcIndexSubstrIfMinLen)" #: -:- msgid "LDAP|Attribute|olcLastMod" -msgstr "" +msgstr "OpenLDAP??: ??????(olcLastMod)" #: -:- msgid "LDAP|Attribute|olcLimits" -msgstr "" +msgstr "OpenLDAP??: ??(olcLimits)" #: -:- msgid "LDAP|Attribute|olcLocalSSF" -msgstr "" +msgstr "OpenLDAP??: ????SSF(olcLocalSSF)" #: -:- msgid "LDAP|Attribute|olcLogLevel" -msgstr "" +msgstr "OpenLDAP??: ?????(olcLogLevel)" #: -:- msgid "LDAP|Attribute|olcMaxDerefDepth" -msgstr "" +msgstr "OpenLDAP??: ????????(olcMaxDerefDepth)" #: -:- msgid "LDAP|Attribute|olcModuleLoad" -msgstr "" +msgstr "OpenLDAP??: ??????????(olcModuleLoad)" #: -:- msgid "LDAP|Attribute|olcModulePath" -msgstr "" +msgstr "OpenLDAP??: ??????????(olcModulePath)" #: -:- msgid "LDAP|Attribute|olcObjectClasses" -msgstr "OpenLDAP??: objectClass(olcObjectClasses)" +msgstr "OpenLDAP??: ?????????(olcObjectClasses)" #: -:- msgid "LDAP|Attribute|olcObjectIdentifier" -msgstr "" +msgstr "OpenLDAP??: ?????????(olcObjectIdentifier)" #: -:- msgid "LDAP|Attribute|olcOverlay" -msgstr "" +msgstr "OpenLDAP??: ??????(olcOverlay)" #: -:- msgid "LDAP|Attribute|olcPasswordCryptSaltFormat" -msgstr "" +msgstr "OpenLDAP??: ???????????????(olcPasswordCryptSaltFormat)" #: -:- msgid "LDAP|Attribute|olcPasswordHash" @@ -585,171 +585,171 @@ #: -:- msgid "LDAP|Attribute|olcPidFile" -msgstr "" +msgstr "OpenLDAP??: PID????(olcPidFile)" #: -:- msgid "LDAP|Attribute|olcPlugin" -msgstr "" +msgstr "OpenLDAP??: ?????(olcPlugin)" #: -:- msgid "LDAP|Attribute|olcPluginLogFile" -msgstr "" +msgstr "OpenLDAP??: ?????: ??????(olcPluginLogFile)" #: -:- msgid "LDAP|Attribute|olcReadOnly" -msgstr "" +msgstr "OpenLDAP??: ??????(olcReadOnly)" #: -:- msgid "LDAP|Attribute|olcReferral" -msgstr "" +msgstr "OpenLDAP??: ??(olcReferral)" #: -:- msgid "LDAP|Attribute|olcReplica" -msgstr "" +msgstr "OpenLDAP??: ??(olcReplica)" #: -:- msgid "LDAP|Attribute|olcReplicaArgsFile" -msgstr "" +msgstr "OpenLDAP??: ??: ?????????????(olcReplicaArgsFile0" #: -:- msgid "LDAP|Attribute|olcReplicaPidFile" -msgstr "" +msgstr "OpenLDAP??: ??: PID????(olcReplicaPidFile)" #: -:- msgid "LDAP|Attribute|olcReplicationInterval" -msgstr "" +msgstr "OpenLDAP??: ????(olcReplicationInterval)" #: -:- msgid "LDAP|Attribute|olcReplogFile" -msgstr "" +msgstr "OpenLDAP??: ?????????(olcReplogFile)" #: -:- msgid "LDAP|Attribute|olcRequires" -msgstr "" +msgstr "OpenLDAP??: ????(olcRequires)" #: -:- msgid "LDAP|Attribute|olcRestrict" -msgstr "" +msgstr "OpenLDAP??: ??(olcRestrict)" #: -:- msgid "LDAP|Attribute|olcReverseLookup" -msgstr "" +msgstr "OpenLDAP??: ???(olcReverseLookup)" #: -:- msgid "LDAP|Attribute|olcRootDN" -msgstr "" +msgstr "OpenLDAP??: ???DN(olcRootDN)" #: -:- msgid "LDAP|Attribute|olcRootDSE" -msgstr "" +msgstr "OpenLDAP??: ???DSA??????(olcRootDSE)" #: -:- msgid "LDAP|Attribute|olcRootPW" -msgstr "" +msgstr "OpenLDAP??: ????????(olcRootPW)" #: -:- msgid "LDAP|Attribute|olcSaslHost" -msgstr "" +msgstr "OpenLDAP??: SASL: ???(olcSaslHost)" #: -:- msgid "LDAP|Attribute|olcSaslRealm" -msgstr "" +msgstr "OpenLDAP??: SASL: ??(olcSaslRealm)" #: -:- msgid "LDAP|Attribute|olcSaslSecProps" -msgstr "" +msgstr "OpenLDAP??: SASL: ???????????(olcSaslSecProps)" #: -:- msgid "LDAP|Attribute|olcSchemaDN" -msgstr "" +msgstr "OpenLDAP??: ????DN(olcSchemaDN)" #: -:- msgid "LDAP|Attribute|olcSecurity" -msgstr "" +msgstr "OpenLDAP??: ??????(olcSecurity)" #: -:- msgid "LDAP|Attribute|olcSizeLimit" -msgstr "" +msgstr "OpenLDAP??: ?????(olcSizeLimit)" #: -:- msgid "LDAP|Attribute|olcSockbufMaxIncoming" -msgstr "" +msgstr "OpenLDAP??: ??????????(olcSockbufMaxIncoming)" #: -:- msgid "LDAP|Attribute|olcSockbufMaxIncomingAuth" -msgstr "" +msgstr "OpenLDAP??: ??????????(olcSockbufMaxIncomingAuth)" #: -:- msgid "LDAP|Attribute|olcSrvtab" -msgstr "" +msgstr "OpenLDAP??: ????????(olcSrvtab)" #: -:- msgid "LDAP|Attribute|olcSubordinate" -msgstr "" +msgstr "OpenLDAP??: ????????(olcSubordinate)" #: -:- msgid "LDAP|Attribute|olcSuffix" -msgstr "" +msgstr "OpenLDAP??: ??????(olcSuffix)" #: -:- msgid "LDAP|Attribute|olcSyncrepl" -msgstr "" +msgstr "OpenLDAP??: ????(olcSyncrepl)" #: -:- msgid "LDAP|Attribute|olcTLSCACertificateFile" -msgstr "" +msgstr "OpenLDAP??: TLS: CA???????(olcTLSCACertificateFile)" #: -:- msgid "LDAP|Attribute|olcTLSCACertificatePath" -msgstr "" +msgstr "OpenLDAP??: TLS: CA?????(olcTLSCACertificatePath)" #: -:- msgid "LDAP|Attribute|olcTLSCRLCheck" -msgstr "" +msgstr "OpenLDAP??: TLS: ???????????(olcTLSCRLCheck)" #: -:- msgid "LDAP|Attribute|olcTLSCertificateFile" -msgstr "" +msgstr "OpenLDAP??: TLS: ???????(olcTLSCertificateFile)" #: -:- msgid "LDAP|Attribute|olcTLSCertificateKeyFile" -msgstr "" +msgstr "OpenLDAP??: TLS: ????????(olcTLSCertificateKeyFile)" #: -:- msgid "LDAP|Attribute|olcTLSCipherSuite" -msgstr "" +msgstr "OpenLDAP??: TLS: ???(olcTLSCipherSuite)" #: -:- msgid "LDAP|Attribute|olcTLSDHParamFile" -msgstr "" +msgstr "OpenLDAP??: TLS: DH????????(olcTLSDHParamFile)" #: -:- msgid "LDAP|Attribute|olcTLSRandFile" -msgstr "" +msgstr "OpenLDAP??: TLS: ????????(olcTLSRandFile)" #: -:- msgid "LDAP|Attribute|olcTLSVerifyClient" -msgstr "" +msgstr "OpenLDAP??: TLS: ????????(olcTLSVerifyClient)" #: -:- msgid "LDAP|Attribute|olcThreads" -msgstr "" +msgstr "OpenLDAP??: ???????(olcThreads)" #: -:- msgid "LDAP|Attribute|olcTimeLimit" -msgstr "" +msgstr "OpenLDAP??: ????(olcTimeLimit)" #: -:- msgid "LDAP|Attribute|olcToolThreads" -msgstr "" +msgstr "OpenLDAP??: ???????????????(olcToolThreads)" #: -:- msgid "LDAP|Attribute|olcUpdateDN" -msgstr "" +msgstr "OpenLDAP??: ???DN(olcUpdateDN)" #: -:- msgid "LDAP|Attribute|olcUpdateRef" -msgstr "" +msgstr "OpenLDAP??: ????????URL(olcUpdateRef)" #: -:- msgid "LDAP|Attribute|oncRpcNumber" From codesite-noreply at google.com Fri Aug 17 23:41:35 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Fri, 17 Aug 2007 20:41:35 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r255 - trunk/po/ja Message-ID: Author: koutou Date: Fri Aug 17 20:40:48 2007 New Revision: 255 Modified: trunk/po/ja/active-ldap.po Log: * updated messages. Modified: trunk/po/ja/active-ldap.po ============================================================================== --- trunk/po/ja/active-ldap.po (original) +++ trunk/po/ja/active-ldap.po Fri Aug 17 20:40:48 2007 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" "POT-Creation-Date: 2007-08-16 22:01+0900\n" -"PO-Revision-Date: 2007-08-18 11:52+0900\n" +"PO-Revision-Date: 2007-08-18 12:40+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -757,59 +757,59 @@ #: -:- msgid "LDAP|Attribute|organizationName" -msgstr "" +msgstr "???(organizationName)" #: -:- msgid "LDAP|Attribute|organizationalStatus" -msgstr "" +msgstr "????(organizationalStatus)" #: -:- msgid "LDAP|Attribute|organizationalUnitName" -msgstr "" +msgstr "?????(organizationalUnitName)" #: -:- msgid "LDAP|Attribute|otherMailbox" -msgstr "" +msgstr "?????????(otherMailbox)" #: -:- msgid "LDAP|Attribute|ou" -msgstr "" +msgstr "?????(ou)" #: -:- msgid "LDAP|Attribute|owner" -msgstr "" +msgstr "???(owner)" #: -:- msgid "LDAP|Attribute|pager" -msgstr "" +msgstr "????(pager)" #: -:- msgid "LDAP|Attribute|pagerTelephoneNumber" -msgstr "" +msgstr "???????(pagerTelephoneNumber)" #: -:- msgid "LDAP|Attribute|personalSignature" -msgstr "" +msgstr "??????(personalSignature)" #: -:- msgid "LDAP|Attribute|personalTitle" -msgstr "" +msgstr "???????(personalTitle)" #: -:- msgid "LDAP|Attribute|photo" -msgstr "" +msgstr "??(photo)" #: -:- msgid "LDAP|Attribute|physicalDeliveryOfficeName" -msgstr "" +msgstr "???????????(physicalDeliveryOfficeName)" #: -:- msgid "LDAP|Attribute|postOfficeBox" -msgstr "" +msgstr "???(postOfficeBox)" #: -:- msgid "LDAP|Attribute|postalAddress" -msgstr "" +msgstr "?????(postalAddress)" #: -:- msgid "LDAP|Attribute|postalCode" @@ -817,159 +817,159 @@ #: -:- msgid "LDAP|Attribute|preferredDeliveryMethod" -msgstr "" +msgstr "????????(preferredDeliveryMethod)" #: -:- msgid "LDAP|Attribute|preferredLanguage" -msgstr "" +msgstr "??????(preferredLanguage)" #: -:- msgid "LDAP|Attribute|presentationAddress" -msgstr "" +msgstr "OSI?????????????(presentationAddress)" #: -:- msgid "LDAP|Attribute|ref" -msgstr "" +msgstr "??(ref)" #: -:- msgid "LDAP|Attribute|registeredAddress" -msgstr "" +msgstr "????????(registeredAddress)" #: -:- msgid "LDAP|Attribute|rfc822Mailbox" -msgstr "" +msgstr "RFC822???????(rfc822Mailbox)" #: -:- msgid "LDAP|Attribute|roleOccupant" -msgstr "" +msgstr "??????(roleOccupant)" #: -:- msgid "LDAP|Attribute|roomNumber" -msgstr "" +msgstr "????(roomNumber)" #: -:- msgid "LDAP|Attribute|sOARecord" -msgstr "" +msgstr "SOA????(sOARecord)" #: -:- msgid "LDAP|Attribute|sambaAcctFlags" -msgstr "" +msgstr "Samba: ????????(sambaAcctFlags)" #: -:- msgid "LDAP|Attribute|sambaAlgorithmicRidBase" -msgstr "" +msgstr "Samba: RID????????????(sambaAlgorithmicRidBase)" #: -:- msgid "LDAP|Attribute|sambaBadPasswordCount" -msgstr "" +msgstr "Samba: ?????????(sambaBadPasswordCount)" #: -:- msgid "LDAP|Attribute|sambaBadPasswordTime" -msgstr "" +msgstr "Samba: ???????????(sambaBadPasswordTime)" #: -:- msgid "LDAP|Attribute|sambaBoolOption" -msgstr "" +msgstr "Samba: ????????(sambaBoolOption)" #: -:- msgid "LDAP|Attribute|sambaDomainName" -msgstr "" +msgstr "Samba: ?????(sambaDomainName)" #: -:- msgid "LDAP|Attribute|sambaForceLogoff" -msgstr "" +msgstr "Samba: ??????(sambaForceLogoff)" #: -:- msgid "LDAP|Attribute|sambaGroupType" -msgstr "" +msgstr "Samba: ??????(sambaGroupType)" #: -:- msgid "LDAP|Attribute|sambaHomeDrive" -msgstr "" +msgstr "Samba: ???????(sambaHomeDrive)" #: -:- msgid "LDAP|Attribute|sambaHomePath" -msgstr "" +msgstr "Samba: ?????(sambaHomePath)" #: -:- msgid "LDAP|Attribute|sambaIntegerOption" -msgstr "" +msgstr "Samba: ????????(sambaIntegerOption)" #: -:- msgid "LDAP|Attribute|sambaKickoffTime" -msgstr "" +msgstr "Samba: ????????(sambaKickoffTime)" #: -:- msgid "LDAP|Attribute|sambaLMPassword" -msgstr "" +msgstr "Samba: LAN??????????(sambaLMPassword)" #: -:- msgid "LDAP|Attribute|sambaLockoutDuration" -msgstr "" +msgstr "Samba: ????????(sambaLockoutDuration)" #: -:- msgid "LDAP|Attribute|sambaLockoutObservationWindow" -msgstr "" +msgstr "Samba: ??????????(sambaLockoutObservationWindow)" #: -:- msgid "LDAP|Attribute|sambaLockoutThreshold" -msgstr "" +msgstr "Samba: ????????(sambaLockoutThreshold)" #: -:- msgid "LDAP|Attribute|sambaLogoffTime" -msgstr "" +msgstr "Samba: ??????(sambaLogoffTime)" #: -:- msgid "LDAP|Attribute|sambaLogonHours" -msgstr "" +msgstr "Samba: ??????(sambaLogonHours)" #: -:- msgid "LDAP|Attribute|sambaLogonScript" -msgstr "" +msgstr "Samba: ?????????(sambaLogonScript)" #: -:- msgid "LDAP|Attribute|sambaLogonTime" -msgstr "" +msgstr "Samba: ??????(sambaLogonTime)" #: -:- msgid "LDAP|Attribute|sambaLogonToChgPwd" -msgstr "" +msgstr "Samba: ????????????(sambaLogonToChgPwd)" #: -:- msgid "LDAP|Attribute|sambaMaxPwdAge" -msgstr "" +msgstr "Samba: ?????????(sambaMaxPwdAge)" #: -:- msgid "LDAP|Attribute|sambaMinPwdAge" -msgstr "" +msgstr "Samba: ?????????(sambaMinPwdAge)" #: -:- msgid "LDAP|Attribute|sambaMinPwdLength" -msgstr "" +msgstr "Samba: ????????(sambaMinPwdLength)" #: -:- msgid "LDAP|Attribute|sambaMungedDial" -msgstr "" +msgstr "Samba: ????????(sambaMungedDial)" #: -:- msgid "LDAP|Attribute|sambaNTPassword" -msgstr "" +msgstr "Samba: NT?????(sambaNTPassword)" #: -:- msgid "LDAP|Attribute|sambaNextGroupRid" -msgstr "" +msgstr "Samba: ??????RID(sambaNextGroupRid)" #: -:- msgid "LDAP|Attribute|sambaNextRid" -msgstr "" +msgstr "Samba: ??RID(sambaNextRid0" #: -:- msgid "LDAP|Attribute|sambaNextUserRid" -msgstr "" +msgstr "Samba: ?????RID(sambaNextUserRid)" #: -:- msgid "LDAP|Attribute|sambaOptionName" -msgstr "" +msgstr "Samba: ??????(sambaOptionName)" #: -:- msgid "LDAP|Attribute|sambaPasswordHistory" @@ -977,15 +977,15 @@ #: -:- msgid "LDAP|Attribute|sambaPrimaryGroupSID" -msgstr "" +msgstr "Samba: ?????????SID(sambaPrimaryGroupSID)" #: -:- msgid "LDAP|Attribute|sambaProfilePath" -msgstr "" +msgstr "Samba: ????????(sambaProfilePath)" #: -:- msgid "LDAP|Attribute|sambaPwdCanChange" -msgstr "" +msgstr "Samba: ???????????(sambaPwdCanChange)" #: -:- msgid "LDAP|Attribute|sambaPwdHistoryLength" @@ -993,15 +993,15 @@ #: -:- msgid "LDAP|Attribute|sambaPwdLastSet" -msgstr "" +msgstr "Samba: ???????????(sambaPwdLastSet)" #: -:- msgid "LDAP|Attribute|sambaPwdMustChange" -msgstr "" +msgstr "Samba: ?????????(sambaPwdMustChange)" #: -:- msgid "LDAP|Attribute|sambaRefuseMachinePwdChange" -msgstr "" +msgstr "Samba: ????????????(sambaRefuseMachinePwdChange)" #: -:- msgid "LDAP|Attribute|sambaSID" @@ -1009,35 +1009,35 @@ #: -:- msgid "LDAP|Attribute|sambaSIDList" -msgstr "" +msgstr "Samba; ??????ID??(sambaSIDList)" #: -:- msgid "LDAP|Attribute|sambaShareName" -msgstr "" +msgstr "Samba: ???(sambaShareName)" #: -:- msgid "LDAP|Attribute|sambaStringListOption" -msgstr "" +msgstr "Samba: ???????????(sambaStringListOption)" #: -:- msgid "LDAP|Attribute|sambaStringOption" -msgstr "" +msgstr "Samba: ?????????(sambaStringOption)" #: -:- msgid "LDAP|Attribute|sambaTrustFlags" -msgstr "" +msgstr "Samba: ?????(sambaTrustFlags)" #: -:- msgid "LDAP|Attribute|sambaUserWorkstations" -msgstr "" +msgstr "Samba: ???????????????(sambaUserWorkstations)" #: -:- msgid "LDAP|Attribute|searchGuide" -msgstr "" +msgstr "????(searchGuide)" #: -:- msgid "LDAP|Attribute|secretary" -msgstr "" +msgstr "??(secretary)" #: -:- msgid "LDAP|Attribute|seeAlso" @@ -1045,11 +1045,11 @@ #: -:- msgid "LDAP|Attribute|serialNumber" -msgstr "" +msgstr "????(serialNumber)" #: -:- msgid "LDAP|Attribute|shadowExpire" -msgstr "" +msgstr "?????????????(shadowExpire)" #: -:- msgid "LDAP|Attribute|shadowFlag" @@ -1057,71 +1057,71 @@ #: -:- msgid "LDAP|Attribute|shadowInactive" -msgstr "" +msgstr "????????????(shadowInactive)" #: -:- msgid "LDAP|Attribute|shadowLastChange" -msgstr "" +msgstr "??????????????(shadowLastChange)" #: -:- msgid "LDAP|Attribute|shadowMax" -msgstr "" +msgstr "????????????(shadowMax)" #: -:- msgid "LDAP|Attribute|shadowMin" -msgstr "" +msgstr "????????????(shadowMin<)" #: -:- msgid "LDAP|Attribute|shadowWarning" -msgstr "" +msgstr "??????????????(shadowWarning)" #: -:- msgid "LDAP|Attribute|sn" -msgstr "" +msgstr "?(sn)" #: -:- msgid "LDAP|Attribute|st" -msgstr "?(st)" +msgstr "???(st)" #: -:- msgid "LDAP|Attribute|stateOrProvinceName" -msgstr "" +msgstr "???????(stateOrProvinceName)" #: -:- msgid "LDAP|Attribute|street" -msgstr "" +msgstr "??(street<)" #: -:- msgid "LDAP|Attribute|streetAddress" -msgstr "" +msgstr "?????(streatAddress)" #: -:- msgid "LDAP|Attribute|subtreeMaximumQuality" -msgstr "" +msgstr "?????????(subtreeMaximumQuality)" #: -:- msgid "LDAP|Attribute|subtreeMinimumQuality" -msgstr "" +msgstr "?????????(subtreeMinimumQuality)" #: -:- msgid "LDAP|Attribute|subtreeSpecification" -msgstr "" +msgstr "???????(subtreeSpecification)" #: -:- msgid "LDAP|Attribute|supportedAlgorithms" -msgstr "" +msgstr "????????(supportedAlgorithms)" #: -:- msgid "LDAP|Attribute|supportedApplicationContext" -msgstr "" +msgstr "??????????(supportedApplicationContext)" #: -:- msgid "LDAP|Attribute|surname" -msgstr "" +msgstr "?(surname)" #: -:- msgid "LDAP|Attribute|telephoneNumber" -msgstr "" +msgstr "????(telephoneNumber)" #: -:- msgid "LDAP|Attribute|teletexTerminalIdentifier" From codesite-noreply at google.com Sat Aug 18 03:09:52 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 00:09:52 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r256 - trunk/po/ja Message-ID: <163600cf970437f3fe795c24175bd6@google.com> Author: koutou Date: Sat Aug 18 00:09:10 2007 New Revision: 256 Modified: trunk/po/ja/active-ldap.po Log: * updated messages. Modified: trunk/po/ja/active-ldap.po ============================================================================== --- trunk/po/ja/active-ldap.po (original) +++ trunk/po/ja/active-ldap.po Sat Aug 18 00:09:10 2007 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" "POT-Creation-Date: 2007-08-16 22:01+0900\n" -"PO-Revision-Date: 2007-08-18 12:40+0900\n" +"PO-Revision-Date: 2007-08-18 16:08+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -313,7 +313,7 @@ #: -:- msgid "LDAP|Attribute|mailPreferenceOption" -msgstr "??????????(mailPreferenceOption)" +msgstr "??????????(mailPreferenceOption)" #: -:- msgid "LDAP|Attribute|manager" @@ -601,7 +601,7 @@ #: -:- msgid "LDAP|Attribute|olcReferral" -msgstr "OpenLDAP??: ??(olcReferral)" +msgstr "OpenLDAP??: ??(olcReferral)" #: -:- msgid "LDAP|Attribute|olcReplica" @@ -817,11 +817,11 @@ #: -:- msgid "LDAP|Attribute|preferredDeliveryMethod" -msgstr "????????(preferredDeliveryMethod)" +msgstr "????????(preferredDeliveryMethod)" #: -:- msgid "LDAP|Attribute|preferredLanguage" -msgstr "??????(preferredLanguage)" +msgstr "??????(preferredLanguage)" #: -:- msgid "LDAP|Attribute|presentationAddress" @@ -861,11 +861,11 @@ #: -:- msgid "LDAP|Attribute|sambaBadPasswordCount" -msgstr "Samba: ?????????(sambaBadPasswordCount)" +msgstr "Samba: ?????????(sambaBadPasswordCount)" #: -:- msgid "LDAP|Attribute|sambaBadPasswordTime" -msgstr "Samba: ???????????(sambaBadPasswordTime)" +msgstr "Samba: ???????????(sambaBadPasswordTime)" #: -:- msgid "LDAP|Attribute|sambaBoolOption" @@ -1097,11 +1097,11 @@ #: -:- msgid "LDAP|Attribute|subtreeMaximumQuality" -msgstr "?????????(subtreeMaximumQuality)" +msgstr "?????????(subtreeMaximumQuality)" #: -:- msgid "LDAP|Attribute|subtreeMinimumQuality" -msgstr "?????????(subtreeMinimumQuality)" +msgstr "?????????(subtreeMinimumQuality)" #: -:- msgid "LDAP|Attribute|subtreeSpecification" @@ -1125,128 +1125,128 @@ #: -:- msgid "LDAP|Attribute|teletexTerminalIdentifier" -msgstr "" +msgstr "???????????(teletexTerminalIdentifier)" #: -:- msgid "LDAP|Attribute|telexNumber" -msgstr "" +msgstr "???????(telexNumber)" #: -:- msgid "LDAP|Attribute|textEncodedORAddress" -msgstr "" +msgstr "??????????OR????(textEncodedORAddress)" #: -:- msgid "LDAP|Attribute|title" -msgstr "" +msgstr "????(title)" #: -:- msgid "LDAP|Attribute|uid" -msgstr "" +msgstr "???ID(uid)" #: -:- msgid "LDAP|Attribute|uidNumber" -msgstr "" +msgstr "???ID??(uidNumber)" #: -:- msgid "LDAP|Attribute|uniqueMember" -msgstr "" +msgstr "?????????(uniqueNumber)" #: -:- msgid "LDAP|Attribute|userCertificate" -msgstr "" +msgstr "???: ???(userCertificate)" #: -:- msgid "LDAP|Attribute|userClass" -msgstr "" +msgstr "???: ???(userClass)" #: -:- msgid "LDAP|Attribute|userPKCS12" -msgstr "" +msgstr "???: PKCS12(userPKCS12)" #: -:- msgid "LDAP|Attribute|userPassword" -msgstr "" +msgstr "???: ?????(userPassword)" #: -:- msgid "LDAP|Attribute|userSMIMECertificate" -msgstr "" +msgstr "???: S/MIME???(userSMIMECertificate)" #: -:- msgid "LDAP|Attribute|userid" -msgstr "" +msgstr "???ID(userid)" #: -:- msgid "LDAP|Attribute|x121Address" -msgstr "" +msgstr "X.121????(x121Address)" #: -:- msgid "LDAP|Attribute|x500UniqueIdentifier" -msgstr "" +msgstr "X.500 ??????(x500UniqueIdentifier)" #: -:- msgid "" "LDAP|Description|Attribute|aliasedObjectName|RFC2256: name of aliased object" -msgstr "" +msgstr "RFC2256: ???????????" #: -:- msgid "" "LDAP|Description|Attribute|associatedDomain|RFC1274: domain associated with " "object" -msgstr "" +msgstr "RFC1274: ??????????????????" #: -:- msgid "" "LDAP|Description|Attribute|associatedName|RFC1274: DN of entry associated " "with domain" -msgstr "" +msgstr "RFC1274: ?????????????????DN" #: -:- msgid "LDAP|Description|Attribute|attributeTypes|RFC2252: attribute types" -msgstr "" +msgstr "RFC2252: ?????" #: -:- msgid "LDAP|Description|Attribute|audio|RFC1274: audio (u-law)" -msgstr "" +msgstr "RFC1274: ??(u-law)" #: -:- msgid "" "LDAP|Description|Attribute|authorityRevocationList|RFC2256: X.509 authority " "revocation list, use ;binary" -msgstr "" +msgstr "RFC2256: X.509????????;binary??????" #: -:- msgid "LDAP|Description|Attribute|bootFile|Boot image name" -msgstr "" +msgstr "???????" #: -:- msgid "LDAP|Description|Attribute|bootParameter|rpc.bootparamd parameter" -msgstr "" +msgstr "rpc.bootparamd?????" #: -:- msgid "LDAP|Description|Attribute|buildingName|RFC1274: name of building" -msgstr "" +msgstr "RFC1274: ?????" #: -:- msgid "LDAP|Description|Attribute|businessCategory|RFC2256: business category" -msgstr "" +msgstr "RFC2256: ??" #: -:- msgid "" "LDAP|Description|Attribute|cACertificate|RFC2256: X.509 CA certificate, use ;" "binary" -msgstr "" +msgstr "RFC2256: X.509 CA????;binary??????" #: -:- msgid "" "LDAP|Description|Attribute|carLicense|RFC2798: vehicle license or " "registration plate" -msgstr "" +msgstr "RFC2798: ?????????????" #: -:- msgid "" "LDAP|Description|Attribute|certificateRevocationList|RFC2256: X.509 " "certificate revocation list, use ;binary" -msgstr "" +msgstr "RFC2256: X.509????????;binary??????" #: -:- msgid "" @@ -1256,68 +1256,68 @@ #: -:- msgid "LDAP|Description|Attribute|co|RFC1274: friendly country name" -msgstr "" +msgstr "RFC1274: ??????" #: -:- msgid "" "LDAP|Description|Attribute|crossCertificatePair|RFC2256: X.509 cross " "certificate pair, use ;binary" -msgstr "" +msgstr "RFC2256: X.509??????;binary??????" #: -:- msgid "LDAP|Description|Attribute|c|RFC2256: ISO-3166 country 2-letter code" -msgstr "" +msgstr "RFC2256: ISO-3166??????2???????" #: -:- msgid "LDAP|Description|Attribute|dSAQuality|RFC1274: DSA Quality" -msgstr "" +msgstr "RFC1274: ????????????????(DSA)???" #: -:- msgid "LDAP|Description|Attribute|dc|RFC1274/2247: domain component" -msgstr "" +msgstr "RFC1274/2247: ???????" #: -:- msgid "" "LDAP|Description|Attribute|deltaRevocationList|RFC2256: delta revocation " "list; use ;binary" -msgstr "" +msgstr "RFC2256: ???????;binary??????" #: -:- msgid "" "LDAP|Description|Attribute|departmentNumber|RFC2798: identifies a department " "within an organization" -msgstr "" +msgstr "RFC2798: ????????????????" #: -:- msgid "LDAP|Description|Attribute|description|RFC2256: descriptive information" -msgstr "" +msgstr "RFC2256: ??????" #: -:- msgid "" "LDAP|Description|Attribute|destinationIndicator|RFC2256: destination " "indicator" -msgstr "" +msgstr "RFC2256: ??????????" #: -:- msgid "" "LDAP|Description|Attribute|displayName|RFC2798: preferred name to be used " "when displaying entries" -msgstr "" +msgstr "RFC2798: ??????????????????" #: -:- msgid "LDAP|Description|Attribute|dmdName|RFC2256: name of DMD" -msgstr "" +msgstr "RFC2256: ????????????(DMD)???" #: -:- msgid "" "LDAP|Description|Attribute|documentAuthor|RFC1274: DN of author of document" -msgstr "" +msgstr "RFC1274: ??????DN" #: -:- msgid "" "LDAP|Description|Attribute|documentIdentifier|RFC1274: unique identifier of " "document" -msgstr "" +msgstr "RFC1274: ????????????" #: -:- msgid "" @@ -1328,147 +1328,147 @@ #: -:- msgid "" "LDAP|Description|Attribute|documentPublisher|RFC1274: publisher of document" -msgstr "" +msgstr "RFC1274: ??????" #: -:- msgid "LDAP|Description|Attribute|documentTitle|RFC1274: title of document" -msgstr "" +msgstr "RFC1274: ???????" #: -:- msgid "LDAP|Description|Attribute|documentVersion|RFC1274: version of document" -msgstr "" +msgstr "RFC1274: ????????" #: -:- msgid "LDAP|Description|Attribute|drink|RFC1274: favorite drink" -msgstr "" +msgstr "RFC1274: ??????" #: -:- msgid "" "LDAP|Description|Attribute|employeeNumber|RFC2798: numerically identifies an " "employee within an organization" -msgstr "" +msgstr "RFC2798: ?????????????????" #: -:- msgid "" "LDAP|Description|Attribute|employeeType|RFC2798: type of employment for a " "person" -msgstr "" +msgstr "RFC2798: ??????" #: -:- msgid "" "LDAP|Description|Attribute|facsimileTelephoneNumber|RFC2256: Facsimile (Fax) " "Telephone Number" -msgstr "" +msgstr "RFC2256: FAX??" #: -:- msgid "LDAP|Description|Attribute|gecos|The GECOS field; the common name" -msgstr "" +msgstr "GECOS?????????????" #: -:- msgid "" "LDAP|Description|Attribute|gidNumber|An integer uniquely identifying a group " "in an administrative domain" -msgstr "" +msgstr "???????????????????????" #: -:- msgid "" "LDAP|Description|Attribute|givenName|RFC2256: first name(s) for which the " "entity is known by" -msgstr "" +msgstr "RFC2256: ????????" #: -:- msgid "" "LDAP|Description|Attribute|homeDirectory|The absolute path to the home " "directory" -msgstr "" +msgstr "??????????????" #: -:- msgid "LDAP|Description|Attribute|homePhone|RFC1274: home telephone number" -msgstr "" +msgstr "RFC1274: ???????" #: -:- msgid "" "LDAP|Description|Attribute|homePostalAddress|RFC1274: home postal address" -msgstr "" +msgstr "RFC1274: ????????" #: -:- msgid "LDAP|Description|Attribute|host|RFC1274: host computer" -msgstr "" +msgstr "RFC1274: ?????????" #: -:- msgid "" "LDAP|Description|Attribute|initials|RFC2256: initials of some or all of " "names, but not the surname(s)." -msgstr "" +msgstr "RFC2256: ??(????)????" #: -:- msgid "" "LDAP|Description|Attribute|internationaliSDNNumber|RFC2256: international " "ISDN number" -msgstr "" +msgstr "RFC2256: ??ISDN??" #: -:- msgid "LDAP|Description|Attribute|ipHostNumber|IP address" -msgstr "" +msgstr "IP????" #: -:- msgid "LDAP|Description|Attribute|ipNetmaskNumber|IP netmask" -msgstr "" +msgstr "IP??????" #: -:- msgid "LDAP|Description|Attribute|ipNetworkNumber|IP network" -msgstr "" +msgstr "IP??????" #: -:- msgid "LDAP|Description|Attribute|janetMailbox|RFC1274: Janet mailbox" -msgstr "" +msgstr "RFC1274: JANET????????" #: -:- msgid "LDAP|Description|Attribute|jpegPhoto|RFC2798: a JPEG image" -msgstr "" +msgstr "RFC2798: JPEG??" #: -:- msgid "" "LDAP|Description|Attribute|knowledgeInformation|RFC2256: knowledge " "information" -msgstr "" +msgstr "RFC2256: ????" #: -:- msgid "" "LDAP|Description|Attribute|labeledURI|RFC2079: Uniform Resource Identifier " "with optional label" -msgstr "" +msgstr "RFC2079: ??????????????(URI)" #: -:- msgid "LDAP|Description|Attribute|loginShell|The path to the login shell" -msgstr "" +msgstr "??????????" #: -:- msgid "" "LDAP|Description|Attribute|l|RFC2256: locality which this object resides in" -msgstr "" +msgstr "RFC2256: ??????????????" #: -:- msgid "LDAP|Description|Attribute|macAddress|MAC address" -msgstr "" +msgstr "MAC????" #: -:- msgid "" "LDAP|Description|Attribute|mailPreferenceOption|RFC1274: mail preference " "option" -msgstr "" +msgstr "RFC1274: ??????????" #: -:- msgid "LDAP|Description|Attribute|mail|RFC1274: RFC822 Mailbox" -msgstr "" +msgstr "RFC1274: RFC822???????????????" #: -:- msgid "LDAP|Description|Attribute|manager|RFC1274: DN of manager" -msgstr "" +msgstr "RFC1274: ????DN" #: -:- msgid "LDAP|Description|Attribute|matchingRuleUse|RFC2252: matching rule uses" -msgstr "" +msgstr "RFC2252: ?????????" #: -:- msgid "LDAP|Description|Attribute|matchingRules|RFC2252: matching rules" @@ -1476,63 +1476,63 @@ #: -:- msgid "LDAP|Description|Attribute|member|RFC2256: member of a group" -msgstr "" +msgstr "RFC2256: ?????????" #: -:- msgid "LDAP|Description|Attribute|mobile|RFC1274: mobile telephone number" -msgstr "" +msgstr "RFC1274: ?????????" #: -:- msgid "LDAP|Description|Attribute|nisNetgroupTriple|Netgroup triple" -msgstr "" +msgstr "???????????" #: -:- msgid "LDAP|Description|Attribute|objectClasses|RFC2252: object classes" -msgstr "" +msgstr "RFC2252: ?????????????" #: -:- msgid "" "LDAP|Description|Attribute|objectClass|RFC2256: object classes of the entity" -msgstr "" +msgstr "RFC2256: ????????????" #: -:- msgid "LDAP|Description|Attribute|olcAccess|Access Control List" -msgstr "" +msgstr "?????????" #: -:- msgid "LDAP|Description|Attribute|olcAllows|Allowed set of deprecated features" -msgstr "" +msgstr "????????????????" #: -:- msgid "" "LDAP|Description|Attribute|olcArgsFile|File for slapd command line options" -msgstr "" +msgstr "slapd????????????????????????" #: -:- msgid "LDAP|Description|Attribute|olcAttributeTypes|OpenLDAP attributeTypes" -msgstr "" +msgstr "OpenLDAP??attributeTypes" #: -:- msgid "LDAP|Description|Attribute|olcBackend|A type of backend" -msgstr "" +msgstr "?????????" #: -:- msgid "" "LDAP|Description|Attribute|olcConfigDir|Directory for slapd configuration " "backend" -msgstr "" +msgstr "slapd????????????????" #: -:- msgid "" "LDAP|Description|Attribute|olcConfigFile|File for slapd configuration " "directives" -msgstr "" +msgstr "slapd???????????????" #: -:- msgid "" "LDAP|Description|Attribute|olcDatabase|The backend type for a database " "instance" -msgstr "" +msgstr "???????????????????????" #: -:- msgid "" @@ -1542,186 +1542,186 @@ #: -:- msgid "LDAP|Description|Attribute|olcDbCacheSize|Entry cache size in entries" -msgstr "" +msgstr "?????????????" #: -:- msgid "" "LDAP|Description|Attribute|olcDbCheckpoint|Database checkpoint interval in " "kbytes and minutes" -msgstr "" +msgstr "????????????????(K????????)" #: -:- msgid "" "LDAP|Description|Attribute|olcDbConfig|BerkeleyDB DB_CONFIG configuration " "directives" -msgstr "" +msgstr "?????DB(BDB)?DB_CONFIG?????????" #: -:- msgid "" "LDAP|Description|Attribute|olcDbDirectory|Directory for database content" -msgstr "" +msgstr "?????????????????" #: -:- msgid "" "LDAP|Description|Attribute|olcDbDirtyRead|Allow reads of uncommitted data" -msgstr "" +msgstr "???????????????????????" #: -:- msgid "LDAP|Description|Attribute|olcDbIDLcacheSize|IDL cache size in IDLs" -msgstr "" +msgstr "IDL???????" #: -:- msgid "LDAP|Description|Attribute|olcDbIndex|Attribute index parameters" -msgstr "" +msgstr "??????????" #: -:- msgid "" "LDAP|Description|Attribute|olcDbLinearIndex|Index attributes one at a time" -msgstr "" +msgstr "???????????????" #: -:- msgid "LDAP|Description|Attribute|olcDbLockDetect|Deadlock detection algorithm" -msgstr "" +msgstr "??????????????" #: -:- msgid "LDAP|Description|Attribute|olcDbMode|Unix permissions of database files" -msgstr "" +msgstr "???????????UNIX????????" #: -:- msgid "" "LDAP|Description|Attribute|olcDbNoSync|Disable synchronous database writes" -msgstr "" +msgstr "????????????????????" #: -:- msgid "" "LDAP|Description|Attribute|olcDbSearchStack|Depth of search stack in IDLs" -msgstr "" +msgstr "IDL? off, 0 => on)" -msgstr "" +msgstr "???????? ??, 0 => ??)" #: -:- msgid "LDAP|Description|Attribute|sambaGroupType|NT Group Type" -msgstr "" +msgstr "NT??????" #: -:- msgid "" "LDAP|Description|Attribute|sambaHomeDrive|Driver letter of home directory " "mapping" -msgstr "" +msgstr "?????????????????????" #: -:- msgid "LDAP|Description|Attribute|sambaHomePath|Home directory UNC path" -msgstr "" +msgstr "??????????UNC??" #: -:- msgid "LDAP|Description|Attribute|sambaIntegerOption|An integer option" -msgstr "" +msgstr "?????????" #: -:- msgid "" "LDAP|Description|Attribute|sambaKickoffTime|Timestamp of when the user will " "be logged off automatically" -msgstr "" +msgstr "???????????????????" #: -:- msgid "LDAP|Description|Attribute|sambaLMPassword|LanManager Password" -msgstr "" +msgstr "LAN????????????" #: -:- msgid "" "LDAP|Description|Attribute|sambaLockoutDuration|Lockout duration in minutes " "(default: 30, -1 => forever)" -msgstr "" +msgstr "????????(default: 30, -1 => ???)" #: -:- msgid "" @@ -1783,23 +1783,23 @@ msgid "" "LDAP|Description|Attribute|sambaLockoutThreshold|Lockout users after bad " "logon attempts (default: 0 => off)" -msgstr "" +msgstr "?????????????????????????????? (?????: 0 => ??)" #: -:- msgid "LDAP|Description|Attribute|sambaLogoffTime|Timestamp of last logoff" -msgstr "" +msgstr "???????????" #: -:- msgid "LDAP|Description|Attribute|sambaLogonHours|Logon Hours" -msgstr "" +msgstr "??????" #: -:- msgid "LDAP|Description|Attribute|sambaLogonScript|Logon script path" -msgstr "" +msgstr "???????????" #: -:- msgid "LDAP|Description|Attribute|sambaLogonTime|Timestamp of last logon" -msgstr "" +msgstr "???????????" #: -:- msgid "" @@ -1813,46 +1813,46 @@ msgid "" "LDAP|Description|Attribute|sambaMaxPwdAge|Maximum password age, in seconds " "(default: -1 => never expire passwords)" -msgstr "" +msgstr "???????????????(?) (?????: -1 => ???????????)" #: -:- msgid "" "LDAP|Description|Attribute|sambaMinPwdAge|Minimum password age, in seconds " "(default: 0 => allow immediate password change)" -msgstr "" +msgstr "?????????????????????(?) (?????: 0 => ?????????????)" #: -:- msgid "" "LDAP|Description|Attribute|sambaMinPwdLength|Minimal password length " "(default: 5)" -msgstr "" +msgstr "????????? (?????; 5)" #: -:- msgid "" "LDAP|Description|Attribute|sambaMungedDial|Base64 encoded user parameter " "string" -msgstr "" +msgstr "Base64?????????????????" #: -:- msgid "" "LDAP|Description|Attribute|sambaNTPassword|MD4 hash of the unicode password" -msgstr "" +msgstr "Unicode?????????????MD4????" #: -:- msgid "" "LDAP|Description|Attribute|sambaNextGroupRid|Next NT rid to give out for " "groups" -msgstr "" +msgstr "????????????NT RID" #: -:- msgid "" "LDAP|Description|Attribute|sambaNextRid|Next NT rid to give out for anything" -msgstr "" +msgstr "?????????????????NT RID" #: -:- msgid "" "LDAP|Description|Attribute|sambaNextUserRid|Next NT rid to give our for users" -msgstr "??????????NT RID" +msgstr "???????????NT RID" #: -:- msgid "LDAP|Description|Attribute|sambaOptionName|Option Name" @@ -1862,54 +1862,54 @@ msgid "" "LDAP|Description|Attribute|sambaPasswordHistory|Concatenated MD4 hashes of " "the unicode passwords used on this account" -msgstr "" +msgstr "?????????????Unicode??????? off)" -msgstr "" +msgstr "???????????????? (?????: 0 => ??)" #: -:- msgid "" "LDAP|Description|Attribute|sambaPwdLastSet|Timestamp of the last password " "update" -msgstr "" +msgstr "???????????????" #: -:- msgid "" "LDAP|Description|Attribute|sambaPwdMustChange|Timestamp of when the password " "will expire" -msgstr "" +msgstr "????????????" #: -:- msgid "" "LDAP|Description|Attribute|sambaRefuseMachinePwdChange|Allow Machine " "Password changes (default: 0 => off)" -msgstr "" +msgstr "????????????????????????? (?????: 0 => ??)" #: -:- msgid "LDAP|Description|Attribute|sambaSIDList|Security ID List" -msgstr "" +msgstr "??????ID??" #: -:- msgid "LDAP|Description|Attribute|sambaSID|Security ID" -msgstr "" +msgstr "??????ID" #: -:- msgid "LDAP|Description|Attribute|sambaShareName|Share Name" @@ -1917,27 +1917,27 @@ #: -:- msgid "LDAP|Description|Attribute|sambaStringListOption|A string list option" -msgstr "" +msgstr "????????????" #: -:- msgid "LDAP|Description|Attribute|sambaStringOption|A string option" -msgstr "" +msgstr "??????????" #: -:- msgid "LDAP|Description|Attribute|sambaTrustFlags|Trust Password Flags" -msgstr "" +msgstr "??????????" #: -:- msgid "" "LDAP|Description|Attribute|sambaUserWorkstations|List of user workstations " "the user is allowed to logon to" -msgstr "" +msgstr "??????????????????????" #: -:- msgid "" "LDAP|Description|Attribute|searchGuide|RFC2256: search guide, deprecated by " "enhancedSearchGuide" -msgstr "" +msgstr "RFC2256: ????(enhancedSearchGuide????????)" #: -:- msgid "LDAP|Description|Attribute|secretary|RFC1274: DN of secretary" @@ -1956,91 +1956,91 @@ msgid "" "LDAP|Description|Attribute|sn|RFC2256: last (family) name(s) for which the " "entity is known by" -msgstr "" +msgstr "RFFC2256: ????????" #: -:- msgid "" "LDAP|Description|Attribute|street|RFC2256: street address of this object" -msgstr "" +msgstr "RFFC2256: ????????????" #: -:- msgid "" "LDAP|Description|Attribute|st|RFC2256: state or province which this object " "resides in" -msgstr "" +msgstr "RFFC2256: ?????????????????" #: -:- msgid "" "LDAP|Description|Attribute|subtreeMaximumQuality|RFC1274: Subtree Maximun " "Quality" -msgstr "" +msgstr "RFC1274: ??????????" #: -:- msgid "" "LDAP|Description|Attribute|subtreeMinimumQuality|RFC1274: Subtree Mininum " "Quality" -msgstr "" +msgstr "RFC1274: ??????????" #: -:- msgid "" "LDAP|Description|Attribute|supportedAlgorithms|RFC2256: supported algorithms" -msgstr "" +msgstr "RFC2256: ????????????" #: -:- msgid "" "LDAP|Description|Attribute|supportedApplicationContext|RFC2256: supported " "application context" -msgstr "" +msgstr "RFC2256: ??????????????" #: -:- msgid "LDAP|Description|Attribute|telephoneNumber|RFC2256: Telephone Number" -msgstr "" +msgstr "RFC2256: ????" #: -:- msgid "" "LDAP|Description|Attribute|teletexTerminalIdentifier|RFC2256: Teletex " "Terminal Identifier" -msgstr "" +msgstr "RFC2256: ???????????" #: -:- msgid "LDAP|Description|Attribute|telexNumber|RFC2256: Telex Number" -msgstr "" +msgstr "RFC2256: ???????" #: -:- msgid "" "LDAP|Description|Attribute|title|RFC2256: title associated with the entity" -msgstr "" +msgstr "RFC2256: ????????????????" #: -:- msgid "" "LDAP|Description|Attribute|uidNumber|An integer uniquely identifying a user " "in an administrative domain" -msgstr "" +msgstr "?????????????????????????" #: -:- msgid "LDAP|Description|Attribute|uid|RFC1274: user identifier" -msgstr "" +msgstr "RFC1274: ??????" #: -:- msgid "" "LDAP|Description|Attribute|uniqueMember|RFC2256: unique member of a group" -msgstr "" +msgstr "RFC2256: ??????????????" #: -:- msgid "" "LDAP|Description|Attribute|userCertificate|RFC2256: X.509 user certificate, " "use ;binary" -msgstr "" +msgstr "RFC2256: X.509???????;binary??????" #: -:- msgid "LDAP|Description|Attribute|userClass|RFC1274: category of user" -msgstr "" +msgstr "RFC1274: ??????" #: -:- msgid "" "LDAP|Description|Attribute|userPKCS12|RFC2798: personal identity " "information, a PKCS #12 PFX" -msgstr "" +msgstr "RFC2798: ????????? (PKCS #12 PFX)" #: -:- msgid "LDAP|Description|Attribute|userPassword|RFC2256/2307: password of user" @@ -2050,36 +2050,36 @@ msgid "" "LDAP|Description|Attribute|userSMIMECertificate|RFC2798: PKCS#7 SignedData " "used to support S/MIME" -msgstr "" +msgstr "RFC2798: S/MIME????????????PKCS#7???????" #: -:- msgid "LDAP|Description|Attribute|x121Address|RFC2256: X.121 Address" -msgstr "" +msgstr "RFC2256: X.121????" #: -:- msgid "" "LDAP|Description|Attribute|x500UniqueIdentifier|RFC2256: X.500 unique " "identifier" -msgstr "" +msgstr "RFC2256: X.500 ??????" #: -:- msgid "LDAP|Description|ObjectClass|OpenLDAProotDSE|OpenLDAP Root DSE object" -msgstr "" +msgstr "OpenLDAP????DSE??????" #: -:- msgid "LDAP|Description|ObjectClass|alias|RFC2256: an alias" -msgstr "" +msgstr "RFC2256: ??" #: -:- msgid "" "LDAP|Description|ObjectClass|applicationEntity|RFC2256: an application entity" -msgstr "" +msgstr "RFC2256: ????" #: -:- msgid "" "LDAP|Description|ObjectClass|applicationProcess|RFC2256: an application " "process" -msgstr "" +msgstr "RFC2256: ??????" #: -:- msgid "" @@ -2090,11 +2090,11 @@ msgid "" "LDAP|Description|ObjectClass|certificationAuthority|RFC2256: a certificate " "authority" -msgstr "" +msgstr "RFC2256: ????" #: -:- msgid "LDAP|Description|ObjectClass|country|RFC2256: a country" -msgstr "" +msgstr "RFC2256: ?" #: -:- msgid "" @@ -2103,21 +2103,21 @@ #: -:- msgid "LDAP|Description|ObjectClass|dcObject|RFC2247: domain component object" -msgstr "" +msgstr "RFC2247: ????????????" #: -:- msgid "LDAP|Description|ObjectClass|deltaCRL|RFC2587: PKI user" -msgstr "" +msgstr "RFC2287: PKI???" #: -:- msgid "LDAP|Description|ObjectClass|device|RFC2256: a device" -msgstr "" +msgstr "RFC2256: ??" #: -:- msgid "" "LDAP|Description|ObjectClass|domainRelatedObject|RFC1274: an object related " "to an domain" -msgstr "" +msgstr "RFC1274: ???????????????" #: -:- msgid "" @@ -2127,27 +2127,27 @@ #: -:- msgid "" "LDAP|Description|ObjectClass|groupOfNames|RFC2256: a group of names (DNs)" -msgstr "" +msgstr "RFC2256: ??(DN)?????" #: -:- msgid "" "LDAP|Description|ObjectClass|groupOfUniqueNames|RFC2256: a group of unique " "names (DN and Unique Identifier)" -msgstr "" +msgstr "RFC2256: ?????(DN???????)?????" #: -:- msgid "LDAP|Description|ObjectClass|ieee802Device|A device with a MAC address" -msgstr "" +msgstr "MAC?????????" #: -:- msgid "" "LDAP|Description|ObjectClass|inetOrgPerson|RFC2798: Internet Organizational " "Person" -msgstr "" +msgstr "RFC2798: ???????????" #: -:- msgid "LDAP|Description|ObjectClass|ipHost|Abstraction of a host, an IP device" -msgstr "" +msgstr "???(IP??)?????" #: -:- msgid "LDAP|Description|ObjectClass|ipNetwork|Abstraction of an IP network" From codesite-noreply at google.com Sat Aug 18 06:32:06 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 03:32:06 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r257 - trunk/po/ja Message-ID: <163600cf970437f6d1b59dcd17c0cc@google.com> Author: koutou Date: Sat Aug 18 03:31:12 2007 New Revision: 257 Modified: trunk/po/ja/active-ldap.po Log: * updated messages. Modified: trunk/po/ja/active-ldap.po ============================================================================== --- trunk/po/ja/active-ldap.po (original) +++ trunk/po/ja/active-ldap.po Sat Aug 18 03:31:12 2007 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" "POT-Creation-Date: 2007-08-16 22:01+0900\n" -"PO-Revision-Date: 2007-08-18 16:08+0900\n" +"PO-Revision-Date: 2007-08-18 19:30+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -641,7 +641,7 @@ #: -:- msgid "LDAP|Attribute|olcRootDSE" -msgstr "OpenLDAP??: ???DSA??????(olcRootDSE)" +msgstr "OpenLDAP??: ???DSE(olcRootDSE)" #: -:- msgid "LDAP|Attribute|olcRootPW" @@ -1686,7 +1686,7 @@ #: -:- msgid "LDAP|Description|Attribute|ref|namedref: subordinate referral URL" -msgstr "?????????: ?????URL" +msgstr "??????: ?????URL" #: -:- msgid "" @@ -2064,7 +2064,7 @@ #: -:- msgid "LDAP|Description|ObjectClass|OpenLDAProotDSE|OpenLDAP Root DSE object" -msgstr "OpenLDAP????DSE??????" +msgstr "OpenLDAP????DSA????????????" #: -:- msgid "LDAP|Description|ObjectClass|alias|RFC2256: an alias" @@ -2151,198 +2151,198 @@ #: -:- msgid "LDAP|Description|ObjectClass|ipNetwork|Abstraction of an IP network" -msgstr "" +msgstr "IP???????????" #: -:- msgid "LDAP|Description|ObjectClass|ipProtocol|Abstraction of an IP protocol" -msgstr "" +msgstr "IP??????????" #: -:- msgid "" "LDAP|Description|ObjectClass|ipService|Abstraction an Internet Protocol " "service" -msgstr "" +msgstr "IP?????????" #: -:- msgid "" "LDAP|Description|ObjectClass|labeledURIObject|RFC2079: object that contains " "the URI attribute type" -msgstr "" +msgstr "RFC2079: URI??????????????" #: -:- msgid "LDAP|Description|ObjectClass|locality|RFC2256: a locality" -msgstr "" +msgstr "RFC2256: ??" #: -:- msgid "LDAP|Description|ObjectClass|nisMap|A generic abstraction of a NIS map" -msgstr "" +msgstr "NIS????????????" #: -:- msgid "LDAP|Description|ObjectClass|nisNetgroup|Abstraction of a netgroup" -msgstr "" +msgstr "????????????" #: -:- msgid "LDAP|Description|ObjectClass|nisObject|An entry in a NIS map" -msgstr "" +msgstr "NIS????????" #: -:- msgid "" "LDAP|Description|ObjectClass|olcBackendConfig|OpenLDAP Backend-specific " "options" -msgstr "" +msgstr "OpenLDAP???????????????" #: -:- msgid "LDAP|Description|ObjectClass|olcConfig|OpenLDAP configuration object" -msgstr "" +msgstr "OpenLDAP?????????" #: -:- msgid "" "LDAP|Description|ObjectClass|olcDatabaseConfig|OpenLDAP Database-specific " "options" -msgstr "" +msgstr "OpenLDAP???????????????" #: -:- msgid "" "LDAP|Description|ObjectClass|olcFrontendConfig|OpenLDAP frontend " "configuration" -msgstr "" +msgstr "OpenLDAP???????????" #: -:- msgid "" "LDAP|Description|ObjectClass|olcGlobal|OpenLDAP Global configuration options" -msgstr "" +msgstr "OpenLDAP??????????????" #: -:- msgid "LDAP|Description|ObjectClass|olcHdbConfig|HDB backend configuration" -msgstr "" +msgstr "HDB?????????" #: -:- msgid "" "LDAP|Description|ObjectClass|olcIncludeFile|OpenLDAP configuration include " "file" -msgstr "" +msgstr "????OpenLDAP???????" #: -:- msgid "LDAP|Description|ObjectClass|olcLdifConfig|LDIF backend configuration" -msgstr "" +msgstr "LDIF?????????" #: -:- msgid "LDAP|Description|ObjectClass|olcModuleList|OpenLDAP dynamic module info" -msgstr "" +msgstr "OpenLDAP???????????" #: -:- msgid "" "LDAP|Description|ObjectClass|olcOverlayConfig|OpenLDAP Overlay-specific " "options" -msgstr "" +msgstr "OpenLDAP??????????????" #: -:- msgid "LDAP|Description|ObjectClass|olcSchemaConfig|OpenLDAP schema object" -msgstr "" +msgstr "OpenLDAP???????????" #: -:- msgid "LDAP|Description|ObjectClass|oncRpc|Abstraction of an ONC/RPC binding" -msgstr "" +msgstr "ONC RPC????????????" #: -:- msgid "" "LDAP|Description|ObjectClass|organizationalPerson|RFC2256: an organizational " "person" -msgstr "" +msgstr "RFC2256: ????" #: -:- msgid "" "LDAP|Description|ObjectClass|organizationalRole|RFC2256: an organizational " "role" -msgstr "" +msgstr "RFC2256: ?????" #: -:- msgid "" "LDAP|Description|ObjectClass|organizationalUnit|RFC2256: an organizational " "unit" -msgstr "" +msgstr "RFC2256: ?????" #: -:- msgid "LDAP|Description|ObjectClass|organization|RFC2256: an organization" -msgstr "" +msgstr "RFC2256: ??" #: -:- msgid "LDAP|Description|ObjectClass|person|RFC2256: a person" -msgstr "" +msgstr "RFC2256: ?" #: -:- msgid "LDAP|Description|ObjectClass|pkiCA|RFC2587: PKI certificate authority" -msgstr "" +msgstr "RFC2287: PKI????" #: -:- msgid "LDAP|Description|ObjectClass|pkiUser|RFC2587: a PKI user" -msgstr "" +msgstr "RFC2287: PKI???" #: -:- msgid "" "LDAP|Description|ObjectClass|posixAccount|Abstraction of an account with " "POSIX attributes" -msgstr "" +msgstr "POSIX???????????????" #: -:- msgid "" "LDAP|Description|ObjectClass|posixGroup|Abstraction of a group of accounts" -msgstr "" +msgstr "???????????????" #: -:- msgid "" "LDAP|Description|ObjectClass|referral|namedref: named subordinate referral" -msgstr "" +msgstr "??????: ???????????" #: -:- msgid "" "LDAP|Description|ObjectClass|residentialPerson|RFC2256: an residential person" -msgstr "" +msgstr "RFC2256: ???" #: -:- msgid "" "LDAP|Description|ObjectClass|sambaConfigOption|Samba Configuration Option" -msgstr "" +msgstr "Samba????????" #: -:- msgid "LDAP|Description|ObjectClass|sambaConfig|Samba Configuration Section" -msgstr "" +msgstr "Sambao????????" #: -:- msgid "LDAP|Description|ObjectClass|sambaDomain|Samba Domain Information" -msgstr "" +msgstr "Samba???????" #: -:- msgid "LDAP|Description|ObjectClass|sambaGroupMapping|Samba Group Mapping" -msgstr "" +msgstr "Samba???????" #: -:- msgid "" "LDAP|Description|ObjectClass|sambaIdmapEntry|Mapping from a SID to an ID" -msgstr "" +msgstr "SID??ID????" #: -:- msgid "" "LDAP|Description|ObjectClass|sambaSamAccount|Samba 3.0 Auxilary SAM Account" -msgstr "" +msgstr "Samba 3.0?????SAM?????" #: -:- msgid "LDAP|Description|ObjectClass|sambaShare|Samba Share Section" -msgstr "" +msgstr "Samba????????" #: -:- msgid "LDAP|Description|ObjectClass|sambaSidEntry|Structural Class for a SID" -msgstr "" +msgstr "SID????????" #: -:- msgid "LDAP|Description|ObjectClass|sambaTrustPassword|Samba Trust Password" -msgstr "" +msgstr "Samba????????" #: -:- msgid "" "LDAP|Description|ObjectClass|sambaUnixIdPool|Pool for allocating UNIX uids/" "gids" -msgstr "" +msgstr "UNIX?UID/GID????????????" #: -:- msgid "" @@ -2360,115 +2360,115 @@ msgid "" "LDAP|Description|ObjectClass|strongAuthenticationUser|RFC2256: a strong " "authentication user" -msgstr "" +msgstr "RFC2256: ????????" #: -:- msgid "" "LDAP|Description|ObjectClass|subschema|RFC2252: controlling subschema (sub)" "entry" -msgstr "" +msgstr "RFC2252: ?????????????????" #: -:- msgid "LDAP|Description|ObjectClass|top|top of the superclass chain" -msgstr "" +msgstr "????????????" #: -:- msgid "LDAP|Description|ObjectClass|uidObject|RFC2377: uid object" -msgstr "" +msgstr "RFC2377: UID??????" #: -:- msgid "" "LDAP|Description|ObjectClass|userSecurityInformation|RFC2256: a user " "security information" -msgstr "" +msgstr "RFC2256: ???????????" #: -:- msgid "LDAP|ObjectClass|LDAProotDSE" -msgstr "LDAP???DSA??????(LDAProotDSE)" +msgstr "LDAP???DSE(LDAProotDSE)" #: -:- msgid "LDAP|ObjectClass|OpenLDAProotDSE" -msgstr "" +msgstr "OpenLDAP????DSE(OpenLDAProotDSE)" #: -:- msgid "LDAP|ObjectClass|RFC822localPart" -msgstr "" +msgstr "RFC822?????????????(RFC822localPart)" #: -:- msgid "LDAP|ObjectClass|account" -msgstr "" +msgstr "?????(account)" #: -:- msgid "LDAP|ObjectClass|alias" -msgstr "" +msgstr "??(alias)" #: -:- msgid "LDAP|ObjectClass|applicationEntity" -msgstr "" +msgstr "????(applicationEntity)" #: -:- msgid "LDAP|ObjectClass|applicationProcess" -msgstr "" +msgstr "??????(applicationProcess)" #: -:- msgid "LDAP|ObjectClass|bootableDevice" -msgstr "" +msgstr "????????(booatbleDevice)" #: -:- msgid "LDAP|ObjectClass|cRLDistributionPoint" -msgstr "" +msgstr "CRL???(cRLDistributionPoint)" #: -:- msgid "LDAP|ObjectClass|certificationAuthority" -msgstr "" +msgstr "????(certificationAuthority)" #: -:- msgid "LDAP|ObjectClass|certificationAuthority-V2" -msgstr "" +msgstr "????-V2(certificationAuthority-V2)" #: -:- msgid "LDAP|ObjectClass|country" -msgstr "" +msgstr "?(country)" #: -:- msgid "LDAP|ObjectClass|dNSDomain" -msgstr "" +msgstr "DNS????(dNSDomain)" #: -:- msgid "LDAP|ObjectClass|dSA" -msgstr "" +msgstr "DSA(dSA)" #: -:- msgid "LDAP|ObjectClass|dcObject" -msgstr "" +msgstr "????????????(dcObject)" #: -:- msgid "LDAP|ObjectClass|deltaCRL" -msgstr "" +msgstr "??CRL(deltaCRL)" #: -:- msgid "LDAP|ObjectClass|device" -msgstr "" +msgstr "????(device)" #: -:- msgid "LDAP|ObjectClass|dmd" -msgstr "" +msgstr "????????????(dmd)" #: -:- msgid "LDAP|ObjectClass|document" -msgstr "" +msgstr "??(document)" #: -:- msgid "LDAP|ObjectClass|documentSeries" -msgstr "" +msgstr "??????(documentSeries)" #: -:- msgid "LDAP|ObjectClass|domain" -msgstr "" +msgstr "????(domain)" #: -:- msgid "LDAP|ObjectClass|domainRelatedObject" -msgstr "" +msgstr "????????????(domainRelatedObject)" #: -:- msgid "LDAP|ObjectClass|extensibleObject" @@ -2476,91 +2476,91 @@ #: -:- msgid "LDAP|ObjectClass|friendlyCountry" -msgstr "" +msgstr "???(friendlyCountry)" #: -:- msgid "LDAP|ObjectClass|groupOfNames" -msgstr "" +msgstr "???????(groupOfNames)" #: -:- msgid "LDAP|ObjectClass|groupOfUniqueNames" -msgstr "" +msgstr "??????????(groupOfUniqueNames)" #: -:- msgid "LDAP|ObjectClass|ieee802Device" -msgstr "" +msgstr "IEEE802???????(ieee802Device)" #: -:- msgid "LDAP|ObjectClass|inetOrgPerson" -msgstr "" +msgstr "???????????(inetOrgPerson)" #: -:- msgid "LDAP|ObjectClass|ipHost" -msgstr "" +msgstr "IP???(ipHost)" #: -:- msgid "LDAP|ObjectClass|ipNetwork" -msgstr "" +msgstr "IP??????(ipNetwork)" #: -:- msgid "LDAP|ObjectClass|ipProtocol" -msgstr "" +msgstr "IP?????(ipProtocol)" #: -:- msgid "LDAP|ObjectClass|ipService" -msgstr "" +msgstr "IP????(ipService)" #: -:- msgid "LDAP|ObjectClass|labeledURIObject" -msgstr "" +msgstr "??????URI??????(labeledURIObject)" #: -:- msgid "LDAP|ObjectClass|locality" -msgstr "" +msgstr "??(locality)" #: -:- msgid "LDAP|ObjectClass|newPilotPerson" -msgstr "" +msgstr "????????(newPilotPerson)" #: -:- msgid "LDAP|ObjectClass|nisMap" -msgstr "" +msgstr "NIS???(nisMap)" #: -:- msgid "LDAP|ObjectClass|nisNetgroup" -msgstr "" +msgstr "NIS???????(nisNetgroup)" #: -:- msgid "LDAP|ObjectClass|nisObject" -msgstr "" +msgstr "NIS??????(nisObject)" #: -:- msgid "LDAP|ObjectClass|olcBackendConfig" -msgstr "" +msgstr "OpenLDAP??: ????????(olcBackendConfig)" #: -:- msgid "LDAP|ObjectClass|olcConfig" -msgstr "" +msgstr "OpenLDAP??: ??(olcConfig)" #: -:- msgid "LDAP|ObjectClass|olcDatabaseConfig" -msgstr "" +msgstr "OpenLDAP??: ????????(olcDatabaseConfig)" #: -:- msgid "LDAP|ObjectClass|olcFrontendConfig" -msgstr "" +msgstr "OpenLDAP??: ?????????(olcFrontendConfig)" #: -:- msgid "LDAP|ObjectClass|olcGlobal" -msgstr "" +msgstr "OpenLDAP??: ?????(olcGlobal)" #: -:- msgid "LDAP|ObjectClass|olcHdbConfig" -msgstr "" +msgstr "OpenLDAP??: HDB??(olcHdbConfig)" #: -:- msgid "LDAP|ObjectClass|olcIncludeFile" -msgstr "" +msgstr "OpenLDAP??: ????????(olcIncludeFile)" #: -:- msgid "LDAP|ObjectClass|olcLdifConfig" @@ -2568,59 +2568,59 @@ #: -:- msgid "LDAP|ObjectClass|olcModuleList" -msgstr "" +msgstr "OpenLDAP??: ???????(olcModuleList)" #: -:- msgid "LDAP|ObjectClass|olcOverlayConfig" -msgstr "" +msgstr "OpenLDAP??: ???????(olcOverlayConfig)" #: -:- msgid "LDAP|ObjectClass|olcSchemaConfig" -msgstr "" +msgstr "OpenLDAP??: ??????(olcSchemaConfig)" #: -:- msgid "LDAP|ObjectClass|oncRpc" -msgstr "" +msgstr "ONC RPC(oncRpc)" #: -:- msgid "LDAP|ObjectClass|organization" -msgstr "" +msgstr "??(organization)" #: -:- msgid "LDAP|ObjectClass|organizationalPerson" -msgstr "" +msgstr "????(organizationalPerson)" #: -:- msgid "LDAP|ObjectClass|organizationalRole" -msgstr "" +msgstr "??????(organizationalRole)" #: -:- msgid "LDAP|ObjectClass|organizationalUnit" -msgstr "" +msgstr "?????(organizationalUnit)" #: -:- msgid "LDAP|ObjectClass|person" -msgstr "" +msgstr "?(person)" #: -:- msgid "LDAP|ObjectClass|pilotDSA" -msgstr "" +msgstr "????DSA(pilotDSA)" #: -:- msgid "LDAP|ObjectClass|pilotOrganization" -msgstr "" +msgstr "??????(pilotOrganization)" #: -:- msgid "LDAP|ObjectClass|pilotPerson" -msgstr "" +msgstr "?????(pilotPerson)" #: -:- msgid "LDAP|ObjectClass|pkiCA" -msgstr "" +msgstr "PKI CA(pkiCA)" #: -:- msgid "LDAP|ObjectClass|pkiUser" -msgstr "" +msgstr "PKI???(pkiUser)" #: -:- msgid "LDAP|ObjectClass|posixAccount" @@ -2632,35 +2632,35 @@ #: -:- msgid "LDAP|ObjectClass|qualityLabelledData" -msgstr "" +msgstr "??????????????(qualityLabelledData)" #: -:- msgid "LDAP|ObjectClass|referral" -msgstr "" +msgstr "??(referral)" #: -:- msgid "LDAP|ObjectClass|residentialPerson" -msgstr "" +msgstr "???(residentialPerson)" #: -:- msgid "LDAP|ObjectClass|room" -msgstr "" +msgstr "??(room)" #: -:- msgid "LDAP|ObjectClass|sambaConfig" -msgstr "" +msgstr "Samba: ??(sambaConfig)" #: -:- msgid "LDAP|ObjectClass|sambaConfigOption" -msgstr "" +msgstr "Samba: ???????(sambaConfigOption)" #: -:- msgid "LDAP|ObjectClass|sambaDomain" -msgstr "" +msgstr "Samba: ????(sambaDomain)" #: -:- msgid "LDAP|ObjectClass|sambaGroupMapping" -msgstr "" +msgstr "Samba: ??????(sambaGroupMapping)" #: -:- msgid "LDAP|ObjectClass|sambaIdmapEntry" @@ -2668,27 +2668,27 @@ #: -:- msgid "LDAP|ObjectClass|sambaSamAccount" -msgstr "" +msgstr "Samba: SAM?????(sambaSamAccount)" #: -:- msgid "LDAP|ObjectClass|sambaShare" -msgstr "" +msgstr "Samba: ??(sambaShare)" #: -:- msgid "LDAP|ObjectClass|sambaSidEntry" -msgstr "" +msgstr "Samba: SID????(sambaSidEntry)" #: -:- msgid "LDAP|ObjectClass|sambaTrustPassword" -msgstr "" +msgstr "Samba: ???????(sambaTrustPassword)" #: -:- msgid "LDAP|ObjectClass|sambaUnixIdPool" -msgstr "" +msgstr "Samba: UNIX ID???(sambaUnixIdPool)" #: -:- msgid "LDAP|ObjectClass|shadowAccount" -msgstr "" +msgstr "?????????(shadowAccount)" #: -:- msgid "LDAP|ObjectClass|simpleSecurityObject" @@ -2696,27 +2696,27 @@ #: -:- msgid "LDAP|ObjectClass|strongAuthenticationUser" -msgstr "" +msgstr "????????(strongAuthenticationUser)" #: -:- msgid "LDAP|ObjectClass|subentry" -msgstr "" +msgstr "??????(subentry)" #: -:- msgid "LDAP|ObjectClass|subschema" -msgstr "" +msgstr "??????(subschema)" #: -:- msgid "LDAP|ObjectClass|top" -msgstr "" +msgstr "???(top)" #: -:- msgid "LDAP|ObjectClass|uidObject" -msgstr "" +msgstr "UID??????(uidObject)" #: -:- msgid "LDAP|ObjectClass|userSecurityInformation" -msgstr "" +msgstr "???????????(userSecurityInformation)" #: lib/active_ldap/adapter/ldap.rb:84 msgid "No matches: filter: %s: attributes: %s" @@ -2820,7 +2820,7 @@ #: lib/active_ldap/get_text/parser.rb:74 msgid "Ignored '%{file}'. Solve dependencies first." -msgstr "" +msgstr "'%{file}'???????????????????????" #: lib/active_ldap/attributes.rb:34 msgid "The first argument, name, must not be nil. Please report this as a bug!" From codesite-noreply at google.com Sat Aug 18 06:38:07 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 03:38:07 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r258 - trunk/po/ja Message-ID: Author: koutou Date: Sat Aug 18 03:37:10 2007 New Revision: 258 Modified: trunk/po/ja/active-ldap.po Log: * used another word. Modified: trunk/po/ja/active-ldap.po ============================================================================== --- trunk/po/ja/active-ldap.po (original) +++ trunk/po/ja/active-ldap.po Sat Aug 18 03:37:10 2007 @@ -2147,21 +2147,21 @@ #: -:- msgid "LDAP|Description|ObjectClass|ipHost|Abstraction of a host, an IP device" -msgstr "???(IP??)?????" +msgstr "???(IP??)????" #: -:- msgid "LDAP|Description|ObjectClass|ipNetwork|Abstraction of an IP network" -msgstr "IP???????????" +msgstr "IP??????????" #: -:- msgid "LDAP|Description|ObjectClass|ipProtocol|Abstraction of an IP protocol" -msgstr "IP??????????" +msgstr "IP?????????" #: -:- msgid "" "LDAP|Description|ObjectClass|ipService|Abstraction an Internet Protocol " "service" -msgstr "IP?????????" +msgstr "IP????????" #: -:- msgid "" @@ -2175,11 +2175,11 @@ #: -:- msgid "LDAP|Description|ObjectClass|nisMap|A generic abstraction of a NIS map" -msgstr "NIS????????????" +msgstr "NIS???????????" #: -:- msgid "LDAP|Description|ObjectClass|nisNetgroup|Abstraction of a netgroup" -msgstr "????????????" +msgstr "???????????" #: -:- msgid "LDAP|Description|ObjectClass|nisObject|An entry in a NIS map" @@ -2242,7 +2242,7 @@ #: -:- msgid "LDAP|Description|ObjectClass|oncRpc|Abstraction of an ONC/RPC binding" -msgstr "ONC RPC????????????" +msgstr "ONC RPC???????????" #: -:- msgid "" @@ -2282,12 +2282,12 @@ msgid "" "LDAP|Description|ObjectClass|posixAccount|Abstraction of an account with " "POSIX attributes" -msgstr "POSIX???????????????" +msgstr "POSIX??????????????" #: -:- msgid "" "LDAP|Description|ObjectClass|posixGroup|Abstraction of a group of accounts" -msgstr "???????????????" +msgstr "??????????????" #: -:- msgid "" From codesite-noreply at google.com Sat Aug 18 06:42:07 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 03:42:07 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r259 - al-admin/trunk/lib/tasks Message-ID: Author: koutou Date: Sat Aug 18 03:39:07 2007 New Revision: 259 Modified: al-admin/trunk/lib/tasks/gettext.rake Log: * added comment for option. Modified: al-admin/trunk/lib/tasks/gettext.rake ============================================================================== --- al-admin/trunk/lib/tasks/gettext.rake (original) +++ al-admin/trunk/lib/tasks/gettext.rake Sat Aug 18 03:39:07 2007 @@ -15,7 +15,10 @@ desc "Update po/pot files (GetText)" task :update => "gettext:environment:setup" do require 'active_ldap/get_text/parser' - GetText::RGetText.add_parser(ActiveLdap::GetText::Parser.new) + options = { + # :extract_schema => true, # use this if you have any extra schema. + } + GetText::RGetText.add_parser(ActiveLdap::GetText::Parser.new(options)) files = Dir.glob("{app,lib,components}/**/*.{rb,rhtml,rxml}") GetText.update_pofiles("al-admin", files, From codesite-noreply at google.com Sat Aug 18 06:48:08 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 03:48:08 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r260 - trunk/lib/active_ldap Message-ID: Author: koutou Date: Sat Aug 18 03:47:29 2007 New Revision: 260 Modified: trunk/lib/active_ldap/object_class.rb Log: * fixed object conversion. Modified: trunk/lib/active_ldap/object_class.rb ============================================================================== --- trunk/lib/active_ldap/object_class.rb (original) +++ trunk/lib/active_ldap/object_class.rb Sat Aug 18 03:47:29 2007 @@ -57,8 +57,9 @@ end def assert_valid_object_class_value(new_classes) + _schema = schema invalid_classes = new_classes.reject do |new_class| - schema.exist_name?("objectClasses", new_class) + !_schema.object_class(new_class).id.nil? end unless invalid_classes.empty? format = _("unknown objectClass in LDAP server: %s") @@ -70,9 +71,11 @@ def assert_have_all_required_classes(new_classes) _schema = schema normalized_new_classes = new_classes.collect(&:downcase) - required_classes = self.class.required_classes.reject do |required_class| - normalized_new_classes.include?(required_class.downcase) or + required_classes = self.class.required_classes + required_classes = required_classes.reject do |required_class_name| + normalized_new_classes.include?(required_class_name.downcase) or (normalized_new_classes.find do |new_class| + required_class = _schema.object_class(required_class_name) _schema.object_class(new_class).super_class?(required_class) end) end From codesite-noreply at google.com Sat Aug 18 07:03:08 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 04:03:08 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r261 - in al-admin/trunk: app/controllers app/models app/views/users lib Message-ID: <163600d06e0437f740b575d517cc24@google.com> Author: koutou Date: Sat Aug 18 04:01:54 2007 New Revision: 261 Modified: al-admin/trunk/app/controllers/application.rb al-admin/trunk/app/controllers/users_controller.rb al-admin/trunk/app/models/user.rb al-admin/trunk/app/views/users/_form.rhtml al-admin/trunk/lib/authenticated_system.rb Log: * improved remember me. * added attribute description. Modified: al-admin/trunk/app/controllers/application.rb ============================================================================== --- al-admin/trunk/app/controllers/application.rb (original) +++ al-admin/trunk/app/controllers/application.rb Sat Aug 18 04:01:54 2007 @@ -6,6 +6,7 @@ session :session_key => '_al-admin_session_id' include AuthenticatedSystem + before_filter :check_connectivity before_filter :login_from_cookie init_gettext "al-admin" Modified: al-admin/trunk/app/controllers/users_controller.rb ============================================================================== --- al-admin/trunk/app/controllers/users_controller.rb (original) +++ al-admin/trunk/app/controllers/users_controller.rb Sat Aug 18 04:01:54 2007 @@ -2,6 +2,8 @@ verify :method => :post, :only => [:update], :redirect_to => {:action => :index} + before_filter :login_required + def index @users = find(:all) end Modified: al-admin/trunk/app/models/user.rb ============================================================================== --- al-admin/trunk/app/models/user.rb (original) +++ al-admin/trunk/app/models/user.rb Sat Aug 18 04:01:54 2007 @@ -35,10 +35,15 @@ @ldap_user ||= LdapUser.find(dn) end + def connected? + ldap_user.connected? + end + def remember_token? begin - remember_token_expires_at && Time.now.utc < remember_token_expires_at && - ldap_user.connected? + remember_token_expires_at and + Time.now.utc < remember_token_expires_at and + connected? rescue ActiveLdap::EntryNotFound false end Modified: al-admin/trunk/app/views/users/_form.rhtml ============================================================================== --- al-admin/trunk/app/views/users/_form.rhtml (original) +++ al-admin/trunk/app/views/users/_form.rhtml Sat Aug 18 04:01:54 2007 @@ -21,8 +21,9 @@ <% names = @user.attribute_names(true) - ["objectClass", "userPassword"] -%> <% names.sort.each do |name| -%> - + <%= text_field("user", name) %> + <%= h lad_(name) %> <% end -%> Modified: al-admin/trunk/lib/authenticated_system.rb ============================================================================== --- al-admin/trunk/lib/authenticated_system.rb (original) +++ al-admin/trunk/lib/authenticated_system.rb Sat Aug 18 04:01:54 2007 @@ -6,6 +6,13 @@ current_user != :false end + def check_connectivity + if logged_in? and !current_user.connected? + self.current_user = :false + end + true + end + # Accesses the current user from the session. def current_user @current_user ||= (session[:user] && User.find_by_id(session[:user])) || :false @@ -108,7 +115,7 @@ :value => current_user.remember_token, :expires => current_user.remember_token_expires_at } - flash[:notice] = _("Logged in successfully") + flash.now[:notice] = _("Logged in successfully") end end From codesite-noreply at google.com Sat Aug 18 07:07:09 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 04:07:09 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r262 - al-admin/trunk/po/ja Message-ID: <163600cf970437f74f08ff4017d003@google.com> Author: koutou Date: Sat Aug 18 04:02:26 2007 New Revision: 262 Modified: al-admin/trunk/po/ja/al-admin.po Log: * updated messages. Modified: al-admin/trunk/po/ja/al-admin.po ============================================================================== --- al-admin/trunk/po/ja/al-admin.po (original) +++ al-admin/trunk/po/ja/al-admin.po Sat Aug 18 04:02:26 2007 @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: AL Admin 0.0.1\n" -"POT-Creation-Date: 2007-08-13 22:09+0900\n" -"PO-Revision-Date: 2007-08-13 22:09+0900\n" +"POT-Creation-Date: 2007-08-16 22:11+0900\n" +"PO-Revision-Date: 2007-08-18 20:02+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -27,41 +27,49 @@ msgid "Thanks for signing up!" msgstr "?????????????" -#: app/controllers/account_controller.rb:46 -msgid "You have been logged out." -msgstr "??????????" - #: app/controllers/users_controller.rb:24 msgid "User was successfully updated." msgstr "??????????????" #: app/models/user.rb:- -msgid "user" -msgstr "???" +msgid "User|Dn" +msgstr "DN" #: app/models/user.rb:- msgid "User|Login" msgstr "?????" #: app/models/user.rb:- -msgid "User|Dn" -msgstr "DN" +msgid "User|Remember token" +msgstr "??????" #: app/models/user.rb:- -msgid "User|Updated at" -msgstr "????" +msgid "User|Remember token expires at" +msgstr "??????????" #: app/models/user.rb:- msgid "User|Salt" msgstr "???" #: app/models/user.rb:- -msgid "User|Remember token" -msgstr "??????" +msgid "User|Updated at" +msgstr "????" + +#: app/controllers/account_controller.rb:46 +msgid "You have been logged out." +msgstr "??????????" + +#: app/models/ldap_user.rb:- +msgid "ldap user" +msgstr "???" #: app/models/user.rb:- -msgid "User|Remember token expires at" -msgstr "??????????" +msgid "user" +msgstr "???" + +#: app/views/layouts/application.rhtml:25 +msgid "Top" +msgstr "???" #: app/views/account/login.rhtml:2 app/views/account/sign_up.rhtml:4 msgid "Login" @@ -96,6 +104,18 @@ #: app/views/welcome/index.rhtml:4 msgid "Logout" msgstr "?????" + +#: app/views/users/_entry.rhtml:9 +msgid "attribute name" +msgstr "???" + +#: app/views/users/_entry.rhtml:10 +msgid "value" +msgstr "?" + +#: app/views/users/_entry.rhtml:11 +msgid "description" +msgstr "??" #: app/views/users/index.rhtml:2 msgid "No user." From codesite-noreply at google.com Sat Aug 18 07:11:09 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 04:11:09 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r263 - al-admin/trunk trunk/examples/al-admin Message-ID: Author: koutou Date: Sat Aug 18 04:04:10 2007 New Revision: 263 Added: trunk/examples/al-admin/ - copied from r262, /al-admin/trunk/ Removed: al-admin/trunk/ Log: * merged AL Admin. From codesite-noreply at google.com Sat Aug 18 07:15:09 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 04:15:09 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r264 - trunk/examples/al-admin/config Message-ID: Author: koutou Date: Sat Aug 18 04:10:23 2007 New Revision: 264 Modified: trunk/examples/al-admin/config/environment.rb Log: * added path to ActiveLdap. Modified: trunk/examples/al-admin/config/environment.rb ============================================================================== --- trunk/examples/al-admin/config/environment.rb (original) +++ trunk/examples/al-admin/config/environment.rb Sat Aug 18 04:10:23 2007 @@ -20,7 +20,9 @@ # config.plugins = %W( exception_notification ssl_requirement ) # Add additional load paths for your own custom dirs - config.load_paths += %W( #{RAILS_ROOT}/../activeldap/lib ) + config.load_paths += %W(#{RAILS_ROOT}/../../lib) + + config.plugin_paths += %W(#{RAILS_ROOT}/../../rails/plugin) # Force all environments to use the same logger level # (by default production uses :info, the others :debug) From codesite-noreply at google.com Sat Aug 18 07:19:10 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 04:19:10 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r265 - trunk/examples/al-admin/vendor/plugins Message-ID: Author: koutou Date: Sat Aug 18 04:11:11 2007 New Revision: 265 Modified: trunk/examples/al-admin/vendor/plugins/ (props changed) Log: * removed svn:externals. From codesite-noreply at google.com Sat Aug 18 07:23:10 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 04:23:10 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r266 - in trunk/examples/al-admin: . po po/ja Message-ID: Author: koutou Date: Sat Aug 18 04:14:12 2007 New Revision: 266 Modified: trunk/examples/al-admin/ (props changed) trunk/examples/al-admin/po/ (props changed) trunk/examples/al-admin/po/ja/al-admin.po Log: * set svn:ignore. Modified: trunk/examples/al-admin/po/ja/al-admin.po ============================================================================== --- trunk/examples/al-admin/po/ja/al-admin.po (original) +++ trunk/examples/al-admin/po/ja/al-admin.po Sat Aug 18 04:14:12 2007 @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: AL Admin 0.0.1\n" -"POT-Creation-Date: 2007-08-16 22:11+0900\n" +"POT-Creation-Date: 2007-08-18 20:13+0900\n" "PO-Revision-Date: 2007-08-18 20:02+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" @@ -15,29 +15,29 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app/controllers/account_controller.rb:23 lib/authenticated_system.rb:111 -msgid "Logged in successfully" -msgstr "????????????" - -#: app/controllers/account_controller.rb:25 -msgid "Login or Password is incorrect" -msgstr "??????????????????????" +#: app/models/ldap_user.rb:- +msgid "ldap user" +msgstr "???" -#: app/controllers/account_controller.rb:37 -msgid "Thanks for signing up!" -msgstr "?????????????" +#: app/models/user.rb:- +msgid "user" +msgstr "???" -#: app/controllers/users_controller.rb:24 -msgid "User was successfully updated." -msgstr "??????????????" +#: app/models/user.rb:- +msgid "User|Login" +msgstr "?????" #: app/models/user.rb:- msgid "User|Dn" msgstr "DN" #: app/models/user.rb:- -msgid "User|Login" -msgstr "?????" +msgid "User|Updated at" +msgstr "????" + +#: app/models/user.rb:- +msgid "User|Salt" +msgstr "???" #: app/models/user.rb:- msgid "User|Remember token" @@ -47,64 +47,30 @@ msgid "User|Remember token expires at" msgstr "??????????" -#: app/models/user.rb:- -msgid "User|Salt" -msgstr "???" +#: app/controllers/account_controller.rb:23 lib/authenticated_system.rb:118 +msgid "Logged in successfully" +msgstr "????????????" -#: app/models/user.rb:- -msgid "User|Updated at" -msgstr "????" +#: app/controllers/account_controller.rb:25 +msgid "Login or Password is incorrect" +msgstr "??????????????????????" + +#: app/controllers/account_controller.rb:37 +msgid "Thanks for signing up!" +msgstr "?????????????" #: app/controllers/account_controller.rb:46 msgid "You have been logged out." msgstr "??????????" -#: app/models/ldap_user.rb:- -msgid "ldap user" -msgstr "???" - -#: app/models/user.rb:- -msgid "user" -msgstr "???" +#: app/controllers/users_controller.rb:26 +msgid "User was successfully updated." +msgstr "??????????????" #: app/views/layouts/application.rhtml:25 msgid "Top" msgstr "???" -#: app/views/account/login.rhtml:2 app/views/account/sign_up.rhtml:4 -msgid "Login" -msgstr "?????" - -#: app/views/account/login.rhtml:5 app/views/account/sign_up.rhtml:7 -#: app/views/users/_form.rhtml:6 -msgid "Password" -msgstr "?????" - -#: app/views/account/login.rhtml:8 -msgid "Remember me:" -msgstr "?????:" - -#: app/views/account/login.rhtml:11 -msgid "Log in" -msgstr "????" - -#: app/views/account/sign_up.rhtml:10 app/views/users/_form.rhtml:13 -msgid "Confirm Password" -msgstr "????????" - -#: app/views/account/sign_up.rhtml:13 app/views/account/sign_up.rhtml:21 -#: app/views/welcome/index.rhtml:3 -msgid "Sign up" -msgstr "??" - -#: app/views/welcome/index.rhtml:2 -msgid "Users list" -msgstr "?????" - -#: app/views/welcome/index.rhtml:4 -msgid "Logout" -msgstr "?????" - #: app/views/users/_entry.rhtml:9 msgid "attribute name" msgstr "???" @@ -117,14 +83,19 @@ msgid "description" msgstr "??" -#: app/views/users/index.rhtml:2 -msgid "No user." -msgstr "?????????" - #: app/views/users/show.rhtml:3 app/views/users/edit.rhtml:10 msgid "Back" msgstr "??" +#: app/views/users/_form.rhtml:6 app/views/account/sign_up.rhtml:7 +#: app/views/account/login.rhtml:5 +msgid "Password" +msgstr "?????" + +#: app/views/users/_form.rhtml:13 app/views/account/sign_up.rhtml:10 +msgid "Confirm Password" +msgstr "????????" + #: app/views/users/edit.rhtml:5 msgid "Edit" msgstr "??" @@ -132,3 +103,32 @@ #: app/views/users/edit.rhtml:9 msgid "Show" msgstr "??" + +#: app/views/users/index.rhtml:2 +msgid "No user." +msgstr "?????????" + +#: app/views/welcome/index.rhtml:2 +msgid "Users list" +msgstr "?????" + +#: app/views/welcome/index.rhtml:3 app/views/account/sign_up.rhtml:13 +#: app/views/account/sign_up.rhtml:21 +msgid "Sign up" +msgstr "??" + +#: app/views/welcome/index.rhtml:4 +msgid "Logout" +msgstr "?????" + +#: app/views/account/sign_up.rhtml:4 app/views/account/login.rhtml:2 +msgid "Login" +msgstr "?????" + +#: app/views/account/login.rhtml:8 +msgid "Remember me:" +msgstr "?????:" + +#: app/views/account/login.rhtml:11 +msgid "Log in" +msgstr "????" From codesite-noreply at google.com Sat Aug 18 07:43:12 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 04:43:12 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r267 - in trunk: . examples po test Message-ID: Author: koutou Date: Sat Aug 18 04:42:23 2007 New Revision: 267 Modified: trunk/ (props changed) trunk/examples/ (props changed) trunk/po/ (props changed) trunk/test/ (props changed) Log: * set svn:ignore. From codesite-noreply at google.com Sat Aug 18 07:47:12 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 04:47:12 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r268 - in trunk: lib/active_ldap po/ja test Message-ID: Author: koutou Date: Sat Aug 18 04:42:58 2007 New Revision: 268 Modified: trunk/lib/active_ldap/attributes.rb trunk/lib/active_ldap/object_class.rb trunk/lib/active_ldap/validations.rb trunk/po/ja/active-ldap.po trunk/test/test_user.rb Log: * improved I18N support. Modified: trunk/lib/active_ldap/attributes.rb ============================================================================== --- trunk/lib/active_ldap/attributes.rb (original) +++ trunk/lib/active_ldap/attributes.rb Sat Aug 18 04:42:58 2007 @@ -74,8 +74,11 @@ private def normalize_attribute_value_of_array(name, value) - if value.size > 1 and schema.attribute(name).single_value? - raise TypeError, _("Attribute %s can only have a single value") % name + attribute = schema.attribute(name) + if value.size > 1 and attribute.single_value? + format = _("Attribute %s can only have a single value") + message = format % self.class.human_attribute_name(attribute) + raise TypeError, message end if value.empty? if schema.attribute(name).binary_required? @@ -92,8 +95,8 @@ def normalize_attribute_value_of_hash(name, value) if value.keys.size > 1 - raise TypeError, - _("Hashes must have one key-value pair only: %s") % value.inspect + format = _("Hashes must have one key-value pair only: %s") + raise TypeError, format % value.inspect end unless value.keys[0].match(/^(lang-[a-z][a-z]*)|(binary)$/) logger.warn do Modified: trunk/lib/active_ldap/object_class.rb ============================================================================== --- trunk/lib/active_ldap/object_class.rb (original) +++ trunk/lib/active_ldap/object_class.rb Sat Aug 18 04:42:58 2007 @@ -81,7 +81,11 @@ end unless required_classes.empty? format = _("Can't remove required objectClass: %s") - message = format % required_classes.join(", ") + required_class_names = required_classes.collect do |required_class| + required_class = _schema.object_class(required_class) + self.class.human_object_class_name(required_class) + end + message = format % required_class_names.join(", ") raise RequiredObjectClassMissed, message end end Modified: trunk/lib/active_ldap/validations.rb ============================================================================== --- trunk/lib/active_ldap/validations.rb (original) +++ trunk/lib/active_ldap/validations.rb Sat Aug 18 04:42:58 2007 @@ -66,8 +66,11 @@ value = @data[real_name] || [] # Check for missing requirements. if value.empty? - aliases = required_attribute.aliases - args = [object_class.name] + _schema = schema + aliases = required_attribute.aliases.collect do |name| + self.class.human_attribute_name(name) + end + args = [self.class.human_object_class_name(object_class)] if ActiveLdap.const_defined?(:GetTextFallback) if aliases.empty? format = "is required attribute by objectClass '%s'" @@ -78,10 +81,10 @@ end else if aliases.empty? - format = "%{fn} is required attribute by objectClass '%s'" + format = _("%{fn} is required attribute by objectClass '%s'") else - format = "%{fn} is required attribute by objectClass '%s'" \ - ": aliases: %s" + format = _("%{fn} is required attribute by objectClass " \ + "'%s': aliases: %s") args << aliases.join(', ') end end Modified: trunk/po/ja/active-ldap.po ============================================================================== --- trunk/po/ja/active-ldap.po (original) +++ trunk/po/ja/active-ldap.po Sat Aug 18 04:42:58 2007 @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" -"POT-Creation-Date: 2007-08-16 22:01+0900\n" -"PO-Revision-Date: 2007-08-18 19:30+0900\n" +"POT-Creation-Date: 2007-08-18 20:35+0900\n" +"PO-Revision-Date: 2007-08-18 20:36+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -577,7 +577,8 @@ #: -:- msgid "LDAP|Attribute|olcPasswordCryptSaltFormat" -msgstr "OpenLDAP??: ???????????????(olcPasswordCryptSaltFormat)" +msgstr "" +"OpenLDAP??: ???????????????(olcPasswordCryptSaltFormat)" #: -:- msgid "LDAP|Attribute|olcPasswordHash" @@ -1783,7 +1784,9 @@ msgid "" "LDAP|Description|Attribute|sambaLockoutThreshold|Lockout users after bad " "logon attempts (default: 0 => off)" -msgstr "?????????????????????????????? (?????: 0 => ??)" +msgstr "" +"?????????????????????????????? (?????: 0 " +"=> ??)" #: -:- msgid "LDAP|Description|Attribute|sambaLogoffTime|Timestamp of last logoff" @@ -1813,13 +1816,16 @@ msgid "" "LDAP|Description|Attribute|sambaMaxPwdAge|Maximum password age, in seconds " "(default: -1 => never expire passwords)" -msgstr "???????????????(?) (?????: -1 => ???????????)" +msgstr "" +"???????????????(?) (?????: -1 => ???????????)" #: -:- msgid "" "LDAP|Description|Attribute|sambaMinPwdAge|Minimum password age, in seconds " "(default: 0 => allow immediate password change)" -msgstr "?????????????????????(?) (?????: 0 => ?????????????)" +msgstr "" +"?????????????????????(?) (?????: 0 => ?????" +"????????)" #: -:- msgid "" @@ -1862,7 +1868,9 @@ msgid "" "LDAP|Description|Attribute|sambaPasswordHistory|Concatenated MD4 hashes of " "the unicode passwords used on this account" -msgstr "?????????????Unicode??????? off)" -msgstr "????????????????????????? (?????: 0 => ??)" +msgstr "" +"????????????????????????? (?????: 0 => ??)" #: -:- msgid "LDAP|Description|Attribute|sambaSIDList|Security ID List" @@ -2802,6 +2811,14 @@ "???????????????????:\\n\n" "%s" +#: lib/active_ldap/validations.rb:84 +msgid "%{fn} is required attribute by objectClass '%s'" +msgstr "%{fn}?objectClass'%s'?????????" + +#: lib/active_ldap/validations.rb:86 +msgid "%{fn} is required attribute by objectClass '%s': aliases: %s" +msgstr "%{fn}?objectClass'%s'????????: ??: %s" + #: lib/active_ldap/command.rb:16 msgid "Common options:" msgstr "????????" @@ -2818,7 +2835,7 @@ msgid "Show version" msgstr "????????????" -#: lib/active_ldap/get_text/parser.rb:74 +#: lib/active_ldap/get_text/parser.rb:87 msgid "Ignored '%{file}'. Solve dependencies first." msgstr "'%{file}'???????????????????????" @@ -2828,15 +2845,15 @@ "?????name?nil????????????????????????????" "??" -#: lib/active_ldap/attributes.rb:78 +#: lib/active_ldap/attributes.rb:79 msgid "Attribute %s can only have a single value" msgstr "??%s?????????????" -#: lib/active_ldap/attributes.rb:96 +#: lib/active_ldap/attributes.rb:98 msgid "Hashes must have one key-value pair only: %s" msgstr "????????????????????????????: %s" -#: lib/active_ldap/attributes.rb:100 +#: lib/active_ldap/attributes.rb:103 msgid "unknown option did not match lang-* or binary: %s" msgstr "lang-*??binary??????????????????: %s" @@ -2844,11 +2861,11 @@ msgid "Value in objectClass array is not a String: %s" msgstr "objectClass???????String???????: %s" -#: lib/active_ldap/object_class.rb:64 +#: lib/active_ldap/object_class.rb:65 msgid "unknown objectClass in LDAP server: %s" msgstr "LDAP????????objectClass??: %s" -#: lib/active_ldap/object_class.rb:79 +#: lib/active_ldap/object_class.rb:83 msgid "Can't remove required objectClass: %s" msgstr "???objectClass????????: %s" @@ -2929,11 +2946,11 @@ msgid "wrong number of arguments (%d for 1)" msgstr "??????????(1???????%d???????)" -#: lib/active_ldap/base.rb:757 +#: lib/active_ldap/base.rb:765 msgid "Can't find DN '%s' to reload" msgstr "???????DN '%s'?????????" -#: lib/active_ldap/base.rb:1155 +#: lib/active_ldap/base.rb:1165 msgid "dn_attribute isn't set for this class: %s" msgstr "??????dn_attribute??????????: %s" Modified: trunk/test/test_user.rb ============================================================================== --- trunk/test/test_user.rb (original) +++ trunk/test/test_user.rb Sat Aug 18 04:42:58 2007 @@ -65,9 +65,13 @@ format = "is required attribute by objectClass '%s': aliases: %s" user.gettext(format) % [object_class, "surname"] else - format = "%{fn} is required attribute by objectClass '%s': aliases: %s" - format = user.gettext(format).gsub(/%\{fn\}/, "sn") - format % [object_class, "surname"] + format = _("%{fn} is required attribute by objectClass '%s': " \ + "aliases: %s") + format = user.gettext(format) + format = format.gsub(/%\{fn\}/, + user.class.human_attribute_name("sn")) + format % [user.class.human_object_class_name(object_class), + user.class.human_attribute_name("surname")] end end assert_equal(errors.sort, user.errors.on(:sn).sort) From codesite-noreply at google.com Sat Aug 18 07:58:13 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 04:58:13 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r269 - trunk/lib/active_ldap Message-ID: Author: koutou Date: Sat Aug 18 04:57:43 2007 New Revision: 269 Modified: trunk/lib/active_ldap/base.rb Log: * cached schema. This causes about 2x speed up: before: user system total real AL 0.910000 0.050000 0.960000 ( 1.145999) AL(No Obj) 0.050000 0.000000 0.050000 ( 0.212531) LDAP 0.000000 0.000000 0.000000 ( 0.005488) after: user system total real AL 0.480000 0.010000 0.490000 ( 0.687489) AL(No Obj) 0.040000 0.000000 0.040000 ( 0.178829) LDAP 0.000000 0.000000 0.000000 ( 0.005477) Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Sat Aug 18 04:57:43 2007 @@ -29,6 +29,7 @@ # require 'English' +require 'thread' module ActiveLdap # OO-interface to LDAP assuming pam/nss_ldap-style organization with @@ -801,6 +802,7 @@ @connection = nil connection.connect @connection = connection + @schema = nil clear_association_cache rescue ActiveLdap::Error remove_connection @@ -810,6 +812,28 @@ true end + def schema + @schema ||= super + end + + def inspect + @mutex.synchronize do + begin + schema, @schema = @schema, nil + must, may = @must, @may + object_classes = @object_classes + @must, @may = @must.collect(&:name), @may.collect(&:name) + @object_classes = @object_classes.collect(&:name) + super + ensure + @schema = schema + @must = must + @may = may + @object_classes = object_classes + end + end + end + private def extract_object_class(attributes) classes = [] @@ -887,6 +911,7 @@ end def init_instance_variables + @mutex = Mutex.new @data = {} # where the r/w entry data is stored @ldap_data = {} # original ldap entry data @attr_methods = {} # list of valid method calls for attributes used for From codesite-noreply at google.com Sat Aug 18 08:20:15 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 05:20:15 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r271 - trunk/benchmark Message-ID: Author: koutou Date: Sat Aug 18 05:20:01 2007 New Revision: 271 Added: trunk/benchmark/config.yaml.sample Modified: trunk/benchmark/ (props changed) trunk/benchmark/bench-al.rb Log: * can use configuration file. Modified: trunk/benchmark/bench-al.rb ============================================================================== --- trunk/benchmark/bench-al.rb (original) +++ trunk/benchmark/bench-al.rb Sat Aug 18 05:20:01 2007 @@ -5,12 +5,27 @@ require "active_ldap" require "benchmark" -LDAP_SERVER = "127.0.0.1" -LDAP_PORT = 389 -LDAP_BASE = ENV["LDAP_BASE"] || "dc=localdomain" -LDAP_PREFIX = "ou=People" -LDAP_USER = nil -LDAP_PASSWORD = nil +include ActiveLdap::GetTextSupport + +argv, opts, options = ActiveLdap::Command.parse_options do |opts, options| + options.prefix = "ou=People" + + opts.on("--prefix=PREFIX", + _("Specify prefix for benchmarking " \ + "(default: %s)") % options.prefix) do |prefix| + options.prefix = prefix + end +end + +ActiveLdap::Base.establish_connection +config = ActiveLdap::Base.configuration + +LDAP_SERVER = config[:host] +LDAP_PORT = config[:port] +LDAP_BASE = config[:base] +LDAP_PREFIX = options.prefix +LDAP_USER = config[:bind_dn] +LDAP_PASSWORD = config[:password] class ALUser < ActiveLdap::Base ldap_mapping :dn_attribute => 'uid', :prefix => LDAP_PREFIX, @@ -24,7 +39,7 @@ ALUser.find(:all).each do |e| count += 1 end - return count + count end # -- search_al def search_al_without_object_creation @@ -32,7 +47,7 @@ ALUser.search.each do |e| count += 1 end - return count + count end # === search_ldap @@ -98,25 +113,9 @@ populate_users end -# === main(argv) +# === main # -def main(argv) - # Connect with AL - # - config = { - :host => LDAP_SERVER, - :port => LDAP_PORT, - :base => LDAP_BASE, - } - - do_populate = LDAP_USER && LDAP_PASSWORD - - if do_populate - config[:bind_dn] = LDAP_USER - config[:password] = LDAP_PASSWORD - end - ActiveLdap::Base.establish_connection(config) - +def main(do_populate) if do_populate puts "populating..." dumped_data = ActiveLdap::Base.dump(:scope => :sub) @@ -131,18 +130,16 @@ al_count_without_object_creation = 0 ldap_count = 0 Benchmark.bm(10) do |x| - x.report("AL") { al_count = search_al } + x.report("AL") {al_count = search_al} x.report("AL(No Obj)") do al_count_without_object_creation = search_al_without_object_creation end - x.report("LDAP") { ldap_count = search_ldap(conn) } + x.report("LDAP") {ldap_count = search_ldap(conn)} end print "Entries processed by Ruby/ActiveLdap: #{al_count}\n" print "Entries processed by Ruby/ActiveLdap (without object creation)" + ": #{al_count_without_object_creation}\n" print "Entries processed by Ruby/LDAP: #{ldap_count}\n" - - 0 ensure if do_populate ActiveLdap::Base.delete_all(nil, :scope => :sub) @@ -150,6 +147,4 @@ end end -if $0 == __FILE__ then - exit(main(ARGV) || 1) -end +main(LDAP_USER && LDAP_PASSWORD) Added: trunk/benchmark/config.yaml.sample ============================================================================== --- (empty file) +++ trunk/benchmark/config.yaml.sample Sat Aug 18 05:20:01 2007 @@ -0,0 +1,5 @@ +host: 127.0.0.1 +base: dc=bench,dc=localcomain +method: :tls +bind_dn: cn=user-name,dc=localdomain +password: secret From codesite-noreply at google.com Sat Aug 18 08:31:16 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 05:31:16 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r272 - in trunk: . benchmark po/en po/ja Message-ID: Author: koutou Date: Sat Aug 18 05:30:58 2007 New Revision: 272 Modified: trunk/Rakefile trunk/benchmark/bench-al.rb trunk/po/en/active-ldap.po trunk/po/ja/active-ldap.po Log: * benchamrk: supported i18n. Modified: trunk/Rakefile ============================================================================== --- trunk/Rakefile (original) +++ trunk/Rakefile Sat Aug 18 05:30:58 2007 @@ -107,7 +107,7 @@ GetText::RGetText.add_parser(parser) GetText.update_pofiles("active-ldap", - [dummy_file] + Dir.glob("lib/**/*.rb"), + [dummy_file] + Dir.glob("{lib,benchmark}/**/*.rb"), "Ruby/ActiveLdap #{ActiveLdap::VERSION}") end end Modified: trunk/benchmark/bench-al.rb ============================================================================== --- trunk/benchmark/bench-al.rb (original) +++ trunk/benchmark/bench-al.rb Sat Aug 18 05:30:58 2007 @@ -11,8 +11,8 @@ options.prefix = "ou=People" opts.on("--prefix=PREFIX", - _("Specify prefix for benchmarking " \ - "(default: %s)") % options.prefix) do |prefix| + _("Specify prefix for benchmarking"), + _("(default: %s)") % options.prefix) do |prefix| options.prefix = prefix end end @@ -117,7 +117,7 @@ # def main(do_populate) if do_populate - puts "populating..." + puts(_("Populating...")) dumped_data = ActiveLdap::Base.dump(:scope => :sub) ActiveLdap::Base.delete_all(nil, :scope => :sub) populate @@ -130,18 +130,19 @@ al_count_without_object_creation = 0 ldap_count = 0 Benchmark.bm(10) do |x| - x.report("AL") {al_count = search_al} - x.report("AL(No Obj)") do + x.report(_("AL")) {al_count = search_al} + x.report(_("AL(No Obj)")) do al_count_without_object_creation = search_al_without_object_creation end - x.report("LDAP") {ldap_count = search_ldap(conn)} + x.report(_("LDAP")) {ldap_count = search_ldap(conn)} end - print "Entries processed by Ruby/ActiveLdap: #{al_count}\n" - print "Entries processed by Ruby/ActiveLdap (without object creation)" + - ": #{al_count_without_object_creation}\n" - print "Entries processed by Ruby/LDAP: #{ldap_count}\n" + puts(_("Entries processed by Ruby/ActiveLdap: %d") % al_count) + puts(_("Entries processed by Ruby/ActiveLdap (without object creation): " \ + "%d") % al_count_without_object_creation) + puts(_("Entries processed by Ruby/LDAP: %d") % ldap_count) ensure if do_populate + puts(_("Cleaning...")) ActiveLdap::Base.delete_all(nil, :scope => :sub) ActiveLdap::Base.load(dumped_data) end Modified: trunk/po/en/active-ldap.po ============================================================================== --- trunk/po/en/active-ldap.po (original) +++ trunk/po/en/active-ldap.po Sat Aug 18 05:30:58 2007 @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" -"POT-Creation-Date: 2007-08-18 20:35+0900\n" +"POT-Creation-Date: 2007-08-18 21:28+0900\n" "PO-Revision-Date: 2007-08-18 21:03+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: English\n" @@ -3121,53 +3121,53 @@ msgid ":ldap_scope configuration option is deprecated. Use :scope instead." msgstr ":ldap_scope configuration option is deprecated. Use :scope instead." -#: lib/active_ldap/base.rb:113 +#: lib/active_ldap/base.rb:114 msgid "%s is invalid distinguished name (DN)" msgstr "%s is invalid distinguished name (DN)" -#: lib/active_ldap/base.rb:115 +#: lib/active_ldap/base.rb:116 msgid "%s is invalid distinguished name (DN): %s" msgstr "%s is invalid distinguished name (DN): %s" -#: lib/active_ldap/base.rb:149 +#: lib/active_ldap/base.rb:150 msgid "LDAP configuration specifies nonexistent %s adapter" msgstr "LDAP configuration specifies nonexistent %s adapter" -#: lib/active_ldap/base.rb:157 +#: lib/active_ldap/base.rb:158 msgid "%s is unknown attribute" msgstr "%s is unknown attribute" -#: lib/active_ldap/base.rb:323 +#: lib/active_ldap/base.rb:324 msgid "scope '%s' must be a Symbol" msgstr "scope '%s' must be a Symbol" -#: lib/active_ldap/base.rb:489 +#: lib/active_ldap/base.rb:490 msgid "" "'%s' must be either nil, DN value as String or Array or attributes as Hash" msgstr "" "'%s' must be either nil, DN value as String or Array or attributes as Hash" -#: lib/active_ldap/base.rb:570 +#: lib/active_ldap/base.rb:571 msgid "%s's DN attribute (%s) isn't set" msgstr "%s's DN attribute (%s) isn't set" -#: lib/active_ldap/base.rb:598 +#: lib/active_ldap/base.rb:599 msgid "Failed to delete LDAP entry: %s" msgstr "Failed to delete LDAP entry: %s" -#: lib/active_ldap/base.rb:617 +#: lib/active_ldap/base.rb:618 msgid "entry %s can't be saved" msgstr "entry %s can't be saved" -#: lib/active_ldap/base.rb:638 lib/active_ldap/base.rb:649 +#: lib/active_ldap/base.rb:639 lib/active_ldap/base.rb:650 msgid "wrong number of arguments (%d for 1)" msgstr "wrong number of arguments (%d for 1)" -#: lib/active_ldap/base.rb:765 +#: lib/active_ldap/base.rb:766 msgid "Can't find DN '%s' to reload" msgstr "Can't find DN '%s' to reload" -#: lib/active_ldap/base.rb:1165 +#: lib/active_ldap/base.rb:1190 msgid "dn_attribute isn't set for this class: %s" msgstr "dn_attribute isn't set for this class: %s" @@ -3226,3 +3226,43 @@ #: lib/active_ldap/operations.rb:290 msgid "Couldn't find all %s: DNs (%s)" msgstr "Couldn't find all %s: DNs (%s)" + +#: benchmark/bench-al.rb:14 +msgid "Specify prefix for benchmarking" +msgstr "" + +#: benchmark/bench-al.rb:15 +msgid "(default: %s)" +msgstr "" + +#: benchmark/bench-al.rb:120 +msgid "Populating..." +msgstr "" + +#: benchmark/bench-al.rb:133 +msgid "AL" +msgstr "" + +#: benchmark/bench-al.rb:134 +msgid "AL(No Obj)" +msgstr "" + +#: benchmark/bench-al.rb:137 +msgid "LDAP" +msgstr "" + +#: benchmark/bench-al.rb:139 +msgid "Entries processed by Ruby/ActiveLdap: %d" +msgstr "" + +#: benchmark/bench-al.rb:140 +msgid "Entries processed by Ruby/ActiveLdap (without object creation): %d" +msgstr "" + +#: benchmark/bench-al.rb:142 +msgid "Entries processed by Ruby/LDAP: %d" +msgstr "" + +#: benchmark/bench-al.rb:145 +msgid "Cleaning..." +msgstr "" Modified: trunk/po/ja/active-ldap.po ============================================================================== --- trunk/po/ja/active-ldap.po (original) +++ trunk/po/ja/active-ldap.po Sat Aug 18 05:30:58 2007 @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" -"POT-Creation-Date: 2007-08-18 20:35+0900\n" -"PO-Revision-Date: 2007-08-18 21:03+0900\n" +"POT-Creation-Date: 2007-08-18 21:28+0900\n" +"PO-Revision-Date: 2007-08-18 21:29+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -2903,54 +2903,54 @@ msgstr "" ":ldap_scope???????????????????:scope?????????" -#: lib/active_ldap/base.rb:113 +#: lib/active_ldap/base.rb:114 msgid "%s is invalid distinguished name (DN)" msgstr "%s???????(DN)???" -#: lib/active_ldap/base.rb:115 +#: lib/active_ldap/base.rb:116 msgid "%s is invalid distinguished name (DN): %s" msgstr "%s???????(DN)??: %s" -#: lib/active_ldap/base.rb:149 +#: lib/active_ldap/base.rb:150 msgid "LDAP configuration specifies nonexistent %s adapter" msgstr "LDAP?????????%s?????????????" -#: lib/active_ldap/base.rb:157 +#: lib/active_ldap/base.rb:158 msgid "%s is unknown attribute" msgstr "%s?????????" -#: lib/active_ldap/base.rb:323 +#: lib/active_ldap/base.rb:324 msgid "scope '%s' must be a Symbol" msgstr "????'%s'????????????????" -#: lib/active_ldap/base.rb:489 +#: lib/active_ldap/base.rb:490 msgid "" "'%s' must be either nil, DN value as String or Array or attributes as Hash" msgstr "" "'%s'?nil?String???DN?DN????Hash??????????????????" "??" -#: lib/active_ldap/base.rb:570 +#: lib/active_ldap/base.rb:571 msgid "%s's DN attribute (%s) isn't set" msgstr "%s?DN??(%s)???????????" -#: lib/active_ldap/base.rb:598 +#: lib/active_ldap/base.rb:599 msgid "Failed to delete LDAP entry: %s" msgstr "LDAP??????????????: %s" -#: lib/active_ldap/base.rb:617 +#: lib/active_ldap/base.rb:618 msgid "entry %s can't be saved" msgstr "????%s?????????" -#: lib/active_ldap/base.rb:638 lib/active_ldap/base.rb:649 +#: lib/active_ldap/base.rb:639 lib/active_ldap/base.rb:650 msgid "wrong number of arguments (%d for 1)" msgstr "??????????(1???????%d???????)" -#: lib/active_ldap/base.rb:765 +#: lib/active_ldap/base.rb:766 msgid "Can't find DN '%s' to reload" msgstr "???????DN '%s'?????????" -#: lib/active_ldap/base.rb:1165 +#: lib/active_ldap/base.rb:1190 msgid "dn_attribute isn't set for this class: %s" msgstr "??????dn_attribute??????????: %s" @@ -3010,3 +3010,43 @@ #: lib/active_ldap/operations.rb:290 msgid "Couldn't find all %s: DNs (%s)" msgstr "????%s????????????: DN (%s)" + +#: benchmark/bench-al.rb:14 +msgid "Specify prefix for benchmarking" +msgstr "????????????????????????" + +#: benchmark/bench-al.rb:15 +msgid "(default: %s)" +msgstr "(?????: %s)" + +#: benchmark/bench-al.rb:120 +msgid "Populating..." +msgstr "??????..." + +#: benchmark/bench-al.rb:133 +msgid "AL" +msgstr "AL" + +#: benchmark/bench-al.rb:134 +msgid "AL(No Obj)" +msgstr "AL(No Obj)" + +#: benchmark/bench-al.rb:137 +msgid "LDAP" +msgstr "LDAP" + +#: benchmark/bench-al.rb:139 +msgid "Entries processed by Ruby/ActiveLdap: %d" +msgstr "Ruby/ActiveLdap??????????: %d" + +#: benchmark/bench-al.rb:140 +msgid "Entries processed by Ruby/ActiveLdap (without object creation): %d" +msgstr "Ruby/ActiveLdap??????????(??????????): %d" + +#: benchmark/bench-al.rb:142 +msgid "Entries processed by Ruby/LDAP: %d" +msgstr "Ruby/LDAP??????????: %d" + +#: benchmark/bench-al.rb:145 +msgid "Cleaning..." +msgstr "???..." From codesite-noreply at google.com Sat Aug 18 10:53:24 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 07:53:24 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r273 - in trunk: benchmark po/en po/ja Message-ID: Author: koutou Date: Sat Aug 18 07:52:16 2007 New Revision: 273 Modified: trunk/benchmark/bench-al.rb trunk/po/en/active-ldap.po trunk/po/ja/active-ldap.po Log: * benchmark: supported Net::LDAP. Modified: trunk/benchmark/bench-al.rb ============================================================================== --- trunk/benchmark/bench-al.rb (original) +++ trunk/benchmark/bench-al.rb Sat Aug 18 07:52:16 2007 @@ -20,7 +20,7 @@ ActiveLdap::Base.establish_connection config = ActiveLdap::Base.configuration -LDAP_SERVER = config[:host] +LDAP_HOST = config[:host] LDAP_PORT = config[:port] LDAP_BASE = config[:base] LDAP_PREFIX = options.prefix @@ -62,6 +62,40 @@ count end # -- search_ldap +def search_net_ldap(conn) + count = 0 + conn.search(:base => "#{LDAP_PREFIX},#{LDAP_BASE}", + :scope => Net::LDAP::SearchScope_WholeSubtree, + :filter => "(uid=*)") do |e| + count += 1 + end + count +end + +def ldap_connection + require 'ldap' + conn = LDAP::Conn.new(LDAP_HOST, LDAP_PORT) + conn.set_option(LDAP::LDAP_OPT_PROTOCOL_VERSION, 3) + conn.bind(LDAP_USER, LDAP_PASSWORD) if LDAP_USER and LDAP_PASSWORD + conn +rescue LoadError + nil +end + +def net_ldap_connection + require 'net/ldap' + net_ldap_conn = Net::LDAP::Connection.new(:host => LDAP_HOST, + :port => LDAP_PORT) + if LDAP_USER and LDAP_PASSWORD + net_ldap_conn.bind(:method => :simple, + :username => LDAP_USER, + :password => LDAP_PASSWORD) + end + net_ldap_conn +rescue LoadError + nil +end + def populate_base suffixes = [] ActiveLdap::Base.base.split(/,/).reverse_each do |suffix| @@ -125,21 +159,38 @@ # Standard connection # - conn = LDAP::Conn.new(LDAP_SERVER, LDAP_PORT) + ldap_conn = ldap_connection + net_ldap_conn = net_ldap_connection + al_count = 0 al_count_without_object_creation = 0 ldap_count = 0 - Benchmark.bm(10) do |x| - x.report(_("AL")) {al_count = search_al} - x.report(_("AL(No Obj)")) do - al_count_without_object_creation = search_al_without_object_creation + net_ldap_count = 0 + Benchmark.bm(20) do |x| + [1].each do |n| + x.report("%3dx: AL" % n) {n.times {al_count = search_al}} + x.report("%3dx: AL(No Obj)" % n) do + n.times do + al_count_without_object_creation = search_al_without_object_creation + end + end + if ldap_conn + x.report("%3dx: LDAP" % n) do + n.times {ldap_count = search_ldap(ldap_conn)} + end + end + if net_ldap_conn + x.report("%3dx: Net::LDAP" % n) do + n.times {net_ldap_count = search_net_ldap(net_ldap_conn)} + end + end end - x.report(_("LDAP")) {ldap_count = search_ldap(conn)} end puts(_("Entries processed by Ruby/ActiveLdap: %d") % al_count) puts(_("Entries processed by Ruby/ActiveLdap (without object creation): " \ "%d") % al_count_without_object_creation) puts(_("Entries processed by Ruby/LDAP: %d") % ldap_count) + puts(_("Entries processed by Net::LDAP: %d") % net_ldap_count) ensure if do_populate puts(_("Cleaning...")) Modified: trunk/po/en/active-ldap.po ============================================================================== --- trunk/po/en/active-ldap.po (original) +++ trunk/po/en/active-ldap.po Sat Aug 18 07:52:16 2007 @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" -"POT-Creation-Date: 2007-08-18 21:28+0900\n" +"POT-Creation-Date: 2007-08-18 23:51+0900\n" "PO-Revision-Date: 2007-08-18 21:03+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: English\n" @@ -3235,34 +3235,26 @@ msgid "(default: %s)" msgstr "" -#: benchmark/bench-al.rb:120 +#: benchmark/bench-al.rb:154 msgid "Populating..." msgstr "" -#: benchmark/bench-al.rb:133 -msgid "AL" -msgstr "" - -#: benchmark/bench-al.rb:134 -msgid "AL(No Obj)" -msgstr "" - -#: benchmark/bench-al.rb:137 -msgid "LDAP" -msgstr "" - -#: benchmark/bench-al.rb:139 +#: benchmark/bench-al.rb:187 msgid "Entries processed by Ruby/ActiveLdap: %d" msgstr "" -#: benchmark/bench-al.rb:140 +#: benchmark/bench-al.rb:188 msgid "Entries processed by Ruby/ActiveLdap (without object creation): %d" msgstr "" -#: benchmark/bench-al.rb:142 +#: benchmark/bench-al.rb:190 msgid "Entries processed by Ruby/LDAP: %d" msgstr "" -#: benchmark/bench-al.rb:145 +#: benchmark/bench-al.rb:191 +msgid "Entries processed by Net::LDAP: %d" +msgstr "" + +#: benchmark/bench-al.rb:194 msgid "Cleaning..." msgstr "" Modified: trunk/po/ja/active-ldap.po ============================================================================== --- trunk/po/ja/active-ldap.po (original) +++ trunk/po/ja/active-ldap.po Sat Aug 18 07:52:16 2007 @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" -"POT-Creation-Date: 2007-08-18 21:28+0900\n" -"PO-Revision-Date: 2007-08-18 21:29+0900\n" +"POT-Creation-Date: 2007-08-18 23:51+0900\n" +"PO-Revision-Date: 2007-08-18 23:51+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -3019,34 +3019,26 @@ msgid "(default: %s)" msgstr "(?????: %s)" -#: benchmark/bench-al.rb:120 +#: benchmark/bench-al.rb:154 msgid "Populating..." msgstr "??????..." -#: benchmark/bench-al.rb:133 -msgid "AL" -msgstr "AL" - -#: benchmark/bench-al.rb:134 -msgid "AL(No Obj)" -msgstr "AL(No Obj)" - -#: benchmark/bench-al.rb:137 -msgid "LDAP" -msgstr "LDAP" - -#: benchmark/bench-al.rb:139 +#: benchmark/bench-al.rb:187 msgid "Entries processed by Ruby/ActiveLdap: %d" msgstr "Ruby/ActiveLdap??????????: %d" -#: benchmark/bench-al.rb:140 +#: benchmark/bench-al.rb:188 msgid "Entries processed by Ruby/ActiveLdap (without object creation): %d" msgstr "Ruby/ActiveLdap??????????(??????????): %d" -#: benchmark/bench-al.rb:142 +#: benchmark/bench-al.rb:190 msgid "Entries processed by Ruby/LDAP: %d" msgstr "Ruby/LDAP??????????: %d" -#: benchmark/bench-al.rb:145 +#: benchmark/bench-al.rb:191 +msgid "Entries processed by Net::LDAP: %d" +msgstr "Net::LDAP??????????: %d" + +#: benchmark/bench-al.rb:194 msgid "Cleaning..." msgstr "???..." From codesite-noreply at google.com Sat Aug 18 20:20:04 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 17:20:04 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r275 - trunk Message-ID: <163600d06e04380262bc508e1904dd@google.com> Author: koutou Date: Sat Aug 18 17:19:55 2007 New Revision: 275 Removed: trunk/Manifest.txt Modified: trunk/Rakefile Log: * generated Manifeset.txt automatically. Modified: trunk/Rakefile ============================================================================== --- trunk/Rakefile (original) +++ trunk/Rakefile Sat Aug 18 17:19:55 2007 @@ -5,6 +5,43 @@ $LOAD_PATH.unshift('./lib') require 'active_ldap' +base_dir = File.expand_path(File.dirname(__FILE__)) +truncate_base_dir = Proc.new do |x| + x.gsub(/^#{Regexp.escape(base_dir + File::SEPARATOR)}/, '') +end + +manifest = File.join(base_dir, "Manifest.txt") +manifest_contents = [] +base_dir_included_components = %w(CHANGES COPYING LICENSE Manifest.txt + README Rakefile TODO) +excluded_components = %w(.svn .test-result .config doc log tmp + pkg html config.yaml database.yml ldap.yml) +excluded_suffixes = %w(.help .sqlite3) +white_list_paths = + [ + "rails/plugin/active_ldap/generators/scaffold_al/templates/ldap.yml" + ] +Find.find(base_dir) do |target| + target = truncate_base_dir[target] + components = target.split(File::SEPARATOR) + if components.size == 1 and !File.directory?(target) + next unless base_dir_included_components.include?(components[0]) + end + unless white_list_paths.include?(target) + Find.prune if (excluded_components - components) != excluded_components + next if excluded_suffixes.include?(File.extname(target)) + end + manifest_contents << target if File.file?(target) +end + +File.open(manifest, "w") do |f| + f.puts manifest_contents.sort.join("\n") +end +at_exit do + FileUtils.rm_f(manifest) +end + + project = Hoe.new('ruby-activeldap', ActiveLdap::VERSION) do |project| project.rubyforge_name = 'ruby-activeldap' project.author = ['Will Drewry', 'Kouhei Sutou'] From codesite-noreply at google.com Sat Aug 18 20:24:04 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 17:24:04 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r276 - trunk/test Message-ID: <163600d1b50438027111f8ed1902f2@google.com> Author: koutou Date: Sat Aug 18 17:20:31 2007 New Revision: 276 Removed: trunk/test/TODO Log: * removed needless files. From codesite-noreply at google.com Sat Aug 18 20:28:05 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 17:28:05 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r277 - trunk Message-ID: Author: koutou Date: Sat Aug 18 17:23:03 2007 New Revision: 277 Modified: trunk/Rakefile Log: * used base_dir. Modified: trunk/Rakefile ============================================================================== --- trunk/Rakefile (original) +++ trunk/Rakefile Sat Aug 18 17:23:03 2007 @@ -2,10 +2,11 @@ require 'rubygems' require 'hoe' -$LOAD_PATH.unshift('./lib') -require 'active_ldap' base_dir = File.expand_path(File.dirname(__FILE__)) +$LOAD_PATH.unshift(File.join(base_dir, 'lib')) +require 'active_ldap' + truncate_base_dir = Proc.new do |x| x.gsub(/^#{Regexp.escape(base_dir + File::SEPARATOR)}/, '') end From codesite-noreply at google.com Sat Aug 18 20:46:06 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 17:46:06 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r278 - in trunk/examples/al-admin: config lib/tasks Message-ID: <163600d1b5043802bfde9e24192436@google.com> Author: koutou Date: Sat Aug 18 17:45:20 2007 New Revision: 278 Modified: trunk/examples/al-admin/config/environment.rb trunk/examples/al-admin/lib/tasks/gettext.rake Log: * used ActiveLdap::VERSION. Modified: trunk/examples/al-admin/config/environment.rb ============================================================================== --- trunk/examples/al-admin/config/environment.rb (original) +++ trunk/examples/al-admin/config/environment.rb Sat Aug 18 17:45:20 2007 @@ -61,6 +61,4 @@ # Include your application configuration below -AL_ADMIN_VERSION = "0.0.1" - require 'gettext/rails' Modified: trunk/examples/al-admin/lib/tasks/gettext.rake ============================================================================== --- trunk/examples/al-admin/lib/tasks/gettext.rake (original) +++ trunk/examples/al-admin/lib/tasks/gettext.rake Sat Aug 18 17:45:20 2007 @@ -22,7 +22,7 @@ files = Dir.glob("{app,lib,components}/**/*.{rb,rhtml,rxml}") GetText.update_pofiles("al-admin", files, - "AL Admin #{AL_ADMIN_VERSION}") + "AL Admin #{ActiveLdap::VERSION}") end end From codesite-noreply at google.com Sat Aug 18 20:50:07 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 17:50:07 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r279 - in trunk/examples/al-admin/po: en ja Message-ID: <163600d06e043802ce34c0b219276e@google.com> Author: koutou Date: Sat Aug 18 17:46:05 2007 New Revision: 279 Added: trunk/examples/al-admin/po/en/ trunk/examples/al-admin/po/en/al-admin.po Modified: trunk/examples/al-admin/po/ja/al-admin.po Log: * added messages for English. Please translate me! Added: trunk/examples/al-admin/po/en/al-admin.po ============================================================================== --- (empty file) +++ trunk/examples/al-admin/po/en/al-admin.po Sat Aug 18 17:46:05 2007 @@ -0,0 +1,134 @@ +# English translations for AL Admin package. +# Copyright (C) 2007 Kouhei Sutou +# This file is distributed under the same license as the AL Admin package. +# Kouhei Sutou , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: AL Admin 0.8.2\n" +"POT-Creation-Date: 2007-08-19 09:40+0900\n" +"PO-Revision-Date: 2007-08-19 09:44+0900\n" +"Last-Translator: Kouhei Sutou \n" +"Language-Team: English\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: app/models/ldap_user.rb:- +msgid "ldap user" +msgstr "" + +#: app/models/user.rb:- +msgid "user" +msgstr "" + +#: app/models/user.rb:- +msgid "User|Login" +msgstr "" + +#: app/models/user.rb:- +msgid "User|Dn" +msgstr "" + +#: app/models/user.rb:- +msgid "User|Updated at" +msgstr "" + +#: app/models/user.rb:- +msgid "User|Salt" +msgstr "" + +#: app/models/user.rb:- +msgid "User|Remember token" +msgstr "" + +#: app/models/user.rb:- +msgid "User|Remember token expires at" +msgstr "" + +#: app/controllers/account_controller.rb:23 lib/authenticated_system.rb:118 +msgid "Logged in successfully" +msgstr "" + +#: app/controllers/account_controller.rb:25 +msgid "Login or Password is incorrect" +msgstr "" + +#: app/controllers/account_controller.rb:37 +msgid "Thanks for signing up!" +msgstr "" + +#: app/controllers/account_controller.rb:46 +msgid "You have been logged out." +msgstr "" + +#: app/controllers/users_controller.rb:26 +msgid "User was successfully updated." +msgstr "" + +#: app/views/layouts/application.rhtml:25 +msgid "Top" +msgstr "" + +#: app/views/users/_entry.rhtml:9 +msgid "attribute name" +msgstr "" + +#: app/views/users/_entry.rhtml:10 +msgid "value" +msgstr "" + +#: app/views/users/_entry.rhtml:11 +msgid "description" +msgstr "" + +#: app/views/users/show.rhtml:3 app/views/users/edit.rhtml:10 +msgid "Back" +msgstr "" + +#: app/views/users/_form.rhtml:6 app/views/account/sign_up.rhtml:7 +#: app/views/account/login.rhtml:5 +msgid "Password" +msgstr "" + +#: app/views/users/_form.rhtml:13 app/views/account/sign_up.rhtml:10 +msgid "Confirm Password" +msgstr "" + +#: app/views/users/edit.rhtml:5 +msgid "Edit" +msgstr "" + +#: app/views/users/edit.rhtml:9 +msgid "Show" +msgstr "" + +#: app/views/users/index.rhtml:2 +msgid "No user." +msgstr "" + +#: app/views/welcome/index.rhtml:2 +msgid "Users list" +msgstr "" + +#: app/views/welcome/index.rhtml:3 app/views/account/sign_up.rhtml:13 +#: app/views/account/sign_up.rhtml:21 +msgid "Sign up" +msgstr "" + +#: app/views/welcome/index.rhtml:4 +msgid "Logout" +msgstr "" + +#: app/views/account/sign_up.rhtml:4 app/views/account/login.rhtml:2 +msgid "Login" +msgstr "" + +#: app/views/account/login.rhtml:8 +msgid "Remember me:" +msgstr "" + +#: app/views/account/login.rhtml:11 +msgid "Log in" +msgstr "" Modified: trunk/examples/al-admin/po/ja/al-admin.po ============================================================================== --- trunk/examples/al-admin/po/ja/al-admin.po (original) +++ trunk/examples/al-admin/po/ja/al-admin.po Sat Aug 18 17:46:05 2007 @@ -5,8 +5,8 @@ # msgid "" msgstr "" -"Project-Id-Version: AL Admin 0.0.1\n" -"POT-Creation-Date: 2007-08-18 20:13+0900\n" +"Project-Id-Version: AL Admin 0.8.2\n" +"POT-Creation-Date: 2007-08-19 09:40+0900\n" "PO-Revision-Date: 2007-08-18 20:02+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" From codesite-noreply at google.com Sat Aug 18 20:04:03 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 18 Aug 2007 17:04:03 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r274 - al-admin Message-ID: Author: koutou Date: Sat Aug 18 17:03:22 2007 New Revision: 274 Removed: al-admin/ Log: * removed needless path. From codesite-noreply at google.com Sun Aug 19 03:57:27 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sun, 19 Aug 2007 00:57:27 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r281 - wiki Message-ID: <163600d06e043808c67735551a852f@google.com> Author: koutou Date: Sun Aug 19 00:56:29 2007 New Revision: 281 Added: wiki/ wiki/TroubleShooting.wiki Log: Created wiki page through web user interface. Added: wiki/TroubleShooting.wiki ============================================================================== --- (empty file) +++ wiki/TroubleShooting.wiki Sun Aug 19 00:56:29 2007 @@ -0,0 +1,21 @@ +#summary The answers for frequency occurred problems + += `bind': can't convert Fixnum into String (TypeError) = + +This error message may be returned when you use ActiveLdap with configuration file written in YAML. (e.g. ActiveLdap Rails plugin uses config/ldap.yml for that.) + +You will see the above message if you specify an all numeric password into your configuration file written in YAML: + + ... + password: 123 + ... + +In YAML, an all numeric value is converted number not string. But ActiveLdap requires a string for password value. So you need to specify a string not a number: + + ... + password: "123" + ... + += Next problem... = + +The answer of this problem... From codesite-noreply at google.com Sun Aug 19 05:12:29 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sun, 19 Aug 2007 02:12:29 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r282 - in trunk: lib/active_ldap test Message-ID: <163600d1b5043809d2c871771aa2f4@google.com> Author: koutou Date: Sun Aug 19 02:11:30 2007 New Revision: 282 Modified: trunk/lib/active_ldap/base.rb trunk/test/test_base.rb Log: * supported DN attribute per instance. Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Sun Aug 19 02:11:30 2007 @@ -588,6 +588,11 @@ end alias_method(:id=, :dn=) + alias_method(:dn_attribute_of_class, :dn_attribute) + def dn_attribute + @dn_attribute || dn_attribute_of_class + end + # destroy # # Delete this entry from LDAP @@ -919,6 +924,7 @@ @normalized_attr_names = {} # list of normalized attribute name @attr_aliases = {} # aliases of @attr_methods @last_oc = false # for use in other methods for "caching" + @dn_attribute = nil @base = nil @scope = nil @connection ||= nil @@ -1030,7 +1036,11 @@ raise UnknownAttribute.new(name) if attr.nil? if attr == dn_attribute and value.is_a?(String) - value, @base = split_dn_value(value) + new_dn_attribute, value, @base = split_dn_value(value) + new_dn_attribute = to_real_attribute_name(new_dn_attribute) + if dn_attribute != new_dn_attribute + @dn_attribute = attr = new_dn_attribute + end end # Enforce LDAP-pleasing values @@ -1068,7 +1078,9 @@ end val, *bases = relative_dn_value.rdns - [val.values[0], bases.empty? ? nil : DN.new(*bases).to_s] + dn_attribute_name, dn_attribute_value = val.to_a[0] + [dn_attribute_name, dn_attribute_value, + bases.empty? ? nil : DN.new(*bases).to_s] end # define_attribute_methods Modified: trunk/test/test_base.rb ============================================================================== --- trunk/test/test_base.rb (original) +++ trunk/test/test_base.rb Sun Aug 19 02:11:30 2007 @@ -6,6 +6,32 @@ priority :must priority :normal + def test_dn_attribute_per_instance + user = @user_class.new + assert_equal("uid", user.dn_attribute) + assert_nil(user.uid) + + user.dn = "cn=xxx" + assert_equal("cn", user.dn_attribute) + assert_nil(user.uid) + assert_equal("xxx", user.cn) + assert_equal("cn=xxx,#{@user_class.base}", user.dn) + + assert_equal("uid", @user_class.new.dn_attribute) + + user.dn = "ZZZ" + assert_equal("cn", user.dn_attribute) + assert_nil(user.uid) + assert_equal("ZZZ", user.cn) + assert_equal("cn=ZZZ,#{@user_class.base}", user.dn) + + user.dn = "uid=aaa" + assert_equal("uid", user.dn_attribute) + assert_equal("aaa", user.uid) + assert_equal("ZZZ", user.cn) + assert_equal("uid=aaa,#{@user_class.base}", user.dn) + end + def test_case_insensitive_nested_ou ou_class("ou=Users").new("Sub").save! make_temporary_user(:uid => "test-user,ou=SUB") do |user, password| From codesite-noreply at google.com Sun Aug 19 05:21:30 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sun, 19 Aug 2007 02:21:30 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r283 - in trunk: lib/active_ldap/adapter po/en po/ja Message-ID: <163600d6b3043809f306c2b31aa640@google.com> Author: koutou Date: Sun Aug 19 02:20:41 2007 New Revision: 283 Modified: trunk/lib/active_ldap/adapter/base.rb trunk/po/en/active-ldap.po trunk/po/ja/active-ldap.po Log: * added bound DN to log message. Modified: trunk/lib/active_ldap/adapter/base.rb ============================================================================== --- trunk/lib/active_ldap/adapter/base.rb (original) +++ trunk/lib/active_ldap/adapter/base.rb Sun Aug 19 02:20:41 2007 @@ -57,9 +57,9 @@ # Attempt 2: SIMPLE with credentials if password block # Attempt 3: SIMPLE ANONYMOUS if 1 and 2 fail (or pwblock returns '') if try_sasl and sasl_bind(bind_dn, options) - @logger.info {_('Bound by SASL')} + @logger.info {_('Bound by SASL as %s') % bind_dn} elsif simple_bind(bind_dn, options) - @logger.info {_('Bound by simple')} + @logger.info {_('Bound by simple as %s') % bind_dn} elsif allow_anonymous and bind_as_anonymous(options) @logger.info {_('Bound as anonymous')} else Modified: trunk/po/en/active-ldap.po ============================================================================== --- trunk/po/en/active-ldap.po (original) +++ trunk/po/en/active-ldap.po Sun Aug 19 02:20:41 2007 @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" -"POT-Creation-Date: 2007-08-18 23:51+0900\n" +"POT-Creation-Date: 2007-08-19 18:14+0900\n" "PO-Revision-Date: 2007-08-19 09:49+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: English\n" @@ -2741,11 +2741,11 @@ msgstr "" #: lib/active_ldap/adapter/base.rb:60 -msgid "Bound by SASL" +msgid "Bound by SASL as %s" msgstr "" #: lib/active_ldap/adapter/base.rb:62 -msgid "Bound by simple" +msgid "Bound by simple as %s" msgstr "" #: lib/active_ldap/adapter/base.rb:64 @@ -2914,23 +2914,23 @@ msgid "%s's DN attribute (%s) isn't set" msgstr "" -#: lib/active_ldap/base.rb:599 +#: lib/active_ldap/base.rb:604 msgid "Failed to delete LDAP entry: %s" msgstr "" -#: lib/active_ldap/base.rb:618 +#: lib/active_ldap/base.rb:623 msgid "entry %s can't be saved" msgstr "" -#: lib/active_ldap/base.rb:639 lib/active_ldap/base.rb:650 +#: lib/active_ldap/base.rb:644 lib/active_ldap/base.rb:655 msgid "wrong number of arguments (%d for 1)" msgstr "" -#: lib/active_ldap/base.rb:766 +#: lib/active_ldap/base.rb:771 msgid "Can't find DN '%s' to reload" msgstr "" -#: lib/active_ldap/base.rb:1190 +#: lib/active_ldap/base.rb:1202 msgid "dn_attribute isn't set for this class: %s" msgstr "" @@ -3002,22 +3002,22 @@ msgid "Populating..." msgstr "" -#: benchmark/bench-al.rb:187 +#: benchmark/bench-al.rb:189 msgid "Entries processed by Ruby/ActiveLdap: %d" msgstr "" -#: benchmark/bench-al.rb:188 +#: benchmark/bench-al.rb:190 msgid "Entries processed by Ruby/ActiveLdap (without object creation): %d" msgstr "" -#: benchmark/bench-al.rb:190 +#: benchmark/bench-al.rb:192 msgid "Entries processed by Ruby/LDAP: %d" msgstr "" -#: benchmark/bench-al.rb:191 +#: benchmark/bench-al.rb:193 msgid "Entries processed by Net::LDAP: %d" msgstr "" -#: benchmark/bench-al.rb:194 +#: benchmark/bench-al.rb:196 msgid "Cleaning..." msgstr "" Modified: trunk/po/ja/active-ldap.po ============================================================================== --- trunk/po/ja/active-ldap.po (original) +++ trunk/po/ja/active-ldap.po Sun Aug 19 02:20:41 2007 @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Ruby/ActiveLdap 0.8.2\n" -"POT-Creation-Date: 2007-08-18 23:51+0900\n" -"PO-Revision-Date: 2007-08-18 23:51+0900\n" +"POT-Creation-Date: 2007-08-19 18:14+0900\n" +"PO-Revision-Date: 2007-08-19 18:15+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -2752,12 +2752,12 @@ msgstr "???????qops??: %s" #: lib/active_ldap/adapter/base.rb:60 -msgid "Bound by SASL" -msgstr "SASL????????" +msgid "Bound by SASL as %s" +msgstr "%s???SASL????????" #: lib/active_ldap/adapter/base.rb:62 -msgid "Bound by simple" -msgstr "??????????????" +msgid "Bound by simple as %s" +msgstr "%s?????????????????" #: lib/active_ldap/adapter/base.rb:64 msgid "Bound as anonymous" @@ -2934,23 +2934,23 @@ msgid "%s's DN attribute (%s) isn't set" msgstr "%s?DN??(%s)???????????" -#: lib/active_ldap/base.rb:599 +#: lib/active_ldap/base.rb:604 msgid "Failed to delete LDAP entry: %s" msgstr "LDAP??????????????: %s" -#: lib/active_ldap/base.rb:618 +#: lib/active_ldap/base.rb:623 msgid "entry %s can't be saved" msgstr "????%s?????????" -#: lib/active_ldap/base.rb:639 lib/active_ldap/base.rb:650 +#: lib/active_ldap/base.rb:644 lib/active_ldap/base.rb:655 msgid "wrong number of arguments (%d for 1)" msgstr "??????????(1???????%d???????)" -#: lib/active_ldap/base.rb:766 +#: lib/active_ldap/base.rb:771 msgid "Can't find DN '%s' to reload" msgstr "???????DN '%s'?????????" -#: lib/active_ldap/base.rb:1190 +#: lib/active_ldap/base.rb:1202 msgid "dn_attribute isn't set for this class: %s" msgstr "??????dn_attribute??????????: %s" @@ -3023,22 +3023,22 @@ msgid "Populating..." msgstr "??????..." -#: benchmark/bench-al.rb:187 +#: benchmark/bench-al.rb:189 msgid "Entries processed by Ruby/ActiveLdap: %d" msgstr "Ruby/ActiveLdap??????????: %d" -#: benchmark/bench-al.rb:188 +#: benchmark/bench-al.rb:190 msgid "Entries processed by Ruby/ActiveLdap (without object creation): %d" msgstr "Ruby/ActiveLdap??????????(??????????): %d" -#: benchmark/bench-al.rb:190 +#: benchmark/bench-al.rb:192 msgid "Entries processed by Ruby/LDAP: %d" msgstr "Ruby/LDAP??????????: %d" -#: benchmark/bench-al.rb:191 +#: benchmark/bench-al.rb:193 msgid "Entries processed by Net::LDAP: %d" msgstr "Net::LDAP??????????: %d" -#: benchmark/bench-al.rb:194 +#: benchmark/bench-al.rb:196 msgid "Cleaning..." msgstr "???..." From codesite-noreply at google.com Sun Aug 19 05:25:30 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sun, 19 Aug 2007 02:25:30 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r284 - in trunk/examples/al-admin: app/controllers app/views/account app/views/welcome po/en po/ja Message-ID: <163600d1b504380a0155cb1c1aa922@google.com> Author: koutou Date: Sun Aug 19 02:22:59 2007 New Revision: 284 Modified: trunk/examples/al-admin/app/controllers/welcome_controller.rb trunk/examples/al-admin/app/views/account/sign_up.rhtml trunk/examples/al-admin/app/views/welcome/index.rhtml trunk/examples/al-admin/po/en/al-admin.po trunk/examples/al-admin/po/ja/al-admin.po Log: * cleanup welcome page. * used la_() for sign up page. Modified: trunk/examples/al-admin/app/controllers/welcome_controller.rb ============================================================================== --- trunk/examples/al-admin/app/controllers/welcome_controller.rb (original) +++ trunk/examples/al-admin/app/controllers/welcome_controller.rb Sun Aug 19 02:22:59 2007 @@ -1,5 +1,4 @@ class WelcomeController < ApplicationController def index - redirect_to(login_path) unless logged_in? end end Modified: trunk/examples/al-admin/app/views/account/sign_up.rhtml ============================================================================== --- trunk/examples/al-admin/app/views/account/sign_up.rhtml (original) +++ trunk/examples/al-admin/app/views/account/sign_up.rhtml Sun Aug 19 02:22:59 2007 @@ -14,7 +14,7 @@ <% names = @user.attribute_names(true) - ["objectClass", "userPassword"] -%> <% names.sort.each do |name| -%> -

    <% end -%> Modified: trunk/examples/al-admin/app/views/welcome/index.rhtml ============================================================================== --- trunk/examples/al-admin/app/views/welcome/index.rhtml (original) +++ trunk/examples/al-admin/app/views/welcome/index.rhtml Sun Aug 19 02:22:59 2007 @@ -1,5 +1,9 @@
      -
    • <%= link_to(_("Users list"), :controller => "users") %>
    • -
    • <%= link_to(_("Sign up"), sign_up_path) %>
    • -
    • <%= link_to(_("Logout"), logout_path) %>
    • +<% if logged_in? -%> +
    • <%= link_to(s_("Menu|Users list"), :controller => "users") %>
    • +
    • <%= link_to(s_("Menu|Logout"), logout_path) %>
    • +<% else -%> +
    • <%= link_to(s_("Menu|Login"), login_path) %>
    • +
    • <%= link_to(s_("Menu|Sign up"), sign_up_path) %>
    • +<% end -%>
    Modified: trunk/examples/al-admin/po/en/al-admin.po ============================================================================== --- trunk/examples/al-admin/po/en/al-admin.po (original) +++ trunk/examples/al-admin/po/en/al-admin.po Sun Aug 19 02:22:59 2007 @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: AL Admin 0.8.2\n" -"POT-Creation-Date: 2007-08-19 09:40+0900\n" +"POT-Creation-Date: 2007-08-19 18:20+0900\n" "PO-Revision-Date: 2007-08-19 09:44+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: English\n" @@ -108,21 +108,28 @@ msgid "No user." msgstr "" -#: app/views/welcome/index.rhtml:2 -msgid "Users list" +#: app/views/welcome/index.rhtml:3 +msgid "Menu|Users list" msgstr "" -#: app/views/welcome/index.rhtml:3 app/views/account/sign_up.rhtml:13 -#: app/views/account/sign_up.rhtml:21 -msgid "Sign up" +#: app/views/welcome/index.rhtml:4 +msgid "Menu|Logout" msgstr "" -#: app/views/welcome/index.rhtml:4 -msgid "Logout" +#: app/views/welcome/index.rhtml:6 +msgid "Menu|Login" +msgstr "" + +#: app/views/welcome/index.rhtml:7 +msgid "Menu|Sign up" msgstr "" #: app/views/account/sign_up.rhtml:4 app/views/account/login.rhtml:2 msgid "Login" +msgstr "" + +#: app/views/account/sign_up.rhtml:13 app/views/account/sign_up.rhtml:21 +msgid "Sign up" msgstr "" #: app/views/account/login.rhtml:8 Modified: trunk/examples/al-admin/po/ja/al-admin.po ============================================================================== --- trunk/examples/al-admin/po/ja/al-admin.po (original) +++ trunk/examples/al-admin/po/ja/al-admin.po Sun Aug 19 02:22:59 2007 @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: AL Admin 0.8.2\n" -"POT-Creation-Date: 2007-08-19 09:40+0900\n" -"PO-Revision-Date: 2007-08-18 20:02+0900\n" +"POT-Creation-Date: 2007-08-19 18:20+0900\n" +"PO-Revision-Date: 2007-08-19 18:20+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -108,22 +108,29 @@ msgid "No user." msgstr " " -#: app/views/welcome/index.rhtml:2 -msgid "Users list" +#: app/views/welcome/index.rhtml:3 +msgid "Menu|Users list" msgstr " " -#: app/views/welcome/index.rhtml:3 app/views/account/sign_up.rhtml:13 -#: app/views/account/sign_up.rhtml:21 -msgid "Sign up" -msgstr " " - #: app/views/welcome/index.rhtml:4 -msgid "Logout" +msgid "Menu|Logout" msgstr " " +#: app/views/welcome/index.rhtml:6 +msgid "Menu|Login" +msgstr " " + +#: app/views/welcome/index.rhtml:7 +msgid "Menu|Sign up" +msgstr " " + #: app/views/account/sign_up.rhtml:4 app/views/account/login.rhtml:2 msgid "Login" msgstr " " + +#: app/views/account/sign_up.rhtml:13 app/views/account/sign_up.rhtml:21 +msgid "Sign up" +msgstr " " #: app/views/account/login.rhtml:8 msgid "Remember me:" From codesite-noreply at google.com Sun Aug 19 05:35:30 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sun, 19 Aug 2007 02:35:30 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r285 - in trunk/examples/al-admin: app/views/users public/stylesheets Message-ID: <163600d6b304380a251fbbc61aaffc@google.com> Author: koutou Date: Sun Aug 19 02:35:13 2007 New Revision: 285 Added: trunk/examples/al-admin/app/views/users/_attribute_information.rhtml trunk/examples/al-admin/app/views/users/_object_class_information.rhtml Modified: trunk/examples/al-admin/app/views/users/_entry.rhtml trunk/examples/al-admin/public/stylesheets/screen.css Log: * added objectClass information. Added: trunk/examples/al-admin/app/views/users/_attribute_information.rhtml ============================================================================== --- (empty file) +++ trunk/examples/al-admin/app/views/users/_attribute_information.rhtml Sun Aug 19 02:35:13 2007 @@ -0,0 +1,22 @@ + +
    + + + + + + + + + + +<% (entry.attribute_names(true) - ["objectClass"]).sort.each do |name| -%> + + + + + +<% end -%> + +
    <%= _("attribute name") %><%= _("value") %><%= _("description") %>
    <%= h la_(name) %><%= h entry[name, true].join(", ") %><%= h lad_(name) %>
    +
    Modified: trunk/examples/al-admin/app/views/users/_entry.rhtml ============================================================================== --- trunk/examples/al-admin/app/views/users/_entry.rhtml (original) +++ trunk/examples/al-admin/app/views/users/_entry.rhtml Sun Aug 19 02:35:13 2007 @@ -3,23 +3,10 @@

    <%= user_link_if(defined?(link_to_entry) && link_to_entry, entry, true) %>

    - - - - - - - - - -<% entry.attribute_names(true).sort.each do |name| -%> - - - - - -<% end -%> - -
    <%= _("attribute name") %><%= _("value") %><%= _("description") %>
    <%= h la_(name) %><%= h entry[name, true].join(", ") %><%= h lad_(name) %>
    +<%= render(:partial => "object_class_information", + :locals => {:entry => entry}) %> + +<%= render(:partial => "attribute_information", + :locals => {:entry => entry}) %> Added: trunk/examples/al-admin/app/views/users/_object_class_information.rhtml ============================================================================== --- (empty file) +++ trunk/examples/al-admin/app/views/users/_object_class_information.rhtml Sun Aug 19 02:35:13 2007 @@ -0,0 +1,23 @@ + +
    +

    <%=h la_("objectClass") %>

    +

    <%=h lad_("objectClass") %>

    + + + + + + + + + + +<% entry.classes.sort.each do |object_class| -%> + + + + +<% end -%> + +
    <%= _("objectClass name") %><%= _("description") %>
    <%=h loc_(object_class) %><%=h locd_(object_class) %>
    +
    Modified: trunk/examples/al-admin/public/stylesheets/screen.css ============================================================================== --- trunk/examples/al-admin/public/stylesheets/screen.css (original) +++ trunk/examples/al-admin/public/stylesheets/screen.css Sun Aug 19 02:35:13 2007 @@ -23,3 +23,9 @@ { text-align: left; } + +div.object-class-information +{ + margin: 1em 5em; + padding: 0px 1em; +} From codesite-noreply at google.com Sun Aug 19 19:42:30 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sun, 19 Aug 2007 16:42:30 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r286 - in trunk: . po/nl Message-ID: Author: koutou Date: Sun Aug 19 16:41:55 2007 New Revision: 286 Added: trunk/po/nl/ trunk/po/nl/al-admin.po Modified: trunk/README Log: * added Nederlands translations. Thanks to Ace Suares!!! Modified: trunk/README ============================================================================== --- trunk/README (original) +++ trunk/README Sun Aug 19 16:41:55 2007 @@ -44,9 +44,9 @@ There is a small rails plugin included that allows the use of a file named 'ldap.yml' in the config directory of your rails app. This file has a similar -function to the 'database.yml' file that allows you to set your database -connection settings per environment. Similarly, the ldap.yml file allows -settings to be set for development, test, and production environments. For +function to the 'database.yml' file that allows you to set your database +connection settings per environment. Similarly, the ldap.yml file allows +settings to be set for development, test, and production environments. For instance, the development entry would look something like the following: development: @@ -61,7 +61,7 @@ vendor/plugins directory of your rails application and create config/ldap.yml. When your application starts up, the plugin will call #establish_connection using the parameters specified for your current environment. - + LICENCE @@ -95,7 +95,9 @@ * Ernie Miller: Bug reports and advices. * Daniel Pfile: Patches. * Jacob Wilkins: Bug reports. -* Ace Suares: Bug reports. +* Ace Suares: + * Bug reports. + * Nederlands translations. * Iain Pople: Bug reports and API improvement ideas. * Christoph Lipp: Tell us character escape syntax. * Kevin McCarthy: Patches. Added: trunk/po/nl/al-admin.po ============================================================================== --- (empty file) +++ trunk/po/nl/al-admin.po Sun Aug 19 16:41:55 2007 @@ -0,0 +1,144 @@ +# translation of al-admin.po to Nederlands +# Nederlands translations for AL Admin package. +# Copyright (C) 2007 Ace Suares +# This file is distributed under the same license as the AL Admin package. +# +# Ace Suares , 2007. +msgid "" +msgstr "" +"Project-Id-Version: al-admin\n" +"POT-Creation-Date: 2007-08-19 18:20+0900\n" +"PO-Revision-Date: 2007-08-19 19:14-0400\n" +"Last-Translator: Ace Suares \n" +"Language-Team: Nederlands \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: KBabel 1.11.4\n" + +#: app/models/ldap_user.rb:- +msgid "ldap user" +msgstr "ldap gebruiker" + +#: app/models/user.rb:- +msgid "user" +msgstr "gebruiker" + +#: app/models/user.rb:- +msgid "User|Login" +msgstr "Gebruiker|Aanmelden" + +#: app/models/user.rb:- +msgid "User|Dn" +msgstr "Gebruiker|Dn" + +#: app/models/user.rb:- +msgid "User|Updated at" +msgstr "Gebruiker|Bijgewerkt om" + +#: app/models/user.rb:- +msgid "User|Salt" +msgstr "Gberuiker|Zout" + +#: app/models/user.rb:- +msgid "User|Remember token" +msgstr "Gebruiker:Herkenningsteken" + +#: app/models/user.rb:- +msgid "User|Remember token expires at" +msgstr "Gebruiker|Herkenningsteken verloopt om" + +#: app/controllers/account_controller.rb:23 lib/authenticated_system.rb:118 +msgid "Logged in successfully" +msgstr "Succesvol aangemeld" + +#: app/controllers/account_controller.rb:25 +msgid "Login or Password is incorrect" +msgstr "Gebruikersnaam of Wachtwoord incorrect" + +#: app/controllers/account_controller.rb:37 +msgid "Thanks for signing up!" +msgstr "Bedankt voor het inschrijven!" + +#: app/controllers/account_controller.rb:46 +msgid "You have been logged out." +msgstr "U bent afgemeld." + +#: app/controllers/users_controller.rb:26 +msgid "User was successfully updated." +msgstr "Gebruikersgegevens bijgewerkt." + +#: app/views/layouts/application.rhtml:25 +msgid "Top" +msgstr "Naar boven" + +#: app/views/users/_entry.rhtml:9 +msgid "attribute name" +msgstr "naam van het attribuut" + +#: app/views/users/_entry.rhtml:10 +msgid "value" +msgstr "waarde" + +#: app/views/users/_entry.rhtml:11 +msgid "description" +msgstr "beschrijving" + +#: app/views/users/show.rhtml:3 app/views/users/edit.rhtml:10 +msgid "Back" +msgstr "Terug" + +#: app/views/users/_form.rhtml:6 app/views/account/sign_up.rhtml:7 +#: app/views/account/login.rhtml:5 +msgid "Password" +msgstr "Wachtwoord" + +#: app/views/users/_form.rhtml:13 app/views/account/sign_up.rhtml:10 +msgid "Confirm Password" +msgstr "Bevestig Wachtwoord" + +#: app/views/users/edit.rhtml:5 +msgid "Edit" +msgstr "bewerken" + +#: app/views/users/edit.rhtml:9 +msgid "Show" +msgstr "Toon" + +#: app/views/users/index.rhtml:2 +msgid "No user." +msgstr "Geen gebruiker" + +#: app/views/welcome/index.rhtml:3 +msgid "Menu|Users list" +msgstr "Menu|Gebruikerslijst" + +#: app/views/welcome/index.rhtml:4 +msgid "Menu|Logout" +msgstr "Menu|Afmelden" + +#: app/views/welcome/index.rhtml:6 +msgid "Menu|Login" +msgstr "menu|Aanmelden" + +#: app/views/welcome/index.rhtml:7 +msgid "Menu|Sign up" +msgstr "Menu|Inschrijven" + +#: app/views/account/sign_up.rhtml:4 app/views/account/login.rhtml:2 +msgid "Login" +msgstr "Gebruikersnaam" + +#: app/views/account/sign_up.rhtml:13 app/views/account/sign_up.rhtml:21 +msgid "Sign up" +msgstr "inschrijven" + +#: app/views/account/login.rhtml:8 +msgid "Remember me:" +msgstr "Vergeet mij niet:" + +#: app/views/account/login.rhtml:11 +msgid "Log in" +msgstr "Aanmelden" + From codesite-noreply at google.com Mon Aug 20 06:53:43 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Mon, 20 Aug 2007 03:53:43 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r287 - in trunk: examples/al-admin/po/nl po/nl Message-ID: Author: koutou Date: Mon Aug 20 03:53:06 2007 New Revision: 287 Added: trunk/examples/al-admin/po/nl/ - copied from r286, /trunk/po/nl/ Removed: trunk/po/nl/ Log: * fixed wrong place. From codesite-noreply at google.com Mon Aug 20 08:31:53 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Mon, 20 Aug 2007 05:31:53 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r288 - trunk/examples/al-admin/app/models Message-ID: <163600d06e043820b9c65f301e0f0b@google.com> Author: koutou Date: Mon Aug 20 05:31:04 2007 New Revision: 288 Modified: trunk/examples/al-admin/app/models/ldap_user.rb Log: * don't require posixAccount. Modified: trunk/examples/al-admin/app/models/ldap_user.rb ============================================================================== --- trunk/examples/al-admin/app/models/ldap_user.rb (original) +++ trunk/examples/al-admin/app/models/ldap_user.rb Mon Aug 20 05:31:04 2007 @@ -2,7 +2,7 @@ class LdapUser < ActiveLdap::Base ldap_mapping :prefix => "ou=Users", - :classes => ["person", "posixAccount"], + :classes => ["person"], :dn_attribute => "uid" attr_accessor :password From codesite-noreply at google.com Mon Aug 20 20:23:37 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Mon, 20 Aug 2007 17:23:37 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r289 - wiki Message-ID: <163600d6b304382aab2558c11f583a@google.com> Author: acesuares Date: Mon Aug 20 17:22:26 2007 New Revision: 289 Modified: wiki/TroubleShooting.wiki Log: Edited wiki page through web user interface. Modified: wiki/TroubleShooting.wiki ============================================================================== --- wiki/TroubleShooting.wiki (original) +++ wiki/TroubleShooting.wiki Mon Aug 20 17:22:26 2007 @@ -1,16 +1,20 @@ -#summary The answers for frequency occurred problems +#summary The answers for frequently occurring problems = `bind': can't convert Fixnum into String (TypeError) = -This error message may be returned when you use ActiveLdap with configuration file written in YAML. (e.g. ActiveLdap Rails plugin uses config/ldap.yml for that.) +This error message may be returned when you use ActiveLdap with a configuration file written in YAML. (e.g. the ActiveLdap Rails plugin uses config/ldap.yml for that.) -You will see the above message if you specify an all numeric password into your configuration file written in YAML: +You will see the above message if you specify an all numeric password in your configuration file: - ... +development: + host: 127.0.0.1 + port: 389 + base: dc=nodomain + bind_dn: cn=admin,dc=nodomain password: 123 - ... + ... -In YAML, an all numeric value is converted number not string. But ActiveLdap requires a string for password value. So you need to specify a string not a number: +In YAML, an all numeric value is converted to a number (Fixnum) and not to a String. But ActiveLdap requires a String for the password value. So you need to specify a String instead: ... password: "123" @@ -18,4 +22,4 @@ = Next problem... = -The answer of this problem... +The answer of this problem... \ No newline at end of file From codesite-noreply at google.com Mon Aug 20 20:27:38 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Mon, 20 Aug 2007 17:27:38 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r290 - wiki Message-ID: Author: acesuares Date: Mon Aug 20 17:24:03 2007 New Revision: 290 Modified: wiki/TroubleShooting.wiki Log: Edited wiki page through web user interface. Modified: wiki/TroubleShooting.wiki ============================================================================== --- wiki/TroubleShooting.wiki (original) +++ wiki/TroubleShooting.wiki Mon Aug 20 17:24:03 2007 @@ -1,4 +1,4 @@ -#summary The answers for frequently occurring problems +#summary The answers to frequently occurring problems = `bind': can't convert Fixnum into String (TypeError) = From codesite-noreply at google.com Mon Aug 20 20:31:38 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Mon, 20 Aug 2007 17:31:38 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r291 - wiki Message-ID: Author: acesuares Date: Mon Aug 20 17:24:42 2007 New Revision: 291 Modified: wiki/TroubleShooting.wiki Log: Edited some language through web user interface. Modified: wiki/TroubleShooting.wiki ============================================================================== From codesite-noreply at google.com Mon Aug 20 20:35:39 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Mon, 20 Aug 2007 17:35:39 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r292 - wiki Message-ID: <163600d6b304382ad621ed211f7d7a@google.com> Author: acesuares Date: Mon Aug 20 17:29:13 2007 New Revision: 292 Modified: wiki/TroubleShooting.wiki Log: Some markup Modified: wiki/TroubleShooting.wiki ============================================================================== --- wiki/TroubleShooting.wiki (original) +++ wiki/TroubleShooting.wiki Mon Aug 20 17:29:13 2007 @@ -6,6 +6,7 @@ You will see the above message if you specify an all numeric password in your configuration file: +{{{ development: host: 127.0.0.1 port: 389 @@ -13,12 +14,15 @@ bind_dn: cn=admin,dc=nodomain password: 123 ... +}}} In YAML, an all numeric value is converted to a number (Fixnum) and not to a String. But ActiveLdap requires a String for the password value. So you need to specify a String instead: +{{{ ... password: "123" ... +}}} = Next problem... = From codesite-noreply at google.com Thu Aug 23 06:46:50 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 23 Aug 2007 03:46:50 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r294 - trunk/examples/al-admin/app/models Message-ID: Author: koutou Date: Thu Aug 23 03:42:18 2007 New Revision: 294 Modified: trunk/examples/al-admin/app/models/ldap_user.rb Log: * fixed invalid dn_attribute. Modified: trunk/examples/al-admin/app/models/ldap_user.rb ============================================================================== --- trunk/examples/al-admin/app/models/ldap_user.rb (original) +++ trunk/examples/al-admin/app/models/ldap_user.rb Thu Aug 23 03:42:18 2007 @@ -3,14 +3,15 @@ class LdapUser < ActiveLdap::Base ldap_mapping :prefix => "ou=Users", :classes => ["person"], - :dn_attribute => "uid" + :dn_attribute => "cn" attr_accessor :password - validates_presence_of :password, :if => :password_required? - validates_presence_of :password_confirmation, :if => :password_required? - validates_length_of :password, :within => 4..40, :if => :password_required? - validates_confirmation_of :password, :if => :password_required? + validates_presence_of :password, :password_confirmation, + :if => :password_required? + validates_length_of :password, :within => 4..40, + :if => :password_required? + validates_confirmation_of :password, :if => :password_required? before_save :encrypt_password class << self From codesite-noreply at google.com Thu Aug 23 06:42:50 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 23 Aug 2007 03:42:50 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r293 - trunk/lib/active_ldap Message-ID: Author: koutou Date: Thu Aug 23 03:41:59 2007 New Revision: 293 Modified: trunk/lib/active_ldap/base.rb Log: * don't synchronize because this causes deadlock with Rails on FreeBSD. Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Thu Aug 23 03:41:59 2007 @@ -822,21 +822,17 @@ end def inspect - @mutex.synchronize do - begin - schema, @schema = @schema, nil - must, may = @must, @may - object_classes = @object_classes - @must, @may = @must.collect(&:name), @may.collect(&:name) - @object_classes = @object_classes.collect(&:name) - super - ensure - @schema = schema - @must = must - @may = may - @object_classes = object_classes - end - end + schema, @schema = @schema, nil + must, may = @must, @may + object_classes = @object_classes + @must, @may = @must.collect(&:name), @may.collect(&:name) + @object_classes = @object_classes.collect(&:name) + super + ensure + @schema = schema + @must = must + @may = may + @object_classes = object_classes end private From codesite-noreply at google.com Thu Aug 23 06:50:50 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 23 Aug 2007 03:50:50 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r295 - trunk/examples/al-admin/app/views/account Message-ID: Author: koutou Date: Thu Aug 23 03:45:56 2007 New Revision: 295 Modified: trunk/examples/al-admin/app/views/account/sign_up.rhtml Log: * use dn_attribute. Modified: trunk/examples/al-admin/app/views/account/sign_up.rhtml ============================================================================== --- trunk/examples/al-admin/app/views/account/sign_up.rhtml (original) +++ trunk/examples/al-admin/app/views/account/sign_up.rhtml Thu Aug 23 03:45:56 2007 @@ -1,14 +1,14 @@ -<%= error_messages_for :user %> -<%= error_messages_for :system_user %> -<% form_for :user do |f| -%> -


    -<%= f.text_field :uid %>

    +<%= error_messages_for(:user) %> +<%= error_messages_for(:system_user) %> +<% form_for(:user) do |f| -%> +


    +<%= f.text_field(@user.dn_attribute) %>


    -<%= f.password_field :password %>

    +<%= f.password_field(:password) %>


    -<%= f.password_field :password_confirmation %>

    +<%= f.password_field(:password_confirmation) %>

    <%= submit_tag(_('Sign up')) %>

    From codesite-noreply at google.com Thu Aug 23 08:48:01 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Thu, 23 Aug 2007 05:48:01 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r296 - trunk/lib/active_ldap Message-ID: Author: koutou Date: Thu Aug 23 05:47:05 2007 New Revision: 296 Modified: trunk/lib/active_ldap/base.rb Log: * initialize accepts non LDAP attributes. Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Thu Aug 23 05:47:05 2007 @@ -481,8 +481,8 @@ apply_object_class(classes | initial_classes) normalized_attributes = {} attributes.each do |key, value| - real_key = to_real_attribute_name(key) - normalized_attributes[real_key] = value if real_key + real_key = to_real_attribute_name(key) || key + normalized_attributes[real_key] = value end self.dn = normalized_attributes[dn_attribute] self.attributes = normalized_attributes From codesite-noreply at google.com Fri Aug 24 09:34:33 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Fri, 24 Aug 2007 06:34:33 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r297 - in trunk: lib/active_ldap test Message-ID: <163600cf9704387211404c502b98f6@google.com> Author: koutou Date: Fri Aug 24 06:34:05 2007 New Revision: 297 Added: trunk/lib/active_ldap/populate.rb Modified: trunk/lib/active_ldap/base.rb trunk/lib/active_ldap/operations.rb trunk/lib/active_ldap/validations.rb trunk/test/al-test-utils.rb Log: * added utility module for populating. * improved Rails support. Modified: trunk/lib/active_ldap/base.rb ============================================================================== --- trunk/lib/active_ldap/base.rb (original) +++ trunk/lib/active_ldap/base.rb Fri Aug 24 06:34:05 2007 @@ -333,16 +333,19 @@ end def human_attribute_name(attribute_or_name) - s_(human_attribute_name_msgid(attribute_or_name)) + msgid = human_attribute_name_msgid(attribute_or_name) + msgid ||= human_attribute_name_with_gettext(attribute_or_name) + s_(msgid) end def human_attribute_name_msgid(attribute_or_name) if attribute_or_name.is_a?(Schema::Attribute) - name = attribute_or_name.name + attribute = attribute_or_name.name else - name = attribute_or_name + attribute = schema.attribute(attribute_or_name) + return nil if attribute.id.nil? end - "LDAP|Attribute|#{name}" + "LDAP|Attribute|#{attribute.name}" end def human_attribute_description(attribute_or_name) Modified: trunk/lib/active_ldap/operations.rb ============================================================================== --- trunk/lib/active_ldap/operations.rb (original) +++ trunk/lib/active_ldap/operations.rb Fri Aug 24 06:34:05 2007 @@ -256,7 +256,7 @@ args = [name, dn] if options[:filter] format = _("Couldn't find %s: DN: %s: filter: %s") - args << options[:filter] + args << options[:filter].inspect else format = _("Couldn't find %s: DN: %s") end @@ -285,7 +285,7 @@ args = [name, dns.join(', ')] if options[:filter] format = _("Couldn't find all %s: DNs (%s): filter: %s") - args << options[:filter] + args << options[:filter].inspect else format = _("Couldn't find all %s: DNs (%s)") end Added: trunk/lib/active_ldap/populate.rb ============================================================================== --- (empty file) +++ trunk/lib/active_ldap/populate.rb Fri Aug 24 06:34:05 2007 @@ -0,0 +1,45 @@ +module ActiveLdap + module Populate + module_function + def ensure_base(base_class=nil) + base_class ||= Base + return unless base_class.search(:scope => :base).empty? + + base_dn = DN.parse(base_class.base) + suffixes = [] + + base_dn.rdns.reverse_each do |rdn| + name, value = rdn.to_a[0] + prefix = suffixes.join(",") + suffixes.unshift("#{name}=#{value}") + next unless name == "dc" + dc_class = Class.new(base_class) + dc_class.ldap_mapping :dn_attribute => "dc", + :prefix => "", + :scope => :base, + :classes => ["top", "dcObject", "organization"] + dc_class.base = prefix + next if dc_class.exists?(value, :prefix => "#{name}=#{value}") + dc = dc_class.new(value) + dc.o = dc.dc + begin + dc.save + rescue ActiveLdap::OperationNotPermitted + end + end + end + + def ensure_ou(name, base_class=nil) + base_class ||= Base + unless base_class.search(:prefix => "ou=#{name}", :scope => :base).empty? + return + end + + ou_class = Class.new(base_class) + ou_class.ldap_mapping(:dn_attribute => "ou", + :prefix => "", + :classes => ["top", "organizationalUnit"]) + ou_class.new(name).save + end + end +end Modified: trunk/lib/active_ldap/validations.rb ============================================================================== --- trunk/lib/active_ldap/validations.rb (original) +++ trunk/lib/active_ldap/validations.rb Fri Aug 24 06:34:05 2007 @@ -15,6 +15,11 @@ class << self alias_method :human_attribute_name, :human_attribute_name_active_ldap + unless method_defined?(:human_attribute_name_with_gettext) + def human_attribute_name_with_gettext(attribute_key_name) + s_("#{self}|#{attribute_key_name.humanize}") + end + end end # Workaround for GetText's ugly implementation Modified: trunk/test/al-test-utils.rb ============================================================================== --- trunk/test/al-test-utils.rb (original) +++ trunk/test/al-test-utils.rb Fri Aug 24 06:34:05 2007 @@ -100,30 +100,7 @@ end def populate_base - unless ActiveLdap::Base.search(:scope => :base).empty? - return - end - - suffixes = [] - ActiveLdap::Base.base.split(/,/).reverse_each do |suffix| - prefix = suffixes.join(",") - suffixes.unshift(suffix) - name, value = suffix.split(/=/, 2) - next unless name == "dc" - dc_class = Class.new(ActiveLdap::Base) - dc_class.ldap_mapping :dn_attribute => "dc", - :prefix => "", - :scope => :base, - :classes => ["top", "dcObject", "organization"] - dc_class.base = prefix - next if dc_class.exists?(value, :prefix => "dc=#{value}") - dc = dc_class.new(value) - dc.o = dc.dc - begin - dc.save - rescue ActiveLdap::OperationNotPermitted - end - end + ActiveLdap::Populate.ensure_base end def ou_class(prefix="") @@ -141,7 +118,7 @@ end def make_ou(name) - ou_class.new(name).save + ActiveLdap::Populate.ensure_ou(name) end def populate_user_class From codesite-noreply at google.com Fri Aug 24 09:38:34 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Fri, 24 Aug 2007 06:38:34 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r298 - in trunk/examples/al-admin: app/controllers app/helpers app/models app/views/directory app... Message-ID: Author: koutou Date: Fri Aug 24 06:35:20 2007 New Revision: 298 Added: trunk/examples/al-admin/app/controllers/directory_controller.rb trunk/examples/al-admin/app/helpers/directory_helper.rb trunk/examples/al-admin/app/models/entry.rb trunk/examples/al-admin/app/views/directory/ trunk/examples/al-admin/app/views/directory/index.rhtml trunk/examples/al-admin/app/views/directory/populate.rhtml trunk/examples/al-admin/test/functional/directory_controller_test.rb Modified: trunk/examples/al-admin/app/controllers/account_controller.rb trunk/examples/al-admin/app/models/ldap_user.rb trunk/examples/al-admin/app/models/user.rb trunk/examples/al-admin/app/views/users/edit.rhtml trunk/examples/al-admin/app/views/users/show.rhtml trunk/examples/al-admin/app/views/welcome/index.rhtml trunk/examples/al-admin/lib/authenticated_system.rb trunk/examples/al-admin/po/en/al-admin.po trunk/examples/al-admin/po/ja/al-admin.po trunk/examples/al-admin/po/nl/al-admin.po Log: * supported populating. Modified: trunk/examples/al-admin/app/controllers/account_controller.rb ============================================================================== --- trunk/examples/al-admin/app/controllers/account_controller.rb (original) +++ trunk/examples/al-admin/app/controllers/account_controller.rb Fri Aug 24 06:35:20 2007 @@ -1,5 +1,4 @@ class AccountController < ApplicationController - # say something nice, you goof! something sweet. def index if logged_in? redirect_to(top_path) @@ -36,6 +35,8 @@ redirect_back_or_default(top_path) flash[:notice] = _("Thanks for signing up!") end + else + @user.password = @user.password_confirmation = nil end end Added: trunk/examples/al-admin/app/controllers/directory_controller.rb ============================================================================== --- (empty file) +++ trunk/examples/al-admin/app/controllers/directory_controller.rb Fri Aug 24 06:35:20 2007 @@ -0,0 +1,22 @@ +class DirectoryController < ApplicationController + before_filter :login_required, :except => [:populate] + before_filter :empty_entries_required, :only => [:populate] + + def index + @entries = Entry.search(:limit => 10) + end + + def populate + ActiveLdap::Populate.ensure_base + ActiveLdap::Populate.ensure_ou("Users") + end + + private + def empty_entries_required + return true if Entry.empty? + + flash.now[:notice] = _("Populating is only for initialization") + redirect_to(top_url) + false + end +end Added: trunk/examples/al-admin/app/helpers/directory_helper.rb ============================================================================== --- (empty file) +++ trunk/examples/al-admin/app/helpers/directory_helper.rb Fri Aug 24 06:35:20 2007 @@ -0,0 +1,2 @@ +module DirectoryHelper +end Added: trunk/examples/al-admin/app/models/entry.rb ============================================================================== --- (empty file) +++ trunk/examples/al-admin/app/models/entry.rb Fri Aug 24 06:35:20 2007 @@ -0,0 +1,19 @@ +class Entry < ActiveLdap::Base + ldap_mapping :prefix => "", + :classes => ["top"], + :scope => :sub + self.dn_attribute = nil + + validate :always_fail + + class << self + def empty? + search(:scope => :base).empty? + end + end + + private + def always_fail + errors.add("save", _("disable saving")) + end +end Modified: trunk/examples/al-admin/app/models/ldap_user.rb ============================================================================== --- trunk/examples/al-admin/app/models/ldap_user.rb (original) +++ trunk/examples/al-admin/app/models/ldap_user.rb Fri Aug 24 06:35:20 2007 @@ -5,6 +5,8 @@ :classes => ["person"], :dn_attribute => "cn" + N_("LdapUser|Password") + N_("LdapUser|Password confirmation") attr_accessor :password validates_presence_of :password, :password_confirmation, @@ -34,15 +36,14 @@ private def encrypt_password return if password.blank? + hash_type = "ssha" if /\A\{([A-Z][A-Z\d]+)\}/ =~ userPassword.to_s hash_type = $1.downcase - self.user_password = ActiveLdap::UserPassword.send(hash_type, password) - else - self.user_password = password end + self.user_password = ActiveLdap::UserPassword.send(hash_type, password) end def password_required? - !password.blank? + user_password.blank? or !password.blank? end end Modified: trunk/examples/al-admin/app/models/user.rb ============================================================================== --- trunk/examples/al-admin/app/models/user.rb (original) +++ trunk/examples/al-admin/app/models/user.rb Fri Aug 24 06:35:20 2007 @@ -33,6 +33,7 @@ def ldap_user @ldap_user ||= LdapUser.find(dn) + rescue ActiveLdap::EntryNotFound end def connected? Added: trunk/examples/al-admin/app/views/directory/index.rhtml ============================================================================== --- (empty file) +++ trunk/examples/al-admin/app/views/directory/index.rhtml Fri Aug 24 06:35:20 2007 @@ -0,0 +1,5 @@ +
      +<% @entries.each do |dn, attributes| -%> +
    • <%= h dn %>
    • +<% end -%> +
    Added: trunk/examples/al-admin/app/views/directory/populate.rhtml ============================================================================== --- (empty file) +++ trunk/examples/al-admin/app/views/directory/populate.rhtml Fri Aug 24 06:35:20 2007 @@ -0,0 +1,2 @@ +

    <%= _("Done.") %>

    +

    <%= link_to(s_("Menu|Index"), :action => "index") %>

    Modified: trunk/examples/al-admin/app/views/users/edit.rhtml ============================================================================== --- trunk/examples/al-admin/app/views/users/edit.rhtml (original) +++ trunk/examples/al-admin/app/views/users/edit.rhtml Fri Aug 24 06:35:20 2007 @@ -2,9 +2,9 @@

    <%= user_link(@user) %>

    <% form_tag :action => 'update', :id => @user do %> <%= render :partial => 'form' %> - <%= submit_tag(_('Edit')) %> + <%= submit_tag(s_('Command|Update')) %> <% end %> -<%= link_to _('Show'), :action => 'show', :id => @user %> | -<%= link_to _('Back'), :action => 'index' %> +<%= link_to(s_('Menu|Show'), :action => 'show', :id => @user) %> | +<%= link_to(s_('Menu|Back'), :action => 'index') %> Modified: trunk/examples/al-admin/app/views/users/show.rhtml ============================================================================== --- trunk/examples/al-admin/app/views/users/show.rhtml (original) +++ trunk/examples/al-admin/app/views/users/show.rhtml Fri Aug 24 06:35:20 2007 @@ -1,3 +1,3 @@ <%= render(:partial => "entry", :locals => {:entry => @user}) %> -<%= link_to _('Back'), :action => 'index' %> +<%= link_to s_('Menu|Back'), :action => 'index' %> Modified: trunk/examples/al-admin/app/views/welcome/index.rhtml ============================================================================== --- trunk/examples/al-admin/app/views/welcome/index.rhtml (original) +++ trunk/examples/al-admin/app/views/welcome/index.rhtml Fri Aug 24 06:35:20 2007 @@ -2,8 +2,15 @@ <% if logged_in? -%>
  • <%= link_to(s_("Menu|Users list"), :controller => "users") %>
  • <%= link_to(s_("Menu|Logout"), logout_path) %>
  • +
  • <%= link_to(s_("Menu|Directory"), :controller => "directory") %>
  • <% else -%>
  • <%= link_to(s_("Menu|Login"), login_path) %>
  • <%= link_to(s_("Menu|Sign up"), sign_up_path) %>
  • +<% end -%> + +<% if Entry.empty? -%> +
  • <%= link_to(s_("Menu|Populate"), + {:controller => "directory", :action => "populate"}, + :confirm => _("OK?")) %>
  • <% end -%>
Modified: trunk/examples/al-admin/lib/authenticated_system.rb ============================================================================== --- trunk/examples/al-admin/lib/authenticated_system.rb (original) +++ trunk/examples/al-admin/lib/authenticated_system.rb Fri Aug 24 06:35:20 2007 @@ -72,6 +72,7 @@ respond_to do |accepts| accepts.html do store_location + flash.now[:notice] = _("Please login.") redirect_to :controller => '/account', :action => 'login' end accepts.xml do Modified: trunk/examples/al-admin/po/en/al-admin.po ============================================================================== --- trunk/examples/al-admin/po/en/al-admin.po (original) +++ trunk/examples/al-admin/po/en/al-admin.po Fri Aug 24 06:35:20 2007 @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: AL Admin 0.8.2\n" -"POT-Creation-Date: 2007-08-19 18:20+0900\n" +"POT-Creation-Date: 2007-08-24 22:25+0900\n" "PO-Revision-Date: 2007-08-19 09:44+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: English\n" @@ -15,12 +15,16 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app/models/ldap_user.rb:- -msgid "ldap user" +#: app/models/ldap_user.rb:8 +msgid "LdapUser|Password" +msgstr "" + +#: app/models/ldap_user.rb:9 +msgid "LdapUser|Password confirmation" msgstr "" #: app/models/user.rb:- -msgid "user" +msgid "User|Dn" msgstr "" #: app/models/user.rb:- @@ -28,11 +32,11 @@ msgstr "" #: app/models/user.rb:- -msgid "User|Dn" +msgid "User|Remember token" msgstr "" #: app/models/user.rb:- -msgid "User|Updated at" +msgid "User|Remember token expires at" msgstr "" #: app/models/user.rb:- @@ -40,26 +44,38 @@ msgstr "" #: app/models/user.rb:- -msgid "User|Remember token" +msgid "User|Updated at" +msgstr "" + +#: app/models/entry.rb:17 +msgid "disable saving" +msgstr "" + +#: app/models/entry.rb:- +msgid "entry" +msgstr "" + +#: app/models/ldap_user.rb:- +msgid "ldap user" msgstr "" #: app/models/user.rb:- -msgid "User|Remember token expires at" +msgid "user" msgstr "" -#: app/controllers/account_controller.rb:23 lib/authenticated_system.rb:118 +#: app/controllers/account_controller.rb:22 lib/authenticated_system.rb:119 msgid "Logged in successfully" msgstr "" -#: app/controllers/account_controller.rb:25 +#: app/controllers/account_controller.rb:24 msgid "Login or Password is incorrect" msgstr "" -#: app/controllers/account_controller.rb:37 +#: app/controllers/account_controller.rb:36 msgid "Thanks for signing up!" msgstr "" -#: app/controllers/account_controller.rb:46 +#: app/controllers/account_controller.rb:47 msgid "You have been logged out." msgstr "" @@ -67,24 +83,16 @@ msgid "User was successfully updated." msgstr "" -#: app/views/layouts/application.rhtml:25 -msgid "Top" -msgstr "" - -#: app/views/users/_entry.rhtml:9 -msgid "attribute name" -msgstr "" - -#: app/views/users/_entry.rhtml:10 -msgid "value" +#: app/controllers/directory_controller.rb:18 +msgid "Populating is only for initialization" msgstr "" -#: app/views/users/_entry.rhtml:11 -msgid "description" +#: app/views/layouts/application.rhtml:25 +msgid "Top" msgstr "" #: app/views/users/show.rhtml:3 app/views/users/edit.rhtml:10 -msgid "Back" +msgid "Menu|Back" msgstr "" #: app/views/users/_form.rhtml:6 app/views/account/sign_up.rhtml:7 @@ -97,17 +105,34 @@ msgstr "" #: app/views/users/edit.rhtml:5 -msgid "Edit" +msgid "Command|Update" msgstr "" #: app/views/users/edit.rhtml:9 -msgid "Show" +msgid "Menu|Show" msgstr "" #: app/views/users/index.rhtml:2 msgid "No user." msgstr "" +#: app/views/users/_object_class_information.rhtml:9 +msgid "objectClass name" +msgstr "" + +#: app/views/users/_object_class_information.rhtml:10 +#: app/views/users/_attribute_information.rhtml:8 +msgid "description" +msgstr "" + +#: app/views/users/_attribute_information.rhtml:6 +msgid "attribute name" +msgstr "" + +#: app/views/users/_attribute_information.rhtml:7 +msgid "value" +msgstr "" + #: app/views/welcome/index.rhtml:3 msgid "Menu|Users list" msgstr "" @@ -116,14 +141,26 @@ msgid "Menu|Logout" msgstr "" -#: app/views/welcome/index.rhtml:6 -msgid "Menu|Login" +#: app/views/welcome/index.rhtml:5 +msgid "Menu|Directory" msgstr "" #: app/views/welcome/index.rhtml:7 +msgid "Menu|Login" +msgstr "" + +#: app/views/welcome/index.rhtml:8 msgid "Menu|Sign up" msgstr "" +#: app/views/welcome/index.rhtml:12 +msgid "Menu|Populate" +msgstr "" + +#: app/views/welcome/index.rhtml:14 +msgid "OK?" +msgstr "" + #: app/views/account/sign_up.rhtml:4 app/views/account/login.rhtml:2 msgid "Login" msgstr "" @@ -138,4 +175,16 @@ #: app/views/account/login.rhtml:11 msgid "Log in" +msgstr "" + +#: app/views/directory/populate.rhtml:1 +msgid "Done." +msgstr "" + +#: app/views/directory/populate.rhtml:2 +msgid "Menu|Index" +msgstr "" + +#: lib/authenticated_system.rb:75 +msgid "Please login." msgstr "" Modified: trunk/examples/al-admin/po/ja/al-admin.po ============================================================================== --- trunk/examples/al-admin/po/ja/al-admin.po (original) +++ trunk/examples/al-admin/po/ja/al-admin.po Fri Aug 24 06:35:20 2007 @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: AL Admin 0.8.2\n" -"POT-Creation-Date: 2007-08-19 18:20+0900\n" -"PO-Revision-Date: 2007-08-19 18:20+0900\n" +"POT-Creation-Date: 2007-08-24 22:25+0900\n" +"PO-Revision-Date: 2007-08-24 22:25+0900\n" "Last-Translator: Kouhei Sutou \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -15,51 +15,67 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app/models/ldap_user.rb:- -msgid "ldap user" -msgstr "???" +#: app/models/ldap_user.rb:8 +msgid "LdapUser|Password" +msgstr "?????" + +#: app/models/ldap_user.rb:9 +msgid "LdapUser|Password confirmation" +msgstr "????????" #: app/models/user.rb:- -msgid "user" -msgstr "???" +msgid "User|Dn" +msgstr "DN" #: app/models/user.rb:- msgid "User|Login" msgstr "?????" #: app/models/user.rb:- -msgid "User|Dn" -msgstr "DN" +msgid "User|Remember token" +msgstr "??????" #: app/models/user.rb:- -msgid "User|Updated at" -msgstr "????" +msgid "User|Remember token expires at" +msgstr "??????????" #: app/models/user.rb:- msgid "User|Salt" msgstr "???" #: app/models/user.rb:- -msgid "User|Remember token" -msgstr "??????" +msgid "User|Updated at" +msgstr "????" + +#: app/models/entry.rb:17 +msgid "disable saving" +msgstr "????????????" + +#: app/models/entry.rb:- +msgid "entry" +msgstr "????" + +#: app/models/ldap_user.rb:- +msgid "ldap user" +msgstr "???" #: app/models/user.rb:- -msgid "User|Remember token expires at" -msgstr "??????????" +msgid "user" +msgstr "???" -#: app/controllers/account_controller.rb:23 lib/authenticated_system.rb:118 +#: app/controllers/account_controller.rb:22 lib/authenticated_system.rb:119 msgid "Logged in successfully" msgstr "????????????" -#: app/controllers/account_controller.rb:25 +#: app/controllers/account_controller.rb:24 msgid "Login or Password is incorrect" msgstr "??????????????????????" -#: app/controllers/account_controller.rb:37 +#: app/controllers/account_controller.rb:36 msgid "Thanks for signing up!" msgstr "?????????????" -#: app/controllers/account_controller.rb:46 +#: app/controllers/account_controller.rb:47 msgid "You have been logged out." msgstr "??????????" @@ -67,24 +83,16 @@ msgid "User was successfully updated." msgstr "??????????????" +#: app/controllers/directory_controller.rb:18 +msgid "Populating is only for initialization" +msgstr "???????????????????" + #: app/views/layouts/application.rhtml:25 msgid "Top" msgstr "???" -#: app/views/users/_entry.rhtml:9 -msgid "attribute name" -msgstr "???" - -#: app/views/users/_entry.rhtml:10 -msgid "value" -msgstr "?" - -#: app/views/users/_entry.rhtml:11 -msgid "description" -msgstr "??" - #: app/views/users/show.rhtml:3 app/views/users/edit.rhtml:10 -msgid "Back" +msgid "Menu|Back" msgstr "??" #: app/views/users/_form.rhtml:6 app/views/account/sign_up.rhtml:7 @@ -97,17 +105,34 @@ msgstr "????????" #: app/views/users/edit.rhtml:5 -msgid "Edit" -msgstr "??" +msgid "Command|Update" +msgstr "??" #: app/views/users/edit.rhtml:9 -msgid "Show" +msgid "Menu|Show" msgstr "??" #: app/views/users/index.rhtml:2 msgid "No user." msgstr "?????????" +#: app/views/users/_object_class_information.rhtml:9 +msgid "objectClass name" +msgstr "??????????" + +#: app/views/users/_object_class_information.rhtml:10 +#: app/views/users/_attribute_information.rhtml:8 +msgid "description" +msgstr "??" + +#: app/views/users/_attribute_information.rhtml:6 +msgid "attribute name" +msgstr "???" + +#: app/views/users/_attribute_information.rhtml:7 +msgid "value" +msgstr "?" + #: app/views/welcome/index.rhtml:3 msgid "Menu|Users list" msgstr "?????" @@ -116,14 +141,26 @@ msgid "Menu|Logout" msgstr "?????" -#: app/views/welcome/index.rhtml:6 +#: app/views/welcome/index.rhtml:5 +msgid "Menu|Directory" +msgstr "??????" + +#: app/views/welcome/index.rhtml:7 msgid "Menu|Login" msgstr "????" -#: app/views/welcome/index.rhtml:7 +#: app/views/welcome/index.rhtml:8 msgid "Menu|Sign up" msgstr "??" +#: app/views/welcome/index.rhtml:12 +msgid "Menu|Populate" +msgstr "??" + +#: app/views/welcome/index.rhtml:14 +msgid "OK?" +msgstr "??????" + #: app/views/account/sign_up.rhtml:4 app/views/account/login.rhtml:2 msgid "Login" msgstr "?????" @@ -139,3 +176,15 @@ #: app/views/account/login.rhtml:11 msgid "Log in" msgstr "????" + +#: app/views/directory/populate.rhtml:1 +msgid "Done." +msgstr "???" + +#: app/views/directory/populate.rhtml:2 +msgid "Menu|Index" +msgstr "??" + +#: lib/authenticated_system.rb:75 +msgid "Please login." +msgstr "???????????" Modified: trunk/examples/al-admin/po/nl/al-admin.po ============================================================================== --- trunk/examples/al-admin/po/nl/al-admin.po (original) +++ trunk/examples/al-admin/po/nl/al-admin.po Fri Aug 24 06:35:20 2007 @@ -6,9 +6,9 @@ # Ace Suares , 2007. msgid "" msgstr "" -"Project-Id-Version: al-admin\n" -"POT-Creation-Date: 2007-08-19 18:20+0900\n" -"PO-Revision-Date: 2007-08-19 19:14-0400\n" +"Project-Id-Version: AL Admin 0.8.2\n" +"POT-Creation-Date: 2007-08-24 22:25+0900\n" +"PO-Revision-Date: 2007-08-24 22:03+0900\n" "Last-Translator: Ace Suares \n" "Language-Team: Nederlands \n" "MIME-Version: 1.0\n" @@ -17,51 +17,68 @@ "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: KBabel 1.11.4\n" -#: app/models/ldap_user.rb:- -msgid "ldap user" -msgstr "ldap gebruiker" +#: app/models/ldap_user.rb:8 +#, fuzzy +msgid "LdapUser|Password" +msgstr "Wachtwoord" + +#: app/models/ldap_user.rb:9 +msgid "LdapUser|Password confirmation" +msgstr "" #: app/models/user.rb:- -msgid "user" -msgstr "gebruiker" +msgid "User|Dn" +msgstr "DN" #: app/models/user.rb:- msgid "User|Login" -msgstr "Gebruiker|Aanmelden" +msgstr "Aanmelden" #: app/models/user.rb:- -msgid "User|Dn" -msgstr "Gebruiker|Dn" +msgid "User|Remember token" +msgstr "Herkenningsteken" #: app/models/user.rb:- -msgid "User|Updated at" -msgstr "Gebruiker|Bijgewerkt om" +msgid "User|Remember token expires at" +msgstr "Herkenningsteken verloopt om" #: app/models/user.rb:- msgid "User|Salt" -msgstr "Gberuiker|Zout" +msgstr "Zout" #: app/models/user.rb:- -msgid "User|Remember token" -msgstr "Gebruiker:Herkenningsteken" +msgid "User|Updated at" +msgstr "Bijgewerkt om" + +#: app/models/entry.rb:17 +msgid "disable saving" +msgstr "" + +#: app/models/entry.rb:- +msgid "entry" +msgstr "" + +#: app/models/ldap_user.rb:- +msgid "ldap user" +msgstr "ldap gebruiker" #: app/models/user.rb:- -msgid "User|Remember token expires at" -msgstr "Gebruiker|Herkenningsteken verloopt om" +msgid "user" +msgstr "gebruiker" -#: app/controllers/account_controller.rb:23 lib/authenticated_system.rb:118 +#: app/controllers/account_controller.rb:22 lib/authenticated_system.rb:119 msgid "Logged in successfully" msgstr "Succesvol aangemeld" -#: app/controllers/account_controller.rb:25 +#: app/controllers/account_controller.rb:24 msgid "Login or Password is incorrect" msgstr "Gebruikersnaam of Wachtwoord incorrect" -#: app/controllers/account_controller.rb:37 +#: app/controllers/account_controller.rb:36 msgid "Thanks for signing up!" msgstr "Bedankt voor het inschrijven!" -#: app/controllers/account_controller.rb:46 +#: app/controllers/account_controller.rb:47 msgid "You have been logged out." msgstr "U bent afgemeld." @@ -69,24 +86,17 @@ msgid "User was successfully updated." msgstr "Gebruikersgegevens bijgewerkt." +#: app/controllers/directory_controller.rb:18 +msgid "Populating is only for initialization" +msgstr "" + #: app/views/layouts/application.rhtml:25 msgid "Top" msgstr "Naar boven" -#: app/views/users/_entry.rhtml:9 -msgid "attribute name" -msgstr "naam van het attribuut" - -#: app/views/users/_entry.rhtml:10 -msgid "value" -msgstr "waarde" - -#: app/views/users/_entry.rhtml:11 -msgid "description" -msgstr "beschrijving" - #: app/views/users/show.rhtml:3 app/views/users/edit.rhtml:10 -msgid "Back" +#, fuzzy +msgid "Menu|Back" msgstr "Terug" #: app/views/users/_form.rhtml:6 app/views/account/sign_up.rhtml:7 @@ -99,32 +109,62 @@ msgstr "Bevestig Wachtwoord" #: app/views/users/edit.rhtml:5 -msgid "Edit" -msgstr "bewerken" +msgid "Command|Update" +msgstr "" #: app/views/users/edit.rhtml:9 -msgid "Show" +msgid "Menu|Show" msgstr "Toon" #: app/views/users/index.rhtml:2 msgid "No user." msgstr "Geen gebruiker" +#: app/views/users/_object_class_information.rhtml:9 +msgid "objectClass name" +msgstr "" + +#: app/views/users/_object_class_information.rhtml:10 +#: app/views/users/_attribute_information.rhtml:8 +msgid "description" +msgstr "beschrijving" + +#: app/views/users/_attribute_information.rhtml:6 +msgid "attribute name" +msgstr "naam van het attribuut" + +#: app/views/users/_attribute_information.rhtml:7 +msgid "value" +msgstr "waarde" + #: app/views/welcome/index.rhtml:3 msgid "Menu|Users list" -msgstr "Menu|Gebruikerslijst" +msgstr "Gebruikerslijst" #: app/views/welcome/index.rhtml:4 msgid "Menu|Logout" -msgstr "Menu|Afmelden" +msgstr "Afmelden" -#: app/views/welcome/index.rhtml:6 -msgid "Menu|Login" -msgstr "menu|Aanmelden" +#: app/views/welcome/index.rhtml:5 +msgid "Menu|Directory" +msgstr "" #: app/views/welcome/index.rhtml:7 +msgid "Menu|Login" +msgstr "Aanmelden" + +#: app/views/welcome/index.rhtml:8 msgid "Menu|Sign up" -msgstr "Menu|Inschrijven" +msgstr "Inschrijven" + +#: app/views/welcome/index.rhtml:12 +#, fuzzy +msgid "Menu|Populate" +msgstr "Menu|Afmelden" + +#: app/views/welcome/index.rhtml:14 +msgid "OK?" +msgstr "" #: app/views/account/sign_up.rhtml:4 app/views/account/login.rhtml:2 msgid "Login" @@ -142,3 +182,21 @@ msgid "Log in" msgstr "Aanmelden" +#: app/views/directory/populate.rhtml:1 +msgid "Done." +msgstr "" + +#: app/views/directory/populate.rhtml:2 +#, fuzzy +msgid "Menu|Index" +msgstr "menu|Aanmelden" + +#: lib/authenticated_system.rb:75 +msgid "Please login." +msgstr "" + +#~ msgid "Edit" +#~ msgstr "bewerken" + +#~ msgid "Show" +#~ msgstr "Toon" Added: trunk/examples/al-admin/test/functional/directory_controller_test.rb ============================================================================== --- (empty file) +++ trunk/examples/al-admin/test/functional/directory_controller_test.rb Fri Aug 24 06:35:20 2007 @@ -0,0 +1,18 @@ +require File.dirname(__FILE__) + '/../test_helper' +require 'directory_controller' + +# Re-raise errors caught by the controller. +class DirectoryController; def rescue_action(e) raise e end; end + +class DirectoryControllerTest < Test::Unit::TestCase + def setup + @controller = DirectoryController.new + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + end + + # Replace this with your real tests. + def test_truth + assert true + end +end From codesite-noreply at google.com Fri Aug 24 10:06:37 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Fri, 24 Aug 2007 07:06:37 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r299 - in trunk/examples/al-admin: app/models lib Message-ID: <163600d6b304387283ee38632b97cd@google.com> Author: koutou Date: Fri Aug 24 07:05:45 2007 New Revision: 299 Modified: trunk/examples/al-admin/app/models/user.rb trunk/examples/al-admin/lib/authenticated_system.rb Log: * improved error hanling. Modified: trunk/examples/al-admin/app/models/user.rb ============================================================================== --- trunk/examples/al-admin/app/models/user.rb (original) +++ trunk/examples/al-admin/app/models/user.rb Fri Aug 24 07:05:45 2007 @@ -27,13 +27,18 @@ end def authenticated?(password) - return false if ldap_user.nil? + return false if ldap_user.nil? or ldap_user.new_entry? ldap_user.authenticated?(password) end def ldap_user @ldap_user ||= LdapUser.find(dn) rescue ActiveLdap::EntryNotFound + if dn + LdapUser.new(dn) + else + nil + end end def connected? Modified: trunk/examples/al-admin/lib/authenticated_system.rb ============================================================================== --- trunk/examples/al-admin/lib/authenticated_system.rb (original) +++ trunk/examples/al-admin/lib/authenticated_system.rb Fri Aug 24 07:05:45 2007 @@ -88,7 +88,7 @@ # # We can return to this location by calling #redirect_back_or_default. def store_location - session[:return_to] = request.request_uri + session[:return_to] = url_for(params.merge(:only_path => false)) end # Redirect to the URI stored by the most recent store_location call or From codesite-noreply at google.com Sat Aug 25 09:18:06 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 25 Aug 2007 06:18:06 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r300 - in trunk/examples/al-admin: config vendor/plugins/exception_notification vendor/plugins/ex... Message-ID: <163600d6b3043885f44225e62f5d26@google.com> Author: koutou Date: Sat Aug 25 06:16:38 2007 New Revision: 300 Added: trunk/examples/al-admin/vendor/plugins/exception_notification/ trunk/examples/al-admin/vendor/plugins/exception_notification/README (contents, props changed) trunk/examples/al-admin/vendor/plugins/exception_notification/init.rb trunk/examples/al-admin/vendor/plugins/exception_notification/lib/ trunk/examples/al-admin/vendor/plugins/exception_notification/lib/exception_notifiable.rb trunk/examples/al-admin/vendor/plugins/exception_notification/lib/exception_notifier.rb trunk/examples/al-admin/vendor/plugins/exception_notification/lib/exception_notifier_helper.rb trunk/examples/al-admin/vendor/plugins/exception_notification/test/ trunk/examples/al-admin/vendor/plugins/exception_notification/test/exception_notifier_helper_test.rb trunk/examples/al-admin/vendor/plugins/exception_notification/test/test_helper.rb trunk/examples/al-admin/vendor/plugins/exception_notification/views/ trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/ trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_backtrace.rhtml trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_environment.rhtml trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_inspect_model.rhtml trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_request.rhtml trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_session.rhtml trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_title.rhtml trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/exception_notification.rhtml Modified: trunk/examples/al-admin/config/environment.rb Log: * installed Exception Notifier plugin. Modified: trunk/examples/al-admin/config/environment.rb ============================================================================== --- trunk/examples/al-admin/config/environment.rb (original) +++ trunk/examples/al-admin/config/environment.rb Sat Aug 25 06:16:38 2007 @@ -62,3 +62,6 @@ # Include your application configuration below require 'gettext/rails' + +ExceptionNotifier.sender_address = "null at cozmixng.org" +ExceptionNotifier.exception_recipients = %w(kou at cozmixng.org) Added: trunk/examples/al-admin/vendor/plugins/exception_notification/README ============================================================================== --- (empty file) +++ trunk/examples/al-admin/vendor/plugins/exception_notification/README Sat Aug 25 06:16:38 2007 @@ -0,0 +1,111 @@ += Exception Notifier Plugin for Rails + +The Exception Notifier plugin provides a mailer object and a default set of +templates for sending email notifications when errors occur in a Rails +application. The plugin is configurable, allowing programmers to specify: + +* the sender address of the email +* the recipient addresses +* the text used to prefix the subject line + +The email includes information about the current request, session, and +environment, and also gives a backtrace of the exception. + +== Usage + +First, include the ExceptionNotifiable mixin in whichever controller you want +to generate error emails (typically ApplicationController): + + class ApplicationController < ActionController::Base + include ExceptionNotifiable + ... + end + +Then, specify the email recipients in your environment: + + ExceptionNotifier.exception_recipients = %w(joe at schmoe.com bill at schmoe.com) + +And that's it! The defaults take care of the rest. + +== Configuration + +You can tweak other values to your liking, as well. In your environment file, +just set any or all of the following values: + + # defaults to exception.notifier at default.com + ExceptionNotifier.sender_address = + %("Application Error" ) + + # defaults to "[ERROR] " + ExceptionNotifier.email_prefix = "[APP] " + +Email notifications will only occur when the IP address is determined not to +be local. You can specify certain addresses to always be local so that you'll +get a detailed error instead of the generic error page. You do this in your +controller (or even per-controller): + + consider_local "64.72.18.143", "14.17.21.25" + +You can specify subnet masks as well, so that all matching addresses are +considered local: + + consider_local "64.72.18.143/24" + +The address "127.0.0.1" is always considered local. If you want to completely +reset the list of all addresses (for instance, if you wanted "127.0.0.1" to +NOT be considered local), you can simply do, somewhere in your controller: + + local_addresses.clear + +== Customization + +By default, the notification email includes four parts: request, session, +environment, and backtrace (in that order). You can customize how each of those +sections are rendered by placing a partial named for that part in your +app/views/exception_notifier directory (e.g., _session.rhtml). Each partial has +access to the following variables: + +* @controller: the controller that caused the error +* @request: the current request object +* @exception: the exception that was raised +* @host: the name of the host that made the request +* @backtrace: a sanitized version of the exception's backtrace +* @rails_root: a sanitized version of RAILS_ROOT +* @data: a hash of optional data values that were passed to the notifier +* @sections: the array of sections to include in the email + +You can reorder the sections, or exclude sections completely, by altering the +ExceptionNotifier.sections variable. You can even add new sections that +describe application-specific data--just add the section's name to the list +(whereever you'd like), and define the corresponding partial. Then, if your +new section requires information that isn't available by default, make sure +it is made available to the email using the exception_data macro: + + class ApplicationController < ActionController::Base + ... + protected + exception_data :additional_data + + def additional_data + { :document => @document, + :person => @person } + end + ... + end + +In the above case, @document and @person would be made available to the email +renderer, allowing your new section(s) to access and display them. See the +existing sections defined by the plugin for examples of how to write your own. + +== Advanced Customization + +By default, the email notifier will only notify on critical errors. For +ActiveRecord::RecordNotFound and ActionController::UnknownAction, it will +simply render the contents of your public/404.html file. Other exceptions +will render public/500.html and will send the email notification. If you want +to use different rules for the notification, you will need to implement your +own rescue_action_in_public method. You can look at the default implementation +in ExceptionNotifiable for an example of how to go about that. + + +Copyright (c) 2005 Jamis Buck, released under the MIT license \ No newline at end of file Added: trunk/examples/al-admin/vendor/plugins/exception_notification/init.rb ============================================================================== --- (empty file) +++ trunk/examples/al-admin/vendor/plugins/exception_notification/init.rb Sat Aug 25 06:16:38 2007 @@ -0,0 +1 @@ +require "action_mailer" Added: trunk/examples/al-admin/vendor/plugins/exception_notification/lib/exception_notifiable.rb ============================================================================== --- (empty file) +++ trunk/examples/al-admin/vendor/plugins/exception_notification/lib/exception_notifiable.rb Sat Aug 25 06:16:38 2007 @@ -0,0 +1,99 @@ +require 'ipaddr' + +# Copyright (c) 2005 Jamis Buck +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +module ExceptionNotifiable + def self.included(target) + target.extend(ClassMethods) + end + + module ClassMethods + def consider_local(*args) + local_addresses.concat(args.flatten.map { |a| IPAddr.new(a) }) + end + + def local_addresses + addresses = read_inheritable_attribute(:local_addresses) + unless addresses + addresses = [IPAddr.new("127.0.0.1")] + write_inheritable_attribute(:local_addresses, addresses) + end + addresses + end + + def exception_data(deliverer=self) + if deliverer == self + read_inheritable_attribute(:exception_data) + else + write_inheritable_attribute(:exception_data, deliverer) + end + end + + def exceptions_to_treat_as_404 + exceptions = [ActiveRecord::RecordNotFound, + ActionController::UnknownController, + ActionController::UnknownAction] + exceptions << ActionController::RoutingError if ActionController.const_defined?(:RoutingError) + exceptions + end + end + + private + + def local_request? + remote = IPAddr.new(request.remote_ip) + !self.class.local_addresses.detect { |addr| addr.include?(remote) }.nil? + end + + def render_404 + respond_to do |type| + type.html { render :file => "#{RAILS_ROOT}/public/404.html", :status => "404 Not Found" } + type.all { render :nothing => true, :status => "404 Not Found" } + end + end + + def render_500 + respond_to do |type| + type.html { render :file => "#{RAILS_ROOT}/public/500.html", :status => "500 Error" } + type.all { render :nothing => true, :status => "500 Error" } + end + end + + def rescue_action_in_public(exception) + case exception + when *self.class.exceptions_to_treat_as_404 + render_404 + + else + render_500 + + deliverer = self.class.exception_data + data = case deliverer + when nil then {} + when Symbol then send(deliverer) + when Proc then deliverer.call(self) + end + + ExceptionNotifier.deliver_exception_notification(exception, self, + request, data) + end + end +end Added: trunk/examples/al-admin/vendor/plugins/exception_notification/lib/exception_notifier.rb ============================================================================== --- (empty file) +++ trunk/examples/al-admin/vendor/plugins/exception_notification/lib/exception_notifier.rb Sat Aug 25 06:16:38 2007 @@ -0,0 +1,67 @@ +require 'pathname' + +# Copyright (c) 2005 Jamis Buck +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +class ExceptionNotifier < ActionMailer::Base + @@sender_address = %("Exception Notifier" ) + cattr_accessor :sender_address + + @@exception_recipients = [] + cattr_accessor :exception_recipients + + @@email_prefix = "[ERROR] " + cattr_accessor :email_prefix + + @@sections = %w(request session environment backtrace) + cattr_accessor :sections + + def self.reloadable?; false; end + + def exception_notification(exception, controller, request, data={}) + subject "#{email_prefix}#{controller.controller_name}##{controller.action_name} (#{exception.class}) #{exception.message.inspect}" + + recipients exception_recipients + from sender_address + + body data.merge({ :controller => controller, :request => request, + :exception => exception, :host => request.env["HTTP_HOST"], + :backtrace => sanitize_backtrace(exception.backtrace), + :rails_root => rails_root, :data => data, + :sections => sections }) + end + + def template_root + "#{File.dirname(__FILE__)}/../views" + end + + private + + def sanitize_backtrace(trace) + re = Regexp.new(/^#{Regexp.escape(rails_root)}/) + trace.map { |line| Pathname.new(line.gsub(re, "[RAILS_ROOT]")).cleanpath.to_s } + end + + def rails_root + return @rails_root if @rails_root + @rails_root = Pathname.new(RAILS_ROOT).cleanpath.to_s + end + +end Added: trunk/examples/al-admin/vendor/plugins/exception_notification/lib/exception_notifier_helper.rb ============================================================================== --- (empty file) +++ trunk/examples/al-admin/vendor/plugins/exception_notification/lib/exception_notifier_helper.rb Sat Aug 25 06:16:38 2007 @@ -0,0 +1,77 @@ +require 'pp' + +# Copyright (c) 2005 Jamis Buck +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +module ExceptionNotifierHelper + VIEW_PATH = "views/exception_notifier" + APP_PATH = "#{RAILS_ROOT}/app/#{VIEW_PATH}" + PARAM_FILTER_REPLACEMENT = "[FILTERED]" + + def render_section(section) + RAILS_DEFAULT_LOGGER.info("rendering section #{section.inspect}") + summary = render_overridable(section).strip + unless summary.blank? + title = render_overridable(:title, :locals => { :title => section }).strip + "#{title}\n\n#{summary.gsub(/^/, " ")}\n\n" + end + end + + def render_overridable(partial, options={}) + if File.exist?(path = "#{APP_PATH}/_#{partial}.rhtml") + render(options.merge(:file => path, :use_full_path => false)) + elsif File.exist?(path = "#{File.dirname(__FILE__)}/../#{VIEW_PATH}/_#{partial}.rhtml") + render(options.merge(:file => path, :use_full_path => false)) + else + "" + end + end + + def inspect_model_object(model, locals={}) + render_overridable(:inspect_model, + :locals => { :inspect_model => model, + :show_instance_variables => true, + :show_attributes => true }.merge(locals)) + end + + def inspect_value(value) + len = 512 + result = object_to_yaml(value).gsub(/\n/, "\n ").strip + result = result[0,len] + "... (#{result.length-len} bytes more)" if result.length > len+20 + result + end + + def object_to_yaml(object) + object.to_yaml.sub(/^---\s*/m, "") + end + + def exclude_raw_post_parameters? + @controller && @controller.respond_to?(:filter_parameters) + end + + def filter_sensitive_post_data_parameters(parameters) + exclude_raw_post_parameters? ? @controller.filter_parameters(parameters) : parameters + end + + def filter_sensitive_post_data_from_env(env_key, env_value) + return env_value unless exclude_raw_post_parameters? + (env_key =~ /RAW_POST_DATA/i) ? PARAM_FILTER_REPLACEMENT : env_value + end +end Added: trunk/examples/al-admin/vendor/plugins/exception_notification/test/exception_notifier_helper_test.rb ============================================================================== --- (empty file) +++ trunk/examples/al-admin/vendor/plugins/exception_notification/test/exception_notifier_helper_test.rb Sat Aug 25 06:16:38 2007 @@ -0,0 +1,61 @@ +require 'test_helper' +require 'exception_notifier_helper' + +class ExceptionNotifierHelperTest < Test::Unit::TestCase + + class ExceptionNotifierHelperIncludeTarget + include ExceptionNotifierHelper + end + + def setup + @helper = ExceptionNotifierHelperIncludeTarget.new + end + + # No controller + + def test_should_not_exclude_raw_post_parameters_if_no_controller + assert !@helper.exclude_raw_post_parameters? + end + + # Controller, no filtering + + class ControllerWithoutFilterParameters; end + + def test_should_not_filter_env_values_for_raw_post_data_keys_if_controller_can_not_filter_parameters + stub_controller(ControllerWithoutFilterParameters.new) + assert @helper.filter_sensitive_post_data_from_env("RAW_POST_DATA", "secret").include?("secret") + end + def test_should_not_exclude_raw_post_parameters_if_controller_can_not_filter_parameters + stub_controller(ControllerWithoutFilterParameters.new) + assert !@helper.exclude_raw_post_parameters? + end + def test_should_return_params_if_controller_can_not_filter_parameters + stub_controller(ControllerWithoutFilterParameters.new) + assert_equal :params, @helper.filter_sensitive_post_data_parameters(:params) + end + + # Controller with filtering + + class ControllerWithFilterParameters + def filter_parameters(params); :filtered end + end + + def test_should_filter_env_values_for_raw_post_data_keys_if_controller_can_filter_parameters + stub_controller(ControllerWithFilterParameters.new) + assert !@helper.filter_sensitive_post_data_from_env("RAW_POST_DATA", "secret").include?("secret") + assert @helper.filter_sensitive_post_data_from_env("SOME_OTHER_KEY", "secret").include?("secret") + end + def test_should_exclude_raw_post_parameters_if_controller_can_filter_parameters + stub_controller(ControllerWithFilterParameters.new) + assert @helper.exclude_raw_post_parameters? + end + def test_should_delegate_param_filtering_to_controller_if_controller_can_filter_parameters + stub_controller(ControllerWithFilterParameters.new) + assert_equal :filtered, @helper.filter_sensitive_post_data_parameters(:params) + end + + private + def stub_controller(controller) + @helper.instance_variable_set(:@controller, controller) + end +end \ No newline at end of file Added: trunk/examples/al-admin/vendor/plugins/exception_notification/test/test_helper.rb ============================================================================== --- (empty file) +++ trunk/examples/al-admin/vendor/plugins/exception_notification/test/test_helper.rb Sat Aug 25 06:16:38 2007 @@ -0,0 +1,7 @@ +require 'test/unit' +require 'rubygems' +require 'active_support' + +$:.unshift File.join(File.dirname(__FILE__), '../lib') + +RAILS_ROOT = '.' unless defined?(RAILS_ROOT) Added: trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_backtrace.rhtml ============================================================================== --- (empty file) +++ trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_backtrace.rhtml Sat Aug 25 06:16:38 2007 @@ -0,0 +1 @@ +<%= @backtrace.join "\n" %> Added: trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_environment.rhtml ============================================================================== --- (empty file) +++ trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_environment.rhtml Sat Aug 25 06:16:38 2007 @@ -0,0 +1,7 @@ +<% max = @request.env.keys.max { |a,b| a.length <=> b.length } -%> +<% @request.env.keys.sort.each do |key| -%> +* <%= "%*-s: %s" % [max.length, key, filter_sensitive_post_data_from_env(key, @request.env[key].to_s.strip)] %> +<% end -%> + +* Process: <%= $$ %> +* Server : <%= `hostname -s`.chomp %> Added: trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_inspect_model.rhtml ============================================================================== --- (empty file) +++ trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_inspect_model.rhtml Sat Aug 25 06:16:38 2007 @@ -0,0 +1,16 @@ +<% if show_attributes -%> +[attributes] +<% attrs = inspect_model.attributes -%> +<% max = attrs.keys.max { |a,b| a.length <=> b.length } -%> +<% attrs.keys.sort.each do |attr| -%> +* <%= "%*-s: %s" % [max.length, attr, object_to_yaml(attrs[attr]).gsub(/\n/, "\n ").strip] %> +<% end -%> +<% end -%> + +<% if show_instance_variables -%> +[instance variables] +<% inspect_model.instance_variables.sort.each do |variable| -%> +<%- next if variable == "@attributes" -%> +* <%= variable %>: <%= inspect_value(inspect_model.instance_variable_get(variable)) %> +<% end -%> +<% end -%> Added: trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_request.rhtml ============================================================================== --- (empty file) +++ trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_request.rhtml Sat Aug 25 06:16:38 2007 @@ -0,0 +1,3 @@ +* URL: <%= @request.protocol %><%= @host %><%= @request.request_uri %> +* Parameters: <%= filter_sensitive_post_data_parameters(@request.parameters).inspect %> +* Rails root: <%= @rails_root %> Added: trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_session.rhtml ============================================================================== --- (empty file) +++ trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_session.rhtml Sat Aug 25 06:16:38 2007 @@ -0,0 +1,2 @@ +* session id: <%= @request.session.instance_variable_get(:@session_id).inspect %> +* data: <%= PP.pp(@request.session.instance_variable_get(:@data),"").gsub(/\n/, "\n ").strip %> Added: trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_title.rhtml ============================================================================== --- (empty file) +++ trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_title.rhtml Sat Aug 25 06:16:38 2007 @@ -0,0 +1,3 @@ +------------------------------- +<%= title.to_s.humanize %>: +------------------------------- Added: trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/exception_notification.rhtml ============================================================================== --- (empty file) +++ trunk/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/exception_notification.rhtml Sat Aug 25 06:16:38 2007 @@ -0,0 +1,6 @@ +A <%= @exception.class %> occurred in <%= @controller.controller_name %>#<%= @controller.action_name %>: + + <%= @exception.message %> + <%= @backtrace.first %> + +<%= @sections.map { |section| render_section(section) }.join %> From codesite-noreply at google.com Sat Aug 25 09:43:08 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 25 Aug 2007 06:43:08 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r301 - trunk/examples/al-admin/app/controllers Message-ID: Author: koutou Date: Sat Aug 25 06:42:47 2007 New Revision: 301 Modified: trunk/examples/al-admin/app/controllers/application.rb Log: * used Exception Notifier. Modified: trunk/examples/al-admin/app/controllers/application.rb ============================================================================== --- trunk/examples/al-admin/app/controllers/application.rb (original) +++ trunk/examples/al-admin/app/controllers/application.rb Sat Aug 25 06:42:47 2007 @@ -5,6 +5,8 @@ # Pick a unique cookie name to distinguish our session data from others' session :session_key => '_al-admin_session_id' + include ExceptionNotifiable + include AuthenticatedSystem before_filter :check_connectivity before_filter :login_from_cookie From codesite-noreply at google.com Sat Aug 25 10:22:10 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 25 Aug 2007 07:22:10 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r302 - trunk/examples/al-admin/config Message-ID: Author: koutou Date: Sat Aug 25 07:21:36 2007 New Revision: 302 Modified: trunk/examples/al-admin/config/environment.rb Log: * commented out sample configuration. Modified: trunk/examples/al-admin/config/environment.rb ============================================================================== --- trunk/examples/al-admin/config/environment.rb (original) +++ trunk/examples/al-admin/config/environment.rb Sat Aug 25 07:21:36 2007 @@ -63,5 +63,5 @@ require 'gettext/rails' -ExceptionNotifier.sender_address = "null at cozmixng.org" -ExceptionNotifier.exception_recipients = %w(kou at cozmixng.org) +# ExceptionNotifier.sender_address = "null at cozmixng.org" +# ExceptionNotifier.exception_recipients = %w(kou at cozmixng.org) From codesite-noreply at google.com Sat Aug 25 22:21:06 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 25 Aug 2007 19:21:06 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r303 - trunk/examples/al-admin/app/controllers Message-ID: <163600d06e043890e4768446313493@google.com> Author: koutou Date: Sat Aug 25 19:20:19 2007 New Revision: 303 Modified: trunk/examples/al-admin/app/controllers/application.rb Log: * moved init_gettext position. Modified: trunk/examples/al-admin/app/controllers/application.rb ============================================================================== --- trunk/examples/al-admin/app/controllers/application.rb (original) +++ trunk/examples/al-admin/app/controllers/application.rb Sat Aug 25 19:20:19 2007 @@ -5,11 +5,11 @@ # Pick a unique cookie name to distinguish our session data from others' session :session_key => '_al-admin_session_id' + init_gettext "al-admin" + include ExceptionNotifiable include AuthenticatedSystem before_filter :check_connectivity before_filter :login_from_cookie - - init_gettext "al-admin" end From codesite-noreply at google.com Sat Aug 25 22:25:06 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 25 Aug 2007 19:25:06 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r304 - in trunk/examples/al-admin: config lib Message-ID: Author: koutou Date: Sat Aug 25 19:22:15 2007 New Revision: 304 Added: trunk/examples/al-admin/lib/accept_http_rails_relative_url_root.rb Modified: trunk/examples/al-admin/config/environment.rb Log: * supported HTTP_RAILS_RELATIVE_URL_ROOT not only RAILS_RELATIVE_URL_ROOT because Apache's RequestHeader directive always prepend 'HTTP_' prefix. Modified: trunk/examples/al-admin/config/environment.rb ============================================================================== --- trunk/examples/al-admin/config/environment.rb (original) +++ trunk/examples/al-admin/config/environment.rb Sat Aug 25 19:22:15 2007 @@ -62,6 +62,7 @@ # Include your application configuration below require 'gettext/rails' +require 'accept_http_rails_relative_url_root' # ExceptionNotifier.sender_address = "null at cozmixng.org" # ExceptionNotifier.exception_recipients = %w(kou at cozmixng.org) Added: trunk/examples/al-admin/lib/accept_http_rails_relative_url_root.rb ============================================================================== --- (empty file) +++ trunk/examples/al-admin/lib/accept_http_rails_relative_url_root.rb Sat Aug 25 19:22:15 2007 @@ -0,0 +1,9 @@ +module ActionController + class AbstractRequest + def relative_url_root_with_accept_http_rails_relative_url_root + @env["RAILS_RELATIVE_URL_ROOT"] ||= @env["HTTP_RAILS_RELATIVE_URL_ROOT"] + relative_url_root_without_accept_http_rails_relative_url_root + end + alias_method_chain :relative_url_root, :accept_http_rails_relative_url_root + end +end From codesite-noreply at google.com Sat Aug 25 23:39:17 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 25 Aug 2007 20:39:17 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r305 - in trunk: examples/al-admin/app/controllers lib/active_ldap Message-ID: <163600d1b5043891fc17c5c8318d86@google.com> Author: koutou Date: Sat Aug 25 20:38:54 2007 New Revision: 305 Modified: trunk/examples/al-admin/app/controllers/directory_controller.rb trunk/lib/active_ldap/populate.rb Log: * Populate.ensure_ou accepts "ou=" prefix. Modified: trunk/examples/al-admin/app/controllers/directory_controller.rb ============================================================================== --- trunk/examples/al-admin/app/controllers/directory_controller.rb (original) +++ trunk/examples/al-admin/app/controllers/directory_controller.rb Sat Aug 25 20:38:54 2007 @@ -8,7 +8,7 @@ def populate ActiveLdap::Populate.ensure_base - ActiveLdap::Populate.ensure_ou("Users") + ActiveLdap::Populate.ensure_ou(LdapUser.prefix) end private Modified: trunk/lib/active_ldap/populate.rb ============================================================================== --- trunk/lib/active_ldap/populate.rb (original) +++ trunk/lib/active_ldap/populate.rb Sat Aug 25 20:38:54 2007 @@ -31,6 +31,7 @@ def ensure_ou(name, base_class=nil) base_class ||= Base + name = name.gsub(/\Aou\s*=\s*/, '') unless base_class.search(:prefix => "ou=#{name}", :scope => :base).empty? return end From codesite-noreply at google.com Sun Aug 26 02:20:39 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 25 Aug 2007 23:20:39 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r306 - in trunk/examples/al-admin: app/views/layouts public/stylesheets Message-ID: Author: koutou Date: Sat Aug 25 23:19:36 2007 New Revision: 306 Modified: trunk/examples/al-admin/app/views/layouts/application.rhtml trunk/examples/al-admin/public/stylesheets/screen.css Log: * added system information. Modified: trunk/examples/al-admin/app/views/layouts/application.rhtml ============================================================================== --- trunk/examples/al-admin/app/views/layouts/application.rhtml (original) +++ trunk/examples/al-admin/app/views/layouts/application.rhtml Sat Aug 25 23:19:36 2007 @@ -21,7 +21,12 @@ <% end -%> <%= yield %> -
- <%= link_to(_("Top"), top_path) %> + + +
+

al-admin: Powered by Ruby/ActiveLdap <%= ActiveLdap::VERSION %>

+
Modified: trunk/examples/al-admin/public/stylesheets/screen.css ============================================================================== --- trunk/examples/al-admin/public/stylesheets/screen.css (original) +++ trunk/examples/al-admin/public/stylesheets/screen.css Sat Aug 25 23:19:36 2007 @@ -29,3 +29,14 @@ margin: 1em 5em; padding: 0px 1em; } + +div.footer-link +{ + border-top: 1px solid gray; +} + +div.system-info +{ + border-top: 1px solid gray; + text-align: right; +} From codesite-noreply at google.com Sun Aug 26 02:24:39 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 25 Aug 2007 23:24:39 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r307 - trunk/examples/al-admin/db Message-ID: <163600cf970438944b7a62713232c3@google.com> Author: koutou Date: Sat Aug 25 23:20:15 2007 New Revision: 307 Modified: trunk/examples/al-admin/db/ (props changed) Log: * added svn:ignore. From codesite-noreply at google.com Sun Aug 26 02:28:39 2007 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Sat, 25 Aug 2007 23:28:39 -0700 Subject: [Ruby-activeldap-commit] [ruby-activeldap commit] r308 - in trunk/examples/al-admin: app/views/layouts db public/stylesheets Message-ID: <163600cf9704389459cbe358323320@google.com> Author: koutou Date: Sat Aug 25 23:27:21 2007 New Revision: 308 Modified: trunk/examples/al-admin/app/views/layouts/application.rhtml trunk/examples/al-admin/db/ (props changed) trunk/examples/al-admin/public/stylesheets/screen.css Log: * added link to project page. Modified: trunk/examples/al-admin/app/views/layouts/application.rhtml ============================================================================== --- trunk/examples/al-admin/app/views/layouts/application.rhtml (original) +++ trunk/examples/al-admin/app/views/layouts/application.rhtml Sat Aug 25 23:27:21 2007 @@ -19,14 +19,23 @@ <% if flash[:notice] -%>

<%=h flash[:notice] %>

<% end -%> - <%= yield %> - -