fix merge conflicts with OpenSimDefaults.ini

bulletsim
BlueWall 2011-04-21 19:06:54 -04:00
commit b8e282324e
12 changed files with 275 additions and 127 deletions

View File

@ -430,7 +430,7 @@ namespace OpenSim.Framework.Servers.HttpServer
string path = request.RawUrl; string path = request.RawUrl;
string handlerKey = GetHandlerKey(request.HttpMethod, path); string handlerKey = GetHandlerKey(request.HttpMethod, path);
//m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path); // m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path);
if (TryGetStreamHandler(handlerKey, out requestHandler)) if (TryGetStreamHandler(handlerKey, out requestHandler))
{ {

View File

@ -81,16 +81,20 @@ namespace OpenSim.Region.Framework.Scenes
} }
/// <summary> /// <summary>
/// Add an inventory item to a prim in this group. /// Add an inventory item from a user's inventory to a prim in this scene object.
/// </summary> /// </summary>
/// <param name="remoteClient"></param> /// <param name="remoteClient">The client adding the item.</param>
/// <param name="localID"></param> /// <param name="localID">The local ID of the part receiving the add.</param>
/// <param name="item"></param> /// <param name="item">The user inventory item being added.</param>
/// <param name="copyItemID">The item UUID that should be used by the new item.</param> /// <param name="copyItemID">The item UUID that should be used by the new item.</param>
/// <returns></returns> /// <returns></returns>
public bool AddInventoryItem(IClientAPI remoteClient, uint localID, public bool AddInventoryItem(IClientAPI remoteClient, uint localID,
InventoryItemBase item, UUID copyItemID) InventoryItemBase item, UUID copyItemID)
{ {
// m_log.DebugFormat(
// "[PRIM INVENTORY]: Adding inventory item {0} from {1} to part with local ID {2}",
// item.Name, remoteClient.Name, localID);
UUID newItemId = (copyItemID != UUID.Zero) ? copyItemID : item.ID; UUID newItemId = (copyItemID != UUID.Zero) ? copyItemID : item.ID;
SceneObjectPart part = GetChildPart(localID); SceneObjectPart part = GetChildPart(localID);
@ -134,13 +138,18 @@ namespace OpenSim.Region.Framework.Scenes
} }
taskItem.Flags = item.Flags; taskItem.Flags = item.Flags;
// m_log.DebugFormat(
// "[PRIM INVENTORY]: Flags are 0x{0:X} for item {1} added to part {2} by {3}",
// taskItem.Flags, taskItem.Name, localID, remoteClient.Name);
// TODO: These are pending addition of those fields to TaskInventoryItem // TODO: These are pending addition of those fields to TaskInventoryItem
// taskItem.SalePrice = item.SalePrice; // taskItem.SalePrice = item.SalePrice;
// taskItem.SaleType = item.SaleType; // taskItem.SaleType = item.SaleType;
taskItem.CreationDate = (uint)item.CreationDate; taskItem.CreationDate = (uint)item.CreationDate;
bool addFromAllowedDrop = false; bool addFromAllowedDrop = false;
if (remoteClient!=null) if (remoteClient != null)
{ {
addFromAllowedDrop = remoteClient.AgentId != part.OwnerID; addFromAllowedDrop = remoteClient.AgentId != part.OwnerID;
} }

View File

@ -116,13 +116,15 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
using (StringReader sr = new StringReader(xml)) using (StringReader sr = new StringReader(xml))
{ {
using (XmlTextReader reader = new XmlTextReader(sr)) using (XmlTextReader reader = new XmlTextReader(sr))
{
try
{ {
reader.Read(); reader.Read();
if (reader.Name != "CoalescedObject") if (reader.Name != "CoalescedObject")
{ {
// m_log.DebugFormat( // m_log.DebugFormat(
// "[COALESCED SCENE OBJECTS SERIALIZER]: TryFromXml() root element was {0} so returning false", // "[COALESCED SCENE OBJECTS SERIALIZER]: TryFromXml() root element was {0} so returning false",
// reader.Name); // reader.Name);
return false; return false;
} }
@ -141,6 +143,15 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
reader.ReadEndElement(); // CoalescedObject reader.ReadEndElement(); // CoalescedObject
} }
catch (Exception e)
{
m_log.ErrorFormat(
"[COALESCED SCENE OBJECTS SERIALIZER]: Deserialization of xml failed with {0} {1}",
e.Message, e.StackTrace);
return false;
}
}
} }
return true; return true;

View File

@ -298,12 +298,22 @@ namespace OpenSim.Region.Framework.Scenes
if (null != objectAsset) if (null != objectAsset)
{ {
string xml = Utils.BytesToString(objectAsset.Data); string xml = Utils.BytesToString(objectAsset.Data);
CoalescedSceneObjects coa;
if (CoalescedSceneObjectsSerializer.TryFromXml(xml, out coa))
{
foreach (SceneObjectGroup sog in coa.Objects)
GatherAssetUuids(sog, assetUuids);
}
else
{
SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlFormat(xml); SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlFormat(xml);
if (null != sog) if (null != sog)
GatherAssetUuids(sog, assetUuids); GatherAssetUuids(sog, assetUuids);
} }
} }
}
/// <summary> /// <summary>
/// Get the asset uuid associated with a gesture /// Get the asset uuid associated with a gesture

View File

@ -118,7 +118,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
if (serviceDll == String.Empty) if (serviceDll == String.Empty)
{ {
m_log.Error("[FreeSwitchVoice]: No LocalServiceModule named in section FreeSwitchVoice"); m_log.Error("[FreeSwitchVoice]: No LocalServiceModule named in section FreeSwitchVoice. Not starting.");
return; return;
} }
@ -143,8 +143,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
if (String.IsNullOrEmpty(m_freeSwitchRealm) || if (String.IsNullOrEmpty(m_freeSwitchRealm) ||
String.IsNullOrEmpty(m_freeSwitchAPIPrefix)) String.IsNullOrEmpty(m_freeSwitchAPIPrefix))
{ {
m_log.Error("[FreeSwitchVoice] plugin mis-configured"); m_log.Error("[FreeSwitchVoice]: Freeswitch service mis-configured. Not starting.");
m_log.Info("[FreeSwitchVoice] plugin disabled: incomplete configuration");
return; return;
} }
@ -164,24 +163,24 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
// String.Format("{0}/viv_get_prelogin.php", m_freeSwitchAPIPrefix), FreeSwitchSLVoiceGetPreloginHTTPHandler); // String.Format("{0}/viv_get_prelogin.php", m_freeSwitchAPIPrefix), FreeSwitchSLVoiceGetPreloginHTTPHandler);
// MainServer.Instance.AddStreamHandler(h); // MainServer.Instance.AddStreamHandler(h);
MainServer.Instance.AddHTTPHandler(String.Format("{0}/viv_signin.php", m_freeSwitchAPIPrefix), MainServer.Instance.AddHTTPHandler(String.Format("{0}/viv_signin.php", m_freeSwitchAPIPrefix),
FreeSwitchSLVoiceSigninHTTPHandler); FreeSwitchSLVoiceSigninHTTPHandler);
MainServer.Instance.AddHTTPHandler(String.Format("{0}/viv_buddy.php", m_freeSwitchAPIPrefix), MainServer.Instance.AddHTTPHandler(String.Format("{0}/viv_buddy.php", m_freeSwitchAPIPrefix),
FreeSwitchSLVoiceBuddyHTTPHandler); FreeSwitchSLVoiceBuddyHTTPHandler);
m_log.InfoFormat("[FreeSwitchVoice] using FreeSwitch server {0}", m_freeSwitchRealm); MainServer.Instance.AddHTTPHandler(String.Format("{0}/viv_watcher.php", m_freeSwitchAPIPrefix),
FreeSwitchSLVoiceWatcherHTTPHandler);
m_log.InfoFormat("[FreeSwitchVoice]: using FreeSwitch server {0}", m_freeSwitchRealm);
m_Enabled = true; m_Enabled = true;
m_log.Info("[FreeSwitchVoice] plugin enabled"); m_log.Info("[FreeSwitchVoice]: plugin enabled");
} }
catch (Exception e) catch (Exception e)
{ {
m_log.ErrorFormat("[FreeSwitchVoice] plugin initialization failed: {0}", e.Message); m_log.ErrorFormat("[FreeSwitchVoice]: plugin initialization failed: {0} {1}", e.Message, e.StackTrace);
m_log.DebugFormat("[FreeSwitchVoice] plugin initialization failed: {0}", e.ToString());
return; return;
} }
@ -240,7 +239,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
{ {
if (m_Enabled) if (m_Enabled)
{ {
m_log.Info("[FreeSwitchVoice] registering IVoiceModule with the scene"); m_log.Info("[FreeSwitchVoice]: registering IVoiceModule with the scene");
// register the voice interface for this module, so the script engine can call us // register the voice interface for this module, so the script engine can call us
scene.RegisterModuleInterface<IVoiceModule>(this); scene.RegisterModuleInterface<IVoiceModule>(this);
@ -302,7 +301,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
// </summary> // </summary>
public void OnRegisterCaps(Scene scene, UUID agentID, Caps caps) public void OnRegisterCaps(Scene scene, UUID agentID, Caps caps)
{ {
m_log.DebugFormat("[FreeSwitchVoice] OnRegisterCaps: agentID {0} caps {1}", agentID, caps); m_log.DebugFormat(
"[FreeSwitchVoice]: OnRegisterCaps() called with agentID {0} caps {1} in scene {2}",
agentID, caps, scene.RegionInfo.RegionName);
string capsBase = "/CAPS/" + caps.CapsObjectPath; string capsBase = "/CAPS/" + caps.CapsObjectPath;
caps.RegisterHandler("ProvisionVoiceAccountRequest", caps.RegisterHandler("ProvisionVoiceAccountRequest",
@ -344,6 +345,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
public string ProvisionVoiceAccountRequest(Scene scene, string request, string path, string param, public string ProvisionVoiceAccountRequest(Scene scene, string request, string path, string param,
UUID agentID, Caps caps) UUID agentID, Caps caps)
{ {
m_log.DebugFormat(
"[FreeSwitchVoice][PROVISIONVOICE]: ProvisionVoiceAccountRequest() request: {0}, path: {1}, param: {2}", request, path, param);
ScenePresence avatar = scene.GetScenePresence(agentID); ScenePresence avatar = scene.GetScenePresence(agentID);
if (avatar == null) if (avatar == null)
{ {
@ -357,9 +361,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
try try
{ {
//m_log.DebugFormat("[FreeSwitchVoice][PROVISIONVOICE]: request: {0}, path: {1}, param: {2}",
// request, path, param);
//XmlElement resp; //XmlElement resp;
string agentname = "x" + Convert.ToBase64String(agentID.GetBytes()); string agentname = "x" + Convert.ToBase64String(agentID.GetBytes());
string password = "1234";//temp hack//new UUID(Guid.NewGuid()).ToString().Replace('-','Z').Substring(0,16); string password = "1234";//temp hack//new UUID(Guid.NewGuid()).ToString().Replace('-','Z').Substring(0,16);
@ -390,7 +391,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
string r = LLSDHelpers.SerialiseLLSDReply(voiceAccountResponse); string r = LLSDHelpers.SerialiseLLSDReply(voiceAccountResponse);
m_log.DebugFormat("[FreeSwitchVoice][PROVISIONVOICE]: avatar \"{0}\": {1}", avatarName, r); // m_log.DebugFormat("[FreeSwitchVoice][PROVISIONVOICE]: avatar \"{0}\": {1}", avatarName, r);
return r; return r;
} }
@ -416,6 +417,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
public string ParcelVoiceInfoRequest(Scene scene, string request, string path, string param, public string ParcelVoiceInfoRequest(Scene scene, string request, string path, string param,
UUID agentID, Caps caps) UUID agentID, Caps caps)
{ {
// m_log.DebugFormat(
// "[FreeSwitchVoice][PARCELVOICE]: ParcelVoiceInfoRequest() on {0} for {1}",
// scene.RegionInfo.RegionName, agentID);
ScenePresence avatar = scene.GetScenePresence(agentID); ScenePresence avatar = scene.GetScenePresence(agentID);
string avatarName = avatar.Name; string avatarName = avatar.Name;
@ -453,8 +458,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
if ((land.Flags & (uint)ParcelFlags.AllowVoiceChat) == 0) if ((land.Flags & (uint)ParcelFlags.AllowVoiceChat) == 0)
{ {
m_log.DebugFormat("[FreeSwitchVoice][PARCELVOICE]: region \"{0}\": Parcel \"{1}\" ({2}): avatar \"{3}\": voice not enabled for parcel", // m_log.DebugFormat("[FreeSwitchVoice][PARCELVOICE]: region \"{0}\": Parcel \"{1}\" ({2}): avatar \"{3}\": voice not enabled for parcel",
scene.RegionInfo.RegionName, land.Name, land.LocalID, avatarName); // scene.RegionInfo.RegionName, land.Name, land.LocalID, avatarName);
channelUri = String.Empty; channelUri = String.Empty;
} }
else else
@ -469,8 +474,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
parcelVoiceInfo = new LLSDParcelVoiceInfoResponse(scene.RegionInfo.RegionName, land.LocalID, creds); parcelVoiceInfo = new LLSDParcelVoiceInfoResponse(scene.RegionInfo.RegionName, land.LocalID, creds);
string r = LLSDHelpers.SerialiseLLSDReply(parcelVoiceInfo); string r = LLSDHelpers.SerialiseLLSDReply(parcelVoiceInfo);
m_log.DebugFormat("[FreeSwitchVoice][PARCELVOICE]: region \"{0}\": Parcel \"{1}\" ({2}): avatar \"{3}\": {4}", // m_log.DebugFormat("[FreeSwitchVoice][PARCELVOICE]: region \"{0}\": Parcel \"{1}\" ({2}): avatar \"{3}\": {4}",
scene.RegionInfo.RegionName, land.Name, land.LocalID, avatarName, r); // scene.RegionInfo.RegionName, land.Name, land.LocalID, avatarName, r);
return r; return r;
} }
catch (Exception e) catch (Exception e)
@ -502,6 +507,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
m_log.DebugFormat("[FreeSwitchVoice][CHATSESSION]: avatar \"{0}\": request: {1}, path: {2}, param: {3}", m_log.DebugFormat("[FreeSwitchVoice][CHATSESSION]: avatar \"{0}\": request: {1}, path: {2}, param: {3}",
avatarName, request, path, param); avatarName, request, path, param);
return "<llsd>true</llsd>"; return "<llsd>true</llsd>";
} }
@ -555,10 +561,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
return response; return response;
} }
public Hashtable FreeSwitchSLVoiceGetPreloginHTTPHandler(Hashtable request) public Hashtable FreeSwitchSLVoiceGetPreloginHTTPHandler(Hashtable request)
{ {
m_log.Debug("[FreeSwitchVoice] FreeSwitchSLVoiceGetPreloginHTTPHandler called"); m_log.Debug("[FreeSwitchVoice]: FreeSwitchSLVoiceGetPreloginHTTPHandler called");
Hashtable response = new Hashtable(); Hashtable response = new Hashtable();
response["content_type"] = "text/xml"; response["content_type"] = "text/xml";
@ -592,6 +597,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
public Hashtable FreeSwitchSLVoiceBuddyHTTPHandler(Hashtable request) public Hashtable FreeSwitchSLVoiceBuddyHTTPHandler(Hashtable request)
{ {
m_log.Debug("[FreeSwitchVoice]: FreeSwitchSLVoiceBuddyHTTPHandler called");
Hashtable response = new Hashtable(); Hashtable response = new Hashtable();
response["int_response_code"] = 200; response["int_response_code"] = 200;
response["str_response_string"] = string.Empty; response["str_response_string"] = string.Empty;
@ -650,21 +657,64 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
<bdy_status>A</bdy_status> <bdy_status>A</bdy_status>
<modified_ts>{3}</modified_ts> <modified_ts>{3}</modified_ts>
<b2g_group_id></b2g_group_id> <b2g_group_id></b2g_group_id>
</level3>", ids[i],i,m_freeSwitchRealm,dt)); </level3>", ids[i], i ,m_freeSwitchRealm, dt));
} }
resp.Append("</buddies><groups></groups></body></level0></response>"); resp.Append("</buddies><groups></groups></body></level0></response>");
response["str_response_string"] = resp.ToString(); response["str_response_string"] = resp.ToString();
// Regex normalizeEndLines = new Regex(@"\r\n", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.Multiline); // Regex normalizeEndLines = new Regex(@"(\r\n|\n)", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.Multiline);
//
// m_log.DebugFormat(
// "[FREESWITCH]: FreeSwitchSLVoiceBuddyHTTPHandler() response {0}",
// normalizeEndLines.Replace((string)response["str_response_string"],""));
return response;
}
public Hashtable FreeSwitchSLVoiceWatcherHTTPHandler(Hashtable request)
{
m_log.Debug("[FreeSwitchVoice]: FreeSwitchSLVoiceWatcherHTTPHandler called");
Hashtable response = new Hashtable();
response["int_response_code"] = 200;
response["content-type"] = "text/xml";
Hashtable requestBody = ParseRequestBody((string)request["body"]);
string auth_token = (string)requestBody["auth_token"];
//string[] auth_tokenvals = auth_token.Split(':');
//string username = auth_tokenvals[0];
StringBuilder resp = new StringBuilder();
resp.Append("<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?><response xmlns=\"http://www.vivox.com\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation= \"/xsd/buddy_list.xsd\">");
// FIXME: This is enough of a response to stop viewer 2 complaining about a login failure and get voice to work. If we don't
// give an OK response, then viewer 2 engages in an continuous viv_signin.php, viv_buddy.php, viv_watcher.php loop
// Viewer 1 appeared happy to ignore the lack of reply and still works with this reply.
//
// However, really we need to fill in whatever watcher data should be here (whatever that is).
resp.Append(string.Format(@"<level0>
<status>OK</status>
<cookie_name>lib_session</cookie_name>
<cookie>{0}</cookie>
<auth_token>{0}</auth_token>
<body/></level0></response>", auth_token));
response["str_response_string"] = resp.ToString();
// Regex normalizeEndLines = new Regex(@"(\r\n|\n)", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.Multiline);
//
// m_log.DebugFormat(
// "[FREESWITCH]: FreeSwitchSLVoiceWatcherHTTPHandler() response {0}",
// normalizeEndLines.Replace((string)response["str_response_string"],""));
//m_log.DebugFormat("[FREESWITCH]: {0}", normalizeEndLines.Replace((string)response["str_response_string"],""));
return response; return response;
} }
public Hashtable FreeSwitchSLVoiceSigninHTTPHandler(Hashtable request) public Hashtable FreeSwitchSLVoiceSigninHTTPHandler(Hashtable request)
{ {
m_log.Debug("[FreeSwitchVoice] FreeSwitchSLVoiceSigninHTTPHandler called"); m_log.Debug("[FreeSwitchVoice]: FreeSwitchSLVoiceSigninHTTPHandler called");
// string requestbody = (string)request["body"]; // string requestbody = (string)request["body"];
// string uri = (string)request["uri"]; // string uri = (string)request["uri"];
// string contenttype = (string)request["content-type"]; // string contenttype = (string)request["content-type"];
@ -710,6 +760,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
</response>", userid, pos, avatarName); </response>", userid, pos, avatarName);
response["int_response_code"] = 200; response["int_response_code"] = 200;
// m_log.DebugFormat("[FreeSwitchVoice]: Sending FreeSwitchSLVoiceSigninHTTPHandler response");
return response; return response;
} }
@ -795,16 +848,27 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
response["keepalive"] = false; response["keepalive"] = false;
response["int_response_code"] = 500; response["int_response_code"] = 500;
Hashtable requestBody = ParseRequestBody((string) request["body"]); Hashtable requestBody = ParseRequestBody((string)request["body"]);
string section = (string) requestBody["section"]; string section = (string) requestBody["section"];
if (section == "directory") if (section == "directory")
{
string eventCallingFunction = (string)requestBody["Event-Calling-Function"];
m_log.DebugFormat(
"[FreeSwitchVoice]: Received request for config section directory, event calling function '{0}'",
eventCallingFunction);
response = m_FreeswitchService.HandleDirectoryRequest(requestBody); response = m_FreeswitchService.HandleDirectoryRequest(requestBody);
}
else if (section == "dialplan") else if (section == "dialplan")
{
m_log.DebugFormat("[FreeSwitchVoice]: Received request for config section dialplan");
response = m_FreeswitchService.HandleDialplanRequest(requestBody); response = m_FreeswitchService.HandleDialplanRequest(requestBody);
}
else else
m_log.WarnFormat("[FreeSwitchVoice]: section was {0}", section); m_log.WarnFormat("[FreeSwitchVoice]: Unknown section {0} was requested from config.", section);
return response; return response;
} }

View File

@ -62,6 +62,8 @@ namespace PrimMesher
bool needsScaling = false; bool needsScaling = false;
bool smallMap = bmW * bmH <= lod * lod;
width = bmW; width = bmW;
height = bmH; height = bmH;
while (width * height > numLodPixels) while (width * height > numLodPixels)
@ -104,9 +106,14 @@ namespace PrimMesher
{ {
for (int x = 0; x <= width; x++) for (int x = 0; x <= width; x++)
{ {
int bmY = y < height ? y * 2 : y * 2 - 1; Color c;
int bmX = x < width ? x * 2 : x * 2 - 1;
Color c = bm.GetPixel(bmX, bmY); if (smallMap)
c = bm.GetPixel(x < width ? x : x - 1,
y < height ? y : y - 1);
else
c = bm.GetPixel(x < width ? x * 2 : x * 2 - 1,
y < height ? y * 2 : y * 2 - 1);
redBytes[byteNdx] = c.R; redBytes[byteNdx] = c.R;
greenBytes[byteNdx] = c.G; greenBytes[byteNdx] = c.G;

View File

@ -50,13 +50,13 @@ namespace OpenSim.Services.FreeswitchService
public Hashtable HandleDialplanRequest(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());
Hashtable response = new Hashtable(); Hashtable response = new Hashtable();
foreach (DictionaryEntry item in request) foreach (DictionaryEntry item in request)
{ {
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"]; string requestcontext = (string) request["Hunt-Context"];
@ -66,7 +66,7 @@ namespace OpenSim.Services.FreeswitchService
if (m_freeSwitchContext != String.Empty && m_freeSwitchContext != requestcontext) if (m_freeSwitchContext != String.Empty && m_freeSwitchContext != requestcontext)
{ {
m_log.Debug("[FreeSwitchDirectory] returning empty as it's for another context"); m_log.Debug("[FreeSwitchDirectory]: returning empty as it's for another context");
response["str_response_string"] = ""; response["str_response_string"] = "";
} }
else else
@ -116,13 +116,16 @@ namespace OpenSim.Services.FreeswitchService
{ {
Hashtable response = new Hashtable(); Hashtable response = new Hashtable();
string domain = (string) request["domain"]; string domain = (string) request["domain"];
if (domain != m_freeSwitchRealm) { if (domain != m_freeSwitchRealm)
{
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;
response["str_response_string"] = ""; response["str_response_string"] = "";
} else { }
m_log.DebugFormat("[FreeSwitchDirectory] HandleDirectoryRequest called with {0}",request.ToString()); else
{
// m_log.DebugFormat("[FreeSwitchDirectory]: HandleDirectoryRequest called with {0}",request.ToString());
// information in the request we might be interested in // information in the request we might be interested in
@ -143,10 +146,8 @@ namespace OpenSim.Services.FreeswitchService
//domain=9.20.151.43 //domain=9.20.151.43
//ip=9.167.220.137 // this is the correct IP rather than sip_contact_host above when through a vpn or NAT setup //ip=9.167.220.137 // this is the correct IP rather than sip_contact_host above when through a vpn or NAT setup
foreach (DictionaryEntry item in request) // foreach (DictionaryEntry item in request)
{ // m_log.DebugFormat("[FreeSwitchDirectory]: requestBody item {0} {1}", item.Key, item.Value);
m_log.InfoFormat("[FreeSwitchDirectory] requestBody item {0} {1}", item.Key, item.Value);
}
string eventCallingFunction = (string) request["Event-Calling-Function"]; string eventCallingFunction = (string) request["Event-Calling-Function"];
if (eventCallingFunction == null) if (eventCallingFunction == null)
@ -173,7 +174,7 @@ namespace OpenSim.Services.FreeswitchService
} }
else else
{ {
m_log.ErrorFormat("[FreeSwitchVoice] HandleDirectoryRequest unknown sip_auth_method {0}",sipAuthMethod); m_log.ErrorFormat("[FreeSwitchVoice]: HandleDirectoryRequest unknown sip_auth_method {0}",sipAuthMethod);
response["int_response_code"] = 404; response["int_response_code"] = 404;
response["content_type"] = "text/xml"; response["content_type"] = "text/xml";
response["str_response_string"] = ""; response["str_response_string"] = "";
@ -205,7 +206,7 @@ namespace OpenSim.Services.FreeswitchService
} }
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["content_type"] = "text/xml";
@ -217,7 +218,7 @@ namespace OpenSim.Services.FreeswitchService
private Hashtable HandleRegister(string Context, string Realm, Hashtable request) private Hashtable HandleRegister(string Context, string Realm, Hashtable request)
{ {
m_log.Info("[FreeSwitchDirectory] HandleRegister called"); m_log.Info("[FreeSwitchDirectory]: HandleRegister called");
// TODO the password we return needs to match that sent in the request, this is hard coded for now // TODO the password we return needs to match that sent in the request, this is hard coded for now
string password = "1234"; string password = "1234";
@ -254,7 +255,7 @@ namespace OpenSim.Services.FreeswitchService
private Hashtable HandleInvite(string Context, string Realm, Hashtable request) private Hashtable HandleInvite(string Context, string Realm, Hashtable request)
{ {
m_log.Info("[FreeSwitchDirectory] HandleInvite called"); m_log.Info("[FreeSwitchDirectory]: HandleInvite called");
// TODO the password we return needs to match that sent in the request, this is hard coded for now // TODO the password we return needs to match that sent in the request, this is hard coded for now
string password = "1234"; string password = "1234";
@ -301,7 +302,7 @@ namespace OpenSim.Services.FreeswitchService
private Hashtable HandleLocateUser(String Realm, Hashtable request) private Hashtable HandleLocateUser(String Realm, Hashtable request)
{ {
m_log.Info("[FreeSwitchDirectory] HandleLocateUser called"); m_log.Info("[FreeSwitchDirectory]: HandleLocateUser called");
// TODO the password we return needs to match that sent in the request, this is hard coded for now // TODO the password we return needs to match that sent in the request, this is hard coded for now
string domain = (string) request["domain"]; string domain = (string) request["domain"];
@ -335,7 +336,7 @@ namespace OpenSim.Services.FreeswitchService
private Hashtable HandleConfigSofia(string Context, string Realm, Hashtable request) private Hashtable HandleConfigSofia(string Context, string Realm, Hashtable request)
{ {
m_log.Info("[FreeSwitchDirectory] HandleConfigSofia called"); m_log.Info("[FreeSwitchDirectory]: HandleConfigSofia called.");
// TODO the password we return needs to match that sent in the request, this is hard coded for now // TODO the password we return needs to match that sent in the request, this is hard coded for now
string domain = (string) request["domain"]; string domain = (string) request["domain"];

View File

@ -64,7 +64,7 @@ namespace OpenSim.Services.FreeswitchService
m_freeSwitchDefaultWellKnownIP = freeswitchConfig.GetString("ServerAddress", String.Empty); m_freeSwitchDefaultWellKnownIP = freeswitchConfig.GetString("ServerAddress", String.Empty);
if (m_freeSwitchDefaultWellKnownIP == String.Empty) if (m_freeSwitchDefaultWellKnownIP == String.Empty)
{ {
m_log.Error("[FREESWITCH]: No FreeswitchServerAddress given, can't continue"); m_log.Error("[FREESWITCH]: No ServerAddress given, cannot start service.");
return; return;
} }

View File

@ -621,10 +621,11 @@
;; You need to load a local service for a standalone, and a remote service ;; You need to load a local service for a standalone, and a remote service
;; for a grid region. Use one of the lines below, as appropriate ;; for a grid region. Use one of the lines below, as appropriate
;; If you're using Freeswitch on a standalone then you will also need to configure the [FreeswitchService] section
; LocalServiceModule = OpenSim.Services.FreeswitchService.dll:FreeswitchService ; LocalServiceModule = OpenSim.Services.FreeswitchService.dll:FreeswitchService
; LocalServiceModule = OpenSim.Services.Connectors.dll:RemoteFreeswitchConnector ; LocalServiceModule = OpenSim.Services.Connectors.dll:RemoteFreeswitchConnector
;; If using a remote module, specify the server URL ;; If using a remote connector, specify the server URL
; FreeswitchServiceURL = http://my.grid.server:8003/fsapi ; FreeswitchServiceURL = http://my.grid.server:8003/fsapi
@ -632,20 +633,37 @@
;; !!!!!!!!!!!!!!!!!!!!!!!!!!! ;; !!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!!!!!STANDALONE ONLY!!!!!! ;; !!!!!!STANDALONE ONLY!!!!!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!! ;; !!!!!!!!!!!!!!!!!!!!!!!!!!!
;; IP of your FS server ;; The IP address of your FreeSWITCH server. The common case is for this to be the same as the server running the OpenSim standalone
;ServerAddress = 85.25.142.92 ;; This has to be set for the FreeSWITCH service to work
;ServerAddress = 127.0.0.1
;; All other options are - well - optional ;; The following configuration parameters are optional
; Realm = "127.0.0.1"
; SIPProxy = "127.0.0.1:5060" ;; By default, this is the same as the ServerAddress
; EchoServer = "127.0.0.1" ; Realm = 127.0.0.1
; EchoPort = 50505
; AttemptSTUN = "false" ;; By default, this is the same as the ServerAddress on port 5060
; SIPProxy = 127.0.0.1:5060
;; Default is 5000ms
; DefaultTimeout = 5000 ; DefaultTimeout = 5000
; Context = "default"
; UserName = "freeswitch"
; Password = "password"
;; The dial plan context. Default is "default"
; Context = default
;; Currently unused
; UserName = freeswitch
;; Currently unused
; Password = password
;; The following parameters are for STUN = Simple Traversal of UDP through NATs
;; See http://wiki.freeswitch.org/wiki/NAT_Traversal
;; stun.freeswitch.org is not guaranteed to be running so use it in
;; production at your own risk
; EchoServer = 127.0.0.1
; EchoPort = 50505
; AttemptSTUN = false
[Groups] [Groups]
;# {Enabled} {} {Enable groups?} {true false} false ;# {Enabled} {} {Enable groups?} {true false} false

View File

@ -85,19 +85,37 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003
; * This is the configuration for the freeswitch server in grid mode ; * This is the configuration for the freeswitch server in grid mode
[FreeswitchService] [FreeswitchService]
LocalServiceModule = "OpenSim.Services.FreeswitchService.dll:FreeswitchService" LocalServiceModule = "OpenSim.Services.FreeswitchService.dll:FreeswitchService"
;; IP of your FS server
;; The IP address of your FreeSWITCH server.
; ServerAddress = 127.0.0.1 ; ServerAddress = 127.0.0.1
;; All other options are - well - optional ;; The following configuration parameters are optional
; Realm = "127.0.0.1"
; SIPProxy = "127.0.0.1:5060" ;; By default, this is the same as the ServerAddress
; EchoServer = "127.0.0.1" ; Realm = 127.0.0.1
; EchoPort = 50505
; AttemptSTUN = "false" ;; By default, this is the same as the ServerAddress on port 5060
; SIPProxy = 127.0.0.1:5060
;; Default is 5000ms
; DefaultTimeout = 5000 ; DefaultTimeout = 5000
; Context = "default"
; UserName = "freeswitch" ;; The dial plan context. Default is "default"
; Password = "password" ; Context = default
;; Currently unused
; UserName = freeswitch
;; Currently unused
; Password = password
;; The following parameters are for STUN = Simple Traversal of UDP through NATs
;; See http://wiki.freeswitch.org/wiki/NAT_Traversal
;; stun.freeswitch.org is not guaranteed to be running so use it in
;; production at your own risk
; EchoServer = 127.0.0.1
; EchoPort = 50505
; AttemptSTUN = false
; * This is the new style authentication service. Currently, only MySQL ; * This is the new style authentication service. Currently, only MySQL
; * is implemented. ; * is implemented.

View File

@ -69,19 +69,37 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003
; * This is the configuration for the freeswitch server in grid mode ; * This is the configuration for the freeswitch server in grid mode
[FreeswitchService] [FreeswitchService]
LocalServiceModule = "OpenSim.Services.FreeswitchService.dll:FreeswitchService" LocalServiceModule = "OpenSim.Services.FreeswitchService.dll:FreeswitchService"
;; IP of your FS server
;; The IP address of your FreeSWITCH server.
; ServerAddress = 127.0.0.1 ; ServerAddress = 127.0.0.1
;; All other options are - well - optional ;; The following configuration parameters are optional
; Realm = "127.0.0.1"
; SIPProxy = "127.0.0.1:5060" ;; By default, this is the same as the ServerAddress
; EchoServer = "127.0.0.1" ; Realm = 127.0.0.1
; EchoPort = 50505
; AttemptSTUN = "false" ;; By default, this is the same as the ServerAddress on port 5060
; SIPProxy = 127.0.0.1:5060
;; Default is 5000ms
; DefaultTimeout = 5000 ; DefaultTimeout = 5000
; Context = "default"
; UserName = "freeswitch" ;; The dial plan context. Default is "default"
; Password = "password" ; Context = default
;; Currently unused
; UserName = freeswitch
;; Currently unused
; Password = password
;; The following parameters are for STUN = Simple Traversal of UDP through NATs
;; See http://wiki.freeswitch.org/wiki/NAT_Traversal
;; stun.freeswitch.org is not guaranteed to be running so use it in
;; production at your own risk
; EchoServer = 127.0.0.1
; EchoPort = 50505
; AttemptSTUN = false
; * This is the new style authentication service. Currently, only MySQL ; * This is the new style authentication service. Currently, only MySQL
; * is implemented. ; * is implemented.

View File

@ -28,11 +28,11 @@
[HGInventoryAccessModule] [HGInventoryAccessModule]
ProfileServerURI = "http://127.0.0.1:9000/profiles" ProfileServerURI = "http://127.0.0.1:9000/profiles"
;; If you want to protect your assets from being copied by foreign visitors ;; If you want to protect your assets from being copied by foreign visitors
;; uncomment the next line. You may want to do this on sims that have licensed content. ;; uncomment the next line. You may want to do this on sims that have licensed content.
; OutboundPermission = False ; OutboundPermission = False
[Modules] [Modules]
;; Choose 0 or 1 cache modules, and the corresponding config file, if it exists. ;; Choose 0 or 1 cache modules, and the corresponding config file, if it exists.
;; Copy the config .example file into your own .ini file and change configs there ;; Copy the config .example file into your own .ini file and change configs there
@ -45,16 +45,9 @@
AssetCaching = "CenomeMemoryAssetCache" AssetCaching = "CenomeMemoryAssetCache"
Include-CenomeCache = "config-include/CenomeCache.ini" Include-CenomeCache = "config-include/CenomeCache.ini"
;; Enable this to use Freeswitch on a standalone
;FreeswitchServiceInConnector = True
;; Authorization is not on by default, as it depends on external php ;; Authorization is not on by default, as it depends on external php
;AuthorizationServices = "LocalAuthorizationServicesConnector" ;AuthorizationServices = "LocalAuthorizationServicesConnector"
[FreeswitchService]
;; Configuration for the freeswitch service goes here
LocalServiceModule = "OpenSim.Services.FreeswitchService.dll:FreeswitchService"
[GridService] [GridService]
;; For in-memory region storage (default) ;; For in-memory region storage (default)
StorageProvider = "OpenSim.Data.Null.dll:NullRegionData" StorageProvider = "OpenSim.Data.Null.dll:NullRegionData"
@ -77,7 +70,6 @@
;; change this to the address of your simulator ;; change this to the address of your simulator
Gatekeeper="http://127.0.0.1:9000" Gatekeeper="http://127.0.0.1:9000"
[LibraryModule] [LibraryModule]
; Set this if you want to change the name of the OpenSim Library ; Set this if you want to change the name of the OpenSim Library
;LibraryName = "My World's Library" ;LibraryName = "My World's Library"