module Obelisk

Constants

DEFAULT_CONFIG
DEFAULT_CONFIG_PATH
VERSION

Public Class Methods

get_ad_users(ou = nil) click to toggle source
# File lib/obelisk.rb, line 73
def self.get_ad_users(ou = nil)
  load_conf
  settings = {
    :host => $conf[:ad_settings][:ldap_host],
    :base => (ou ? "ou=#{ou},#{$conf[:ad_settings][:base_dn]}" : $conf[:ad_settings][:base_dn]),
    :port => 389,
    :auth => {
      :method => :simple,
      :username => $conf[:ad_settings][:bind_name],
      :password => $conf[:ad_settings][:bind_pass],
    }
  }
  ActiveDirectory::Base.setup(settings)
  ActiveDirectory::User.find(:all).map do |u|
    k = $conf[:mapping].values
    v = $conf[:mapping].keys.map { |attr| u.valid_attribute?(attr) ? u.send(attr).force_encoding("UTF-8") : $conf[:defaults][attr] }
    Hash[k.zip v]
  end
end
load_conf(file_name = nil) click to toggle source
# File lib/obelisk.rb, line 106
def self.load_conf(file_name = nil)
  file_name ||= DEFAULT_CONFIG_PATH
  return unless $conf.empty?
  begin
    $conf = YAML.load IO.read file_name
  rescue
    $conf = DEFAULT_CONFIG
  end
end
make_erb_conf(params = {}) click to toggle source
# File lib/obelisk.rb, line 45
def self.make_erb_conf(params = {})
  load_conf
  params[:conf_dir] ||= $conf[:asterisk_conf_dir]
  params[:force] ||= false
  params[:restart] ||= false
  params[:updb] ||= false
  FileUtils.mkdir_p params[:conf_dir]
  b = binding
  up = false
  all_users = get_ad_users
  users = all_users.select{ |u| u[:secret] && u[:extension] }
  Dir[File.expand_path "*.erb", $conf[:erb_file_dir]].each do |erb|
    conf_file = File.expand_path File.basename(erb, ".erb"), params[:conf_dir]
    File.open(conf_file, File.exists?(conf_file) ? "r+" : "w+") do |file|
      content = ERB.new(IO.read(erb), nil, "-").result(b)
      if content != file.read || params[:force]
        file.seek 0
        file.truncate 0
        file.write content
        up = true
      end
    end
  end
  system $conf[:asterisk_restart_command] if up && params[:restart]
  puts("Update database is deprecated") if params[:updb]
  up
end
save_def_conf(file_name = nil) click to toggle source
# File lib/obelisk.rb, line 93
def self.save_def_conf(file_name = nil)
  file_name ||= DEFAULT_CONFIG_PATH
  conf = DEFAULT_CONFIG
  updated = false
  if File.exists? file_name
    merge_proc = proc { |k, o, n| o.is_a?(Hash) && n.is_a?(Hash) ? o.merge(n, &merge_proc) : n }
    conf.merge! YAML.load(IO.read(file_name)), &merge_proc
    updated = true
  end
  File.open(file_name, 'w') { |f| f.write YAML.dump conf }
  updated
end