Step one of estate settings sharing - port the Avination Estate module (complete module) as changes are too extensive to apply manually
parent
93e1986d69
commit
4c83b5e719
|
@ -243,7 +243,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
|
|
||||||
protected virtual void OnNewClient(IClientAPI client)
|
protected virtual void OnNewClient(IClientAPI client)
|
||||||
{
|
{
|
||||||
client.OnTeleportHomeRequest += TeleportHome;
|
client.OnTeleportHomeRequest += TriggerTeleportHome;
|
||||||
client.OnTeleportLandmarkRequest += RequestTeleportLandmark;
|
client.OnTeleportLandmarkRequest += RequestTeleportLandmark;
|
||||||
|
|
||||||
if (!DisableInterRegionTeleportCancellation)
|
if (!DisableInterRegionTeleportCancellation)
|
||||||
|
@ -1071,7 +1071,12 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
|
|
||||||
#region Teleport Home
|
#region Teleport Home
|
||||||
|
|
||||||
public virtual void TeleportHome(UUID id, IClientAPI client)
|
public virtual void TriggerTeleportHome(UUID id, IClientAPI client)
|
||||||
|
{
|
||||||
|
TeleportHome(id, client);
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual bool TeleportHome(UUID id, IClientAPI client)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[ENTITY TRANSFER MODULE]: Request to teleport {0} {1} home", client.Name, client.AgentId);
|
"[ENTITY TRANSFER MODULE]: Request to teleport {0} {1} home", client.Name, client.AgentId);
|
||||||
|
@ -1086,7 +1091,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
{
|
{
|
||||||
// can't find the Home region: Tell viewer and abort
|
// can't find the Home region: Tell viewer and abort
|
||||||
client.SendTeleportFailed("Your home region could not be found.");
|
client.SendTeleportFailed("Your home region could not be found.");
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Home region of {0} is {1} ({2}-{3})",
|
m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Home region of {0} is {1} ({2}-{3})",
|
||||||
|
@ -1096,6 +1101,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
((Scene)(client.Scene)).RequestTeleportLocation(
|
((Scene)(client.Scene)).RequestTeleportLocation(
|
||||||
client, regionInfo.RegionHandle, uinfo.HomePosition, uinfo.HomeLookAt,
|
client, regionInfo.RegionHandle, uinfo.HomePosition, uinfo.HomeLookAt,
|
||||||
(uint)(Constants.TeleportFlags.SetLastToTarget | Constants.TeleportFlags.ViaHome));
|
(uint)(Constants.TeleportFlags.SetLastToTarget | Constants.TeleportFlags.ViaHome));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1103,6 +1109,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
"[ENTITY TRANSFER MODULE]: No grid user information found for {0} {1}. Cannot send home.",
|
"[ENTITY TRANSFER MODULE]: No grid user information found for {0} {1}. Cannot send home.",
|
||||||
client.Name, client.AgentId);
|
client.Name, client.AgentId);
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
@ -184,7 +184,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
|
|
||||||
protected override void OnNewClient(IClientAPI client)
|
protected override void OnNewClient(IClientAPI client)
|
||||||
{
|
{
|
||||||
client.OnTeleportHomeRequest += TeleportHome;
|
client.OnTeleportHomeRequest += TriggerTeleportHome;
|
||||||
client.OnTeleportLandmarkRequest += RequestTeleportLandmark;
|
client.OnTeleportLandmarkRequest += RequestTeleportLandmark;
|
||||||
client.OnConnectionClosed += new Action<IClientAPI>(OnConnectionClosed);
|
client.OnConnectionClosed += new Action<IClientAPI>(OnConnectionClosed);
|
||||||
}
|
}
|
||||||
|
@ -409,7 +409,12 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
// return base.UpdateAgent(reg, finalDestination, agentData, sp);
|
// return base.UpdateAgent(reg, finalDestination, agentData, sp);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
public override void TeleportHome(UUID id, IClientAPI client)
|
public virtual void TriggerTeleportHome(UUID id, IClientAPI client)
|
||||||
|
{
|
||||||
|
TeleportHome(id, client);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool TeleportHome(UUID id, IClientAPI client)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[ENTITY TRANSFER MODULE]: Request to teleport {0} {1} home", client.Name, client.AgentId);
|
"[ENTITY TRANSFER MODULE]: Request to teleport {0} {1} home", client.Name, client.AgentId);
|
||||||
|
@ -420,8 +425,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
{
|
{
|
||||||
// local grid user
|
// local grid user
|
||||||
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: User is local");
|
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: User is local");
|
||||||
base.TeleportHome(id, client);
|
return base.TeleportHome(id, client);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Foreign user wants to go home
|
// Foreign user wants to go home
|
||||||
|
@ -431,7 +435,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
{
|
{
|
||||||
client.SendTeleportFailed("Your information has been lost");
|
client.SendTeleportFailed("Your information has been lost");
|
||||||
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Unable to locate agent's gateway information");
|
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Unable to locate agent's gateway information");
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
IUserAgentService userAgentService = new UserAgentServiceConnector(aCircuit.ServiceURLs["HomeURI"].ToString());
|
IUserAgentService userAgentService = new UserAgentServiceConnector(aCircuit.ServiceURLs["HomeURI"].ToString());
|
||||||
|
@ -441,7 +445,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
{
|
{
|
||||||
client.SendTeleportFailed("Your home region could not be found");
|
client.SendTeleportFailed("Your home region could not be found");
|
||||||
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Agent's home region not found");
|
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Agent's home region not found");
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ScenePresence sp = ((Scene)(client.Scene)).GetScenePresence(client.AgentId);
|
ScenePresence sp = ((Scene)(client.Scene)).GetScenePresence(client.AgentId);
|
||||||
|
@ -449,7 +453,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
{
|
{
|
||||||
client.SendTeleportFailed("Internal error");
|
client.SendTeleportFailed("Internal error");
|
||||||
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Agent not found in the scene where it is supposed to be");
|
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Agent not found in the scene where it is supposed to be");
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
GridRegion homeGatekeeper = MakeRegion(aCircuit);
|
GridRegion homeGatekeeper = MakeRegion(aCircuit);
|
||||||
|
@ -460,6 +464,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
DoTeleport(
|
DoTeleport(
|
||||||
sp, homeGatekeeper, finalDestination,
|
sp, homeGatekeeper, finalDestination,
|
||||||
position, lookAt, (uint)(Constants.TeleportFlags.SetLastToTarget | Constants.TeleportFlags.ViaHome));
|
position, lookAt, (uint)(Constants.TeleportFlags.SetLastToTarget | Constants.TeleportFlags.ViaHome));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -32,6 +32,7 @@ using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Security;
|
using System.Security;
|
||||||
|
using System.Timers;
|
||||||
using log4net;
|
using log4net;
|
||||||
using Mono.Addins;
|
using Mono.Addins;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
|
@ -48,6 +49,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
|
private Timer m_regionChangeTimer = new Timer();
|
||||||
public Scene Scene { get; private set; }
|
public Scene Scene { get; private set; }
|
||||||
public IUserManagement UserManager { get; private set; }
|
public IUserManagement UserManager { get; private set; }
|
||||||
|
|
||||||
|
@ -65,6 +67,8 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
public event ChangeDelegate OnEstateInfoChange;
|
public event ChangeDelegate OnEstateInfoChange;
|
||||||
public event MessageDelegate OnEstateMessage;
|
public event MessageDelegate OnEstateMessage;
|
||||||
|
|
||||||
|
private int m_delayCount = 0;
|
||||||
|
|
||||||
#region Region Module interface
|
#region Region Module interface
|
||||||
|
|
||||||
public string Name { get { return "EstateManagementModule"; } }
|
public string Name { get { return "EstateManagementModule"; } }
|
||||||
|
@ -114,6 +118,12 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
|
|
||||||
#region Packet Data Responders
|
#region Packet Data Responders
|
||||||
|
|
||||||
|
private void clientSendDetailedEstateData(IClientAPI remote_client, UUID invoice)
|
||||||
|
{
|
||||||
|
sendDetailedEstateData(remote_client, invoice);
|
||||||
|
sendEstateLists(remote_client, invoice);
|
||||||
|
}
|
||||||
|
|
||||||
private void sendDetailedEstateData(IClientAPI remote_client, UUID invoice)
|
private void sendDetailedEstateData(IClientAPI remote_client, UUID invoice)
|
||||||
{
|
{
|
||||||
uint sun = 0;
|
uint sun = 0;
|
||||||
|
@ -136,7 +146,10 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
(uint) Scene.RegionInfo.RegionSettings.CovenantChangedDateTime,
|
(uint) Scene.RegionInfo.RegionSettings.CovenantChangedDateTime,
|
||||||
Scene.RegionInfo.EstateSettings.AbuseEmail,
|
Scene.RegionInfo.EstateSettings.AbuseEmail,
|
||||||
estateOwner);
|
estateOwner);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendEstateLists(IClientAPI remote_client, UUID invoice)
|
||||||
|
{
|
||||||
remote_client.SendEstateList(invoice,
|
remote_client.SendEstateList(invoice,
|
||||||
(int)Constants.EstateAccessCodex.EstateManagers,
|
(int)Constants.EstateAccessCodex.EstateManagers,
|
||||||
Scene.RegionInfo.EstateSettings.EstateManagers,
|
Scene.RegionInfo.EstateSettings.EstateManagers,
|
||||||
|
@ -330,7 +343,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
timeInSeconds -= 15;
|
timeInSeconds -= 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
restartModule.ScheduleRestart(UUID.Zero, "Region will restart in {0}", times.ToArray(), true);
|
restartModule.ScheduleRestart(UUID.Zero, "Region will restart in {0}", times.ToArray(), false);
|
||||||
|
|
||||||
m_log.InfoFormat(
|
m_log.InfoFormat(
|
||||||
"User {0} requested restart of region {1} in {2} seconds",
|
"User {0} requested restart of region {1} in {2} seconds",
|
||||||
|
@ -546,7 +559,11 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
{
|
{
|
||||||
if (!s.IsChildAgent)
|
if (!s.IsChildAgent)
|
||||||
{
|
{
|
||||||
Scene.TeleportClientHome(user, s.ControllingClient);
|
if (!Scene.TeleportClientHome(user, s.ControllingClient))
|
||||||
|
{
|
||||||
|
s.ControllingClient.Kick("Your access to the region was revoked and TP home failed - you have been logged out.");
|
||||||
|
s.ControllingClient.Close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -555,7 +572,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
{
|
{
|
||||||
remote_client.SendAlertMessage("User is already on the region ban list");
|
remote_client.SendAlertMessage("User is already on the region ban list");
|
||||||
}
|
}
|
||||||
//m_scene.RegionInfo.regionBanlist.Add(Manager(user);
|
//Scene.RegionInfo.regionBanlist.Add(Manager(user);
|
||||||
remote_client.SendBannedUserList(invoice, Scene.RegionInfo.EstateSettings.EstateBans, Scene.RegionInfo.EstateSettings.EstateID);
|
remote_client.SendBannedUserList(invoice, Scene.RegionInfo.EstateSettings.EstateBans, Scene.RegionInfo.EstateSettings.EstateID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -611,7 +628,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
remote_client.SendAlertMessage("User is not on the region ban list");
|
remote_client.SendAlertMessage("User is not on the region ban list");
|
||||||
}
|
}
|
||||||
|
|
||||||
//m_scene.RegionInfo.regionBanlist.Add(Manager(user);
|
//Scene.RegionInfo.regionBanlist.Add(Manager(user);
|
||||||
remote_client.SendBannedUserList(invoice, Scene.RegionInfo.EstateSettings.EstateBans, Scene.RegionInfo.EstateSettings.EstateID);
|
remote_client.SendBannedUserList(invoice, Scene.RegionInfo.EstateSettings.EstateBans, Scene.RegionInfo.EstateSettings.EstateID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -777,7 +794,11 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
ScenePresence s = Scene.GetScenePresence(prey);
|
ScenePresence s = Scene.GetScenePresence(prey);
|
||||||
if (s != null)
|
if (s != null)
|
||||||
{
|
{
|
||||||
Scene.TeleportClientHome(prey, s.ControllingClient);
|
if (!Scene.TeleportClientHome(prey, s.ControllingClient))
|
||||||
|
{
|
||||||
|
s.ControllingClient.Kick("You were teleported home by the region owner, but the TP failed - you have been logged out.");
|
||||||
|
s.ControllingClient.Close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -795,7 +816,13 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
// Also make sure they are actually in the region
|
// Also make sure they are actually in the region
|
||||||
ScenePresence p;
|
ScenePresence p;
|
||||||
if(Scene.TryGetScenePresence(client.AgentId, out p))
|
if(Scene.TryGetScenePresence(client.AgentId, out p))
|
||||||
Scene.TeleportClientHome(p.UUID, p.ControllingClient);
|
{
|
||||||
|
if (!Scene.TeleportClientHome(p.UUID, p.ControllingClient))
|
||||||
|
{
|
||||||
|
p.ControllingClient.Kick("You were teleported home by the region owner, but the TP failed - you have been logged out.");
|
||||||
|
p.ControllingClient.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1170,7 +1197,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
|
|
||||||
private void EventManager_OnNewClient(IClientAPI client)
|
private void EventManager_OnNewClient(IClientAPI client)
|
||||||
{
|
{
|
||||||
client.OnDetailedEstateDataRequest += sendDetailedEstateData;
|
client.OnDetailedEstateDataRequest += clientSendDetailedEstateData;
|
||||||
client.OnSetEstateFlagsRequest += estateSetRegionInfoHandler;
|
client.OnSetEstateFlagsRequest += estateSetRegionInfoHandler;
|
||||||
// client.OnSetEstateTerrainBaseTexture += setEstateTerrainBaseTexture;
|
// client.OnSetEstateTerrainBaseTexture += setEstateTerrainBaseTexture;
|
||||||
client.OnSetEstateTerrainDetailTexture += setEstateTerrainBaseTexture;
|
client.OnSetEstateTerrainDetailTexture += setEstateTerrainBaseTexture;
|
||||||
|
@ -1218,8 +1245,6 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
flags |= RegionFlags.NoFly;
|
flags |= RegionFlags.NoFly;
|
||||||
if (Scene.RegionInfo.RegionSettings.RestrictPushing)
|
if (Scene.RegionInfo.RegionSettings.RestrictPushing)
|
||||||
flags |= RegionFlags.RestrictPushObject;
|
flags |= RegionFlags.RestrictPushObject;
|
||||||
if (Scene.RegionInfo.RegionSettings.AllowLandJoinDivide)
|
|
||||||
flags |= RegionFlags.AllowParcelChanges;
|
|
||||||
if (Scene.RegionInfo.RegionSettings.BlockShowInSearch)
|
if (Scene.RegionInfo.RegionSettings.BlockShowInSearch)
|
||||||
flags |= RegionFlags.BlockParcelSearch;
|
flags |= RegionFlags.BlockParcelSearch;
|
||||||
|
|
||||||
|
@ -1229,11 +1254,11 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
flags |= RegionFlags.Sandbox;
|
flags |= RegionFlags.Sandbox;
|
||||||
if (Scene.RegionInfo.EstateSettings.AllowVoice)
|
if (Scene.RegionInfo.EstateSettings.AllowVoice)
|
||||||
flags |= RegionFlags.AllowVoice;
|
flags |= RegionFlags.AllowVoice;
|
||||||
|
if (Scene.RegionInfo.EstateSettings.BlockDwell)
|
||||||
|
flags |= RegionFlags.BlockDwell;
|
||||||
|
if (Scene.RegionInfo.EstateSettings.ResetHomeOnTeleport)
|
||||||
|
flags |= RegionFlags.ResetHomeOnTeleport;
|
||||||
|
|
||||||
// Fudge these to always on, so the menu options activate
|
|
||||||
//
|
|
||||||
flags |= RegionFlags.AllowLandmark;
|
|
||||||
flags |= RegionFlags.AllowSetHome;
|
|
||||||
|
|
||||||
// TODO: SkipUpdateInterestList
|
// TODO: SkipUpdateInterestList
|
||||||
|
|
||||||
|
@ -1293,6 +1318,12 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TriggerRegionInfoChange()
|
public void TriggerRegionInfoChange()
|
||||||
|
{
|
||||||
|
m_regionChangeTimer.Stop();
|
||||||
|
m_regionChangeTimer.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void RaiseRegionInfoChange(object sender, ElapsedEventArgs e)
|
||||||
{
|
{
|
||||||
ChangeDelegate change = OnRegionInfoChange;
|
ChangeDelegate change = OnRegionInfoChange;
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name='id'></param>
|
/// <param name='id'></param>
|
||||||
/// <param name='client'></param>
|
/// <param name='client'></param>
|
||||||
void TeleportHome(UUID id, IClientAPI client);
|
bool TeleportHome(UUID id, IClientAPI client);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Show whether the given agent is being teleported.
|
/// Show whether the given agent is being teleported.
|
||||||
|
|
|
@ -3230,17 +3230,18 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="agentId">The avatar's Unique ID</param>
|
/// <param name="agentId">The avatar's Unique ID</param>
|
||||||
/// <param name="client">The IClientAPI for the client</param>
|
/// <param name="client">The IClientAPI for the client</param>
|
||||||
public virtual void TeleportClientHome(UUID agentId, IClientAPI client)
|
public virtual bool TeleportClientHome(UUID agentId, IClientAPI client)
|
||||||
{
|
{
|
||||||
if (EntityTransferModule != null)
|
if (EntityTransferModule != null)
|
||||||
{
|
{
|
||||||
EntityTransferModule.TeleportHome(agentId, client);
|
return EntityTransferModule.TeleportHome(agentId, client);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[SCENE]: Unable to teleport user home: no AgentTransferModule is active");
|
m_log.DebugFormat("[SCENE]: Unable to teleport user home: no AgentTransferModule is active");
|
||||||
client.SendTeleportFailed("Unable to perform teleports on this simulator.");
|
client.SendTeleportFailed("Unable to perform teleports on this simulator.");
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Reference in New Issue