Skip to content

Instantly share code, notes, and snippets.

@pdeschen
Created December 31, 2011 05:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pdeschen/1542978 to your computer and use it in GitHub Desktop.
Save pdeschen/1542978 to your computer and use it in GitHub Desktop.
Asterisk Configuration Rakefile
VERBOSE=true
ASTERISK_LOAD_SCRIPT='/usr/bin/asterisk-load'
ASTERISK_ETC='/etc/asterisk'
AVAILABLE=ASTERISK_ETC + "/available"
ENABLED=ASTERISK_ETC + "/enabled"
DISABLED=ASTERISK_ETC + "/disabled"
directory AVAILABLE
directory ENABLED
directory DISABLED
task :default => [:all] do
end
desc "clean and install"
task :all => [:clean, :install] do
end
desc "install necessary stuff and move *.conf (except asterisk.conf) into #{AVAILABLE} directory."
task :install => [:directories, ASTERISK_LOAD_SCRIPT] do
files = FileList.new(ASTERISK_ETC+ "/*.conf") do |file|
file.exclude(/asterisk.conf/)
end
files.each do |file|
destination = AVAILABLE + "/" + File.basename(file)
p file + " => " + destination if VERBOSE
mv file, destination
end
end
desc "enable specified config, linking file to #{ENABLED} directory."
task :enable, :conf do |t, args|
mod = args[:conf]
inclusion = ASTERISK_ETC + "/" + args[:conf] + ".conf"
if args[:conf].include? "/"
mod = args[:conf].split("/")[0]
inclusion = ASTERISK_ETC + "/" + mod + ".conf"
p "extracting parent " + mod if VERBOSE
end
enablement = ENABLED + "/" + args[:conf] + ".conf"
availability = AVAILABLE + "/" + args[:conf] + ".conf"
if File.exists? availability
p "enabling #{args[:conf]}" if VERBOSE
desc "create the configuration inclusion"
file inclusion do |f|
p "create inclusion for #{inclusion}" if VERBOSE
include_enable = <<END
#exec #{ASTERISK_LOAD_SCRIPT} #{mod}
END
File.open(inclusion, 'w') do |f| f.write(include_enable) end
chown('asterisk', 'asterisk', inclusion)
end
desc "link enablement"
file enablement do |f|
p "linking " + f.name if VERBOSE
mkdir_p(File.dirname(f.name))
ln_s(availability, enablement)
end
Rake::Task[inclusion].invoke
Rake::Task[enablement].invoke
p "reloading asterisk config" if VERBOSE
`service asterisk reload`
end
end
desc "disable specified config, unlinking file to #{DISABLED} directory."
task :disable, :conf do |t, args|
enablement = ENABLED + "/" + args[:conf] + ".conf"
disablement = DISABLED + "/" + args[:conf] + ".conf"
if File.exists? enablement
p "disabling #{args[:conf]}" if VERBOSE
file disablement do |f|
p "unlinking " + f.name if VERBOSE
mkdir_p(File.dirname(f.name))
mv enablement, disablement
end
Rake::Task[disablement].invoke
`service asterisk reload`
end
end
desc "create directory structure."
task :directories => [AVAILABLE, ENABLED, DISABLED ] do
end
desc "create asterisk config loader."
file ASTERISK_LOAD_SCRIPT do |f|
script = <<END
#!/bin/bash
if [ -e /etc/asterisk/enabled/$1.conf ] ; then
echo "#include /etc/asterisk/enabled/$1.conf";
fi
if [ -e /etc/asterisk/enabled/$1/ ] ; then
find /etc/asterisk/enabled/$1/ -name '*.conf' -exec echo "#include {}" \\;
fi
END
File.open(f.name, 'w') do |f| f.write(script) end
File.chmod(0755, f.name)
end
desc "remove asterisk config loader."
task :clean do
rm_r ASTERISK_LOAD_SCRIPT, :verbose => true, :force => true, :secure=>true
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment