Revert the #3899 patch and it's two follow ups

arthursv
Melanie 2009-08-04 05:03:32 +01:00
parent 1d8df738f6
commit c3dd98b016
3 changed files with 32 additions and 49 deletions

View File

@ -26,9 +26,7 @@
*/ */
using log4net; using log4net;
using System;
using System.Reflection; using System.Reflection;
using System.Text;
using System.Collections; using System.Collections;
namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
@ -39,7 +37,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public Hashtable HandleDialplanRequest(string Context, string Realm, Hashtable request) public Hashtable HandleDialplanRequest(Hashtable request)
{ {
m_log.DebugFormat("[FreeSwitchVoice] HandleDialplanRequest called with {0}",request.ToString()); m_log.DebugFormat("[FreeSwitchVoice] HandleDialplanRequest called with {0}",request.ToString());
@ -50,32 +48,26 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
m_log.InfoFormat("[FreeSwitchDirectory] requestBody item {0} {1}",item.Key, item.Value); m_log.InfoFormat("[FreeSwitchDirectory] requestBody item {0} {1}",item.Key, item.Value);
} }
string requestcontext = (string) request["Hunt-Context"];
response["content_type"] = "text/xml"; response["content_type"] = "text/xml";
response["keepalive"] = false; response["keepalive"] = false;
response["int_response_code"] = 200; response["int_response_code"] = 200;
if (Context != requestcontext && Context != "public") response["str_response_string"] = @"<?xml version=""1.0"" encoding=""utf-8""?>
{
m_log.DebugFormat("[FreeSwitchDirectory] returning empty as it's for context {0} and we are using {1}", requestcontext, Context);
response["str_response_string"] = "";
} else {
response["str_response_string"] = String.Format(@"<?xml version=""1.0"" encoding=""utf-8""?>
<document type=""freeswitch/xml""> <document type=""freeswitch/xml"">
<section name=""dialplan""> <section name=""dialplan"">
<context name=""{0}"">" + <context name=""default"">
/* <!-- dial via SIP uri --> <!-- dial via SIP uri -->
<extension name=""sip_uri""> <extension name=""sip_uri"">
<condition field=""destination_number"" expression=""^sip:(.*)$""> <condition field=""destination_number"" expression=""^sip:(.*)$"">
<action application=""bridge"" data=""sofia/${use_profile}/$1""/> <action application=""bridge"" data=""sofia/${use_profile}/$1""/>
<!--<action application=""bridge"" data=""$1""/>--> <!--<action application=""bridge"" data=""$1""/>-->
</condition> </condition>
</extension>*/ </extension>
@"<extension name=""opensim_conferences""> <extension name=""opensim_conferences"">
<condition field=""destination_number"" expression=""^confctl-(.*)$""> <condition field=""destination_number"" expression=""^confctl-(.*)$"">
<action application=""answer""/> <action application=""answer""/>
<action application=""conference"" data=""$1-{1}@grid""/> <action application=""conference"" data=""$1-${domain_name}@default""/>
</condition> </condition>
</extension> </extension>
@ -94,8 +86,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
</context> </context>
</section> </section>
</document>", Context, Realm); </document>";
}
return response; return response;
} }

View File

@ -38,18 +38,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
private static readonly ILog m_log = private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public Hashtable HandleDirectoryRequest(string Context, string Realm, Hashtable request) public Hashtable HandleDirectoryRequest(Hashtable request)
{ {
Hashtable response = new Hashtable();
string domain = (string) request["domain"];
if (domain != Realm) {
response["content_type"] = "text/xml";
response["keepalive"] = false;
response["int_response_code"] = 200;
response["str_response_string"] = "";
} else {
m_log.DebugFormat("[FreeSwitchDirectory] HandleDirectoryRequest called with {0}",request.ToString()); m_log.DebugFormat("[FreeSwitchDirectory] HandleDirectoryRequest called with {0}",request.ToString());
Hashtable response = new Hashtable();
// information in the request we might be interested in // information in the request we might be interested in
// Request 1 sip_auth for users account // Request 1 sip_auth for users account
@ -91,11 +85,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
if (sipAuthMethod == "REGISTER") if (sipAuthMethod == "REGISTER")
{ {
response = HandleRegister(Context, Realm, request); response = HandleRegister(request);
} }
else if (sipAuthMethod == "INVITE") else if (sipAuthMethod == "INVITE")
{ {
response = HandleInvite(Context, Realm, request); response = HandleInvite(request);
} }
else else
{ {
@ -107,19 +101,19 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
} }
else if (eventCallingFunction == "switch_xml_locate_user") else if (eventCallingFunction == "switch_xml_locate_user")
{ {
response = HandleLocateUser(Realm, request); response = HandleLocateUser(request);
} }
else if (eventCallingFunction == "user_data_function") // gets called when an avatar to avatar call is made else if (eventCallingFunction == "user_data_function") // gets called when an avatar to avatar call is made
{ {
response = HandleLocateUser(Realm, request); response = HandleLocateUser(request);
} }
else if (eventCallingFunction == "user_outgoing_channel") else if (eventCallingFunction == "user_outgoing_channel")
{ {
response = HandleRegister(Context, Realm, request); response = HandleRegister(request);
} }
else if (eventCallingFunction == "config_sofia") // happens once on freeswitch startup else if (eventCallingFunction == "config_sofia") // happens once on freeswitch startup
{ {
response = HandleConfigSofia(Context, Realm, request); response = HandleConfigSofia(request);
} }
else if (eventCallingFunction == "switch_load_network_lists") else if (eventCallingFunction == "switch_load_network_lists")
{ {
@ -137,11 +131,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
response["content_type"] = "text/xml"; response["content_type"] = "text/xml";
response["str_response_string"] = ""; response["str_response_string"] = "";
} }
}
return response; return response;
} }
private Hashtable HandleRegister(string Context, string Realm, Hashtable request) private Hashtable HandleRegister(Hashtable request)
{ {
m_log.Info("[FreeSwitchDirectory] HandleRegister called"); m_log.Info("[FreeSwitchDirectory] HandleRegister called");
@ -166,19 +159,19 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
"<param name=\"dial-string\" value=\"{{sip_contact_user={1}}}{{presence_id=${{dialed_user}}@${{dialed_domain}}}}${{sofia_contact(${{dialed_user}}@${{dialed_domain}})}}\"/>\r\n" + "<param name=\"dial-string\" value=\"{{sip_contact_user={1}}}{{presence_id=${{dialed_user}}@${{dialed_domain}}}}${{sofia_contact(${{dialed_user}}@${{dialed_domain}})}}\"/>\r\n" +
"</params>\r\n" + "</params>\r\n" +
"<variables>\r\n" + "<variables>\r\n" +
"<variable name=\"user_context\" value=\"{3}\" />\r\n" + "<variable name=\"user_context\" value=\"default\" />\r\n" +
"<variable name=\"presence_id\" value=\"{1}@{0}\"/>"+ "<variable name=\"presence_id\" value=\"{1}@{0}\"/>"+
"</variables>\r\n" + "</variables>\r\n" +
"</user>\r\n" + "</user>\r\n" +
"</domain>\r\n" + "</domain>\r\n" +
"</section>\r\n" + "</section>\r\n" +
"</document>\r\n", "</document>\r\n",
domain , user, password, Context); domain , user, password);
return response; return response;
} }
private Hashtable HandleInvite(string Context, string Realm, Hashtable request) private Hashtable HandleInvite(Hashtable request)
{ {
m_log.Info("[FreeSwitchDirectory] HandleInvite called"); m_log.Info("[FreeSwitchDirectory] HandleInvite called");
@ -203,7 +196,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
"<param name=\"dial-string\" value=\"{{sip_contact_user={1}}}{{presence_id=${1}@${{dialed_domain}}}}${{sofia_contact(${1}@${{dialed_domain}})}}\"/>\r\n" + "<param name=\"dial-string\" value=\"{{sip_contact_user={1}}}{{presence_id=${1}@${{dialed_domain}}}}${{sofia_contact(${1}@${{dialed_domain}})}}\"/>\r\n" +
"</params>\r\n" + "</params>\r\n" +
"<variables>\r\n" + "<variables>\r\n" +
"<variable name=\"user_context\" value=\"{4}\" />\r\n" + "<variable name=\"user_context\" value=\"default\" />\r\n" +
"<variable name=\"presence_id\" value=\"{1}@$${{domain}}\"/>"+ "<variable name=\"presence_id\" value=\"{1}@$${{domain}}\"/>"+
"</variables>\r\n" + "</variables>\r\n" +
"</user>\r\n" + "</user>\r\n" +
@ -213,19 +206,20 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
"<param name=\"dial-string\" value=\"{{sip_contact_user={1}}}{{presence_id=${3}@${{dialed_domain}}}}${{sofia_contact(${3}@${{dialed_domain}})}}\"/>\r\n" + "<param name=\"dial-string\" value=\"{{sip_contact_user={1}}}{{presence_id=${3}@${{dialed_domain}}}}${{sofia_contact(${3}@${{dialed_domain}})}}\"/>\r\n" +
"</params>\r\n" + "</params>\r\n" +
"<variables>\r\n" + "<variables>\r\n" +
"<variable name=\"user_context\" value=\"{4}\" />\r\n" + "<variable name=\"user_context\" value=\"default\" />\r\n" +
"<variable name=\"presence_id\" value=\"{3}@$${{domain}}\"/>"+ "<variable name=\"presence_id\" value=\"{3}@$${{domain}}\"/>"+
"</variables>\r\n" + "</variables>\r\n" +
"</user>\r\n" + "</user>\r\n" +
"</domain>\r\n" + "</domain>\r\n" +
"</section>\r\n" + "</section>\r\n" +
"</document>\r\n", "</document>\r\n",
domain , user, password,sipRequestUser, Context); domain , user, password,sipRequestUser);
return response; return response;
} }
private Hashtable HandleLocateUser(String Realm, Hashtable request)
private Hashtable HandleLocateUser(Hashtable request)
{ {
m_log.Info("[FreeSwitchDirectory] HandleLocateUser called"); m_log.Info("[FreeSwitchDirectory] HandleLocateUser called");
@ -259,7 +253,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
return response; return response;
} }
private Hashtable HandleConfigSofia(string Context, string Realm, Hashtable request) private Hashtable HandleConfigSofia(Hashtable request)
{ {
m_log.Info("[FreeSwitchDirectory] HandleConfigSofia called"); m_log.Info("[FreeSwitchDirectory] HandleConfigSofia called");
@ -292,7 +286,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
"<param name=\"retry-seconds\" value=\"30\"/>\r\n"+ "<param name=\"retry-seconds\" value=\"30\"/>\r\n"+
"<param name=\"extension\" value=\"$${{default_provider_contact}}\"/>\r\n"+ "<param name=\"extension\" value=\"$${{default_provider_contact}}\"/>\r\n"+
"<param name=\"contact-params\" value=\"domain_name=$${{domain}}\"/>\r\n"+ "<param name=\"contact-params\" value=\"domain_name=$${{domain}}\"/>\r\n"+
"<param name=\"context\" value=\"{1}\"/>\r\n"+ "<param name=\"context\" value=\"public\"/>\r\n"+
"</gateway>\r\n"+ "</gateway>\r\n"+
"</gateways>\r\n"+ "</gateways>\r\n"+
"<params>\r\n"+ "<params>\r\n"+
@ -307,7 +301,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
"</domain>\r\n" + "</domain>\r\n" +
"</section>\r\n" + "</section>\r\n" +
"</document>\r\n", "</document>\r\n",
domain, Context); domain);
return response; return response;
} }

View File

@ -95,7 +95,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
// private static IPEndPoint m_FreeSwitchServiceIP; // private static IPEndPoint m_FreeSwitchServiceIP;
private int m_freeSwitchServicePort; private int m_freeSwitchServicePort;
private string m_openSimWellKnownHTTPAddress; private string m_openSimWellKnownHTTPAddress;
private string m_freeSwitchContext;
private FreeSwitchDirectory m_FreeSwitchDirectory; private FreeSwitchDirectory m_FreeSwitchDirectory;
private FreeSwitchDialplan m_FreeSwitchDialplan; private FreeSwitchDialplan m_FreeSwitchDialplan;
@ -152,7 +151,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
m_freeSwitchDefaultTimeout = m_config.GetInt("freeswitch_default_timeout", 5000); m_freeSwitchDefaultTimeout = m_config.GetInt("freeswitch_default_timeout", 5000);
// m_freeSwitchSubscribeRetry = m_config.GetInt("freeswitch_subscribe_retry", 120); // m_freeSwitchSubscribeRetry = m_config.GetInt("freeswitch_subscribe_retry", 120);
m_freeSwitchUrlResetPassword = m_config.GetString("freeswitch_password_reset_url", String.Empty); m_freeSwitchUrlResetPassword = m_config.GetString("freeswitch_password_reset_url", String.Empty);
m_freeSwitchContext = m_config.GetString("freeswitch_context", "public");
if (String.IsNullOrEmpty(m_freeSwitchServerUser) || if (String.IsNullOrEmpty(m_freeSwitchServerUser) ||
String.IsNullOrEmpty(m_freeSwitchServerPass) || String.IsNullOrEmpty(m_freeSwitchServerPass) ||
@ -574,7 +572,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
"<App.NoBottomLogo>false</App.NoBottomLogo>\r\n"+ "<App.NoBottomLogo>false</App.NoBottomLogo>\r\n"+
"</VCConfiguration>", "</VCConfiguration>",
m_freeSwitchRealm, m_freeSwitchSIPProxy, m_freeSwitchAttemptUseSTUN, m_freeSwitchRealm, m_freeSwitchSIPProxy, m_freeSwitchAttemptUseSTUN,
m_freeSwitchEchoServer, m_freeSwitchEchoPort, m_freeSwitchSTUNServer, m_freeSwitchEchoServer, m_freeSwitchEchoPort,
m_freeSwitchDefaultWellKnownIP, m_freeSwitchDefaultTimeout, m_freeSwitchDefaultWellKnownIP, m_freeSwitchDefaultTimeout,
m_freeSwitchUrlResetPassword, ""); m_freeSwitchUrlResetPassword, "");
@ -730,9 +728,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
string section = (string) requestBody["section"]; string section = (string) requestBody["section"];
if (section == "directory") if (section == "directory")
response = m_FreeSwitchDirectory.HandleDirectoryRequest(m_freeSwitchContext, m_freeSwitchRealm, requestBody); response = m_FreeSwitchDirectory.HandleDirectoryRequest(requestBody);
else if (section == "dialplan") else if (section == "dialplan")
response = m_FreeSwitchDialplan.HandleDialplanRequest(m_freeSwitchContext, m_freeSwitchRealm, requestBody); response = m_FreeSwitchDialplan.HandleDialplanRequest(requestBody);
else else
m_log.WarnFormat("[FreeSwitchVoice]: section was {0}", section); m_log.WarnFormat("[FreeSwitchVoice]: section was {0}", section);