class ActiveSambaLdap::Configuration::ClassMethods::Private

Constants

AVAILABLE_HASH_TYPES
VARIABLES

Public Class Methods

compute_required_variables() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 111
def compute_required_variables
  not_required_variables = %w(base scope ldap_scope)
  (VARIABLES - public_methods - not_required_variables).collect do |x|
    x.to_sym
  end
end
new(target) click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 119
def initialize(target)
  @target = target.symbolize_keys
end
required_variables() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 107
def required_variables
  @required_variables ||= compute_required_variables
end

Public Instance Methods

[](name) click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 142
def [](name)
  @target[name.to_sym] || (respond_to?(name) ? send(name) : nil)
end
allow_anonymous() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 202
def allow_anonymous
  false
end
bind_dn() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 311
def bind_dn
  nil
end
computers_suffix() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 230
def computers_suffix
  suffix = retrieve_value_from_smb_conf(/ldap\s+machine\s+suffix/i)
  return suffix if suffix
  if self[:samba4]
    "cn=Computers"
  else
    "ou=Computers"
  end
end
default_computer_gid() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 257
def default_computer_gid
  rid = ActiveSambaLdap::Group::DOMAIN_COMPUTERS_RID
  ActiveSambaLdap::Group.rid2gid(rid)
end
default_user_gid() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 252
def default_user_gid
  rid = ActiveSambaLdap::Group::DOMAIN_USERS_RID
  ActiveSambaLdap::Group.rid2gid(rid)
end
groups_suffix() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 220
def groups_suffix
  suffix = retrieve_value_from_smb_conf(/ldap\s+group\s+suffix/i)
  return suffix if suffix
  if self[:samba4]
    "cn=Users"
  else
    "ou=Groups"
  end
end
host() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 194
def host
  "localhost"
end
idmap_suffix() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 240
def idmap_suffix
  retrieve_value_from_smb_conf(/ldap\s+idmap\s+suffix/i) || "ou=Idmap"
end
merge() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 123
def merge
  result = @target.dup
  VARIABLES.each do |variable|
    key = variable.to_sym
    result[key] ||= send(variable) if respond_to?(variable)

    normalize_method = "normalize_#{variable}"
    if respond_to?(normalize_method)
      result[key] = __send__(normalize_method, result[key])
    end

    validate_method = "validate_#{variable}"
    if respond_to?(validate_method)
      __send__(validate_method, result[key])
    end
  end
  result
end
method() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 206
def method
  :plain
end
normalize_password_hash_type(type) click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 319
def normalize_password_hash_type(type)
  type.to_s.downcase.to_sym
end
normalize_user_home_directory_mode(mode) click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 284
def normalize_user_home_directory_mode(mode)
  if mode
    Integer(mode)
  else
    nil
  end
rescue ArgumentError
  raise InvalidConfigurationValueError.new("user_home_directory",
                                           mode, $!.message)
end
password_hash_type() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 315
def password_hash_type
  :ssha
end
port() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 198
def port
  389
end
samba4() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 323
def samba4
  smb_conf = self[:smb_conf]
  if smb_conf and /^\s*server\s*role\s*=/ =~ File.read(smb_conf)
    true
  else
    false
  end
end
samba_domain() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 162
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
samba_netbios_name() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 177
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
sid() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 146
def sid
  result = `net getlocalsid`
  if $?.success?
    result.chomp.gsub(/\G[^:]+:\s*/, '')
  else
    nil
  end
end
skeleton_directory() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 262
def skeleton_directory
  "/etc/skel"
end
smb_conf() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 155
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
start_gid() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 248
def start_gid
  10000
end
start_uid() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 244
def start_uid
  10000
end
user_gecos() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 307
def user_gecos
  nil
end
user_home_directory() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 276
def user_home_directory
  "/home/%U"
end
user_home_directory_mode() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 280
def user_home_directory_mode
  0755
end
user_home_drive() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 299
def user_home_drive
  "H:"
end
user_home_unc() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 266
def user_home_unc
  netbios_name = self["samba_netbios_name"]
  netbios_name ? "\\\\#{netbios_name}\\%U" : nil
end
user_login_shell() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 295
def user_login_shell
  "/bin/false"
end
user_logon_script() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 303
def user_logon_script
  "logon.bat"
end
user_profile() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 271
def user_profile
  netbios_name = self["samba_netbios_name"]
  netbios_name ? "\\\\#{netbios_name}\\profiles\\%U" : nil
end
users_suffix() click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 210
def users_suffix
  suffix = retrieve_value_from_smb_conf(/ldap\s+user\s+suffix/i)
  return suffix if suffix
  if self[:samba4]
    "cn=Users"
  else
    "ou=Users"
  end
end
validate_password_hash_type(type) click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 333
def validate_password_hash_type(type)
  unless AVAILABLE_HASH_TYPES.include?(type)
    types = AVAILABLE_HASH_TYPES.collect {|x| x.inspect}.join(", ")
    raise InvalidConfigurationValueError.new("password_hash_type",
                                             type,
                                             _("must be in %s") % types)
  end
end

Private Instance Methods

retrieve_value_from_smb_conf(key) click to toggle source
# File lib/active_samba_ldap/configuration.rb, line 343
def retrieve_value_from_smb_conf(key)
  smb_conf = self['smb_conf']
  if smb_conf and File.readable?(smb_conf)
    line = File.read(smb_conf).grep(key).reject do |l|
      /^\s*[#;]/ =~ l
    end.first
    if line
      line.split(/=/, 2)[1].strip
    else
      nil
    end
  else
    nil
  end
end