[asl-commit] ActiveSambaLdap r11:
null at cozmixng.org
null at cozmixng.org
Fri Aug 3 22:31:34 EDT 2007
retro 2007-08-04 11:31:29 +0900 (Sat, 04 Aug 2007)
New Revision: 11
Copied files:
trunk/lib/active_samba_ldap/configuration.rb
(from rev 10, trunk/lib/active_samba_ldap/default_config.rb)
trunk/test/config.yml.sample
(from rev 10, trunk/test/activesambaldap.conf.sample)
Removed files:
trunk/lib/active_samba_ldap/default_config.rb
trunk/test/activesambaldap.conf.sample
Modified files:
trunk/bin/asl-groupadd
trunk/bin/asl-groupdel
trunk/bin/asl-groupmod
trunk/bin/asl-groupshow
trunk/bin/asl-passwd
trunk/bin/asl-populate
trunk/bin/asl-useradd
trunk/bin/asl-userdel
trunk/bin/asl-usermod
trunk/bin/asl-usershow
trunk/lib/active_samba_ldap.rb
trunk/lib/active_samba_ldap/account.rb
trunk/lib/active_samba_ldap/base.rb
trunk/lib/active_samba_ldap/command.rb
trunk/lib/active_samba_ldap/computer.rb
trunk/lib/active_samba_ldap/group.rb
trunk/lib/active_samba_ldap/idmap.rb
trunk/lib/active_samba_ldap/populate.rb
trunk/lib/active_samba_ldap/user.rb
trunk/test/asl-test-utils.rb
trunk/test/command.rb
trunk/test/test_asl_groupadd.rb
trunk/test/test_asl_passwd.rb
trunk/test/test_asl_populate.rb
trunk/test/test_asl_usershow.rb
Log:
Modified: trunk/lib/active_samba_ldap/user.rb (+1 -2)
===================================================================
--- trunk/lib/active_samba_ldap/user.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/lib/active_samba_ldap/user.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -6,9 +6,8 @@
class << self
def ldap_mapping(options={})
- Config.required_variables :users_prefix, :sid
default_options = {
- :prefix => Config.users_prefix,
+ :prefix => configuration[:users_prefix],
:classes => ["top", "inetOrgPerson", "posixAccount",
"sambaSamAccount"],
}
Modified: trunk/bin/asl-populate (+4 -3)
===================================================================
--- trunk/bin/asl-populate 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/bin/asl-populate 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -8,8 +8,9 @@
require 'active_samba_ldap/command'
argv, opts, options = ActiveSambaLdap::Command.parse_options do |opts, options|
- options.start_uid = Integer(ActiveSambaLdap::Config.start_uid)
- options.start_gid = Integer(ActiveSambaLdap::Config.start_gid)
+ default = ActiveSambaLdap::Configuration::ClassMethods::Private.new({})
+ options.start_uid = Integer(default.start_uid)
+ options.start_gid = Integer(default.start_gid)
options.administrator = ActiveSambaLdap::User::DOMAIN_ADMIN_NAME
admin_rid = ActiveSambaLdap::User::DOMAIN_ADMIN_RID
admins_rid = ActiveSambaLdap::Group::DOMAIN_ADMINS_RID
@@ -55,7 +56,7 @@
exit 1
end
-ActiveSambaLdap::Base.establish_connection({}, false)
+ActiveSambaLdap::Base.establish_connection("update")
entries, opts = ActiveSambaLdap::Base.populate(options.marshal_dump)
Modified: trunk/test/test_asl_groupadd.rb (+1 -1)
===================================================================
--- trunk/test/test_asl_groupadd.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/test/test_asl_groupadd.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -41,7 +41,7 @@
ensure_delete_group("test-group") do |cn|
pool_class = Class.new(ActiveSambaLdap::UnixIdPool)
pool_class.ldap_mapping
- pool = pool_class.new(ActiveSambaLdap::Config.samba_domain)
+ pool = pool_class.new(pool_class.configuration[:samba_domain])
next_gid = @group_class.find_available_gid_number(pool)
assert_asl_groupadd_successfully(cn, "#{next_gid}\n",
"--print-gid-number")
Modified: trunk/test/asl-test-utils.rb (+27 -12)
===================================================================
--- trunk/test/asl-test-utils.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/test/asl-test-utils.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -12,7 +12,7 @@
module AslTestUtils
def self.included(base)
base.class_eval do
- include Config
+ include Configuration
include Connection
include Populate
include TemporaryEntry
@@ -20,31 +20,45 @@
end
end
- module Config
+ module Configuration
def setup
super
@test_dir = File.expand_path(File.dirname(__FILE__))
@top_dir = File.expand_path(File.join(@test_dir, ".."))
@parent_dir = File.expand_path(File.join(@top_dir, ".."))
- @config_file = File.join(@test_dir, "activesambaldap.conf")
- ActiveSambaLdap::DefaultConfig::FILES << @config_file
+ @config_file = File.join(@test_dir, "config.yml")
+ ActiveSambaLdap::Base.configurations = read_config
end
def teardown
super
- ActiveSambaLdap::DefaultConfig::FILES.reject! {|x| x == @config_file}
end
+
+ def reference_configuration
+ ActiveSambaLdap::Base.configurations["reference"]
+ end
+
+ def update_configuration
+ ActiveSambaLdap::Base.configurations["update"]
+ end
+
+ def read_config
+ unless File.exist?(@config_file)
+ raise "config file for testing doesn't exist: #{@config_file}"
+ end
+ ActiveSambaLdap::Configuration.read(@config_file)
+ end
end
module Connection
def setup
super
- ActiveSambaLdap::Base.establish_connection({}, false)
+ ActiveSambaLdap::Base.establish_connection(update_configuration)
end
def teardown
super
- ActiveLdap::Base.clear_active_connections!
+ ActiveSambaLdap::Base.clear_active_connections!
end
end
@@ -62,7 +76,7 @@
def teardown
super
- ActiveSambaLdap::Base.establish_connection({}, false)
+ ActiveSambaLdap::Base.establish_connection(update_configuration)
ActiveSambaLdap::Base.delete_all(nil, :scope => :sub)
ActiveSambaLdap::Base.load(@dumped_data)
end
@@ -100,7 +114,7 @@
ensure_delete_user(name, home_directory) do
password = config[:password] || "password"
uid_number = config[:uid_number] || "100000#{@user_index}"
- default_user_gid = ActiveSambaLdap::Config.default_user_gid
+ default_user_gid = @user_class.configuration[:default_user_gid]
gid_number = config[:gid_number] || default_user_gid
_wrap_assertion do
assert(!@user_class.exists?(name))
@@ -135,7 +149,8 @@
ensure_delete_computer(name, home_directory) do |name, home_directory|
password = config[:password]
uid_number = config[:uid_number] || "100000#{@computer_index}"
- default_computer_gid = ActiveSambaLdap::Config.default_computer_gid
+ default_computer_gid =
+ @computer_class.configuration[:default_computer_gid]
gid_number = config[:gid_number] || default_computer_gid
_wrap_assertion do
assert(!@computer_class.exists?(name))
@@ -199,8 +214,8 @@
def pool
pool_class = Class.new(ActiveSambaLdap::UnixIdPool)
pool_class.ldap_mapping
- ActiveSambaLdap::Config.required_variables :samba_domain
- pool_class.new(ActiveSambaLdap::Config.samba_domain)
+ pool_class.required_configuration_variables :samba_domain
+ pool_class.new(pool_class.configuration[:samba_domain])
end
def next_uid_number
Modified: trunk/lib/active_samba_ldap.rb (+2 -10)
===================================================================
--- trunk/lib/active_samba_ldap.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/lib/active_samba_ldap.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -11,20 +11,12 @@
require_gem_if_need.call("active_ldap", "activeldap", ">= 0.8.0")
require 'active_samba_ldap/version'
-begin
- require "active_samba_ldap/config"
-rescue LoadError
- require "active_samba_ldap/default_config"
- module ActiveSambaLdap
- class Config < DefaultConfig
- end
- end
-end
-
require 'active_samba_ldap/base'
+require "active_samba_ldap/configuration"
require 'active_samba_ldap/populate'
ActiveSambaLdap::Base.class_eval do
+ include ActiveSambaLdap::Configuration
include ActiveSambaLdap::Populate
end
Modified: trunk/bin/asl-groupdel (+1 -1)
===================================================================
--- trunk/bin/asl-groupdel 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/bin/asl-groupdel 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -25,7 +25,7 @@
exit 1
end
-ActiveSambaLdap::Base.establish_connection({}, false)
+ActiveSambaLdap::Base.establish_connection("update")
class Group < ActiveSambaLdap::Group
ldap_mapping
Modified: trunk/bin/asl-groupadd (+1 -1)
===================================================================
--- trunk/bin/asl-groupadd 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/bin/asl-groupadd 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -31,7 +31,7 @@
exit 1
end
-ActiveSambaLdap::Base.establish_connection({}, true)
+ActiveSambaLdap::Base.establish_connection("update")
class Group < ActiveSambaLdap::Group
ldap_mapping
Modified: trunk/test/command.rb (+3 -4)
===================================================================
--- trunk/test/command.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/test/command.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -42,11 +42,10 @@
pid = fork do
$VERBOSE = verbose
detach_io
- out = STDERR.dup
- STDIN.reopen(in_r)
+ $stdin.reopen(in_r)
in_r.close
- STDOUT.reopen(out_w)
- STDERR.reopen(out_w)
+ $stdout.reopen(out_w)
+ $stderr.reopen(out_w)
out_w.close
exec(cmd, *args.collect {|arg| arg.to_s})
exit!(-1)
Deleted: trunk/test/activesambaldap.conf.sample (+0 -13)
===================================================================
--- trunk/test/activesambaldap.conf.sample 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/test/activesambaldap.conf.sample 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -1,13 +0,0 @@
-# -*- ruby -*-
-
-suffix = "dc=test,dc=local,dc=net"
-
-update_host = "127.0.0.1"
-#update_use_tls = true
-update_bind_format = "cn=%s,dc=local,dc=net"
-update_user = "admin"
-update_password = "secret"
-
-sid = "S-1-5-21-915876905-2926214379-2876160357"
-user_home = "/home/%U"
-user_login_shell = "/bin/sh"
Modified: trunk/bin/asl-userdel (+1 -1)
===================================================================
--- trunk/bin/asl-userdel 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/bin/asl-userdel 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -33,7 +33,7 @@
exit 1
end
-ActiveSambaLdap::Base.establish_connection({}, false)
+ActiveSambaLdap::Base.establish_connection("update")
class User < ActiveSambaLdap::User
ldap_mapping
Modified: trunk/bin/asl-groupmod (+1 -1)
===================================================================
--- trunk/bin/asl-groupmod 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/bin/asl-groupmod 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -39,7 +39,7 @@
exit 1
end
-ActiveSambaLdap::Base.establish_connection({}, false)
+ActiveSambaLdap::Base.establish_connection("update")
class Group < ActiveSambaLdap::Group
ldap_mapping
Deleted: trunk/lib/active_samba_ldap/default_config.rb (+0 -255)
===================================================================
--- trunk/lib/active_samba_ldap/default_config.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/lib/active_samba_ldap/default_config.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -1,255 +0,0 @@
-require 'socket'
-
-module ActiveSambaLdap
- class DefaultConfig
- FILES = [
- "/etc/activesambaldap/config.rb",
- "/etc/activesambaldap/bind.rb",
- ]
- begin
- FILES << File.expand_path("~/.activesambaldap.conf")
- FILES << File.expand_path("~/.activesambaldap.bind")
- rescue ArgumentError
- end
-
- cattr_writer :sid, :smb_conf, :samba_domain, :samba_netbios_name
-
- cattr_writer :update_host, :update_port, :update_bind_format
- cattr_writer :update_allow_anonymous
- cattr_accessor :update_user, :update_password, :update_use_tls
-
- cattr_writer :reference_host, :reference_port
- cattr_writer :reference_bind_format, :reference_user, :reference_password
- cattr_writer :reference_use_tls
- cattr_writer :reference_allow_anonymous
-
- cattr_accessor :suffix
- cattr_writer :users_prefix, :groups_prefix
- cattr_writer :computers_prefix, :idmap_prefix
-
- cattr_accessor :scope, :hash_encrypt
-
- cattr_writer :start_uid, :start_gid
-
- cattr_accessor :user_login_shell, :user_home, :user_home_directory_mode
- cattr_accessor :user_gecos
- cattr_writer :default_user_gid, :default_computer_gid
- cattr_writer :skeleton_directory
- cattr_accessor :default_max_password_age
-
- cattr_writer :user_samba_home, :user_profile, :user_home_drive, :user_script
- cattr_accessor :mail_domain
-
- class << self
- def read(path)
- if File.exist?(path)
- anonymous_binding = Module.new.__send__(:binding)
- eval(File.read(path), anonymous_binding, path, 0)
- eval("local_variables", anonymous_binding).each do |name|
- setter = "#{name}="
- if self.respond_to?(setter)
- self.__send__(setter, eval(name, anonymous_binding))
- end
- end
- end
- end
-
- def [](key)
- required_variables key
- __send__(key)
- end
-
- @@initialized = false
- def initialized?
- @@initialized
- end
-
- def init
- reinit unless initialized?
- end
-
- def reinit
- FILES.each do |file|
- read(file)
- end
- @@initialized = true
- end
-
- def required_variables(*names)
- names.each do |name|
- raise RequiredVariableIsNotSet.new(name) if __send__(name).nil?
- end
- end
-
- def sid
- return @@sid if @@sid
- result = `net getlocalsid`
- if $?.success?
- result.chomp.gsub(/\G[^:]+:\s*/, '')
- else
- nil
- end
- end
-
- def smb_conf
- return @@smb_conf if @@smb_conf
- %w(/etc/samba/smb.conf /usr/local/etc/samba/smb.conf).each do |guess|
- return guess if File.exist?(guess)
- end
- nil
- end
-
- def samba_domain
- return @@samba_domain if @@samba_domain
- if smb_conf
- File.open(smb_conf) do |f|
- f.read.grep(/^\s*[^#;]/).each do |line|
- if /^\s*workgroup\s*=\s*(\S+)\s*$/i =~ line
- return $1.upcase
- end
- end
- end
- else
- nil
- end
- end
-
- def samba_netbios_name
- return @@samba_netbios_name if @@samba_netbios_name
- netbios_name = nil
- if smb_conf
- File.open(smb_conf) do |f|
- f.read.grep(/^\s*[^#;]/).each do |line|
- if /^\s*netbios\s*name\s*=\s*(.+)\s*$/i =~ line
- netbios_name = $1
- break
- end
- end
- end
- end
- netbios_name ||= Socket.gethostname
- netbios_name ? netbios_name.upcase : nil
- end
-
- def update_host
- @@update_host || "localhost"
- end
-
- def update_port
- @@update_port || 389
- end
-
- def update_bind_format
- return @@update_bind_format if @@update_bind_format
- _suffix = suffix
- if suffix
- "cn=%s,#{suffix}"
- else
- nil
- end
- end
-
- def update_allow_anonymous
- if @@update_allow_anonymous.nil?
- false
- else
- @@update_allow_anonymous
- end
- end
-
- def reference_host
- @@reference_host || update_host
- end
-
- def reference_port
- @@reference_port || update_port
- end
-
- def reference_bind_format
- @@reference_bind_format || update_bind_format
- end
-
- def reference_user
- @@reference_user || update_user
- end
-
- def reference_password
- @@reference_password || update_password
- end
-
- def reference_use_tls
- if @@reference_use_tls.nil?
- update_use_tls
- else
- @@reference_use_tls
- end
- end
-
- def reference_allow_anonymous
- if @@reference_allow_anonymous.nil?
- update_allow_anonymous
- else
- @@reference_allow_anonymous
- end
- end
-
- def users_prefix
- @@users_prefix || "ou=Users"
- end
-
- def groups_prefix
- @@groups_prefix || "ou=Groups"
- end
-
- def computers_prefix
- @@computers_prefix || "ou=Computers"
- end
-
- def idmap_prefix
- @@idmap_prefix || "ou=Idmap"
- end
-
- def start_uid
- @@start_uid || "10000"
- end
-
- def start_gid
- @@start_gid || "10000"
- end
-
- def default_user_gid
- return @@default_user_gid if @@default_user_gid
- rid = ActiveSambaLdap::Group::DOMAIN_USERS_RID
- ActiveSambaLdap::Group.rid2gid(rid)
- end
-
- def default_computer_gid
- return @@default_computer_gid if @@default_computer_gid
- rid = ActiveSambaLdap::Group::DOMAIN_COMPUTERS_RID
- ActiveSambaLdap::Group.rid2gid(rid)
- end
-
- def skeleton_directory
- @@skeleton_directory || "/etc/skel"
- end
-
- def user_samba_home
- return @@user_samba_home if @@user_samba_home
- samba_netbios_name ? "\\\\#{samba_netbios_name}\\%U" : nil
- end
-
- def user_profile
- return @@user_profile if @@user_profile
- samba_netbios_name ? "\\\\#{samba_netbios_name}\\profiles\\%U" : nil
- end
-
- def user_home_drive
- @@user_home_drive || "H:"
- end
-
- def user_script
- @@user_script || "logon.bat"
- end
- end
- end
-end
Modified: trunk/lib/active_samba_ldap/base.rb (+24 -37)
===================================================================
--- trunk/lib/active_samba_ldap/base.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/lib/active_samba_ldap/base.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -10,6 +10,14 @@
end
end
+ class RequiredVariablesAreNotSet < RequiredVariableIsNotSet
+ attr_reader :names
+ def initialize(names)
+ @names = names
+ super("required variables '#{names.join(', ')}' are not set")
+ end
+ end
+
class UidNumberAlreadyExists < Error
attr_reader :number
def initialize(number)
@@ -72,46 +80,25 @@
end
end
+ class InvalidConfigurationFormatError < Error
+ attr_reader :file, :location, :detail
+ def initialize(file, location, detail)
+ @file = file
+ @location = location
+ @detail = detail
+ super("found invalid configuration format at #{@file}:#{@location}" +
+ ": #{@detail}")
+ end
+ end
+
class Base < ActiveLdap::Base
class << self
- def establish_connection(config={}, reference_only=true)
- Config.init
- Config.required_variables :suffix
- default_config = {:base => Config.suffix}
- if reference_only
- Config.required_variables :reference_host, :reference_port
- default_config[:host] = Config.reference_host
- default_config[:port] = Config.reference_port
- default_config[:bind_format] = Config.reference_bind_format
- default_config[:user] = Config.reference_user
- default_config[:password] = Config.reference_password
- default_config[:method] = :tls if Config.reference_use_tls
- default_config[:allow_anonymous] = Config.reference_allow_anonymous
- else
- Config.required_variables :update_host, :update_port
- default_config[:host] = Config.update_host
- default_config[:port] = Config.update_port
- default_config[:bind_format] = Config.update_bind_format
- default_config[:user] = Config.update_user
- default_config[:password] = Config.update_password
- default_config[:method] = :tls if Config.update_use_tls
- default_config[:allow_anonymous] = Config.update_allow_anonymous
- end
- default_config.each do |key, value|
- default_config.delete(key) if value.nil?
- end
- super(default_config.merge(config))
- end
-
def restart_nscd
- if system("/etc/init.d/nscd status >/dev/null 2>&1")
- system("/etc/init.d/nscd stop >/dev/null 2>&1")
- begin
- yield if block_given?
- ensure
- system("/etc/init.d/nscd start >/dev/null 2>&1")
- end
- end
+ nscd_working = system("/etc/init.d/nscd status >/dev/null 2>&1")
+ system("/etc/init.d/nscd stop >/dev/null 2>&1") if nscd_working
+ yield if block_given?
+ ensure
+ system("/etc/init.d/nscd start >/dev/null 2>&1") if nscd_working
end
private
Modified: trunk/lib/active_samba_ldap/account.rb (+5 -6)
===================================================================
--- trunk/lib/active_samba_ldap/account.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/lib/active_samba_ldap/account.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -85,8 +85,7 @@
end
def start_uid
- ActiveSambaLdap::Config.required_variables :start_uid
- Integer(ActiveSambaLdap::Config.start_uid)
+ Integer(configuration[:start_uid])
end
def start_rid
@@ -184,7 +183,7 @@
end
def change_sid(rid, allow_non_unique=false)
- sid = "#{ActiveSambaLdap::Config.sid}-#{rid}"
+ sid = "#{self.class.configuration[:sid]}-#{rid}"
# check_unique_sid_number(sid) unless allow_non_unique
self.samba_sid = sid
end
@@ -273,16 +272,16 @@
end
def substituted_value(key)
+ config = self.class.configuration
if block_given?
- value = ActiveSambaLdap::Config.__send__(key)
+ value = config[key.to_sym]
if value
substitute_template(value)
else
yield
end
else
- ActiveSambaLdap::Config.required_variables key
- substitute_template(ActiveSambaLdap::Config.__send__(key))
+ substitute_template(config[key.to_sym])
end
end
end
Modified: trunk/bin/asl-useradd (+8 -12)
===================================================================
--- trunk/bin/asl-useradd 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/bin/asl-useradd 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -145,7 +145,7 @@
def get_value(options, key, default_key=nil)
value = options.__send__(key)
- value ||= ActiveSambaLdap::Config[default_key || key]
+ value ||= ActiveSambaLdap::Base.configuration[(default_key || key).to_sym]
value
end
@@ -153,7 +153,7 @@
value.gsub(/%U/, member.uid)
end
-ActiveSambaLdap::Base.establish_connection({}, true)
+ActiveSambaLdap::Base.establish_connection("update")
class Computer < ActiveSambaLdap::Computer
@@ -207,7 +207,7 @@
ldap_mapping
end
def make_pool
- UnixIdPool.find(ActiveSambaLdap::Config[:samba_domain])
+ UnixIdPool.find(UnixIdPool.configuration[:samba_domain])
end
pool = nil
@@ -248,11 +248,9 @@
end
else
if options.computer_account
- ActiveSambaLdap::Config.required_variables :default_computer_gid
- gid_number = ActiveSambaLdap::Config.default_computer_gid
+ gid_number = member_class.configuration[:default_computer_gid]
else
- ActiveSambaLdap::Config.required_variables :default_user_gid
- gid_number = ActiveSambaLdap::Config.default_user_gid
+ gid_number = member_class.configuration[:default_user_gid]
end
end
end
@@ -271,8 +269,7 @@
if options.computer_account
home_directory = "/nonexistent"
else
- ActiveSambaLdap::Config.required_variables :user_home
- home_directory = ActiveSambaLdap::Config.user_home
+ home_directory = member_class.configuration[:user_home]
end
end
home_directory = substitute_member(home_directory, member)
@@ -284,8 +281,7 @@
if options.computer_account
login_shell ||= "/bin/false"
else
- ActiveSambaLdap::Config.required_variables :user_login_shell
- login_shell ||= ActiveSambaLdap::Config.user_login_shell
+ login_shell ||= member_class.configuration[:user_login_shell]
end
member.login_shell = login_shell
@@ -307,7 +303,7 @@
if options.computer_account
gecos ||= "Computer"
else
- gecos ||= ActiveSambaLdap::Config.user_gecos
+ gecos ||= member_class.configuration[:user_gecos]
end
if gecos
Modified: trunk/lib/active_samba_ldap/populate.rb (+70 -62)
===================================================================
--- trunk/lib/active_samba_ldap/populate.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/lib/active_samba_ldap/populate.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -6,32 +6,39 @@
module ClassMethods
def populate(options={})
- options = options.dup
- Private.init_classes(options)
- Private.init_options(options)
+ Private.new(self, options).populate
+ end
- entries = []
- entries.concat(Private.ensure_base(options))
- entries.concat(Private.ensure_group_base(options))
- entries.concat(Private.ensure_user_base(options))
- entries.concat(Private.ensure_computer_base(options))
- entries.concat(Private.ensure_idmap_base(options))
- entries.concat(Private.make_groups(options))
- entries.concat(Private.make_users(options))
- entries.concat(Private.make_pool(options))
+ class Private
+ def initialize(base, options)
+ @base = base
+ @options = options.dup
+ end
- [entries, options]
- end
+ def populate
+ init_classes
+ init_options
- module Private
- module_function
- def init_classes(options)
- options[:user_class] = user_class = Class.new(User)
- options[:group_class] = group_class = Class.new(Group)
- options[:computer_class] = computer_class = Class.new(Computer)
- options[:idmap_class] = idmap_class = Class.new(Idmap)
- options[:unix_id_pool_class] = id_pool_class = Class.new(UnixIdPool)
+ entries = []
+ entries.concat(ensure_base)
+ entries.concat(ensure_group_base)
+ entries.concat(ensure_user_base)
+ entries.concat(ensure_computer_base)
+ entries.concat(ensure_idmap_base)
+ entries.concat(make_groups)
+ entries.concat(make_users)
+ entries.concat(make_pool)
+ [entries, @options]
+ end
+
+ def init_classes
+ @options[:user_class] = user_class = Class.new(User)
+ @options[:group_class] = group_class = Class.new(Group)
+ @options[:computer_class] = computer_class = Class.new(Computer)
+ @options[:idmap_class] = idmap_class = Class.new(Idmap)
+ @options[:unix_id_pool_class] = id_pool_class = Class.new(UnixIdPool)
+
user_class.ldap_mapping
group_class.ldap_mapping
computer_class.ldap_mapping
@@ -49,18 +56,19 @@
group_class.set_associated_class(:primary_computers, computer_class)
end
- def init_options(options)
- options[:start_uid] ||= Integer(Config.start_uid)
- options[:start_gid] ||= Integer(Config.start_gid)
- options[:administrator] ||= User::DOMAIN_ADMIN_NAME
- options[:administrator_uid] ||= User.rid2uid(User::DOMAIN_ADMIN_RID)
- options[:administrator_gid] ||=
+ def init_options
+ config = @base.configuration
+ @options[:start_uid] ||= Integer(config[:start_uid])
+ @options[:start_gid] ||= Integer(config[:start_gid])
+ @options[:administrator] ||= User::DOMAIN_ADMIN_NAME
+ @options[:administrator_uid] ||= User.rid2uid(User::DOMAIN_ADMIN_RID)
+ @options[:administrator_gid] ||=
Group.rid2gid(Group::DOMAIN_ADMINS_RID)
- options[:guest] ||= User::DOMAIN_GUEST_NAME
- options[:guest_uid] ||= User.rid2uid(User::DOMAIN_GUEST_RID)
- options[:guest_gid] ||= Group.rid2gid(Group::DOMAIN_GUESTS_RID)
- options[:default_user_gid] ||= Config.default_user_gid
- options[:default_computer_gid] ||= Config.default_computer_gid
+ @options[:guest] ||= User::DOMAIN_GUEST_NAME
+ @options[:guest_uid] ||= User.rid2uid(User::DOMAIN_GUEST_RID)
+ @options[:guest_gid] ||= Group.rid2gid(Group::DOMAIN_GUESTS_RID)
+ @options[:default_user_gid] ||= config[:default_user_gid]
+ @options[:default_computer_gid] ||= config[:default_computer_gid]
end
def ensure_container_base(dn, target_name, klass, ignore_base=false)
@@ -87,9 +95,8 @@
entries
end
- def ensure_base(options)
- Config.required_variables :suffix
- ensure_container_base(Config.suffix, "dc", Dc, true) do |dc|
+ def ensure_base
+ ensure_container_base(@base.base, "dc", Dc, true) do |dc|
dc.o = dc.dc
end
end
@@ -98,20 +105,20 @@
ensure_container_base(dn, "ou", Ou)
end
- def ensure_user_base(options)
- ensure_ou_base(options[:user_class].prefix)
+ def ensure_user_base
+ ensure_ou_base(@options[:user_class].prefix)
end
- def ensure_group_base(options)
- ensure_ou_base(options[:group_class].prefix)
+ def ensure_group_base
+ ensure_ou_base(@options[:group_class].prefix)
end
- def ensure_computer_base(options)
- ensure_ou_base(options[:computer_class].prefix)
+ def ensure_computer_base
+ ensure_ou_base(@options[:computer_class].prefix)
end
- def ensure_idmap_base(options)
- ensure_ou_base(options[:idmap_class].prefix)
+ def ensure_idmap_base
+ ensure_ou_base(@options[:idmap_class].prefix)
end
def make_user(user_class, name, uid, group)
@@ -127,14 +134,14 @@
[user, group]
end
- def make_users(options)
- user_class = options[:user_class]
- group_class = options[:group_class]
+ def make_users
+ user_class = @options[:user_class]
+ group_class = @options[:group_class]
entries = []
[
- [options[:administrator], options[:administrator_uid],
- options[:administrator_gid]],
- [options[:guest], options[:guest_uid], options[:guest_gid]],
+ [@options[:administrator], @options[:administrator_uid],
+ @options[:administrator_gid]],
+ [@options[:guest], @options[:guest_uid], @options[:guest_gid]],
].each do |name, uid, gid|
user, group = make_user(user_class, name, uid,
group_class.find_by_gid_number(gid))
@@ -169,16 +176,17 @@
group
end
- def make_groups(options)
- group_class = options[:group_class]
+ def make_groups
+ group_class = @options[:group_class]
entries = []
[
- ["Domain Admins", options[:administrator_gid],
+ ["Domain Admins", @options[:administrator_gid],
"Netbios Domain Administrators"],
- ["Domain Users", options[:default_user_gid], "Netbios Domain Users"],
- ["Domain Guests", options[:guest_gid],
+ ["Domain Users", @options[:default_user_gid],
+ "Netbios Domain Users"],
+ ["Domain Guests", @options[:guest_gid],
"Netbios Domain Guest Users"],
- ["Domain Computers", options[:default_computer_gid],
+ ["Domain Computers", @options[:default_computer_gid],
"Netbios Domain Computers"],
["Administrators", nil, nil, "builtin", Group::LOCAL_ADMINS_RID],
["Users", nil, nil, "builtin", Group::LOCAL_USERS_RID],
@@ -201,12 +209,12 @@
entries
end
- def make_pool(options)
- Config.required_variables :samba_domain, :sid
- pool = options[:unix_id_pool_class].new(Config.samba_domain)
- pool.samba_sid = Config.sid
- pool.uid_number = options[:start_uid]
- pool.gid_number = options[:start_gid]
+ def make_pool
+ config = @base.configuration
+ pool = @options[:unix_id_pool_class].new(config[:samba_domain])
+ pool.samba_sid = config[:sid]
+ pool.uid_number = @options[:start_uid]
+ pool.gid_number = @options[:start_gid]
pool.save!
[pool]
end
Modified: trunk/lib/active_samba_ldap/idmap.rb (+1 -2)
===================================================================
--- trunk/lib/active_samba_ldap/idmap.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/lib/active_samba_ldap/idmap.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -2,10 +2,9 @@
class Idmap < Base
class << self
def ldap_mapping(options={})
- Config.required_variables :idmap_prefix
default_options = {
:dn_attribute => "sambaSID",
- :prefix => Config.idmap_prefix,
+ :prefix => configuration[:idmap_prefix],
:classes => ["top", "sambaIdmapEntry"],
}
options = default_options.merge(options)
Modified: trunk/lib/active_samba_ldap/computer.rb (+1 -2)
===================================================================
--- trunk/lib/active_samba_ldap/computer.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/lib/active_samba_ldap/computer.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -5,9 +5,8 @@
include Account
class << self
def ldap_mapping(options={})
- Config.required_variables :computers_prefix
default_options = {
- :prefix => Config.computers_prefix,
+ :prefix => configuration[:computers_prefix],
:classes => ["top", "inetOrgPerson", "posixAccount",
"sambaSamAccount"],
}
Modified: trunk/bin/asl-usermod (+5 -5)
===================================================================
--- trunk/bin/asl-usermod 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/bin/asl-usermod 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -133,7 +133,7 @@
exit 1
end
-ActiveSambaLdap::Base.establish_connection({}, false)
+ActiveSambaLdap::Base.establish_connection("update")
class User < ActiveSambaLdap::User
ldap_mapping
@@ -153,11 +153,11 @@
password = ActiveSambaLdap::Command.read_password("Enter your password: ")
auth_class = Class.new(ActiveSambaLdap::Base)
+ config = ActiveSambaLdap::Base.configurations["reference"]
begin
- auth_class.establish_connection({:bind_format => user.dn,
- :password => password,
- :allow_anonymous => false},
- true)
+ auth_class.establish_connection(config.merge(:bind_dn => user.dn,
+ :password => password,
+ :allow_anonymous => false))
rescue ActiveLdap::AuthenticationError
puts "password isn't match"
exit 1
Modified: trunk/lib/active_samba_ldap/command.rb (+32 -1)
===================================================================
--- trunk/lib/active_samba_ldap/command.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/lib/active_samba_ldap/command.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -7,6 +7,7 @@
def parse_options(argv=nil)
argv ||= ARGV.dup
options = OpenStruct.new
+ configuration_files = default_configuration_files
opts = OptionParser.new do |opts|
yield(opts, options)
@@ -14,7 +15,7 @@
opts.separator "Common options:"
opts.on_tail("--config=CONFIG", "Specify configuration file") do |file|
- DefaultConfig::FILES << file
+ configuration_files << file
end
opts.on_tail("-h", "--help", "Show this message") do
@@ -28,6 +29,9 @@
end
end
opts.parse!(argv)
+
+ read_configuration_files(configuration_files)
+
[argv, opts, options]
end
@@ -39,5 +43,32 @@
system "/bin/stty echo" if input.tty?
output.puts
end
+
+ def default_configuration_files
+ files = [
+ "/etc/activesambaldap/config.rb",
+ "/etc/activesambaldap/bind.rb",
+ ]
+ begin
+ configuration_files_for_user = [
+ File.expand_path("~/.activesambaldap.conf"),
+ File.expand_path("~/.activesambaldap.bind")
+ ]
+ files.concat(configuration_files_for_user)
+ rescue ArgumentError
+ end
+ files
+ end
+
+ def read_configuration_files(files)
+ return if files.empty?
+ Base.configurations = files.inject({}) do |result, file|
+ if File.exist?(file)
+ result.merge(Configuration.read(file))
+ else
+ result
+ end
+ end
+ end
end
end
Modified: trunk/bin/asl-groupshow (+1 -1)
===================================================================
--- trunk/bin/asl-groupshow 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/bin/asl-groupshow 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -15,7 +15,7 @@
exit 1
end
-ActiveSambaLdap::Base.establish_connection({}, true)
+ActiveSambaLdap::Base.establish_connection("reference")
class Group < ActiveSambaLdap::Group
ldap_mapping
Modified: trunk/lib/active_samba_ldap/group.rb (+5 -6)
===================================================================
--- trunk/lib/active_samba_ldap/group.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/lib/active_samba_ldap/group.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -49,10 +49,9 @@
class << self
def ldap_mapping(options={})
- Config.required_variables :groups_prefix
default_options = {
:dn_attribute => "cn",
- :prefix => Config.groups_prefix,
+ :prefix => configuration[:groups_prefix],
:classes => ["posixGroup", "sambaGroupMapping"],
:members_wrap => "memberUid",
@@ -121,8 +120,7 @@
end
def start_gid
- ActiveSambaLdap::Config.required_variables :start_gid
- Integer(ActiveSambaLdap::Config.start_gid)
+ Integer(configuration[:start_gid])
end
def start_rid
@@ -175,7 +173,8 @@
pool = nil
unless gid_number
pool_class = options[:pool_class] || Class.new(UnixIdPool)
- samba_domain = options[:samba_domain] || Config[:samba_domain]
+ samba_domain = options[:samba_domain]
+ samba_domain ||= pool_class.configuration[:samba_domain]
pool = pool_class.find(samba_domain)
gid_number = find_available_gid_number(pool)
end
@@ -213,7 +212,7 @@
end
def change_sid(rid, allow_non_unique=false)
- sid = "#{ActiveSambaLdap::Config.sid}-#{rid}"
+ sid = "#{self.class.configuration[:sid]}-#{rid}"
# check_unique_sid_number(sid) unless allow_non_unique
self.samba_sid = sid
end
Modified: trunk/test/test_asl_populate.rb (+6 -5)
===================================================================
--- trunk/test/test_asl_populate.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/test/test_asl_populate.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -21,11 +21,12 @@
results = ActiveSambaLdap::Base.search
- users_prefix = ActiveSambaLdap::Config.users_prefix
- groups_prefix = ActiveSambaLdap::Config.groups_prefix
- computers_prefix = ActiveSambaLdap::Config.computers_prefix
- idmap_prefix = ActiveSambaLdap::Config.idmap_prefix
- domain = ActiveSambaLdap::Config.samba_domain
+ config = ActiveSambaLdap::Base.configuration
+ users_prefix = config[:users_prefix]
+ groups_prefix = config[:groups_prefix]
+ computers_prefix = config[:computers_prefix]
+ idmap_prefix = config[:idmap_prefix]
+ domain = config[:samba_domain]
assert_equal([
nil,
users_prefix,
Modified: trunk/bin/asl-usershow (+1 -1)
===================================================================
--- trunk/bin/asl-usershow 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/bin/asl-usershow 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -15,7 +15,7 @@
exit 1
end
-ActiveSambaLdap::Base.establish_connection({}, true)
+ActiveSambaLdap::Base.establish_connection("reference")
class User < ActiveSambaLdap::User
ldap_mapping
Modified: trunk/test/test_asl_passwd.rb (+4 -4)
===================================================================
--- trunk/test/test_asl_passwd.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/test/test_asl_passwd.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -19,14 +19,14 @@
assert_samba_password(user, password)
- assert_change_password_successfully(user.uid,
- password, new_password)
+ assert_change_password_successfully(user.uid, password, new_password)
user.reload
assert_samba_password(user, new_password)
- assert_change_password_with_wrong_current_password(user.uid,
- password)
+ assert_change_password_with_wrong_current_password(user.uid, password)
+ user.reload
+ assert_samba_password(user, new_password)
assert_change_password_successfully(user.uid,
new_password, password)
Copied: trunk/lib/active_samba_ldap/configuration.rb (+251 -0)
===================================================================
--- trunk/lib/active_samba_ldap/default_config.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/lib/active_samba_ldap/configuration.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -0,0 +1,251 @@
+require 'socket'
+
+module ActiveSambaLdap
+ module Configuration
+ def self.included(base)
+ base.extend(ClassMethods)
+ end
+
+ class << self
+ def read(file)
+ require 'yaml'
+ require 'erb'
+ erb = ERB.new(File.read(file))
+ erb.filename = file
+ result = nil
+ begin
+ begin
+ result = YAML.load(erb.result)
+ unless result
+ raise InvalidConfigurationFormatError.new(file, "0",
+ "empty source")
+ end
+ rescue ArgumentError
+ if /syntax error on line (\d+), col (\d+): `(.*)'/ =~ $!.message
+ raise InvalidConfigurationFormatError.new(file, "#{$1}:#{$2}", $3)
+ else
+ raise
+ end
+ end
+ rescue InvalidConfigurationFormatError
+ raise
+ rescue Exception
+ file, location = $@.first.split(/:/, 2)
+ detail = "#{$!.class}: #{$!.message}"
+ raise InvalidConfigurationFormatError.new(file, location, detail)
+ end
+ result
+ end
+ end
+
+ module ClassMethods
+ class ValidHash < Hash
+ def [](name)
+ if Private.required_variables.include?(name) and !has_key?(name)
+ raise RequiredVariableIsNotSet.new(name)
+ end
+ super(name)
+ end
+ end
+
+ def merge_configuration(config)
+ config = config.symbolize_keys
+ config = (configurations["common"] || {}).symbolize_keys.merge(config)
+ ValidHash.new.merge(super(Private.new(config).merge))
+ end
+
+ def required_configuration_variables(*names)
+ config = configuration
+ if config.nil?
+ missing_variables = names
+ else
+ missing_variables = names.find_all do |name|
+ config[name.to_sym].nil?
+ end
+ end
+ unless missing_variables.empty?
+ raise RequiredVariablesAreNotSet.new(missing_variables)
+ end
+ end
+
+ class Private
+ VARIABLES = %w(base host port scope bind_dn
+ password method allow_anonymous
+
+ sid smb_conf samba_domain samba_netbios_name
+ hash_encrypt
+
+ users_prefix groups_prefix computers_prefix
+ idmap_prefix
+
+ start_uid start_gid
+
+ user_login_shell user_home user_home_directory_mode
+ user_gecos user_samba_home user_profile
+ user_home_drive user_script mail_domain
+
+ skeleton_directory
+
+ default_user_gid default_computer_gid
+ default_max_password_age)
+
+ class << self
+ def required_variables
+ @required_variables ||= compute_required_variables
+ end
+
+ def compute_required_variables
+ not_required_variables = %w(base ldap_scope)
+ (VARIABLES - public_methods - not_required_variables).collect do |x|
+ x.to_sym
+ end
+ end
+ end
+
+ def initialize(target)
+ @target = target.symbolize_keys
+ end
+
+ def merge
+ result = @target.dup
+ VARIABLES.each do |variable|
+ result[variable.to_sym] ||= send(variable) if respond_to?(variable)
+ end
+ result
+ end
+
+ def [](name)
+ @target[name.to_sym] || (respond_to?(name) ? send(name) : nil)
+ end
+
+ def sid
+ result = `net getlocalsid`
+ if $?.success?
+ result.chomp.gsub(/\G[^:]+:\s*/, '')
+ else
+ nil
+ end
+ end
+
+ def smb_conf
+ %w(/etc/samba/smb.conf /usr/local/etc/samba/smb.conf).each do |guess|
+ return guess if File.exist?(guess)
+ end
+ nil
+ end
+
+ def samba_domain
+ _smb_conf = self["smb_conf"]
+ if _smb_conf
+ File.open(_smb_conf) do |f|
+ f.read.grep(/^\s*[^#;]/).each do |line|
+ if /^\s*workgroup\s*=\s*(\S+)\s*$/i =~ line
+ return $1.upcase
+ end
+ end
+ end
+ else
+ nil
+ end
+ end
+
+ def samba_netbios_name
+ netbios_name = nil
+ _smb_conf = self["smb_conf"]
+ if _smb_conf
+ File.open(_smb_conf) do |f|
+ f.read.grep(/^\s*[^#;]/).each do |line|
+ if /^\s*netbios\s*name\s*=\s*(.+)\s*$/i =~ line
+ netbios_name = $1
+ break
+ end
+ end
+ end
+ end
+ netbios_name ||= Socket.gethostname
+ netbios_name ? netbios_name.upcase : nil
+ end
+
+ def host
+ "localhost"
+ end
+
+ def port
+ 389
+ end
+
+ def allow_anonymous
+ false
+ end
+
+ def method
+ :plain
+ end
+
+ def users_prefix
+ "ou=Users"
+ end
+
+ def groups_prefix
+ "ou=Groups"
+ end
+
+ def computers_prefix
+ "ou=Computers"
+ end
+
+ def idmap_prefix
+ "ou=Idmap"
+ end
+
+ def start_uid
+ "10000"
+ end
+
+ def start_gid
+ "10000"
+ end
+
+ def default_user_gid
+ rid = ActiveSambaLdap::Group::DOMAIN_USERS_RID
+ ActiveSambaLdap::Group.rid2gid(rid)
+ end
+
+ def default_computer_gid
+ rid = ActiveSambaLdap::Group::DOMAIN_COMPUTERS_RID
+ ActiveSambaLdap::Group.rid2gid(rid)
+ end
+
+ def skeleton_directory
+ "/etc/skel"
+ end
+
+ def user_samba_home
+ netbios_name = self["samba_netbios_name"]
+ netbios_name ? "\\\\#{netbios_name}\\%U" : nil
+ end
+
+ def user_profile
+ netbios_name = self["samba_netbios_name"]
+ netbios_name ? "\\\\#{netbios_name}\\profiles\\%U" : nil
+ end
+
+ def user_home_drive
+ "H:"
+ end
+
+ def user_script
+ "logon.bat"
+ end
+
+ def user_gecos
+ nil
+ end
+
+ def bind_dn
+ nil
+ end
+ end
+ end
+ end
+end
Modified: trunk/bin/asl-passwd (+6 -5)
===================================================================
--- trunk/bin/asl-passwd 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/bin/asl-passwd 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -38,7 +38,7 @@
exit
end
-ActiveSambaLdap::Base.establish_connection({}, false)
+ActiveSambaLdap::Base.establish_connection("update")
class User < ActiveSambaLdap::User
ldap_mapping
@@ -55,11 +55,11 @@
old_password = ActiveSambaLdap::Command.read_password(prompt)
auth_class = Class.new(ActiveSambaLdap::Base)
+ config = ActiveSambaLdap::Base.configurations["reference"].symbolize_keys
begin
- auth_class.establish_connection({:bind_format => user.dn,
- :password => old_password,
- :allow_anonymous => false},
- true)
+ auth_class.establish_connection(config.merge(:bind_dn => user.dn,
+ :password => old_password,
+ :allow_anonymous => false))
rescue ActiveLdap::AuthenticationError
puts "password isn't match"
exit 1
@@ -67,6 +67,7 @@
auth_class.remove_connection
end
end
+
password = ActiveSambaLdap::Command.read_password("New password: ")
password2 = ActiveSambaLdap::Command.read_password("Retype new password: ")
Modified: trunk/test/test_asl_usershow.rb (+7 -1)
===================================================================
--- trunk/test/test_asl_usershow.rb 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/test/test_asl_usershow.rb 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -10,7 +10,13 @@
def test_exist_user
make_dummy_user do |user, password|
- assert_equal([true, user.to_ldif], run_command(user.uid))
+ user.class.establish_connection("reference")
+ begin
+ user = user.class.find(user.uid)
+ assert_equal([true, user.to_ldif], run_command(user.uid))
+ ensure
+ user.class.establish_connection("update")
+ end
end
end
Copied: trunk/test/config.yml.sample (+17 -0)
===================================================================
--- trunk/test/activesambaldap.conf.sample 2006-11-12 22:37:38 +09:00 (rev 10)
+++ trunk/test/config.yml.sample 2007-08-04 11:31:29 +09:00 (rev 11)
@@ -0,0 +1,17 @@
+common:
+ sid: S-1-5-21-915876905-2926214379-2876160357
+ user_home: /home/%U
+ user_login_shell: /bin/sh
+
+update:
+ base: dc=test,dc=local,dc=net
+ host: 127.0.0.1
+# method: :tls
+ bind_dn: cn=admin,dc=local,dc=net
+ password: secret
+
+reference:
+ base: dc=test,dc=local,dc=net
+ host: 127.0.0.1
+# method: :tls
+ allow_anonymous: true
More information about the asl-commit
mailing list