Enforce estate bans on Teleports.

0.6.3-post-fixes
diva 2009-02-11 21:07:41 +00:00
parent 83105211bc
commit b6e7e5ed42
5 changed files with 293 additions and 253 deletions

View File

@ -80,6 +80,8 @@ namespace OpenSim.Framework
/// <param name="circuitCode"></param>
/// <param name="agentData"></param>
public virtual void AddNewCircuit(uint circuitCode, AgentCircuitData agentData)
{
lock (AgentCircuits)
{
if (AgentCircuits.ContainsKey(circuitCode))
{
@ -90,6 +92,16 @@ namespace OpenSim.Framework
AgentCircuits.Add(circuitCode, agentData);
}
}
}
public virtual void RemoveCircuit(uint circuitCode)
{
lock (AgentCircuits)
{
if (AgentCircuits.ContainsKey(circuitCode))
AgentCircuits.Remove(circuitCode);
}
}
public void UpdateAgentData(AgentCircuitData agentData)
{

View File

@ -538,8 +538,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
"[CLIENT]: Close has been called with shutdownCircuit = {0} for {1} attached to scene {2}",
shutdownCircuit, Name, m_scene.RegionInfo.RegionName);
if (m_imageManager != null)
m_imageManager.Close();
if (m_PacketHandler != null)
m_PacketHandler.Flush();
// raise an event on the packet server to Shutdown the circuit

View File

@ -443,9 +443,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_packetServer.AddNewClient(epSender, useCircuit, m_assetCache, sessionInfo, epProxy);
m_log.DebugFormat(
"[CONNECTION SUCCESS]: Incoming client {0} (circuit code {1}) received and authenticated for {2}",
useCircuit.CircuitCode.ID, useCircuit.CircuitCode.Code, m_localScene.RegionInfo.RegionName);
//m_log.DebugFormat(
// "[CONNECTION SUCCESS]: Incoming client {0} (circuit code {1}) received and authenticated for {2}",
// useCircuit.CircuitCode.ID, useCircuit.CircuitCode.Code, m_localScene.RegionInfo.RegionName);
}
}

View File

@ -2286,6 +2286,32 @@ namespace OpenSim.Region.Framework.Scenes
public override void AddNewClient(IClientAPI client)
{
if (m_regInfo.EstateSettings.IsBanned(client.AgentId))
{
m_log.WarnFormat("[CONNECTION BEGIN]: Denied access to: {0} ({1} {2}) at {3} because the user is on the banlist",
client.AgentId, client.FirstName, client.LastName, RegionInfo.RegionName);
client.SendAlertMessage("Denied access to region " + RegionInfo.RegionName + ". You have been banned from that region.");
try
{
IEventQueue eq = RequestModuleInterface<IEventQueue>();
if (eq != null)
{
eq.DisableSimulator(RegionInfo.RegionHandle, client.AgentId);
}
else
client.SendShutdownConnectionNotice();
client.Close(false);
CapsModule.RemoveCapsHandler(client.AgentId);
m_authenticateHandler.RemoveCircuit(client.CircuitCode);
}
catch (Exception e)
{
m_log.DebugFormat("[SCENE]: Exception while closing banned client {0} {1}: {2}", client.FirstName, client.LastName, e.Message);
}
}
SubscribeToClientEvents(client);
ScenePresence presence;
@ -2803,7 +2829,7 @@ namespace OpenSim.Region.Framework.Scenes
if (m_regInfo.EstateSettings.IsBanned(agent.AgentID))
{
m_log.WarnFormat(
"[CONNECTION BEGIN]: Denied access to: {0} at {1} because the user is on the region banlist",
"[CONNECTION BEGIN]: Incoming user {0} at {1} is on the region banlist",
agent.AgentID, RegionInfo.RegionName);
}