Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
commit
b7c7293c7a
|
@ -56,8 +56,8 @@ namespace OpenSim.Groups
|
|||
private IGroupsServicesConnector m_groupData = null;
|
||||
|
||||
// Config Options
|
||||
private bool m_groupMessagingEnabled = false;
|
||||
private bool m_debugEnabled = true;
|
||||
private bool m_groupMessagingEnabled;
|
||||
private bool m_debugEnabled;
|
||||
|
||||
/// <summary>
|
||||
/// If enabled, module only tries to send group IMs to online users by querying cached presence information.
|
||||
|
@ -120,7 +120,7 @@ namespace OpenSim.Groups
|
|||
return;
|
||||
}
|
||||
|
||||
m_debugEnabled = groupsConfig.GetBoolean("DebugEnabled", true);
|
||||
m_debugEnabled = groupsConfig.GetBoolean("MessagingDebugEnabled", m_debugEnabled);
|
||||
|
||||
m_log.InfoFormat(
|
||||
"[Groups.Messaging]: GroupsMessagingModule enabled with MessageOnlineOnly = {0}, DebugEnabled = {1}",
|
||||
|
@ -140,6 +140,14 @@ namespace OpenSim.Groups
|
|||
scene.EventManager.OnMakeChildAgent += OnMakeChildAgent;
|
||||
scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage;
|
||||
scene.EventManager.OnClientLogin += OnClientLogin;
|
||||
|
||||
scene.AddCommand(
|
||||
"Debug",
|
||||
this,
|
||||
"debug groups messaging verbose",
|
||||
"debug groups messaging verbose <true|false>",
|
||||
"This setting turns on very verbose groups messaging debugging",
|
||||
HandleDebugGroupsMessagingVerbose);
|
||||
}
|
||||
|
||||
public void RegionLoaded(Scene scene)
|
||||
|
@ -227,6 +235,26 @@ namespace OpenSim.Groups
|
|||
|
||||
#endregion
|
||||
|
||||
private void HandleDebugGroupsMessagingVerbose(object modules, string[] args)
|
||||
{
|
||||
if (args.Length < 5)
|
||||
{
|
||||
MainConsole.Instance.Output("Usage: debug groups messaging verbose <true|false>");
|
||||
return;
|
||||
}
|
||||
|
||||
bool verbose = false;
|
||||
if (!bool.TryParse(args[4], out verbose))
|
||||
{
|
||||
MainConsole.Instance.Output("Usage: debug groups messaging verbose <true|false>");
|
||||
return;
|
||||
}
|
||||
|
||||
m_debugEnabled = verbose;
|
||||
|
||||
MainConsole.Instance.OutputFormat("{0} verbose logging set to {1}", Name, m_debugEnabled);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Not really needed, but does confirm that the group exists.
|
||||
/// </summary>
|
||||
|
@ -255,6 +283,8 @@ namespace OpenSim.Groups
|
|||
public void SendMessageToGroup(
|
||||
GridInstantMessage im, UUID groupID, UUID sendingAgentForGroupCalls, Func<GroupMembersData, bool> sendCondition)
|
||||
{
|
||||
int requestStartTick = Environment.TickCount;
|
||||
|
||||
UUID fromAgentID = new UUID(im.fromAgentID);
|
||||
|
||||
// Unlike current XmlRpcGroups, Groups V2 can accept UUID.Zero when a perms check for the requesting agent
|
||||
|
@ -287,8 +317,6 @@ namespace OpenSim.Groups
|
|||
// "[Groups.Messaging]: SendMessageToGroup called for group {0} with {1} visible members, {2} online",
|
||||
// groupID, groupMembersCount, groupMembers.Count());
|
||||
|
||||
int requestStartTick = Environment.TickCount;
|
||||
|
||||
im.imSessionID = groupID.Guid;
|
||||
im.fromGroup = true;
|
||||
IClientAPI thisClient = GetActiveClient(fromAgentID);
|
||||
|
|
|
@ -104,7 +104,7 @@ namespace OpenSim.OfflineIM
|
|||
using (MemoryStream mstream = new MemoryStream())
|
||||
{
|
||||
XmlWriterSettings settings = new XmlWriterSettings();
|
||||
settings.Encoding = Encoding.UTF8;
|
||||
settings.Encoding = Util.UTF8NoBomEncoding;
|
||||
|
||||
using (XmlWriter writer = XmlWriter.Create(mstream, settings))
|
||||
{
|
||||
|
@ -112,7 +112,7 @@ namespace OpenSim.OfflineIM
|
|||
writer.Flush();
|
||||
}
|
||||
|
||||
imXml = Util.UTF8.GetString(mstream.ToArray());
|
||||
imXml = Util.UTF8NoBomEncoding.GetString(mstream.ToArray());
|
||||
}
|
||||
|
||||
OfflineIMData data = new OfflineIMData();
|
||||
|
|
|
@ -321,6 +321,8 @@ namespace OpenSim.Framework
|
|||
Mac = args["mac"].AsString();
|
||||
if (args["id0"] != null)
|
||||
Id0 = args["id0"].AsString();
|
||||
if (args["teleport_flags"] != null)
|
||||
teleportFlags = args["teleport_flags"].AsUInteger();
|
||||
|
||||
if (args["start_pos"] != null)
|
||||
Vector3.TryParse(args["start_pos"].AsString(), out startpos);
|
||||
|
|
|
@ -90,14 +90,14 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.Debug(string.Format("JsonRpc request '{0}' failed", method), e);
|
||||
m_log.Debug(string.Format("JsonRpc request '{0}' to {1} failed", method, uri), e);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!response.ContainsKey("_Result"))
|
||||
{
|
||||
m_log.DebugFormat("JsonRpc request '{0}' returned an invalid response: {1}",
|
||||
method, OSDParser.SerializeJsonString(response));
|
||||
m_log.DebugFormat("JsonRpc request '{0}' to {1} returned an invalid response: {2}",
|
||||
method, uri, OSDParser.SerializeJsonString(response));
|
||||
return false;
|
||||
}
|
||||
response = (OSDMap)response["_Result"];
|
||||
|
@ -107,15 +107,15 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
if (response.ContainsKey("error"))
|
||||
{
|
||||
data = response["error"];
|
||||
m_log.DebugFormat("JsonRpc request '{0}' returned an error: {1}",
|
||||
method, OSDParser.SerializeJsonString(data));
|
||||
m_log.DebugFormat("JsonRpc request '{0}' to {1} returned an error: {2}",
|
||||
method, uri, OSDParser.SerializeJsonString(data));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!response.ContainsKey("result"))
|
||||
{
|
||||
m_log.DebugFormat("JsonRpc request '{0}' returned an invalid response: {1}",
|
||||
method, OSDParser.SerializeJsonString(response));
|
||||
m_log.DebugFormat("JsonRpc request '{0}' to {1} returned an invalid response: {2}",
|
||||
method, uri, OSDParser.SerializeJsonString(response));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -161,14 +161,14 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.Debug(string.Format("JsonRpc request '{0}' failed", method), e);
|
||||
m_log.Debug(string.Format("JsonRpc request '{0}' to {1} failed", method, uri), e);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!response.ContainsKey("_Result"))
|
||||
{
|
||||
m_log.DebugFormat("JsonRpc request '{0}' returned an invalid response: {1}",
|
||||
method, OSDParser.SerializeJsonString(response));
|
||||
m_log.DebugFormat("JsonRpc request '{0}' to {1} returned an invalid response: {2}",
|
||||
method, uri, OSDParser.SerializeJsonString(response));
|
||||
return false;
|
||||
}
|
||||
response = (OSDMap)response["_Result"];
|
||||
|
@ -176,8 +176,8 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
if (response.ContainsKey("error"))
|
||||
{
|
||||
data = response["error"];
|
||||
m_log.DebugFormat("JsonRpc request '{0}' returned an error: {1}",
|
||||
method, OSDParser.SerializeJsonString(data));
|
||||
m_log.DebugFormat("JsonRpc request '{0}' to {1} returned an error: {2}",
|
||||
method, uri, OSDParser.SerializeJsonString(data));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -484,6 +484,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
|
|||
{
|
||||
remoteClient.SendAgentAlertMessage(
|
||||
"Error updating classified", false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -510,6 +511,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
|
|||
{
|
||||
remoteClient.SendAgentAlertMessage(
|
||||
"Error classified delete", false);
|
||||
return;
|
||||
}
|
||||
|
||||
parameters = (OSDMap)Params;
|
||||
|
@ -612,6 +614,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
|
|||
{
|
||||
remoteClient.SendAgentAlertMessage(
|
||||
"Error selecting pick", false);
|
||||
return;
|
||||
}
|
||||
pick = (UserProfilePick) Pick;
|
||||
|
||||
|
@ -714,6 +717,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
|
|||
{
|
||||
remoteClient.SendAgentAlertMessage(
|
||||
"Error updating pick", false);
|
||||
return;
|
||||
}
|
||||
|
||||
m_log.DebugFormat("[PROFILES]: Finish PickInfoUpdate {0} {1}", pick.Name, pick.PickId.ToString());
|
||||
|
@ -740,6 +744,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
|
|||
{
|
||||
remoteClient.SendAgentAlertMessage(
|
||||
"Error picks delete", false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endregion Picks
|
||||
|
@ -807,6 +812,8 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
|
|||
object Note = note;
|
||||
if(!rpc.JsonRpcRequest(ref Note, "avatar_notes_update", serverURI, UUID.Random().ToString()))
|
||||
{
|
||||
remoteClient.SendAgentAlertMessage(
|
||||
"Error updating note", false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -916,6 +923,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
|
|||
{
|
||||
remoteClient.SendAgentAlertMessage(
|
||||
"Error updating interests", false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1044,6 +1052,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
|
|||
{
|
||||
remoteClient.SendAgentAlertMessage(
|
||||
"Error updating properties", false);
|
||||
return;
|
||||
}
|
||||
|
||||
RequestAvatarProperties(remoteClient, newProfile.ID);
|
||||
|
|
|
@ -761,12 +761,12 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
|||
string reason;
|
||||
string version;
|
||||
if (!Scene.SimulationService.QueryAccess(
|
||||
finalDestination, sp.ControllingClient.AgentId, homeURI, position, out version, out reason))
|
||||
finalDestination, sp.ControllingClient.AgentId, homeURI, true, position, out version, out reason))
|
||||
{
|
||||
sp.ControllingClient.SendTeleportFailed(reason);
|
||||
|
||||
m_log.DebugFormat(
|
||||
"[ENTITY TRANSFER MODULE]: {0} was stopped from teleporting from {1} to {2} because {3}",
|
||||
"[ENTITY TRANSFER MODULE]: {0} was stopped from teleporting from {1} to {2} because: {3}",
|
||||
sp.Name, sp.Scene.Name, finalDestination.RegionName, reason);
|
||||
|
||||
return;
|
||||
|
@ -1510,7 +1510,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
|||
|
||||
// Check to see if we have access to the target region.
|
||||
if (neighbourRegion != null
|
||||
&& !scene.SimulationService.QueryAccess(neighbourRegion, agentID, homeURI, newpos, out version, out failureReason))
|
||||
&& !scene.SimulationService.QueryAccess(neighbourRegion, agentID, homeURI, false, newpos, out version, out failureReason))
|
||||
{
|
||||
// remember banned
|
||||
m_bannedRegionCache.Add(neighbourRegion.RegionHandle, agentID);
|
||||
|
|
|
@ -311,9 +311,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
|||
SceneObjectGroup sog = base.RezObject(remoteClient, itemID, RayEnd, RayStart, RayTargetID, BypassRayCast, RayEndIsIntersection,
|
||||
RezSelected, RemoveItem, fromTaskID, attachment);
|
||||
|
||||
if (sog == null)
|
||||
remoteClient.SendAgentAlertMessage("Unable to rez: problem accessing inventory or locating assets", false);
|
||||
|
||||
return sog;
|
||||
|
||||
}
|
||||
|
|
|
@ -797,12 +797,14 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
|||
m_log.WarnFormat(
|
||||
"[InventoryAccessModule]: Could not find asset {0} for item {1} {2} for {3} in RezObject()",
|
||||
assetID, item.Name, item.ID, remoteClient.Name);
|
||||
remoteClient.SendAgentAlertMessage(string.Format("Unable to rez: could not find asset {0} for item {1}.", assetID, item.Name), false);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_log.WarnFormat(
|
||||
"[INVENTORY ACCESS MODULE]: Could not find asset {0} for {1} in RezObject()",
|
||||
assetID, remoteClient.Name);
|
||||
remoteClient.SendAgentAlertMessage(string.Format("Unable to rez: could not find asset {0}.", assetID), false);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -89,35 +89,43 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Authorization
|
|||
public bool IsAuthorizedForRegion(
|
||||
string user, string firstName, string lastName, string regionID, out string message)
|
||||
{
|
||||
message = "authorized";
|
||||
|
||||
// This should not happen
|
||||
if (m_Scene.RegionInfo.RegionID.ToString() != regionID)
|
||||
{
|
||||
m_log.WarnFormat("[AuthorizationService]: Service for region {0} received request to authorize for region {1}",
|
||||
m_Scene.RegionInfo.RegionID, regionID);
|
||||
return true;
|
||||
message = string.Format("Region {0} received request to authorize for region {1}", m_Scene.RegionInfo.RegionID, regionID);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (m_accessValue == AccessFlags.None)
|
||||
{
|
||||
message = "Authorized";
|
||||
return true;
|
||||
}
|
||||
|
||||
UUID userID = new UUID(user);
|
||||
bool authorized = true;
|
||||
if ((m_accessValue & AccessFlags.DisallowForeigners) == AccessFlags.DisallowForeigners)
|
||||
|
||||
if ((m_accessValue & AccessFlags.DisallowForeigners) != 0)
|
||||
{
|
||||
authorized = m_UserManagement.IsLocalGridUser(userID);
|
||||
if (!authorized)
|
||||
message = "no foreigner users allowed in this region";
|
||||
if (!m_UserManagement.IsLocalGridUser(userID))
|
||||
{
|
||||
message = "No foreign users allowed in this region";
|
||||
return false;
|
||||
}
|
||||
if (authorized && (m_accessValue & AccessFlags.DisallowResidents) == AccessFlags.DisallowResidents)
|
||||
{
|
||||
authorized = m_Scene.Permissions.IsGod(userID) | m_Scene.Permissions.IsAdministrator(userID);
|
||||
if (!authorized)
|
||||
message = "only Admins and Managers allowed in this region";
|
||||
}
|
||||
|
||||
return authorized;
|
||||
if ((m_accessValue & AccessFlags.DisallowResidents) != 0)
|
||||
{
|
||||
if (!(m_Scene.Permissions.IsGod(userID) || m_Scene.Permissions.IsAdministrator(userID)))
|
||||
{
|
||||
message = "Only Admins and Managers allowed in this region";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
message = "Authorized";
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -264,7 +264,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
|
|||
return true;
|
||||
}
|
||||
|
||||
public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, Vector3 position, out string version, out string reason)
|
||||
public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, out string version, out string reason)
|
||||
{
|
||||
reason = "Communications failure";
|
||||
version = ServiceVersion;
|
||||
|
@ -277,7 +277,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
|
|||
// "[LOCAL SIMULATION CONNECTOR]: Found region {0} {1} to send AgentUpdate",
|
||||
// s.RegionInfo.RegionName, destination.RegionHandle);
|
||||
|
||||
return m_scenes[destination.RegionID].QueryAccess(agentID, agentHomeURI, position, out reason);
|
||||
return m_scenes[destination.RegionID].QueryAccess(agentID, agentHomeURI, viaTeleport, position, out reason);
|
||||
}
|
||||
|
||||
//m_log.Debug("[LOCAL COMMS]: region not found for QueryAccess");
|
||||
|
|
|
@ -207,7 +207,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
|
|||
return m_remoteConnector.UpdateAgent(destination, cAgentData);
|
||||
}
|
||||
|
||||
public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, Vector3 position, out string version, out string reason)
|
||||
public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, out string version, out string reason)
|
||||
{
|
||||
reason = "Communications failure";
|
||||
version = "Unknown";
|
||||
|
@ -216,12 +216,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
|
|||
return false;
|
||||
|
||||
// Try local first
|
||||
if (m_localBackend.QueryAccess(destination, agentID, agentHomeURI, position, out version, out reason))
|
||||
if (m_localBackend.QueryAccess(destination, agentID, agentHomeURI, viaTeleport, position, out version, out reason))
|
||||
return true;
|
||||
|
||||
// else do the remote thing
|
||||
if (!m_localBackend.IsLocalRegion(destination.RegionID))
|
||||
return m_remoteConnector.QueryAccess(destination, agentID, agentHomeURI, position, out version, out reason);
|
||||
return m_remoteConnector.QueryAccess(destination, agentID, agentHomeURI, viaTeleport, position, out version, out reason);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -143,8 +143,11 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
|||
}
|
||||
|
||||
|
||||
//m_log.DebugFormat("MAP NAME=({0})", mapName);
|
||||
List<GridRegion> regionInfos = m_scene.GridService.GetRegionsByName(m_scene.RegionInfo.ScopeID, mapName, 20);
|
||||
|
||||
string mapNameOrig = mapName;
|
||||
if (regionInfos.Count == 0)
|
||||
{
|
||||
// Hack to get around the fact that ll V3 now drops the port from the
|
||||
// map name. See https://jira.secondlife.com/browse/VWR-28570
|
||||
//
|
||||
|
@ -153,7 +156,6 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
|||
// or url encode if possible.
|
||||
// the hacks we do with this viewer...
|
||||
//
|
||||
string mapNameOrig = mapName;
|
||||
if (mapName.Contains("|"))
|
||||
mapName = mapName.Replace('|', ':');
|
||||
if (mapName.Contains("+"))
|
||||
|
@ -161,10 +163,12 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
|||
if (mapName.Contains("!"))
|
||||
mapName = mapName.Replace('!', '/');
|
||||
|
||||
// try to fetch from GridServer
|
||||
List<GridRegion> regionInfos = m_scene.GridService.GetRegionsByName(m_scene.RegionInfo.ScopeID, mapName, 20);
|
||||
if (mapName != mapNameOrig)
|
||||
regionInfos = m_scene.GridService.GetRegionsByName(m_scene.RegionInfo.ScopeID, mapName, 20);
|
||||
}
|
||||
|
||||
m_log.DebugFormat("[MAPSEARCHMODULE]: search {0} returned {1} regions. Flags={2}", mapName, regionInfos.Count, flags);
|
||||
|
||||
if (regionInfos.Count > 0)
|
||||
{
|
||||
foreach (GridRegion info in regionInfos)
|
||||
|
@ -178,7 +182,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
|||
data.MapImageId = info.TerrainImage;
|
||||
// ugh! V2-3 is very sensitive about the result being
|
||||
// exactly the same as the requested name
|
||||
if (regionInfos.Count == 1 && mapNameOrig.Contains("|") || mapNameOrig.Contains("+"))
|
||||
if (regionInfos.Count == 1 && (mapName != mapNameOrig))
|
||||
data.Name = mapNameOrig;
|
||||
else
|
||||
data.Name = info.RegionName;
|
||||
|
|
|
@ -3865,7 +3865,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
if (!AuthorizationService.IsAuthorizedForRegion(
|
||||
agent.AgentID.ToString(), agent.firstname, agent.lastname, RegionInfo.RegionID.ToString(), out reason))
|
||||
{
|
||||
m_log.WarnFormat("[CONNECTION BEGIN]: Denied access to: {0} ({1} {2}) at {3} because {4}",
|
||||
m_log.WarnFormat("[CONNECTION BEGIN]: Denied access to: {0} ({1} {2}) at {3} because: {4}",
|
||||
agent.AgentID, agent.firstname, agent.lastname, RegionInfo.RegionName, reason);
|
||||
|
||||
return false;
|
||||
|
@ -5463,9 +5463,9 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
/// <param name='position'></param>
|
||||
/// <param name='reason'></param>
|
||||
/// <returns></returns>
|
||||
public bool QueryAccess(UUID agentID, string agentHomeURI, Vector3 position, out string reason)
|
||||
public bool QueryAccess(UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, out string reason)
|
||||
{
|
||||
reason = "You are banned from the region";
|
||||
reason = string.Empty;
|
||||
|
||||
if (Permissions.IsGod(agentID))
|
||||
{
|
||||
|
@ -5525,10 +5525,11 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
catch (Exception e)
|
||||
{
|
||||
m_log.DebugFormat("[SCENE]: Exception authorizing agent: {0} "+ e.StackTrace, e.Message);
|
||||
reason = "Error authorizing agent: " + e.Message;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (position == Vector3.Zero) // Teleport
|
||||
if (viaTeleport)
|
||||
{
|
||||
if (!RegionInfo.EstateSettings.AllowDirectTeleport)
|
||||
{
|
||||
|
@ -5568,6 +5569,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
if (!TestLandRestrictions(agentID, out reason, ref posX, ref posY))
|
||||
{
|
||||
// m_log.DebugFormat("[SCENE]: Denying {0} because they are banned on all parcels", agentID);
|
||||
reason = "You are banned from the region on all parcels";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -5575,14 +5577,23 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
{
|
||||
ILandObject land = LandChannel.GetLandObject(position.X, position.Y);
|
||||
if (land == null)
|
||||
{
|
||||
reason = "No parcel found";
|
||||
return false;
|
||||
}
|
||||
|
||||
bool banned = land.IsBannedFromLand(agentID);
|
||||
bool restricted = land.IsRestrictedFromLand(agentID);
|
||||
|
||||
if (banned || restricted)
|
||||
{
|
||||
if (banned)
|
||||
reason = "You are banned from the parcel";
|
||||
else
|
||||
reason = "The parcel is restricted";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
reason = String.Empty;
|
||||
return true;
|
||||
|
|
|
@ -751,7 +751,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
Vector3 bbox;
|
||||
float offsetHeight;
|
||||
|
||||
bool single = m_part.ParentGroup.Scene.GetObjectsToRez(rezAsset.Data, false, out objlist, out veclist, out bbox, out offsetHeight);
|
||||
m_part.ParentGroup.Scene.GetObjectsToRez(rezAsset.Data, false, out objlist, out veclist, out bbox, out offsetHeight);
|
||||
|
||||
for (int i = 0; i < objlist.Count; i++)
|
||||
{
|
||||
|
|
|
@ -208,7 +208,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
// private int m_lastColCount = -1; //KF: Look for Collision chnages
|
||||
// private int m_updateCount = 0; //KF: Update Anims for a while
|
||||
// private static readonly int UPDATE_COUNT = 10; // how many frames to update for
|
||||
private List<uint> m_lastColliders = new List<uint>();
|
||||
|
||||
private TeleportFlags m_teleportFlags;
|
||||
public TeleportFlags TeleportFlags
|
||||
|
@ -271,8 +270,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
//private int m_moveToPositionStateStatus;
|
||||
//*****************************************************
|
||||
|
||||
private object m_collisionEventLock = new Object();
|
||||
|
||||
private int m_movementAnimationUpdateCounter = 0;
|
||||
|
||||
public Vector3 PrevSitOffset { get; set; }
|
||||
|
@ -3777,10 +3774,15 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
if (!IsChildAgent)
|
||||
return;
|
||||
|
||||
//m_log.Debug(" >>> ChildAgentPositionUpdate <<< " + rRegionX + "-" + rRegionY);
|
||||
// m_log.DebugFormat(
|
||||
// "[SCENE PRESENCE]: ChildAgentPositionUpdate for {0} in {1}, tRegion {2},{3}, rRegion {4},{5}, pos {6}",
|
||||
// Name, Scene.Name, tRegionX, tRegionY, rRegionX, rRegionY, cAgentData.Position);
|
||||
|
||||
// Find the distance (in meters) between the two regions
|
||||
uint shiftx = Util.RegionToWorldLoc(rRegionX - tRegionX);
|
||||
uint shifty = Util.RegionToWorldLoc(rRegionY - tRegionY);
|
||||
// XXX: We cannot use Util.RegionLocToHandle() here because a negative value will silently overflow the
|
||||
// uint
|
||||
int shiftx = (int)(((int)rRegionX - (int)tRegionX) * Constants.RegionSize);
|
||||
int shifty = (int)(((int)rRegionY - (int)tRegionY) * Constants.RegionSize);
|
||||
|
||||
Vector3 offset = new Vector3(shiftx, shifty, 0f);
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
{
|
||||
public static class OpenSimTerrainCompressor
|
||||
{
|
||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
#pragma warning disable 414
|
||||
private static string LogHeader = "[TERRAIN COMPRESSOR]";
|
||||
|
|
|
@ -55,8 +55,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
private IGroupsServicesConnector m_groupData = null;
|
||||
|
||||
// Config Options
|
||||
private bool m_groupMessagingEnabled = false;
|
||||
private bool m_debugEnabled = true;
|
||||
private bool m_groupMessagingEnabled;
|
||||
private bool m_debugEnabled;
|
||||
|
||||
/// <summary>
|
||||
/// If enabled, module only tries to send group IMs to online users by querying cached presence information.
|
||||
|
@ -113,7 +113,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
if (m_messageOnlineAgentsOnly)
|
||||
m_usersOnlineCache = new ExpiringCache<UUID, PresenceInfo[]>();
|
||||
|
||||
m_debugEnabled = groupsConfig.GetBoolean("DebugEnabled", true);
|
||||
m_debugEnabled = groupsConfig.GetBoolean("MessagingDebugEnabled", m_debugEnabled);
|
||||
}
|
||||
|
||||
m_log.InfoFormat(
|
||||
|
@ -127,6 +127,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
return;
|
||||
|
||||
scene.RegisterModuleInterface<IGroupsMessagingModule>(this);
|
||||
|
||||
scene.AddCommand(
|
||||
"Debug",
|
||||
this,
|
||||
"debug groups messaging verbose",
|
||||
"debug groups messaging verbose <true|false>",
|
||||
"This setting turns on very verbose groups messaging debugging",
|
||||
HandleDebugGroupsMessagingVerbose);
|
||||
}
|
||||
|
||||
public void RegionLoaded(Scene scene)
|
||||
|
@ -218,6 +226,26 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
|
||||
#endregion
|
||||
|
||||
private void HandleDebugGroupsMessagingVerbose(object modules, string[] args)
|
||||
{
|
||||
if (args.Length < 5)
|
||||
{
|
||||
MainConsole.Instance.Output("Usage: debug groups messaging verbose <true|false>");
|
||||
return;
|
||||
}
|
||||
|
||||
bool verbose = false;
|
||||
if (!bool.TryParse(args[4], out verbose))
|
||||
{
|
||||
MainConsole.Instance.Output("Usage: debug groups messaging verbose <true|false>");
|
||||
return;
|
||||
}
|
||||
|
||||
m_debugEnabled = verbose;
|
||||
|
||||
MainConsole.Instance.OutputFormat("{0} verbose logging set to {1}", Name, m_debugEnabled);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Not really needed, but does confirm that the group exists.
|
||||
/// </summary>
|
||||
|
@ -246,6 +274,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
public void SendMessageToGroup(
|
||||
GridInstantMessage im, UUID groupID, UUID sendingAgentForGroupCalls, Func<GroupMembersData, bool> sendCondition)
|
||||
{
|
||||
int requestStartTick = Environment.TickCount;
|
||||
|
||||
List<GroupMembersData> groupMembers = m_groupData.GetGroupMembers(sendingAgentForGroupCalls, groupID);
|
||||
int groupMembersCount = groupMembers.Count;
|
||||
HashSet<string> attemptDeliveryUuidSet = null;
|
||||
|
@ -287,8 +317,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
groupID, groupMembers.Count);
|
||||
}
|
||||
|
||||
int requestStartTick = Environment.TickCount;
|
||||
|
||||
foreach (GroupMembersData member in groupMembers)
|
||||
{
|
||||
if (sendCondition != null)
|
||||
|
@ -315,7 +343,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
|
||||
// Copy Message
|
||||
GridInstantMessage msg = new GridInstantMessage();
|
||||
msg.imSessionID = groupID.Guid;
|
||||
msg.imSessionID = im.imSessionID;
|
||||
msg.fromAgentName = im.fromAgentName;
|
||||
msg.message = im.message;
|
||||
msg.dialog = im.dialog;
|
||||
|
@ -336,27 +364,45 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
IClientAPI client = GetActiveClient(member.AgentID);
|
||||
if (client == null)
|
||||
{
|
||||
int startTick = Environment.TickCount;
|
||||
|
||||
// If they're not local, forward across the grid
|
||||
if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Delivering to {0} via Grid", member.AgentID);
|
||||
m_msgTransferModule.SendInstantMessage(msg, delegate(bool success) { });
|
||||
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat(
|
||||
"[GROUPS-MESSAGING]: Delivering to {0} via grid took {1} ms",
|
||||
member.AgentID, Environment.TickCount - startTick);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Deliver locally, directly
|
||||
if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Passing to ProcessMessageFromGroupSession to deliver to {0} locally", client.Name);
|
||||
int startTick = Environment.TickCount;
|
||||
|
||||
ProcessMessageFromGroupSession(msg, client);
|
||||
|
||||
// Deliver locally, directly
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat(
|
||||
"[GROUPS-MESSAGING]: Delivering to {0} locally took {1} ms",
|
||||
member.AgentID, Environment.TickCount - startTick);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int startTick = Environment.TickCount;
|
||||
|
||||
m_msgTransferModule.HandleUndeliverableMessage(msg, delegate(bool success) { });
|
||||
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat(
|
||||
"[GROUPS-MESSAGING]: Handling undeliverable message for {0} took {1} ms",
|
||||
member.AgentID, Environment.TickCount - startTick);
|
||||
}
|
||||
}
|
||||
|
||||
// Temporary for assessing how long it still takes to send messages to large online groups.
|
||||
if (m_messageOnlineAgentsOnly)
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat(
|
||||
"[GROUPS-MESSAGING]: SendMessageToGroup for group {0} with {1} members, {2} candidates for delivery took {3}ms",
|
||||
"[GROUPS-MESSAGING]: Total SendMessageToGroup for group {0} with {1} members, {2} candidates for delivery took {3} ms",
|
||||
groupID, groupMembersCount, attemptDeliveryUuidSet.Count(), Environment.TickCount - requestStartTick);
|
||||
}
|
||||
|
||||
|
@ -420,7 +466,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
|
||||
private void ProcessMessageFromGroupSession(GridInstantMessage msg, IClientAPI client)
|
||||
{
|
||||
if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Session message from {0} going to agent {1}", msg.fromAgentName, msg.toAgentID);
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat(
|
||||
"[GROUPS-MESSAGING]: Session message from {0} going to agent {1}, sessionID {2}, type {3}",
|
||||
msg.fromAgentName, msg.toAgentID, msg.imSessionID, (InstantMessageDialog)msg.dialog);
|
||||
|
||||
UUID AgentID = new UUID(msg.fromAgentID);
|
||||
UUID GroupID = new UUID(msg.imSessionID);
|
||||
|
@ -588,15 +637,15 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
// Don't log any normal IMs (privacy!)
|
||||
if (m_debugEnabled && im.dialog != (byte)InstantMessageDialog.MessageFromAgent)
|
||||
{
|
||||
m_log.WarnFormat("[GROUPS-MESSAGING]: IM: fromGroup({0})", im.fromGroup ? "True" : "False");
|
||||
m_log.WarnFormat("[GROUPS-MESSAGING]: IM: Dialog({0})", (InstantMessageDialog)im.dialog);
|
||||
m_log.WarnFormat("[GROUPS-MESSAGING]: IM: fromAgentID({0})", im.fromAgentID);
|
||||
m_log.WarnFormat("[GROUPS-MESSAGING]: IM: fromAgentName({0})", im.fromAgentName);
|
||||
m_log.WarnFormat("[GROUPS-MESSAGING]: IM: imSessionID({0})", im.imSessionID);
|
||||
m_log.WarnFormat("[GROUPS-MESSAGING]: IM: message({0})", im.message);
|
||||
m_log.WarnFormat("[GROUPS-MESSAGING]: IM: offline({0})", im.offline);
|
||||
m_log.WarnFormat("[GROUPS-MESSAGING]: IM: toAgentID({0})", im.toAgentID);
|
||||
m_log.WarnFormat("[GROUPS-MESSAGING]: IM: binaryBucket({0})", OpenMetaverse.Utils.BytesToHexString(im.binaryBucket, "BinaryBucket"));
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: IM: fromGroup({0})", im.fromGroup ? "True" : "False");
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: IM: Dialog({0})", (InstantMessageDialog)im.dialog);
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: IM: fromAgentID({0})", im.fromAgentID);
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: IM: fromAgentName({0})", im.fromAgentName);
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: IM: imSessionID({0})", im.imSessionID);
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: IM: message({0})", im.message);
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: IM: offline({0})", im.offline);
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: IM: toAgentID({0})", im.toAgentID);
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: IM: binaryBucket({0})", OpenMetaverse.Utils.BytesToHexString(im.binaryBucket, "BinaryBucket"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -607,7 +656,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
/// </summary>
|
||||
private IClientAPI GetActiveClient(UUID agentID)
|
||||
{
|
||||
if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Looking for local client {0}", agentID);
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: Looking for local client {0}", agentID);
|
||||
|
||||
IClientAPI child = null;
|
||||
|
||||
|
@ -619,12 +669,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
{
|
||||
if (!sp.IsChildAgent)
|
||||
{
|
||||
if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Found root agent for client : {0}", sp.ControllingClient.Name);
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: Found root agent for client : {0}", sp.ControllingClient.Name);
|
||||
|
||||
return sp.ControllingClient;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Found child agent for client : {0}", sp.ControllingClient.Name);
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: Found child agent for client : {0}", sp.ControllingClient.Name);
|
||||
|
||||
child = sp.ControllingClient;
|
||||
}
|
||||
}
|
||||
|
@ -633,12 +687,15 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
// If we didn't find a root, then just return whichever child we found, or null if none
|
||||
if (child == null)
|
||||
{
|
||||
if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Could not find local client for agent : {0}", agentID);
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: Could not find local client for agent : {0}", agentID);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Returning child agent for client : {0}", child.Name);
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: Returning child agent for client : {0}", child.Name);
|
||||
}
|
||||
|
||||
return child;
|
||||
}
|
||||
|
||||
|
|
|
@ -357,7 +357,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
|
||||
private void OnInstantMessage(IClientAPI remoteClient, GridInstantMessage im)
|
||||
{
|
||||
if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat(
|
||||
"[GROUPS]: {0} called for {1}, message type {2}",
|
||||
System.Reflection.MethodBase.GetCurrentMethod().Name, remoteClient.Name, (InstantMessageDialog)im.dialog);
|
||||
|
||||
// Group invitations
|
||||
if ((im.dialog == (byte)InstantMessageDialog.GroupInvitationAccept) || (im.dialog == (byte)InstantMessageDialog.GroupInvitationDecline))
|
||||
|
@ -551,6 +554,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
|
||||
UUID noticeID = new UUID(im.imSessionID);
|
||||
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat("[GROUPS]: Requesting notice {0} for {1}", noticeID, remoteClient.AgentId);
|
||||
|
||||
GroupNoticeInfo notice = m_groupData.GetGroupNotice(GetRequestingAgentID(remoteClient), noticeID);
|
||||
if (notice != null)
|
||||
{
|
||||
|
@ -572,6 +578,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
|
||||
remoteClient.SendInventoryItemCreateUpdate(itemCopy, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat(
|
||||
"[GROUPS]: Could not find notice {0} for {1} on GroupNoticeInventoryAccepted.",
|
||||
noticeID, remoteClient.AgentId);
|
||||
}
|
||||
}
|
||||
|
||||
// Interop, received special 210 code for ejecting a group member
|
||||
|
|
|
@ -132,6 +132,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups.Tests
|
|||
MessageTransferModule mtm = new MessageTransferModule();
|
||||
GroupsModule gm = new GroupsModule();
|
||||
GroupsMessagingModule gmm = new GroupsMessagingModule();
|
||||
MockGroupsServicesConnector mgsc = new MockGroupsServicesConnector();
|
||||
|
||||
IConfigSource configSource = new IniConfigSource();
|
||||
|
||||
|
@ -149,7 +150,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups.Tests
|
|||
config.Set("MessagingEnabled", true);
|
||||
}
|
||||
|
||||
SceneHelpers.SetupSceneModules(scene, configSource, new MockGroupsServicesConnector(), mtm, gm, gmm);
|
||||
SceneHelpers.SetupSceneModules(scene, configSource, mgsc, mtm, gm, gmm);
|
||||
|
||||
UUID userId = TestHelpers.ParseTail(0x1);
|
||||
string subjectText = "newman";
|
||||
|
@ -185,6 +186,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups.Tests
|
|||
Assert.That(spReceivedMessages.Count, Is.EqualTo(1));
|
||||
Assert.That(spReceivedMessages[0].message, Is.EqualTo(combinedSubjectMessage));
|
||||
|
||||
List<GroupNoticeData> notices = mgsc.GetGroupNotices(UUID.Zero, groupID);
|
||||
Assert.AreEqual(1, notices.Count);
|
||||
|
||||
// OpenSimulator (possibly also SL) transport the notice ID as the session ID!
|
||||
Assert.AreEqual(notices[0].NoticeID.Guid, spReceivedMessages[0].imSessionID);
|
||||
|
||||
Assert.That(sp2ReceivedMessages.Count, Is.EqualTo(0));
|
||||
}
|
||||
|
||||
|
|
|
@ -132,6 +132,10 @@ namespace OpenSim.Server.Handlers.Simulation
|
|||
// m_log.DebugFormat("[AGENT HANDLER]: Received QUERYACCESS with {0}", (string)request["body"]);
|
||||
OSDMap args = Utils.GetOSDMap((string)request["body"]);
|
||||
|
||||
bool viaTeleport = true;
|
||||
if (args.ContainsKey("viaTeleport"))
|
||||
viaTeleport = args["viaTeleport"].AsBoolean();
|
||||
|
||||
Vector3 position = Vector3.Zero;
|
||||
if (args.ContainsKey("position"))
|
||||
position = Vector3.Parse(args["position"].AsString());
|
||||
|
@ -145,7 +149,7 @@ namespace OpenSim.Server.Handlers.Simulation
|
|||
|
||||
string reason;
|
||||
string version;
|
||||
bool result = m_SimulationService.QueryAccess(destination, agentID, agentHomeURI, position, out version, out reason);
|
||||
bool result = m_SimulationService.QueryAccess(destination, agentID, agentHomeURI, viaTeleport, position, out version, out reason);
|
||||
|
||||
responsedata["int_response_code"] = HttpStatusCode.OK;
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ namespace OpenSim.Services.Connectors
|
|||
catch (Exception e)
|
||||
{
|
||||
m_log.WarnFormat("[AUTHORIZATION CONNECTOR]: Unable to send authorize {0} for region {1} error thrown during comms with remote server. Reason: {2}", userID, regionID, e.Message);
|
||||
message = "";
|
||||
message = e.Message;
|
||||
return m_ResponseOnFailure;
|
||||
}
|
||||
if (response == null)
|
||||
|
|
|
@ -282,7 +282,7 @@ namespace OpenSim.Services.Connectors.Simulation
|
|||
}
|
||||
|
||||
|
||||
public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, Vector3 position, out string version, out string reason)
|
||||
public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, out string version, out string reason)
|
||||
{
|
||||
reason = "Failed to contact destination";
|
||||
version = "Unknown";
|
||||
|
@ -296,6 +296,7 @@ namespace OpenSim.Services.Connectors.Simulation
|
|||
string uri = destination.ServerURI + AgentPath() + agentID + "/" + destination.RegionID.ToString() + "/";
|
||||
|
||||
OSDMap request = new OSDMap();
|
||||
request.Add("viaTeleport", OSD.FromBoolean(viaTeleport));
|
||||
request.Add("position", OSD.FromString(position.ToString()));
|
||||
if (agentHomeURI != null)
|
||||
request.Add("agent_home_uri", OSD.FromString(agentHomeURI));
|
||||
|
|
|
@ -249,7 +249,7 @@ namespace OpenSim.Services.HypergridService
|
|||
|
||||
if (!IsWithinSuitcaseTree(principalID, folderID))
|
||||
{
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: GetFolderContent: folder {0} is not within Suitcase tree", folderID);
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: GetFolderContent: folder {0} (user {1}) is not within Suitcase tree", folderID, principalID);
|
||||
return new InventoryCollection();
|
||||
}
|
||||
|
||||
|
@ -269,7 +269,7 @@ namespace OpenSim.Services.HypergridService
|
|||
// make sure the given folder exists under the suitcase tree of this user
|
||||
if (!IsWithinSuitcaseTree(principalID, folderID))
|
||||
{
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: GetFolderItems: folder {0} is not within Suitcase tree", folderID);
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: GetFolderItems: folder {0} (user {1}) is not within Suitcase tree", folderID, principalID);
|
||||
return new List<InventoryItemBase>();
|
||||
}
|
||||
|
||||
|
@ -284,7 +284,7 @@ namespace OpenSim.Services.HypergridService
|
|||
|
||||
if (!IsWithinSuitcaseTree(folder.Owner, folder.ParentID))
|
||||
{
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: AddFolder: folder {0} is not within Suitcase tree", folder.ParentID);
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: AddFolder: folder {0} (user {1}) is not within Suitcase tree", folder.ParentID, folder.Owner);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -306,7 +306,7 @@ namespace OpenSim.Services.HypergridService
|
|||
//m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: Update folder {0}, version {1}", folder.ID, folder.Version);
|
||||
if (!IsWithinSuitcaseTree(folder.Owner, folder.ID))
|
||||
{
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: UpdateFolder: folder {0}/{1} is not within Suitcase tree", folder.Name, folder.ID);
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: UpdateFolder: folder {0}/{1} (user {2}) is not within Suitcase tree", folder.Name, folder.ID, folder.Owner);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -318,13 +318,13 @@ namespace OpenSim.Services.HypergridService
|
|||
{
|
||||
if (!IsWithinSuitcaseTree(folder.Owner, folder.ID))
|
||||
{
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: MoveFolder: folder {0} is not within Suitcase tree", folder.ID);
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: MoveFolder: folder {0} (user {1}) is not within Suitcase tree", folder.ID, folder.Owner);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!IsWithinSuitcaseTree(folder.Owner, folder.ParentID))
|
||||
{
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: MoveFolder: folder {0} is not within Suitcase tree", folder.ParentID);
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: MoveFolder: folder {0} (user {1}) is not within Suitcase tree", folder.ParentID, folder.Owner);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -349,7 +349,7 @@ namespace OpenSim.Services.HypergridService
|
|||
// make sure the given folder's parent folder exists under the suitcase tree of this user
|
||||
if (!IsWithinSuitcaseTree(item.Owner, item.Folder))
|
||||
{
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: AddItem: folder {0} is not within Suitcase tree", item.Folder);
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: AddItem: folder {0} (user {1}) is not within Suitcase tree", item.Folder, item.Owner);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -362,7 +362,7 @@ namespace OpenSim.Services.HypergridService
|
|||
{
|
||||
if (!IsWithinSuitcaseTree(item.Owner, item.Folder))
|
||||
{
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: UpdateItem: folder {0} is not within Suitcase tree", item.Folder);
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: UpdateItem: folder {0} (user {1}) is not within Suitcase tree", item.Folder, item.Owner);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -378,7 +378,7 @@ namespace OpenSim.Services.HypergridService
|
|||
{
|
||||
if (!IsWithinSuitcaseTree(item.Owner, item.Folder))
|
||||
{
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: MoveItems: folder {0} is not within Suitcase tree", item.Folder);
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: MoveItems: folder {0} (user {1}) is not within Suitcase tree", item.Folder, item.Owner);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -389,7 +389,7 @@ namespace OpenSim.Services.HypergridService
|
|||
InventoryItemBase originalItem = base.GetItem(item);
|
||||
if (!IsWithinSuitcaseTree(originalItem.Owner, originalItem.Folder))
|
||||
{
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: MoveItems: folder {0} is not within Suitcase tree", originalItem.Folder);
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: MoveItems: folder {0} (user {1}) is not within Suitcase tree", item.Folder, item.Owner);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -414,8 +414,8 @@ namespace OpenSim.Services.HypergridService
|
|||
|
||||
if (!IsWithinSuitcaseTree(it.Owner, it.Folder) && !IsPartOfAppearance(it.Owner, it.ID))
|
||||
{
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: Item {0}/{1} (folder {2}) is not within Suitcase tree or Appearance",
|
||||
it.Name, it.ID, it.Folder);
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: GetItem: item {0}/{1} (folder {2}) (user {3}) is not within Suitcase tree or Appearance",
|
||||
it.Name, it.ID, it.Folder, it.Owner);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -437,8 +437,8 @@ namespace OpenSim.Services.HypergridService
|
|||
{
|
||||
if (!IsWithinSuitcaseTree(f.Owner, f.ID))
|
||||
{
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: Folder {0}/{1} is not within Suitcase tree",
|
||||
f.Name, f.ID);
|
||||
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: GetFolder: folder {0}/{1} (user {2}) is not within Suitcase tree",
|
||||
f.Name, f.ID, f.Owner);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,11 +83,12 @@ namespace OpenSim.Services.Interfaces
|
|||
/// <param name="destination">Desired destination</param>
|
||||
/// <param name="agentID">The visitor's User ID</param>
|
||||
/// <param name="agentHomeURI">The visitor's Home URI. Will be missing (null) in older OpenSims.</param>
|
||||
/// <param name="viaTeleport">True: via teleport; False: via cross (walking)</param>
|
||||
/// <param name="position">Position in the region</param>
|
||||
/// <param name="version"></param>
|
||||
/// <param name="reason">[out] Optional error message</param>
|
||||
/// <returns>True: ok; False: not allowed</returns>
|
||||
bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, Vector3 position, out string version, out string reason);
|
||||
bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, out string version, out string reason);
|
||||
|
||||
/// <summary>
|
||||
/// Message from receiving region to departing region, telling it got contacted by the client.
|
||||
|
|
|
@ -324,7 +324,29 @@ namespace OpenSim.Tests.Common.Mock
|
|||
|
||||
public List<GroupNoticeData> GetGroupNotices(UUID requestingAgentID, UUID groupID)
|
||||
{
|
||||
XGroup group = GetXGroup(groupID, null);
|
||||
|
||||
if (group == null)
|
||||
return null;
|
||||
|
||||
List<GroupNoticeData> notices = new List<GroupNoticeData>();
|
||||
|
||||
foreach (XGroupNotice notice in group.notices.Values)
|
||||
{
|
||||
GroupNoticeData gnd = new GroupNoticeData()
|
||||
{
|
||||
NoticeID = notice.noticeID,
|
||||
Timestamp = notice.timestamp,
|
||||
FromName = notice.fromName,
|
||||
Subject = notice.subject,
|
||||
HasAttachment = notice.hasAttachment,
|
||||
AssetType = (byte)notice.assetType
|
||||
};
|
||||
|
||||
notices.Add(gnd);
|
||||
}
|
||||
|
||||
return notices;
|
||||
}
|
||||
|
||||
public GroupNoticeInfo GetGroupNotice(UUID requestingAgentID, UUID noticeID)
|
||||
|
|
|
@ -1033,9 +1033,12 @@
|
|||
; Applies Flotsam Group only. V2 has this always on, no other option
|
||||
; MessageOnlineUsersOnly = false
|
||||
|
||||
;; This makes the Groups modules very chatty on the console.
|
||||
;; This makes the Group module very chatty on the console.
|
||||
; DebugEnabled = false
|
||||
|
||||
; This makes the Group Messaging module very chatty on the console.
|
||||
; DebugMessagingEnabled = false
|
||||
|
||||
;; XmlRpc Security settings. These must match those set on your backend
|
||||
;; groups service if the service is using these keys
|
||||
; XmlRpcServiceReadKey = 1234
|
||||
|
|
|
@ -1661,9 +1661,12 @@
|
|||
; Enable Group Notices
|
||||
;NoticesEnabled = true
|
||||
|
||||
; This makes the Groups modules very chatty on the console.
|
||||
; This makes the Group module very chatty on the console.
|
||||
DebugEnabled = false
|
||||
|
||||
; This makes the Groups Messaging module very chatty on the console.
|
||||
DebugMessagingEnabled = false
|
||||
|
||||
; Groups data is cached for this number of seconds before another request is made to the groups service
|
||||
; Set to 0 to disable the cache.
|
||||
; Default is 30 seconds
|
||||
|
|
Loading…
Reference in New Issue