[asl-commit] ActiveSambaLdap r48:
null at cozmixng.org
null at cozmixng.org
Fri Aug 3 22:33:17 EDT 2007
retro 2007-08-04 11:33:16 +0900 (Sat, 04 Aug 2007)
New Revision: 48
Added files:
trunk/lib/active_samba_ldap/entry.rb
Modified files:
trunk/bin/asl-useradd
trunk/lib/active_samba_ldap/account.rb
trunk/lib/active_samba_ldap/computer.rb
trunk/lib/active_samba_ldap/computer_account.rb
trunk/lib/active_samba_ldap/group.rb
trunk/lib/active_samba_ldap/samba_account.rb
trunk/lib/active_samba_ldap/samba_computer.rb
trunk/lib/active_samba_ldap/samba_group.rb
trunk/lib/active_samba_ldap/samba_user.rb
trunk/lib/active_samba_ldap/unix_id_pool.rb
trunk/lib/active_samba_ldap/user.rb
trunk/lib/active_samba_ldap/user_account.rb
trunk/test/asl-test-utils.rb
trunk/test/test_asl_groupadd.rb
Log:
Modified: trunk/lib/active_samba_ldap/user.rb (+3 -0)
===================================================================
--- trunk/lib/active_samba_ldap/user.rb 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/lib/active_samba_ldap/user.rb 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -1,3 +1,4 @@
+require 'active_samba_ldap/entry'
require 'active_samba_ldap/account'
require 'active_samba_ldap/user_account'
@@ -5,6 +6,8 @@
class User < Base
include Reloadable::Subclasses
+ include Entry
+
include Account
include UserAccount
end
Modified: trunk/test/test_asl_groupadd.rb (+1 -1)
===================================================================
--- trunk/test/test_asl_groupadd.rb 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/test/test_asl_groupadd.rb 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -42,7 +42,7 @@
pool_class = Class.new(ActiveSambaLdap::UnixIdPool)
pool_class.ldap_mapping
pool = pool_class.new(pool_class.configuration[:samba_domain])
- next_gid = @group_class.find_available_gid_number(pool)
+ next_gid = pool.find_available_gid_number(@group_class)
assert_asl_groupadd_successfully(cn, "#{next_gid}\n",
"--print-gid-number")
end
Modified: trunk/test/asl-test-utils.rb (+2 -2)
===================================================================
--- trunk/test/asl-test-utils.rb 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/test/asl-test-utils.rb 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -227,11 +227,11 @@
end
def next_uid_number
- pool.uidNumber || @user_class.start_uid
+ pool.uid_number || @user_class.configuration[:start_uid]
end
def next_gid_number
- pool.gidNumber || @group_class.start_gid
+ pool.gid_number || @group_class.configuration[:start_gid]
end
end
Modified: trunk/lib/active_samba_ldap/unix_id_pool.rb (+24 -0)
===================================================================
--- trunk/lib/active_samba_ldap/unix_id_pool.rb 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/lib/active_samba_ldap/unix_id_pool.rb 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -13,5 +13,29 @@
super options
end
end
+
+ def find_available_uid_number(account_class)
+ find_available_number(account_class, "uidNumber", uid_number) do
+ account_class.configuration[:start_uid]
+ end
+ end
+
+ def find_available_gid_number(group_class)
+ find_available_number(group_class, "gidNumber", gid_number) do
+ group_class.configuration[:start_gid]
+ end
+ end
+
+ private
+ def find_available_number(klass, key, start_value)
+ number = Integer(start_value || yield)
+
+ 100.times do |i|
+ return number if klass.search(:filter => "(#{key}=#{number})").empty?
+ number += 1
+ end
+
+ nil
+ end
end
end
Added: trunk/lib/active_samba_ldap/entry.rb (+62 -0)
===================================================================
--- trunk/lib/active_samba_ldap/entry.rb 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/lib/active_samba_ldap/entry.rb 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -0,0 +1,62 @@
+module ActiveSambaLdap
+ module Entry
+ def self.included(base)
+ super
+ base.extend(ClassMethods)
+ end
+
+ module ClassMethods
+ def create(attributes=nil)
+ pool = nil
+ number_key = nil
+ entry = super do |entry|
+ options = attributes || {}
+ options, pool, number_key = prepare_create_options(entry, options)
+ entry.fill_default_values(options)
+ yield entry if block_given?
+ end
+ if entry.errors.empty? and pool
+ pool[number_key] = Integer(entry[number_key]).succ
+ unless pool.save
+ pool.each do |key, value|
+ entry.add("pool: #{key}", value)
+ end
+ end
+ end
+ entry
+ end
+
+ private
+ def prepare_create_options_for_number(key, entry, options)
+ options = {key => entry[key]}.merge(options)
+ number, pool = ensure_number(key, options)
+ [options.merge(key => number), pool, key]
+ end
+
+ def ensure_number(key, options)
+ number = options[key]
+ pool = nil
+ unless number
+ pool = ensure_pool(options)
+ number = pool.send("find_available_#{key}", self)
+ end
+ [number, pool]
+ end
+
+ def ensure_pool(options)
+ pool = options[:pool]
+ unless pool
+ pool_class = options[:pool_class]
+ unless pool_class
+ pool_class = Class.new(UnixIdPool)
+ pool_class.ldap_mapping
+ end
+ samba_domain = options[:samba_domain]
+ samba_domain ||= pool_class.configuration[:samba_domain]
+ pool = options[:pool] = pool_class.find(samba_domain)
+ end
+ pool
+ end
+ end
+ end
+end
Modified: trunk/lib/active_samba_ldap/computer_account.rb (+8 -0)
===================================================================
--- trunk/lib/active_samba_ldap/computer_account.rb 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/lib/active_samba_ldap/computer_account.rb 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -19,5 +19,13 @@
def remove_from_group(group)
group.computers.delete(self)
end
+
+ def default_gid_number
+ self.class.configuration[:default_computer_gid]
+ end
+
+ def created_group_name
+ super.sub(/\$$/, '')
+ end
end
end
Modified: trunk/lib/active_samba_ldap/account.rb (+54 -23)
===================================================================
--- trunk/lib/active_samba_ldap/account.rb 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/lib/active_samba_ldap/account.rb 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -30,23 +30,6 @@
find(:first, :filter => "(#{attribute}=#{value})")
end
- def start_uid
- Integer(configuration[:start_uid])
- end
-
- def find_available_uid_number(pool)
- uid_number = (pool.uid_number || start_uid).to_s
-
- 100.times do |i|
- if find(:first, :attribute => "uidNumber", :value => uid_number).nil?
- return uid_number
- end
- uid_number = uid_number.succ
- end
-
- nil
- end
-
private
def default_options
{
@@ -84,21 +67,48 @@
:many => options[:groups_many],
}
end
+
+ def prepare_create_options(account, options)
+ prepare_create_options_for_number(:uid_number, account, options)
+ end
end
def fill_default_values(options={})
- self.cn = uid
- self.sn = uid
- self.gecos = substituted_value(:user_gecos) {uid}
- self.home_directory = substituted_value(:user_home)
- self.login_shell = substituted_value(:user_login_shell)
+ self.cn ||= uid
+ self.sn ||= uid
+ self.given_name ||= uid
+ self.display_name ||= cn
+ self.gecos ||= substituted_value(:user_gecos) {cn}
+ self.home_directory ||= substituted_value(:user_home)
+ self.login_shell ||= self.class.configuration[:user_login_shell]
- self.user_password = "{crypt}x"
+ self.user_password ||= "{crypt}x"
uid_number = options[:uid_number]
self.change_uid_number(uid_number) if uid_number
group = options[:group]
+ unless group
+ gid_number = options[:gid_number]
+ group_class = options[:group_class]
+ unless gid_number
+ if options[:create_group]
+ group_name = created_group_name
+ if group_class.exists?(group_name)
+ group = group_class.find(group_name)
+ else
+ group = group_class.create(:cn => group_name,
+ :pool => options[:pool],
+ :pool_class => options[:pool_class])
+ end
+ else
+ gid_number = default_gid_number
+ end
+ end
+ if gid_number
+ group = group_class.find_by_gid_number(gid_number)
+ end
+ end
self.primary_group = group if group
self
@@ -135,6 +145,23 @@
self.user_password = hashed_password
end
+ def setup_home_directory(options={})
+ dest = home_directory
+ return unless dest
+
+ FileUtils.mkdir_p(dest)
+ mode = options[:mode]
+ mode ||= self.class.configuration[:user_home_directory_mode]
+ FileUtils.chmod(Integer(mode), dest)
+ skel = options[:skeleton_directory]
+ skel ||= self.class.configuration[:skeleton_directory]
+ FileUtils.cp_r(Dir.glob(File.join(skel, ".*")) +
+ Dir.glob(File.join(skel, "*")) -
+ [File.join(skel, "."), File.join(skel, "..")],
+ dest)
+ FileUtils.chown_R(uid_number, gid_number, dest)
+ end
+
private
def check_unique_uid_number(uid_number)
ActiveSambaLdap::Base.restart_nscd do
@@ -161,5 +188,9 @@
substitute_template(config[key.to_sym])
end
end
+
+ def created_group_name
+ uid
+ end
end
end
Modified: trunk/bin/asl-useradd (+60 -185)
===================================================================
--- trunk/bin/asl-useradd 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/bin/asl-useradd 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -146,27 +146,25 @@
exit 1
end
-def get_value(options, key, default_key=nil)
- value = options.__send__(key)
- value ||= ActiveSambaLdap::Base.configuration[(default_key || key).to_sym]
- value
-end
-
-def substitute_member(value, member)
- value.gsub(/%U/, member.uid)
-end
-
ActiveSambaLdap::Base.establish_connection("update")
+class User < ActiveSambaLdap::SambaUser
+ ldap_mapping
+end
+
class Computer < ActiveSambaLdap::SambaComputer
ldap_mapping
end
-class User < ActiveSambaLdap::SambaUser
+class Group < ActiveSambaLdap::SambaGroup
ldap_mapping
end
+class UnixIdPool < ActiveSambaLdap::UnixIdPool
+ ldap_mapping
+end
+
member_class = options.computer_account ? Computer : User
member_type = member_class.name.downcase
@@ -187,6 +185,11 @@
exit 1
end
+if member_class.exists?(name)
+ $stderr.puts "#{member_type} '#{name}' already exists."
+ exit 1
+end
+
if options.ou
prefixes = [member_prefix]
options.ou.split(/\s*,\s*/).reverse_each do |entry|
@@ -200,66 +203,48 @@
end
end
-if member_class.exists?(name)
- $stderr.puts "#{member_type} '#{name}' already exists."
- exit 1
-end
-member = member_class.new(name)
+create_options = {
+ :uid => name,
+ :uid_number => options.uid,
+ :gid_number => options.gid,
+ :create_group => options.create_group,
+ :group_class => Group,
+ :home_directory => options.home_directory,
+ :login_shell => options.shell,
+ :given_name => options.given_name,
+ :cn => options.canonical_name,
+ :sn => options.surname,
+ :gecos => options.comment,
+ :samba_acct_flags => options.samba_account_flags,
+}
-class UnixIdPool < ActiveSambaLdap::UnixIdPool
- ldap_mapping
+if !create_options[:cn] and options.given_name and options.surname
+ create_options[:cn] = "#{options.given_name} #{options.surname}"
end
-def make_pool
- UnixIdPool.find(UnixIdPool.configuration[:samba_domain])
-end
-pool = nil
-if options.uid
- uid_number = options.uid
+if options.computer_account
+ create_options[:description] = "Computer"
+ create_options[:gecos] ||= "Computer"
else
- pool = make_pool
- uid_number = member_class.find_available_uid_number(pool)
+ create_options.merge!(:can_change_password => options.can_change_password,
+ :must_change_password => options.must_change_password,
+ :user_script => options.samba_logon_script,
+ :user_samba_home => options.samba_home_path,
+ :user_home_drive => options.samba_home_drive,
+ :user_profile => options.samba_profile_path)
+ if options.expire_date
+ create_options[:samba_kickoff_time] = options.expire_date.to_i.to_s
+ end
end
-member.change_uid_number(uid_number)
-uid_number = Integer(member.uidNumber)
-unless member_class.find(:first,
- :attribute => "uidNumber",
- :value => uid_number.to_s).nil?
- $stderr.puts "UID '#{uid_number}' already exists"
- exit 1
-end
-class Group < ActiveSambaLdap::SambaGroup
- ldap_mapping
-end
-group = nil
-if options.gid
- gid_number = options.gid
-else
- if options.create_group
- pool ||= make_pool
- gid_number = Group.find_available_gid_number(pool)
- name = member.uid.sub(/\$\z/, '')
- unless Group.exists?(name)
- group = Group.new(name)
- group.change_gid_number(gid_number)
- group.change_type("domain")
- group.display_name = group.cn
- group.save!
- end
- else
- if options.computer_account
- gid_number = member_class.configuration[:default_computer_gid]
- else
- gid_number = member_class.configuration[:default_user_gid]
- end
- end
-end
-
+member = nil
begin
- member.primary_group = Group.find_by_gid_number(gid_number)
+ member = member_class.create(create_options)
+rescue ActiveSambaLdap::UidNumberAlreadyExists
+ $stderr.puts "UID '#{uid_number}' already exists"
+ exit 1
rescue ActiveSambaLdap::GidNumberDoesNotExist,
ActiveSambaLdap::GroupDoesNotExist,
ActiveSambaLdap::GroupDoesNotHaveSambaSID
@@ -267,133 +252,23 @@
exit 1
end
-home_directory = options.home_directory
-if home_directory.nil?
- if options.computer_account
- home_directory = "/nonexistent"
- else
- home_directory = member_class.configuration[:user_home]
+unless member.errors.empty?
+ member.errors.each_full do |message|
+ $stderr.puts(message)
end
+ exit 1
end
-home_directory = substitute_member(home_directory, member)
-home_directory = home_directory.gsub(/\/{2,}/, "/")
-member.home_directory = home_directory
-
-login_shell = options.shell
-if options.computer_account
- login_shell ||= "/bin/false"
-else
- login_shell ||= member_class.configuration[:user_login_shell]
-end
-member.login_shell = login_shell
-
-if options.computer_account
- member.description = "Computer"
-end
-
-member.given_name = options.given_name || member.uid
-member.sn = options.surname || member.uid
-if options.canonical_name
- member.cn = options.canonical_name
-elsif options.given_name and options.surname
- member.cn = "#{options.given_name} #{options.surname}"
-else
- member.cn = member.uid
-end
-
-gecos = options.comment
-if options.computer_account
- gecos ||= "Computer"
-else
- gecos ||= member_class.configuration[:user_gecos]
-end
-
-if gecos
- member.gecos = substitute_member(gecos, member)
-else
- member.gecos = member.cn
-end
-
-member.display_name = member.cn
-
-flags = options.samba_account_flags
-if flags.nil?
- if options.computer_account
- flags = "[W]"
- else
- flags = "[U]"
- end
-end
-member.samba_acct_flags = flags
-
-unless options.computer_account
- member.user_password = "{crypt}x"
-
- if options.can_change_password
- member.enable_password_change
- else
- member.disable_password_change
- end
-
- if options.must_change_password
- member.enable_forcing_password_change
- else
- member.disable_forcing_password_change
- end
-
- member.samba_logon_time = '0'
- member.samba_logoff_time = member_class::FAR_FUTURE_TIME
- if options.expire_date
- member.samba_kickoff_time = options.expire_date.to_i.to_s
- else
- member.samba_kickoff_time = member_class::FAR_FUTURE_TIME
- end
-
- logon_script = get_value(options, :samba_logon_script, :user_script)
- member.samba_logon_script = substitute_member(logon_script, member)
-
- home_path = get_value(options, :samba_home_path, :user_samba_home)
- member.samba_home_path = substitute_member(home_path, member)
-
- home_drive = get_value(options, :samba_home_drive, :user_home_drive)
- home_drive = substitute_member(home_drive, member)
- member.samba_home_drive = home_drive.sub(/([^:])$/, "\\1:")
-
- profile_path = get_value(options, :samba_profile_path, :user_profile)
- member.samba_profile_path = substitute_member(profile_path, member)
-
- member.samba_lm_password = "XXX"
- member.samba_nt_password = "XXX"
- member.samba_pwd_last_set = Time.now.to_i.to_s
-end
-
-member.save!
-
-if pool
- pool.uid_number = Integer(member.uid_number).succ unless options.uid
- pool.gid_number = Integer(group.gid_number).succ if group
- pool.save!
-end
-
if options.setup_home_directory
- dest = member.home_directory
- if dest
- begin
- FileUtils.mkdir_p(dest)
- mode = options.home_directory_mode
- mode ||= member_class.configuration[:user_home_directory_mode]
- FileUtils.chmod(Integer(mode), dest)
- skel = get_value(options, :skeleton_directory)
- FileUtils.cp_r(Dir.glob(File.join(skel, ".*")) +
- Dir.glob(File.join(skel, "*")) -
- [File.join(skel, "."), File.join(skel, "..")],
- dest)
- FileUtils.chown_R(member.uid_number, member.gid_number, dest)
- rescue SystemCallError
- $stderr.puts $!
- exit 1
- end
+ begin
+ setup_options = {
+ :mode => options.home_directory_mode,
+ :skeleton_directory => options.skeleton_directory,
+ }
+ member.setup_home_directory(setup_options)
+ rescue SystemCallError
+ $stderr.puts $!
+ exit 1
end
end
Modified: trunk/lib/active_samba_ldap/computer.rb (+2 -0)
===================================================================
--- trunk/lib/active_samba_ldap/computer.rb 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/lib/active_samba_ldap/computer.rb 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -5,6 +5,8 @@
class Computer < Base
include Reloadable::Subclasses
+ include Entry
+
include Account
include ComputerAccount
end
Modified: trunk/lib/active_samba_ldap/user_account.rb (+4 -0)
===================================================================
--- trunk/lib/active_samba_ldap/user_account.rb 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/lib/active_samba_ldap/user_account.rb 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -15,5 +15,9 @@
def remove_from_group(group)
group.users.delete(self)
end
+
+ def default_gid_number
+ self.class.configuration[:default_user_gid]
+ end
end
end
Modified: trunk/lib/active_samba_ldap/group.rb (+5 -48)
===================================================================
--- trunk/lib/active_samba_ldap/group.rb 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/lib/active_samba_ldap/group.rb 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -1,9 +1,12 @@
require 'English'
+require 'active_samba_ldap/entry'
+
module ActiveSambaLdap
class Group < Base
include Reloadable::Subclasses
+ include Entry
class << self
def ldap_mapping(options={})
@@ -12,26 +15,6 @@
init_associations(options)
end
- def create(attributes=nil)
- pool = nil
- group = super do |group|
- options = attributes || {}
- options = {:gid_number => group.gid_number}.merge(options)
- gid_number, pool = ensure_gid_number(options)
- group.fill_default_values(options.merge(:gid_number => gid_number))
- yield group if block_given?
- end
- if group.errors.empty? and pool
- pool.gid_number = Integer(group.gid_number).succ
- unless pool.save
- pool.each do |key, value|
- group.add("pool: #{key}", value)
- end
- end
- end
- group
- end
-
def find_by_name_or_gid_number(key)
group = nil
begin
@@ -51,23 +34,6 @@
find(:first, :filter => "(#{attribute}=#{value})")
end
- def start_gid
- Integer(configuration[:start_gid])
- end
-
- def find_available_gid_number(pool)
- gid_number = pool.gid_number || start_gid
-
- 100.times do |i|
- if find(:first, :filter => "(gidNumber=#{gid_number})").nil?
- return gid_number
- end
- gid_number = gid_number.succ
- end
-
- nil
- end
-
private
def default_options
{
@@ -125,17 +91,8 @@
primary_members_opts.merge(primary_computer_members_opts)
end
- def ensure_gid_number(options)
- gid_number = options[:gid_number]
- pool = nil
- unless gid_number
- pool_class = options[:pool_class] || Class.new(UnixIdPool)
- 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
- [gid_number, pool]
+ def prepare_create_options(group, options)
+ prepare_create_options_for_number(:gid_number, group, options)
end
end
Modified: trunk/lib/active_samba_ldap/samba_group.rb (+1 -1)
===================================================================
--- trunk/lib/active_samba_ldap/samba_group.rb 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/lib/active_samba_ldap/samba_group.rb 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -82,7 +82,7 @@
end
def fill_default_values(options={})
- change_type(options[:group_type] || "domain")
+ change_type(options[:group_type] || "domain") unless samba_group_type
super
end
Modified: trunk/lib/active_samba_ldap/samba_computer.rb (+4 -0)
===================================================================
--- trunk/lib/active_samba_ldap/samba_computer.rb 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/lib/active_samba_ldap/samba_computer.rb 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -4,6 +4,10 @@
module ActiveSambaLdap
class SambaComputer < Base
+ include Reloadable::Subclasses
+
+ include Entry
+
include Account
include ComputerAccount
include SambaAccount
Modified: trunk/lib/active_samba_ldap/samba_user.rb (+23 -0)
===================================================================
--- trunk/lib/active_samba_ldap/samba_user.rb 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/lib/active_samba_ldap/samba_user.rb 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -1,3 +1,4 @@
+require 'active_samba_ldap/entry'
require 'active_samba_ldap/account'
require 'active_samba_ldap/user_account'
require 'active_samba_ldap/samba_account'
@@ -4,10 +5,32 @@
module ActiveSambaLdap
class SambaUser < Base
+ include Reloadable::Subclasses
+
+ include Entry
+
include Account
include UserAccount
include SambaAccount
+ def fill_default_values(options={})
+ super
+
+ subst = Proc.new do |key|
+ value = options[key]
+ if value
+ substitute_template(value)
+ else
+ substituted_value(key)
+ end
+ end
+
+ self.samba_home_path ||= subst[:user_samba_home]
+ self.samba_home_drive ||= subst[:user_home_drive].sub(/([^:])$/, "\\1:")
+ self.samba_profile_path ||= subst[:user_profile]
+ self.samba_logon_script ||= subst[:user_script]
+ end
+
private
def default_account_flags
"[UH]"
Modified: trunk/lib/active_samba_ldap/samba_account.rb (+30 -15)
===================================================================
--- trunk/lib/active_samba_ldap/samba_account.rb 2006-11-16 11:12:02 +09:00 (rev 47)
+++ trunk/lib/active_samba_ldap/samba_account.rb 2007-08-04 11:33:16 +09:00 (rev 48)
@@ -76,24 +76,39 @@
end
def fill_default_values(options={})
- self.samba_home_path = substituted_value(:user_samba_home)
- self.samba_home_drive = substituted_value(:user_home_drive)
- self.samba_profile_path = substituted_value(:user_profile)
- self.samba_logon_script = substituted_value(:user_script)
- self.samba_logon_time = "0"
- self.samba_logoff_time = FAR_FUTURE_TIME
- self.samba_kickoff_time = FAR_FUTURE_TIME
- self.samba_acct_flags = default_account_flags
+ super
- self.samba_lm_password = "XXX"
- self.samba_nt_password = "XXX"
- self.samba_pwd_last_set = "0"
- self.enable_password_change
- self.disable_forcing_password_change
+ self.samba_logon_time ||= "0"
+ self.samba_logoff_time ||= FAR_FUTURE_TIME
+ self.samba_kickoff_time ||= nil
- self.disable
+ self.samba_lm_password ||= "XXX"
+ self.samba_nt_password ||= "XXX"
+ self.samba_pwd_last_set ||= "0"
- super
+ account_flags_is_not_set = samba_acct_flags.nil?
+ self.samba_acct_flags ||= default_account_flags
+
+ can_change_password = options[:can_change_password]
+ if can_change_password
+ self.enable_password_change
+ elsif account_flags_is_not_set or can_change_password == false
+ self.disable_password_change
+ end
+
+ must_change_password = options[:must_change_password]
+ if must_change_password
+ self.enable_forcing_password_change
+ elsif account_flags_is_not_set or must_change_password == false
+ self.disable_forcing_password_change
+ end
+
+ enable_account = options[:enable]
+ if enable_account
+ self.enable
+ elsif account_flags_is_not_set or enable_account == false
+ self.disable
+ end
end
def change_uid_number(uid, allow_non_unique=false)
More information about the asl-commit
mailing list