#!/usr/bin/ruby
require 'directory'
require 'radp'
# Creates voicemail.conf, phones.conf, sip.conf, and provisioning scripts
########################
## op_buttons_additional.conf
########################
position = 2
File.open("/home/shared/op_panel-0.27/op_buttons_additional.cfg",'w') do |file|
Directory.users.each do |user|
user.devices.each do |channel|
file.puts <<-EOS
[#{channel}]
Position=#{position}
Label="#{user.extension}: #{user.name}"
Extension=#{user.extension}
Context=phones
Icon=4
EOS
position += 1
end
end
## Put queues and trunks here
file.puts <<-EOS
[QUEUE/mainqueue]
Position=62
Label="Main Queue"
Extension=-1
Icon=5
[QUEUE/mainqueue]
Position=63-65
Label="Main Queue"
Extension=-1
Icon=5
[IAX2/8019903974]
Position=68-77
Label="PSTN Trunk"
Extension=-1
EOS
end
########################
## voicemail.conf
########################
passwords = Hash.new(1234)
pagers = Hash.new
contents = File.read("voicemail.conf")
contents.scan(/^(\d+) => (\d+),.+?,\S+,(\S+)/) do |ext, pass, pager|
passwords[ext.to_i] = pass
pagers[ext.to_i] = pager
end
File.open("voicemail.conf", 'w') do |f|
f.puts <<-EOS
[general]
format=wav49
[default]
EOS
Directory.users.each do |u|
f.puts "#{u.extension} => #{passwords[u.extension]},#{u.name},#{u.email},#{pagers[u.extension]},"
end
f.puts "office => ,General office VM,somebody@constructioncapitalsource.com"
end
########################
## phones.conf
########################
File.open("phones.conf","w") do |file|
radp = RADP.new(file)
phones = <<-EOS
context :paging do
#Fix for multiple divices
Directory.intercoms.keys.each do |num|
ext num do
list = Directory.intercoms[num].collect do |exten|
"LOCAL/\#{exten}@pager"
end
Page(list * '&')
end
end
ext 9000 do
list = Directory.intercoms.values.flatten
list.uniq!.collect! do |exten|
"LOCAL/\#{exten}@pager"
end
Page(list * '&')
end
end
context :phones do
Directory.users.each do |user|
ext user.extension do
Macro('callphone',user.extension.to_s,user.devices * '&')
end
ext user.extension + 100 do
Macro('voicemail',user.extension.to_s)
end
end
end
EOS
#Write it out to a file
radp.instance_eval(phones)
end
########################
## sip.conf
########################
File.open("sip.conf","w") do |file|
file.puts <<-EOS
[general]
context=internal
srvlookup=yes
bindaddr=166.70.157.19
EOS
Directory.users.each do |u|
u.numofphones.downto(1) do |n|
file.puts <<-EOS
[#{
if(u.numofphones > 1)
n.to_s + u.extension.to_s
else
u.extension
end
}]
type=friend
secret=#{u.password}
qualify=yes
callgroup=#{u.callgroup}
pickupgroup=#{u.callgroup}
nat=yes
host=dynamic
canreinvite=no
context=internal
mailbox=#{u.extension}
callerid=#{u.name} <#{u.extension}>
setvar=OUTBOUNDCID=#{u.office.mainnum.to_s}
setvar=EMERGENCYCID=#{u.office.cidfor911.to_s}
setvar=PSAP=#{u.office.psap}
EOS
end
end
end
########################
## Polycom configs
########################
Directory.users.each do |u|
next if (u.phonetype == "sipura")
File.open("/home/shared/tftpboot/#{u.mac}.cfg", "w") do |file|
file.puts <<-EOS
EOS
end
File.open("/home/shared/tftpboot/#{u.mac}-phone.cfg", "w") do |file|
file.puts <<-EOS
EOS
end
File.open("/home/shared/tftpboot/#{u.mac}-directory.xml", "w") do |file|
file.puts <<-EOS
EOS
Directory.users.each { |u| file.puts("\t\t- #{u.name}#{u.extension}1
") }
file.puts <<-EOS
- Conference Call 180009
- Conference Call 2800110
- Conference Call 3800211
- Boise Intercom400012
- Denver Intercom200012
- Phoenix Intercom300028
- SLC Intercom100032
- SLC Downstairs Intercom100131
- SLC Upstairs Intercom100133
EOS
end
end
########################
## Sipura configs
########################
rtp_port = 12000
Directory.users.each do |u|
next if (u.phonetype == "polycom")
File.open("/home/shared/tftpboot/dev#{u.mac}.txt", "w") do |file|
file.puts <<-EOS
Yes
3600
60
0.020
#{rtp_port}
#{rtp_port + 19}
Yes
4
Yes
Yes
GMT-07:00
#{ 'start=3/-1/7/2:0:0;end=10/-1/7/3:0:0;save=1' if(u.office.name != 'Phoenix') }
pool.ntp.org
166.70.157.19
#{u.name}
*97
Construction Capital%0aSource
4
1
1
1
1
#{u.extension}
#{u.extension}
#{u.extension}
#{u.extension}
#{
if (u.numofphones > 1)
'1' + u.extension.to_s
else
u.extension
end
}
5060
#{u.password}
(*xx|[3469]11|0|00|<:1#{u.office.areacode}>[2-9]xxxxxx|<:1>[2-9]xx[2-9]xxxxxx|1xxx[2-9]xxxxxxS0|xxxxxxxxxxxx.)
EOS
end
rtp_port += 19
end
# vim: sw=2:ts=2:filetype=ruby