#!/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