Created
December 31, 2011 05:18
-
-
Save pdeschen/1542978 to your computer and use it in GitHub Desktop.
Asterisk Configuration Rakefile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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