From e55885d613d2372869ff740e5d35633eb22a1da0 Mon Sep 17 00:00:00 2001 From: Peter Kozak Date: Fri, 11 Apr 2014 11:16:47 +0000 Subject: Pingtel provisioning added --- app/controllers/config_pingtel_controller.rb | 85 ++++++++++++++++++++++++++ app/views/config_pingtel/show.text.haml | 2 + config/routes.rb | 16 +++-- db/migrate/20140411080000_add_pingtel_phone.rb | 14 +++++ 4 files changed, 112 insertions(+), 5 deletions(-) create mode 100644 app/controllers/config_pingtel_controller.rb create mode 100644 app/views/config_pingtel/show.text.haml create mode 100644 db/migrate/20140411080000_add_pingtel_phone.rb diff --git a/app/controllers/config_pingtel_controller.rb b/app/controllers/config_pingtel_controller.rb new file mode 100644 index 0000000..f161d7d --- /dev/null +++ b/app/controllers/config_pingtel_controller.rb @@ -0,0 +1,85 @@ +class ConfigPingtelController < ApplicationController + + before_filter { + @mac_address = params[:PHYSICAL_ID].to_s.upcase.gsub(/[^0-9A-F]/,'') + } + + def show + if @mac_address + @phone = Phone.where(:mac_address => @mac_address).first + end + + if ! @phone + render( + :status => 404, + :layout => false, + :content_type => 'text/plain', + :text => "", + ) + return false + end + + @settings = { + 'PHONESET_DEPLOYMENT_SERVER' => "#{request.host_with_port}", + 'PHONESET_ADMIN_DOMAIN' => 'gemeinschaft', + 'PHONESET_LOGICAL_ID' => '1', + 'PHONESET_EXTERNAL_IP_ADDRESS' => '', + 'PHONESET_DIALPLAN_LENGTH' => '4', + 'PHONESET_LINE.ALLOW_FORWARDING' => 'ENABLE', + 'PHONESET_LINE.REGISTRATION' => 'REGISTER', + 'PHONESET_LINE.URL' => '', + 'PHONESET_AVAILABLE_BEHAVIOR' => 'RING', + 'PHONESET_BUSY_BEHAVIOR' => 'BUSY', + 'PHONESET_CALL_WAITING_BEHAVIOR' => 'ALERT', + 'PHONESET_DND_METHOD' => 'FORWARD_ON_BUSY', + 'PHONESET_HTTP_PORT' => '80', + 'PHONESET_HTTP_PROXY_HOST' => '', + 'PHONESET_HTTP_PROXY_PORT' => '', + 'PHONESET_LOGO_URL' => '', + 'PHONESET_MSG_WAITING_SUBSCRIBE' => '', + 'PHONESET_RINGER' => 'BOTH', + 'PHONESET_SNMP_TRAP_DESTS' => '', + 'PHONESET_TELNET_ACCESS' => 'DISABLE', + 'PHONESET_TIME_DST_RULE' => 'WESTERN_EUROPE', + 'PHONESET_TIME_OFFSET' => '+60', + 'PHONESET_TIME_SERVER' => '130.149.17.21', + 'PHONESET_VOICEMAIL_RETRIEVE' => '', + 'SIP_DIRECTORY_SERVERS' => '', + 'SIP_PROXY_SERVERS' => '', + 'SIP_AUTHENTICATE_SCHEME' => 'NONE', + 'SIP_FORWARD_ON_BUSY' => '', + 'SIP_FORWARD_ON_NO_ANSWER' => '', + 'SIP_FORWARD_UNCONDITIONAL' => '', + 'SIP_REGISTER_PERIOD' => '3600', + 'SIP_SESSION_REINVITE_TIMER' => '', + 'SIP_TCP_PORT' => '', + 'SIP_UDP_PORT' => '1032', + 'USER_DEFAULT_OUTBOUND_LINE' => 'PHONESET_LINE', + } + + if @phone.sip_accounts.any? + sip_accounts = @phone.sip_accounts + else + sip_accounts = [@phone.fallback_sip_account] + end + + if sip_accounts.any? + sip_account = sip_accounts.first + @settings['PHONESET_DEPLOYMENT_SERVER'] = sip_account.sip_domain + @settings['PHONESET_LINE.URL'] = "\"#{sip_account.caller_name}\" " + @settings['SIP_DIRECTORY_SERVERS'] = "sip:#{sip_account.sip_domain}" + @settings['SIP_PROXY_SERVERS'] = "sip:#{sip_account.sip_domain}" + #@settings['PHONESET_DIGITMAP.(xxxx|xxxxxxxxxx|1xxxxxxxxxx|91xxxxxxxxxx|9xxxxxxxxxx)'] = "\"{digits}\" " + @settings['PHONESET_VOICEMAIL_RETRIEVE'] = "sip:f-vmcheck@#{sip_account.sip_domain}" + if sip_account.voicemail_account + @settings['PHONESET_MSG_WAITING_SUBSCRIBE'] = "sip:#{sip_account.voicemail_account.name}@#{sip_account.sip_domain}" + end + end + + sip_accounts.each_with_index do |sip_account, index| + @settings["PHONESET_LINE.CREDENTIAL.#{index+1}.PASSTOKEN"] = Digest::MD5.hexdigest("#{sip_account.auth_name}:#{sip_account.sip_domain}:#{sip_account.password}") + @settings["PHONESET_LINE.CREDENTIAL.#{index+1}.REALM"] = sip_account.sip_domain + @settings["PHONESET_LINE.CREDENTIAL.#{index+1}.USERID"] = sip_account.auth_name + end + end +end diff --git a/app/views/config_pingtel/show.text.haml b/app/views/config_pingtel/show.text.haml new file mode 100644 index 0000000..a21cb9b --- /dev/null +++ b/app/views/config_pingtel/show.text.haml @@ -0,0 +1,2 @@ +- @settings.each do |key, value| + != "#{key} : #{value} " diff --git a/config/routes.rb b/config/routes.rb index 49ad00e..9ea1740 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -200,16 +200,16 @@ Gemeinschaft42c::Application.routes.draw do get "config_siemens/:phone/:sip_account/menu" => "config_siemens#menu" #Polycom - get "config_polycom/:phone/:sip_account/phone_book" => "config_polycom#phone_book" - get "config_polycom/:phone/:sip_account/call_history" => "config_polycom#call_history" - get "config_polycom/:phone/:sip_account/idle_screen" => "config_polycom#idle_screen" + get "config_polycom/:phone/:sip_account/phone_book" => "config_polycom#phone_book" + get "config_polycom/:phone/:sip_account/call_history" => "config_polycom#call_history" + get "config_polycom/:phone/:sip_account/idle_screen" => "config_polycom#idle_screen" #Yealink - get "config_yealink/:phone/:sip_account/phone_book" => "config_yealink#phone_book" + get "config_yealink/:phone/:sip_account/phone_book" => "config_yealink#phone_book" get "config_yealink/:phone/:sip_account/:phone_book/phone_book" => "config_yealink#phone_book" #Gigaset - get "config_gigaset/:phone/:sip_account/phone_book" => "config_gigaset#phone_book" + get "config_gigaset/:phone/:sip_account/phone_book" => "config_gigaset#phone_book" # Unified path for Snom phones. # Enter e.g. "http://192.168.1.105:3000/settings" @@ -266,6 +266,12 @@ Gemeinschaft42c::Application.routes.draw do :constraints => { :mac_address => /0004f2[0-9A-F]{6}/i }, :via => [:get], :format => 'xml' + + # Pingtel + match 'getConfig' => 'config_pingtel#show', + :constraints => { :mac_address => /00d01e[0-9a-f]{6}/i }, + :via => [:get], + :format => 'text' # Snom default path. # e.g. "/snom360-000413000000.htm" diff --git a/db/migrate/20140411080000_add_pingtel_phone.rb b/db/migrate/20140411080000_add_pingtel_phone.rb new file mode 100644 index 0000000..c44eec6 --- /dev/null +++ b/db/migrate/20140411080000_add_pingtel_phone.rb @@ -0,0 +1,14 @@ +class AddPingtelPhone < ActiveRecord::Migration + def up + Manufacturer.create(:name => 'Pingtel', :ieee_name => 'PINGTEL CORP.', :homepage_url => '') + pingtel = Manufacturer.where(:name => 'Pingtel').first + if pingtel + pingtel.phone_models.create(:name => 'Pingtel Xpressa PX-1', :product_manual_homepage_url => '', :product_homepage_url => '') + end + end + + def down + PhoneModel.where(:name => 'Pingtel Xpressa PX-1').destroy_all + Manufacturer.where(:name => 'Pingtel').destroy_all + end +end -- cgit v1.2.3