summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Kozak <spag@golwen.net>2014-04-11 11:16:47 +0000
committerPeter Kozak <spag@golwen.net>2014-04-11 11:16:47 +0000
commite55885d613d2372869ff740e5d35633eb22a1da0 (patch)
tree7a979803b3bde58077b8cca89cbc212369010276
parentd5677cdb0021e37c6e15d24b7cc2e6af0a567ae7 (diff)
Pingtel provisioning added
-rw-r--r--app/controllers/config_pingtel_controller.rb85
-rw-r--r--app/views/config_pingtel/show.text.haml2
-rw-r--r--config/routes.rb16
-rw-r--r--db/migrate/20140411080000_add_pingtel_phone.rb14
4 files changed, 112 insertions, 5 deletions
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 => "<!-- Phone not found -->",
+ )
+ 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}\" <sip:#{sip_account.auth_name}@#{sip_account.sip_domain}>"
+ @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}\" <sip:{digits}@#{sip_account.sip_domain}>"
+ @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