* Some tweaks to the FreeSwitchModule to allow a well known hostname and avoid a double // in a path which causes account verification to fail

* The change shouldn't affect anyone who has it working currently and makes it a ton easier for everyone else to get it working.
* Handle a case when there's no Event-Calling-Function but it's obviously a REGISTER method
0.6.5-rc1
Teravus Ovares 2009-04-22 06:07:39 +00:00
parent bd522720f7
commit c397f05be7
2 changed files with 26 additions and 9 deletions

View File

@ -69,7 +69,15 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
} }
string eventCallingFunction = (string) request["Event-Calling-Function"]; string eventCallingFunction = (string) request["Event-Calling-Function"];
if (eventCallingFunction == null)
{
eventCallingFunction = "sofia_reg_parse_auth";
}
if (eventCallingFunction.Length == 0)
{
eventCallingFunction = "sofia_reg_parse_auth";
}
if (eventCallingFunction=="sofia_reg_parse_auth") if (eventCallingFunction=="sofia_reg_parse_auth")
{ {
@ -110,12 +118,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
//response = HandleLoadNetworkLists(request); //response = HandleLoadNetworkLists(request);
response["int_response_code"]=404; response["int_response_code"]=404;
response["keepalive"] = false; response["keepalive"] = false;
response["content_type"] = "text/xml";
response["str_response_string"] = "";
} }
else else
{ {
m_log.ErrorFormat("[FreeSwitchVoice] HandleDirectoryRequest unknown Event-Calling-Function {0}",eventCallingFunction); m_log.ErrorFormat("[FreeSwitchVoice] HandleDirectoryRequest unknown Event-Calling-Function {0}",eventCallingFunction);
response["int_response_code"]=404; response["int_response_code"]=404;
response["keepalive"] = false; response["keepalive"] = false;
response["content_type"] = "text/xml";
response["str_response_string"] = "";
} }

View File

@ -90,6 +90,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
private static int m_freeSwitchSubscribeRetry; private static int m_freeSwitchSubscribeRetry;
private static string m_freeSwitchUrlResetPassword; private static string m_freeSwitchUrlResetPassword;
private static IPEndPoint m_FreeSwitchServiceIP; private static IPEndPoint m_FreeSwitchServiceIP;
private int m_freeSwitchServicePort;
private string m_openSimWellKnownHTTPAddress;
private FreeSwitchDirectory m_FreeSwitchDirectory; private FreeSwitchDirectory m_FreeSwitchDirectory;
private FreeSwitchDialplan m_FreeSwitchDialplan; private FreeSwitchDialplan m_FreeSwitchDialplan;
@ -131,7 +133,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
int servicePort = m_config.GetInt("freeswitch_service_port", 80); int servicePort = m_config.GetInt("freeswitch_service_port", 80);
IPAddress serviceIPAddress = IPAddress.Parse(serviceIP); IPAddress serviceIPAddress = IPAddress.Parse(serviceIP);
m_FreeSwitchServiceIP = new IPEndPoint(serviceIPAddress, servicePort); m_FreeSwitchServiceIP = new IPEndPoint(serviceIPAddress, servicePort);
m_freeSwitchServicePort = servicePort;
m_freeSwitchRealm = m_config.GetString("freeswitch_realm", String.Empty); m_freeSwitchRealm = m_config.GetString("freeswitch_realm", String.Empty);
m_freeSwitchSIPProxy = m_config.GetString("freeswitch_sip_proxy", m_freeSwitchRealm); m_freeSwitchSIPProxy = m_config.GetString("freeswitch_sip_proxy", m_freeSwitchRealm);
m_freeSwitchAttemptUseSTUN = m_config.GetBoolean("freeswitch_attempt_stun", true); m_freeSwitchAttemptUseSTUN = m_config.GetBoolean("freeswitch_attempt_stun", true);
@ -139,6 +141,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
m_freeSwitchEchoServer = m_config.GetString("freeswitch_echo_server", m_freeSwitchRealm); m_freeSwitchEchoServer = m_config.GetString("freeswitch_echo_server", m_freeSwitchRealm);
m_freeSwitchEchoPort = m_config.GetInt("freeswitch_echo_port", 50505); m_freeSwitchEchoPort = m_config.GetInt("freeswitch_echo_port", 50505);
m_freeSwitchDefaultWellKnownIP = m_config.GetString("freeswitch_well_known_ip", m_freeSwitchRealm); m_freeSwitchDefaultWellKnownIP = m_config.GetString("freeswitch_well_known_ip", m_freeSwitchRealm);
m_openSimWellKnownHTTPAddress = m_config.GetString("opensim_well_known_http_address", serviceIPAddress.ToString());
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);
@ -306,12 +309,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
// those // those
agentname = agentname.Replace('+', '-').Replace('/', '_'); agentname = agentname.Replace('+', '-').Replace('/', '_');
// LLSDVoiceAccountResponse voiceAccountResponse = // LLSDVoiceAccountResponse voiceAccountResponse =
// new LLSDVoiceAccountResponse(agentname, password, m_freeSwitchRealm, "http://etsvc02.hursley.ibm.com/api"); // new LLSDVoiceAccountResponse(agentname, password, m_freeSwitchRealm, "http://etsvc02.hursley.ibm.com/api");
LLSDVoiceAccountResponse voiceAccountResponse = LLSDVoiceAccountResponse voiceAccountResponse =
new LLSDVoiceAccountResponse(agentname, password, m_freeSwitchRealm, new LLSDVoiceAccountResponse(agentname, password, m_freeSwitchRealm,
String.Format("http://{0}/{1}/", m_FreeSwitchServiceIP, String.Format("http://{0}:{1}{2}/", m_openSimWellKnownHTTPAddress, m_freeSwitchServicePort,
m_freeSwitchAPIPrefix)); m_freeSwitchAPIPrefix));
string r = LLSDHelpers.SerialiseLLSDReply(voiceAccountResponse); string r = LLSDHelpers.SerialiseLLSDReply(voiceAccountResponse);
@ -490,20 +493,22 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
public Hashtable FreeSwitchConfigHTTPHandler(Hashtable request) public Hashtable FreeSwitchConfigHTTPHandler(Hashtable request)
{ {
m_log.DebugFormat("[FreeSwitchVoice] FreeSwitchConfigHTTPHandler called with {0}",request.ToString()); m_log.DebugFormat("[FreeSwitchVoice] FreeSwitchConfigHTTPHandler called with {0}", (string)request["body"]);
Hashtable response = new Hashtable(); Hashtable response = new Hashtable();
// all the params come as NVPs in the request body // all the params come as NVPs in the request body
Hashtable requestBody = parseRequestBody((string) request["body"]); Hashtable requestBody = parseRequestBody((string) request["body"]);
// is this a dialplan or directory request // is this a dialplan or directory request
string section = (string) requestBody["section"]; string section = (string) requestBody["section"];
if (section=="directory") if (section == "directory")
response = m_FreeSwitchDirectory.HandleDirectoryRequest(requestBody); response = m_FreeSwitchDirectory.HandleDirectoryRequest(requestBody);
else if (section=="dialplan") else if (section == "dialplan")
response = m_FreeSwitchDialplan.HandleDialplanRequest(requestBody); response = m_FreeSwitchDialplan.HandleDialplanRequest(requestBody);
else
m_log.WarnFormat("[FreeSwitchVoice]: section was {0}", section);
// XXX: re-generate dialplan: // XXX: re-generate dialplan:
// - conf == region UUID // - conf == region UUID