Merge branch 'avination-current' of ssh://3dhosting.de/var/git/careminster into avination-current
commit
fc1bd4567d
|
@ -41,6 +41,7 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
// "Out of band" managemnt https
|
// "Out of band" managemnt https
|
||||||
public bool ssl_listener = false;
|
public bool ssl_listener = false;
|
||||||
|
public bool ssl_external = false;
|
||||||
public uint https_port = 0;
|
public uint https_port = 0;
|
||||||
public string cert_path = String.Empty;
|
public string cert_path = String.Empty;
|
||||||
public string cert_pass = String.Empty;
|
public string cert_pass = String.Empty;
|
||||||
|
@ -64,6 +65,7 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
// "Out of band management https"
|
// "Out of band management https"
|
||||||
ssl_listener = config.Configs["Network"].GetBoolean("https_listener",false);
|
ssl_listener = config.Configs["Network"].GetBoolean("https_listener",false);
|
||||||
|
ssl_external = config.Configs["Network"].GetBoolean("https_external",false);
|
||||||
if( ssl_listener)
|
if( ssl_listener)
|
||||||
{
|
{
|
||||||
cert_path = config.Configs["Network"].GetString("cert_path",String.Empty);
|
cert_path = config.Configs["Network"].GetString("cert_path",String.Empty);
|
||||||
|
|
|
@ -224,10 +224,12 @@ namespace OpenSim.Framework
|
||||||
//
|
//
|
||||||
public RegionInfo(string description, XmlNode xmlNode, bool skipConsoleConfig, IConfigSource configSource)
|
public RegionInfo(string description, XmlNode xmlNode, bool skipConsoleConfig, IConfigSource configSource)
|
||||||
{
|
{
|
||||||
// m_configSource = configSource;
|
XmlElement elem = (XmlElement)xmlNode;
|
||||||
configMember =
|
string name = elem.GetAttribute("Name");
|
||||||
new ConfigurationMember(xmlNode, description, loadConfigurationOptions, handleIncomingConfiguration, !skipConsoleConfig);
|
string xmlstr = "<Nini>" + xmlNode.OuterXml + "</Nini>";
|
||||||
configMember.performConfigurationRetrieve();
|
XmlConfigSource source = new XmlConfigSource(XmlReader.Create(new StringReader(xmlstr)));
|
||||||
|
ReadNiniConfig(source, name);
|
||||||
|
|
||||||
m_serverURI = string.Empty;
|
m_serverURI = string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -93,8 +93,8 @@ namespace OpenSim.Framework.RegionLoader.Web
|
||||||
xmlSource.Length);
|
xmlSource.Length);
|
||||||
XmlDocument xmlDoc = new XmlDocument();
|
XmlDocument xmlDoc = new XmlDocument();
|
||||||
xmlDoc.LoadXml(xmlSource);
|
xmlDoc.LoadXml(xmlSource);
|
||||||
if (xmlDoc.FirstChild.Name == "Regions")
|
if (xmlDoc.FirstChild.Name == "Nini")
|
||||||
{
|
{
|
||||||
regionCount = xmlDoc.FirstChild.ChildNodes.Count;
|
regionCount = xmlDoc.FirstChild.ChildNodes.Count;
|
||||||
|
|
||||||
if (regionCount > 0)
|
if (regionCount > 0)
|
||||||
|
|
|
@ -2233,9 +2233,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
public void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle)
|
public void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle)
|
||||||
{
|
{
|
||||||
m_activeGroupID = activegroupid;
|
if (agentid == AgentId)
|
||||||
m_activeGroupName = groupname;
|
{
|
||||||
m_activeGroupPowers = grouppowers;
|
m_activeGroupID = activegroupid;
|
||||||
|
m_activeGroupName = groupname;
|
||||||
|
m_activeGroupPowers = grouppowers;
|
||||||
|
}
|
||||||
|
|
||||||
AgentDataUpdatePacket sendAgentDataUpdate = (AgentDataUpdatePacket)PacketPool.Instance.GetPacket(PacketType.AgentDataUpdate);
|
AgentDataUpdatePacket sendAgentDataUpdate = (AgentDataUpdatePacket)PacketPool.Instance.GetPacket(PacketType.AgentDataUpdate);
|
||||||
sendAgentDataUpdate.AgentData.ActiveGroupID = activegroupid;
|
sendAgentDataUpdate.AgentData.ActiveGroupID = activegroupid;
|
||||||
|
|
|
@ -100,13 +100,25 @@ namespace OpenSim.Region.ClientStack
|
||||||
// "OOB" Server
|
// "OOB" Server
|
||||||
if (m_networkServersInfo.ssl_listener)
|
if (m_networkServersInfo.ssl_listener)
|
||||||
{
|
{
|
||||||
BaseHttpServer server = new BaseHttpServer(
|
if (!m_networkServersInfo.ssl_external)
|
||||||
m_networkServersInfo.https_port, m_networkServersInfo.ssl_listener, m_networkServersInfo.cert_path,
|
{
|
||||||
m_networkServersInfo.cert_pass);
|
BaseHttpServer server = new BaseHttpServer(
|
||||||
|
m_networkServersInfo.https_port, m_networkServersInfo.ssl_listener, m_networkServersInfo.cert_path,
|
||||||
|
m_networkServersInfo.cert_pass);
|
||||||
|
|
||||||
m_log.InfoFormat("[REGION SERVER]: Starting HTTPS server on port {0}", server.Port);
|
m_log.InfoFormat("[REGION SERVER]: Starting HTTPS server on port {0}", server.Port);
|
||||||
MainServer.AddHttpServer(server);
|
MainServer.AddHttpServer(server);
|
||||||
server.Start();
|
server.Start();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BaseHttpServer server = new BaseHttpServer(
|
||||||
|
m_networkServersInfo.https_port);
|
||||||
|
|
||||||
|
m_log.InfoFormat("[REGION SERVER]: Starting HTTP server on port {0} for external HTTPS", server.Port);
|
||||||
|
MainServer.AddHttpServer(server);
|
||||||
|
server.Start();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
base.StartupSpecific();
|
base.StartupSpecific();
|
||||||
|
@ -132,4 +144,4 @@ namespace OpenSim.Region.ClientStack
|
||||||
return physicsPluginManager.GetPhysicsScene(engine, meshEngine, config, osSceneIdentifier);
|
return physicsPluginManager.GetPhysicsScene(engine, meshEngine, config, osSceneIdentifier);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,13 @@ using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
||||||
{
|
{
|
||||||
|
public struct SendReply
|
||||||
|
{
|
||||||
|
public bool Success;
|
||||||
|
public string Message;
|
||||||
|
public int Disposition;
|
||||||
|
}
|
||||||
|
|
||||||
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "OfflineMessageModule")]
|
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "OfflineMessageModule")]
|
||||||
public class OfflineMessageModule : ISharedRegionModule
|
public class OfflineMessageModule : ISharedRegionModule
|
||||||
{
|
{
|
||||||
|
@ -50,6 +57,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
||||||
private string m_RestURL = String.Empty;
|
private string m_RestURL = String.Empty;
|
||||||
IMessageTransferModule m_TransferModule = null;
|
IMessageTransferModule m_TransferModule = null;
|
||||||
private bool m_ForwardOfflineGroupMessages = true;
|
private bool m_ForwardOfflineGroupMessages = true;
|
||||||
|
private Dictionary<IClientAPI, List<UUID>> m_repliesSent= new Dictionary<IClientAPI, List<UUID>>();
|
||||||
|
|
||||||
public void Initialise(IConfigSource config)
|
public void Initialise(IConfigSource config)
|
||||||
{
|
{
|
||||||
|
@ -169,6 +177,12 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
||||||
private void OnNewClient(IClientAPI client)
|
private void OnNewClient(IClientAPI client)
|
||||||
{
|
{
|
||||||
client.OnRetrieveInstantMessages += RetrieveInstantMessages;
|
client.OnRetrieveInstantMessages += RetrieveInstantMessages;
|
||||||
|
client.OnLogout += OnClientLoggedOut;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClientLoggedOut(IClientAPI client)
|
||||||
|
{
|
||||||
|
m_repliesSent.Remove(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RetrieveInstantMessages(IClientAPI client)
|
private void RetrieveInstantMessages(IClientAPI client)
|
||||||
|
@ -228,7 +242,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
||||||
if (scene == null)
|
if (scene == null)
|
||||||
scene = m_SceneList[0];
|
scene = m_SceneList[0];
|
||||||
|
|
||||||
bool success = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, bool>(
|
SendReply reply = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, SendReply>(
|
||||||
"POST", m_RestURL+"/SaveMessage/?scope=" +
|
"POST", m_RestURL+"/SaveMessage/?scope=" +
|
||||||
scene.RegionInfo.ScopeID.ToString(), im);
|
scene.RegionInfo.ScopeID.ToString(), im);
|
||||||
|
|
||||||
|
@ -238,13 +252,38 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
||||||
if (client == null)
|
if (client == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
client.SendInstantMessage(new GridInstantMessage(
|
if (reply.Message == String.Empty)
|
||||||
null, new UUID(im.toAgentID),
|
reply.Message = "User is not logged in. " + (reply.Success ? "Message saved." : "Message not saved");
|
||||||
"System", new UUID(im.fromAgentID),
|
|
||||||
(byte)InstantMessageDialog.MessageFromAgent,
|
bool sendReply = true;
|
||||||
"User is not logged in. "+
|
|
||||||
(success ? "Message saved." : "Message not saved"),
|
switch (reply.Disposition)
|
||||||
false, new Vector3()));
|
{
|
||||||
|
case 0: // Normal
|
||||||
|
break;
|
||||||
|
case 1: // Only once per user
|
||||||
|
if (m_repliesSent.ContainsKey(client) && m_repliesSent[client].Contains(new UUID(im.toAgentID)))
|
||||||
|
{
|
||||||
|
sendReply = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!m_repliesSent.ContainsKey(client))
|
||||||
|
m_repliesSent[client] = new List<UUID>();
|
||||||
|
m_repliesSent[client].Add(new UUID(im.toAgentID));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sendReply)
|
||||||
|
{
|
||||||
|
client.SendInstantMessage(new GridInstantMessage(
|
||||||
|
null, new UUID(im.toAgentID),
|
||||||
|
"System", new UUID(im.fromAgentID),
|
||||||
|
(byte)InstantMessageDialog.MessageFromAgent,
|
||||||
|
reply.Message,
|
||||||
|
false, new Vector3()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,6 +96,10 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
|
|
||||||
m_commands = new EstateManagementCommands(this);
|
m_commands = new EstateManagementCommands(this);
|
||||||
m_commands.Initialise();
|
m_commands.Initialise();
|
||||||
|
|
||||||
|
m_regionChangeTimer.Interval = 10000;
|
||||||
|
m_regionChangeTimer.Elapsed += RaiseRegionInfoChange;
|
||||||
|
m_regionChangeTimer.AutoReset = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveRegion(Scene scene) {}
|
public void RemoveRegion(Scene scene) {}
|
||||||
|
|
|
@ -565,7 +565,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
requiredPowers = GroupPowers.LandManageBanned;
|
requiredPowers = GroupPowers.LandManageBanned;
|
||||||
|
|
||||||
if (m_scene.Permissions.CanEditParcelProperties(agentID,
|
if (m_scene.Permissions.CanEditParcelProperties(agentID,
|
||||||
land, requiredPowers))
|
land, requiredPowers, false))
|
||||||
{
|
{
|
||||||
land.UpdateAccessList(flags, transactionID, sequenceID,
|
land.UpdateAccessList(flags, transactionID, sequenceID,
|
||||||
sections, entries, remote_client);
|
sections, entries, remote_client);
|
||||||
|
@ -927,7 +927,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
//If we are still here, then they are subdividing within one piece of land
|
//If we are still here, then they are subdividing within one piece of land
|
||||||
//Check owner
|
//Check owner
|
||||||
if (!m_scene.Permissions.CanEditParcelProperties(attempting_user_id, startLandObject, GroupPowers.LandDivideJoin))
|
if (!m_scene.Permissions.CanEditParcelProperties(attempting_user_id, startLandObject, GroupPowers.LandDivideJoin, true))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -996,7 +996,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!m_scene.Permissions.CanEditParcelProperties(attempting_user_id, masterLandObject, GroupPowers.LandDivideJoin))
|
if (!m_scene.Permissions.CanEditParcelProperties(attempting_user_id, masterLandObject, GroupPowers.LandDivideJoin, true))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1727,7 +1727,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
if (land == null) return;
|
if (land == null) return;
|
||||||
|
|
||||||
if (!m_scene.Permissions.CanEditParcelProperties(remoteClient.AgentId, land, GroupPowers.LandOptions))
|
if (!m_scene.Permissions.CanEditParcelProperties(remoteClient.AgentId, land, GroupPowers.LandOptions, false))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
land.LandData.OtherCleanTime = otherCleanTime;
|
land.LandData.OtherCleanTime = otherCleanTime;
|
||||||
|
@ -1827,7 +1827,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
if (targetAvatar.UserLevel == 0)
|
if (targetAvatar.UserLevel == 0)
|
||||||
{
|
{
|
||||||
ILandObject land = ((Scene)client.Scene).LandChannel.GetLandObject(targetAvatar.AbsolutePosition.X, targetAvatar.AbsolutePosition.Y);
|
ILandObject land = ((Scene)client.Scene).LandChannel.GetLandObject(targetAvatar.AbsolutePosition.X, targetAvatar.AbsolutePosition.Y);
|
||||||
if (!((Scene)client.Scene).Permissions.CanEditParcelProperties(client.AgentId, land, GroupPowers.LandEjectAndFreeze))
|
if (!((Scene)client.Scene).Permissions.CanEditParcelProperties(client.AgentId, land, GroupPowers.LandEjectAndFreeze, true))
|
||||||
return;
|
return;
|
||||||
if (flags == 0)
|
if (flags == 0)
|
||||||
{
|
{
|
||||||
|
@ -1876,7 +1876,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
// Check if you even have permission to do this
|
// Check if you even have permission to do this
|
||||||
ILandObject land = m_scene.LandChannel.GetLandObject(targetAvatar.AbsolutePosition.X, targetAvatar.AbsolutePosition.Y);
|
ILandObject land = m_scene.LandChannel.GetLandObject(targetAvatar.AbsolutePosition.X, targetAvatar.AbsolutePosition.Y);
|
||||||
if (!m_scene.Permissions.CanEditParcelProperties(client.AgentId, land, GroupPowers.LandEjectAndFreeze) &&
|
if (!m_scene.Permissions.CanEditParcelProperties(client.AgentId, land, GroupPowers.LandEjectAndFreeze, true) &&
|
||||||
!m_scene.Permissions.IsAdministrator(client.AgentId))
|
!m_scene.Permissions.IsAdministrator(client.AgentId))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -286,7 +286,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
// ParcelFlags.ForSaleObjects
|
// ParcelFlags.ForSaleObjects
|
||||||
// ParcelFlags.LindenHome
|
// ParcelFlags.LindenHome
|
||||||
|
|
||||||
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandOptions))
|
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandOptions, false))
|
||||||
{
|
{
|
||||||
allowedDelta |= (uint)(ParcelFlags.AllowLandmark |
|
allowedDelta |= (uint)(ParcelFlags.AllowLandmark |
|
||||||
ParcelFlags.AllowTerraform |
|
ParcelFlags.AllowTerraform |
|
||||||
|
@ -301,7 +301,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
ParcelFlags.AllowFly);
|
ParcelFlags.AllowFly);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandSetSale))
|
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandSetSale, true))
|
||||||
{
|
{
|
||||||
if (args.AuthBuyerID != newData.AuthBuyerID ||
|
if (args.AuthBuyerID != newData.AuthBuyerID ||
|
||||||
args.SalePrice != newData.SalePrice)
|
args.SalePrice != newData.SalePrice)
|
||||||
|
@ -324,7 +324,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
allowedDelta |= (uint)ParcelFlags.ForSale;
|
allowedDelta |= (uint)ParcelFlags.ForSale;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.FindPlaces))
|
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.FindPlaces, false))
|
||||||
{
|
{
|
||||||
newData.Category = args.Category;
|
newData.Category = args.Category;
|
||||||
|
|
||||||
|
@ -333,21 +333,21 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
ParcelFlags.MaturePublish) | (uint)(1 << 23);
|
ParcelFlags.MaturePublish) | (uint)(1 << 23);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.LandChangeIdentity))
|
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.LandChangeIdentity, false))
|
||||||
{
|
{
|
||||||
newData.Description = args.Desc;
|
newData.Description = args.Desc;
|
||||||
newData.Name = args.Name;
|
newData.Name = args.Name;
|
||||||
newData.SnapshotID = args.SnapshotID;
|
newData.SnapshotID = args.SnapshotID;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.SetLandingPoint))
|
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.SetLandingPoint, false))
|
||||||
{
|
{
|
||||||
newData.LandingType = args.LandingType;
|
newData.LandingType = args.LandingType;
|
||||||
newData.UserLocation = args.UserLocation;
|
newData.UserLocation = args.UserLocation;
|
||||||
newData.UserLookAt = args.UserLookAt;
|
newData.UserLookAt = args.UserLookAt;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.ChangeMedia))
|
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.ChangeMedia, false))
|
||||||
{
|
{
|
||||||
newData.MediaAutoScale = args.MediaAutoScale;
|
newData.MediaAutoScale = args.MediaAutoScale;
|
||||||
newData.MediaID = args.MediaID;
|
newData.MediaID = args.MediaID;
|
||||||
|
@ -368,7 +368,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
ParcelFlags.UseEstateVoiceChan);
|
ParcelFlags.UseEstateVoiceChan);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.LandManagePasses))
|
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.LandManagePasses, false))
|
||||||
{
|
{
|
||||||
newData.PassHours = args.PassHours;
|
newData.PassHours = args.PassHours;
|
||||||
newData.PassPrice = args.PassPrice;
|
newData.PassPrice = args.PassPrice;
|
||||||
|
@ -376,25 +376,27 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
allowedDelta |= (uint)ParcelFlags.UsePassList;
|
allowedDelta |= (uint)ParcelFlags.UsePassList;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandManageAllowed))
|
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandManageAllowed, false))
|
||||||
{
|
{
|
||||||
allowedDelta |= (uint)(ParcelFlags.UseAccessGroup |
|
allowedDelta |= (uint)(ParcelFlags.UseAccessGroup |
|
||||||
ParcelFlags.UseAccessList);
|
ParcelFlags.UseAccessList);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandManageBanned))
|
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandManageBanned, false))
|
||||||
{
|
{
|
||||||
allowedDelta |= (uint)(ParcelFlags.UseBanList |
|
allowedDelta |= (uint)(ParcelFlags.UseBanList |
|
||||||
ParcelFlags.DenyAnonymous |
|
ParcelFlags.DenyAnonymous |
|
||||||
ParcelFlags.DenyAgeUnverified);
|
ParcelFlags.DenyAgeUnverified);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint preserve = LandData.Flags & ~allowedDelta;
|
if (allowedDelta != (uint)ParcelFlags.None)
|
||||||
newData.Flags = preserve | (args.ParcelFlags & allowedDelta);
|
{
|
||||||
|
uint preserve = LandData.Flags & ~allowedDelta;
|
||||||
|
newData.Flags = preserve | (args.ParcelFlags & allowedDelta);
|
||||||
|
|
||||||
m_scene.LandChannel.UpdateLandObject(LandData.LocalID, newData);
|
m_scene.LandChannel.UpdateLandObject(LandData.LocalID, newData);
|
||||||
|
SendLandUpdateToAvatarsOverMe(snap_selection);
|
||||||
SendLandUpdateToAvatarsOverMe(snap_selection);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateLandSold(UUID avatarID, UUID groupID, bool groupOwned, uint AuctionID, int claimprice, int area)
|
public void UpdateLandSold(UUID avatarID, UUID groupID, bool groupOwned, uint AuctionID, int claimprice, int area)
|
||||||
|
@ -950,7 +952,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
public void SendForceObjectSelect(int local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client)
|
public void SendForceObjectSelect(int local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client)
|
||||||
{
|
{
|
||||||
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandOptions))
|
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandOptions, true))
|
||||||
{
|
{
|
||||||
List<uint> resultLocalIDs = new List<uint>();
|
List<uint> resultLocalIDs = new List<uint>();
|
||||||
try
|
try
|
||||||
|
@ -1000,7 +1002,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
/// </param>
|
/// </param>
|
||||||
public void SendLandObjectOwners(IClientAPI remote_client)
|
public void SendLandObjectOwners(IClientAPI remote_client)
|
||||||
{
|
{
|
||||||
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandOptions))
|
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandOptions, true))
|
||||||
{
|
{
|
||||||
Dictionary<UUID, int> primCount = new Dictionary<UUID, int>();
|
Dictionary<UUID, int> primCount = new Dictionary<UUID, int>();
|
||||||
List<UUID> groups = new List<UUID>();
|
List<UUID> groups = new List<UUID>();
|
||||||
|
|
|
@ -1047,7 +1047,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||||
return GenericObjectPermission(editorID, objectID, false);
|
return GenericObjectPermission(editorID, objectID, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool CanEditParcelProperties(UUID user, ILandObject parcel, GroupPowers p, Scene scene)
|
private bool CanEditParcelProperties(UUID user, ILandObject parcel, GroupPowers p, Scene scene, bool allowManager)
|
||||||
{
|
{
|
||||||
DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
|
DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
|
||||||
if (m_bypassPermissions) return m_bypassPermissionsValue;
|
if (m_bypassPermissions) return m_bypassPermissionsValue;
|
||||||
|
|
|
@ -70,7 +70,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
public delegate bool IsGridGodHandler(UUID user, Scene requestFromScene);
|
public delegate bool IsGridGodHandler(UUID user, Scene requestFromScene);
|
||||||
public delegate bool IsAdministratorHandler(UUID user);
|
public delegate bool IsAdministratorHandler(UUID user);
|
||||||
public delegate bool EditParcelHandler(UUID user, ILandObject parcel, Scene scene);
|
public delegate bool EditParcelHandler(UUID user, ILandObject parcel, Scene scene);
|
||||||
public delegate bool EditParcelPropertiesHandler(UUID user, ILandObject parcel, GroupPowers p, Scene scene);
|
public delegate bool EditParcelPropertiesHandler(UUID user, ILandObject parcel, GroupPowers p, Scene scene, bool allowManager);
|
||||||
public delegate bool SellParcelHandler(UUID user, ILandObject parcel, Scene scene);
|
public delegate bool SellParcelHandler(UUID user, ILandObject parcel, Scene scene);
|
||||||
public delegate bool AbandonParcelHandler(UUID user, ILandObject parcel, Scene scene);
|
public delegate bool AbandonParcelHandler(UUID user, ILandObject parcel, Scene scene);
|
||||||
public delegate bool ReclaimParcelHandler(UUID user, ILandObject parcel, Scene scene);
|
public delegate bool ReclaimParcelHandler(UUID user, ILandObject parcel, Scene scene);
|
||||||
|
@ -763,7 +763,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
#region EDIT PARCEL
|
#region EDIT PARCEL
|
||||||
|
|
||||||
public bool CanEditParcelProperties(UUID user, ILandObject parcel, GroupPowers p)
|
public bool CanEditParcelProperties(UUID user, ILandObject parcel, GroupPowers p, bool allowManager)
|
||||||
{
|
{
|
||||||
EditParcelPropertiesHandler handler = OnEditParcelProperties;
|
EditParcelPropertiesHandler handler = OnEditParcelProperties;
|
||||||
if (handler != null)
|
if (handler != null)
|
||||||
|
@ -771,7 +771,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
Delegate[] list = handler.GetInvocationList();
|
Delegate[] list = handler.GetInvocationList();
|
||||||
foreach (EditParcelPropertiesHandler h in list)
|
foreach (EditParcelPropertiesHandler h in list)
|
||||||
{
|
{
|
||||||
if (h(user, parcel, p, m_scene) == false)
|
if (h(user, parcel, p, m_scene, allowManager) == false)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1886,25 +1886,27 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
SceneObjectPart part = parts[i];
|
SceneObjectPart part = parts[i];
|
||||||
|
|
||||||
Scene.ForEachRootScenePresence(delegate(ScenePresence avatar)
|
if (Scene != null)
|
||||||
{
|
{
|
||||||
if (avatar.ParentID == LocalId)
|
Scene.ForEachRootScenePresence(delegate(ScenePresence avatar)
|
||||||
avatar.StandUp();
|
|
||||||
|
|
||||||
if (!silent)
|
|
||||||
{
|
{
|
||||||
part.ClearUpdateSchedule();
|
if (avatar.ParentID == LocalId)
|
||||||
if (part == m_rootPart)
|
avatar.StandUp();
|
||||||
{
|
|
||||||
if (!IsAttachment
|
|
||||||
|| AttachedAvatar == avatar.ControllingClient.AgentId
|
|
||||||
|| !HasPrivateAttachmentPoint)
|
|
||||||
avatar.ControllingClient.SendKillObject(m_regionHandle, new List<uint> { part.LocalId });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (!silent)
|
||||||
|
{
|
||||||
|
part.ClearUpdateSchedule();
|
||||||
|
if (part == m_rootPart)
|
||||||
|
{
|
||||||
|
if (!IsAttachment
|
||||||
|
|| AttachedAvatar == avatar.ControllingClient.AgentId
|
||||||
|
|| !HasPrivateAttachmentPoint)
|
||||||
|
avatar.ControllingClient.SendKillObject(m_regionHandle, new List<uint> { part.LocalId });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddScriptLPS(int count)
|
public void AddScriptLPS(int count)
|
||||||
|
|
|
@ -635,15 +635,15 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
|
||||||
// TODO: EstateSettings don't seem to get propagated...
|
// TODO: EstateSettings don't seem to get propagated...
|
||||||
if (!scene.RegionInfo.EstateSettings.AllowVoice)
|
if (!scene.RegionInfo.EstateSettings.AllowVoice)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[VivoxVoice][PARCELVOICE]: region \"{0}\": voice not enabled in estate settings",
|
//m_log.DebugFormat("[VivoxVoice][PARCELVOICE]: region \"{0}\": voice not enabled in estate settings",
|
||||||
scene.RegionInfo.RegionName);
|
// scene.RegionInfo.RegionName);
|
||||||
channel_uri = String.Empty;
|
channel_uri = String.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((land.Flags & (uint)ParcelFlags.AllowVoiceChat) == 0)
|
if ((land.Flags & (uint)ParcelFlags.AllowVoiceChat) == 0)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[VivoxVoice][PARCELVOICE]: region \"{0}\": Parcel \"{1}\" ({2}): avatar \"{3}\": voice not enabled for parcel",
|
//m_log.DebugFormat("[VivoxVoice][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);
|
||||||
channel_uri = String.Empty;
|
channel_uri = String.Empty;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -105,9 +105,9 @@ namespace OpenSim.Region.RegionCombinerModule
|
||||||
return m_rootScene.Permissions.CanEditObject(objectid, editorid);
|
return m_rootScene.Permissions.CanEditObject(objectid, editorid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CanEditParcelProperties(UUID user, ILandObject parcel, GroupPowers g, Scene scene)
|
public bool CanEditParcelProperties(UUID user, ILandObject parcel, GroupPowers g, Scene scene, bool allowManager)
|
||||||
{
|
{
|
||||||
return m_rootScene.Permissions.CanEditParcelProperties(user, parcel, g);
|
return m_rootScene.Permissions.CanEditParcelProperties(user, parcel, g, allowManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CanInstantMessage(UUID user, UUID target, Scene startscene)
|
public bool CanInstantMessage(UUID user, UUID target, Scene startscene)
|
||||||
|
|
|
@ -7106,7 +7106,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
UUID key;
|
UUID key;
|
||||||
ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition);
|
ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition);
|
||||||
|
|
||||||
if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageBanned))
|
if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageBanned, false))
|
||||||
{
|
{
|
||||||
int expires = 0;
|
int expires = 0;
|
||||||
if (hours != 0)
|
if (hours != 0)
|
||||||
|
@ -10431,7 +10431,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
// according to the docs, this command only works if script owner and land owner are the same
|
// according to the docs, this command only works if script owner and land owner are the same
|
||||||
// lets add estate owners and gods, too, and use the generic permission check.
|
// lets add estate owners and gods, too, and use the generic permission check.
|
||||||
ILandObject landObject = World.LandChannel.GetLandObject(m_host.AbsolutePosition);
|
ILandObject landObject = World.LandChannel.GetLandObject(m_host.AbsolutePosition);
|
||||||
if (!World.Permissions.CanEditParcelProperties(m_host.OwnerID, landObject, GroupPowers.ChangeMedia)) return;
|
if (!World.Permissions.CanEditParcelProperties(m_host.OwnerID, landObject, GroupPowers.ChangeMedia, false)) return;
|
||||||
|
|
||||||
bool update = false; // send a ParcelMediaUpdate (and possibly change the land's media URL)?
|
bool update = false; // send a ParcelMediaUpdate (and possibly change the land's media URL)?
|
||||||
byte loop = 0;
|
byte loop = 0;
|
||||||
|
@ -10874,7 +10874,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
UUID key;
|
UUID key;
|
||||||
ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition);
|
ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition);
|
||||||
if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageBanned))
|
if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageBanned, false))
|
||||||
{
|
{
|
||||||
int expires = 0;
|
int expires = 0;
|
||||||
if (hours != 0)
|
if (hours != 0)
|
||||||
|
@ -10915,7 +10915,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
UUID key;
|
UUID key;
|
||||||
ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition);
|
ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition);
|
||||||
if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageAllowed))
|
if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageAllowed, false))
|
||||||
{
|
{
|
||||||
if (UUID.TryParse(avatar, out key))
|
if (UUID.TryParse(avatar, out key))
|
||||||
{
|
{
|
||||||
|
@ -10942,7 +10942,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
UUID key;
|
UUID key;
|
||||||
ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition);
|
ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition);
|
||||||
if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageBanned))
|
if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageBanned, false))
|
||||||
{
|
{
|
||||||
if (UUID.TryParse(avatar, out key))
|
if (UUID.TryParse(avatar, out key))
|
||||||
{
|
{
|
||||||
|
|
|
@ -1434,7 +1434,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!World.Permissions.CanEditParcelProperties(m_host.OwnerID, startLandObject, GroupPowers.LandOptions))
|
if (!World.Permissions.CanEditParcelProperties(m_host.OwnerID, startLandObject, GroupPowers.LandOptions, false))
|
||||||
{
|
{
|
||||||
OSSLShoutError("You do not have permission to modify the parcel");
|
OSSLShoutError("You do not have permission to modify the parcel");
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -40,7 +40,7 @@ namespace OpenSim.Server.Base
|
||||||
{
|
{
|
||||||
public class HttpServerBase : ServicesServerBase
|
public class HttpServerBase : ServicesServerBase
|
||||||
{
|
{
|
||||||
// private static readonly ILog m_Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
private uint m_consolePort;
|
private uint m_consolePort;
|
||||||
|
|
||||||
|
@ -69,6 +69,7 @@ namespace OpenSim.Server.Base
|
||||||
|
|
||||||
bool ssl_main = networkConfig.GetBoolean("https_main",false);
|
bool ssl_main = networkConfig.GetBoolean("https_main",false);
|
||||||
bool ssl_listener = networkConfig.GetBoolean("https_listener",false);
|
bool ssl_listener = networkConfig.GetBoolean("https_listener",false);
|
||||||
|
bool ssl_external = networkConfig.GetBoolean("https_external",false);
|
||||||
|
|
||||||
m_consolePort = (uint)networkConfig.GetInt("ConsolePort", 0);
|
m_consolePort = (uint)networkConfig.GetInt("ConsolePort", 0);
|
||||||
|
|
||||||
|
@ -113,20 +114,29 @@ namespace OpenSim.Server.Base
|
||||||
|
|
||||||
uint https_port = (uint)networkConfig.GetInt("https_port", 0);
|
uint https_port = (uint)networkConfig.GetInt("https_port", 0);
|
||||||
|
|
||||||
string cert_path = networkConfig.GetString("cert_path",String.Empty);
|
m_log.WarnFormat("[SSL]: External flag is {0}", ssl_external);
|
||||||
if ( cert_path == String.Empty )
|
if (!ssl_external)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("Path to X509 certificate is missing, server can't start.");
|
string cert_path = networkConfig.GetString("cert_path",String.Empty);
|
||||||
Thread.CurrentThread.Abort();
|
if ( cert_path == String.Empty )
|
||||||
}
|
{
|
||||||
string cert_pass = networkConfig.GetString("cert_pass",String.Empty);
|
System.Console.WriteLine("Path to X509 certificate is missing, server can't start.");
|
||||||
if ( cert_pass == String.Empty )
|
Thread.CurrentThread.Abort();
|
||||||
{
|
}
|
||||||
System.Console.WriteLine("Password for X509 certificate is missing, server can't start.");
|
string cert_pass = networkConfig.GetString("cert_pass",String.Empty);
|
||||||
Thread.CurrentThread.Abort();
|
if ( cert_pass == String.Empty )
|
||||||
}
|
{
|
||||||
|
System.Console.WriteLine("Password for X509 certificate is missing, server can't start.");
|
||||||
|
Thread.CurrentThread.Abort();
|
||||||
|
}
|
||||||
|
|
||||||
MainServer.AddHttpServer(new BaseHttpServer(https_port, ssl_listener, cert_path, cert_pass));
|
MainServer.AddHttpServer(new BaseHttpServer(https_port, ssl_listener, cert_path, cert_pass));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_log.WarnFormat("[SSL]: SSL port is active but no SSL is used because external SSL was requested.");
|
||||||
|
MainServer.AddHttpServer(new BaseHttpServer(https_port));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -86,6 +86,66 @@ namespace OpenSim.Services.Connectors
|
||||||
m_ServerURI = serviceURI.TrimEnd('/');
|
m_ServerURI = serviceURI.TrimEnd('/');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool RemoveMapTile(int x, int y, out string reason)
|
||||||
|
{
|
||||||
|
reason = string.Empty;
|
||||||
|
int tickstart = Util.EnvironmentTickCount();
|
||||||
|
Dictionary<string, object> sendData = new Dictionary<string, object>();
|
||||||
|
sendData["X"] = x.ToString();
|
||||||
|
sendData["Y"] = y.ToString();
|
||||||
|
|
||||||
|
string reqString = ServerUtils.BuildQueryString(sendData);
|
||||||
|
string uri = m_ServerURI + "/removemap";
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string reply = SynchronousRestFormsRequester.MakeRequest("POST",
|
||||||
|
uri,
|
||||||
|
reqString);
|
||||||
|
if (reply != string.Empty)
|
||||||
|
{
|
||||||
|
Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
|
||||||
|
|
||||||
|
if (replyData.ContainsKey("Result") && (replyData["Result"].ToString().ToLower() == "success"))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (replyData.ContainsKey("Result") && (replyData["Result"].ToString().ToLower() == "failure"))
|
||||||
|
{
|
||||||
|
m_log.DebugFormat("[MAP IMAGE CONNECTOR]: Delete failed: {0}", replyData["Message"].ToString());
|
||||||
|
reason = replyData["Message"].ToString();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (!replyData.ContainsKey("Result"))
|
||||||
|
{
|
||||||
|
m_log.DebugFormat("[MAP IMAGE CONNECTOR]: reply data does not contain result field");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_log.DebugFormat("[MAP IMAGE CONNECTOR]: unexpected result {0}", replyData["Result"].ToString());
|
||||||
|
reason = "Unexpected result " + replyData["Result"].ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_log.DebugFormat("[MAP IMAGE CONNECTOR]: Map post received null reply");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.DebugFormat("[MAP IMAGE CONNECTOR]: Exception when contacting map server at {0}: {1}", uri, e.Message);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
// This just dumps a warning for any operation that takes more than 100 ms
|
||||||
|
int tickdiff = Util.EnvironmentTickCountSubtract(tickstart);
|
||||||
|
m_log.DebugFormat("[MAP IMAGE CONNECTOR]: map tile deleted in {0}ms", tickdiff);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public bool AddMapTile(int x, int y, byte[] jpgData, out string reason)
|
public bool AddMapTile(int x, int y, byte[] jpgData, out string reason)
|
||||||
{
|
{
|
||||||
reason = string.Empty;
|
reason = string.Empty;
|
||||||
|
|
|
@ -283,7 +283,7 @@ namespace OpenSim.Services.GridService
|
||||||
|
|
||||||
int flags = Convert.ToInt32(region.Data["flags"]);
|
int flags = Convert.ToInt32(region.Data["flags"]);
|
||||||
|
|
||||||
if (!m_DeleteOnUnregister || (flags & (int)OpenSim.Framework.RegionFlags.Persistent) != 0)
|
if ((!m_DeleteOnUnregister) || ((flags & (int)OpenSim.Framework.RegionFlags.Persistent) != 0))
|
||||||
{
|
{
|
||||||
flags &= ~(int)OpenSim.Framework.RegionFlags.RegionOnline;
|
flags &= ~(int)OpenSim.Framework.RegionFlags.RegionOnline;
|
||||||
region.Data["flags"] = flags.ToString();
|
region.Data["flags"] = flags.ToString();
|
||||||
|
@ -298,7 +298,6 @@ namespace OpenSim.Services.GridService
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_Database.Delete(regionID);
|
return m_Database.Delete(regionID);
|
||||||
|
|
|
@ -35,6 +35,7 @@ namespace OpenSim.Services.Interfaces
|
||||||
{
|
{
|
||||||
//List<MapBlockData> GetMapBlocks(UUID scopeID, int minX, int minY, int maxX, int maxY);
|
//List<MapBlockData> GetMapBlocks(UUID scopeID, int minX, int minY, int maxX, int maxY);
|
||||||
bool AddMapTile(int x, int y, byte[] imageData, out string reason);
|
bool AddMapTile(int x, int y, byte[] imageData, out string reason);
|
||||||
|
bool RemoveMapTile(int x, int y, out string reason);
|
||||||
byte[] GetMapTile(string fileName, out string format);
|
byte[] GetMapTile(string fileName, out string format);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,9 +112,38 @@ namespace OpenSim.Services.MapImageService
|
||||||
reason = e.Message;
|
reason = e.Message;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Also save in png format?
|
return UpdateMultiResolutionFiles(x, y, out reason);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool RemoveMapTile(int x, int y, out string reason)
|
||||||
|
{
|
||||||
|
reason = String.Empty;
|
||||||
|
string fileName = GetFileName(1, x, y);
|
||||||
|
|
||||||
|
lock (m_Sync)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File.Delete(fileName);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.WarnFormat("[MAP IMAGE SERVICE]: Unable to save delete file {0}: {1}", fileName, e);
|
||||||
|
reason = e.Message;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return UpdateMultiResolutionFiles(x, y, out reason);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool UpdateMultiResolutionFiles(int x, int y, out string reason)
|
||||||
|
{
|
||||||
|
reason = String.Empty;
|
||||||
|
lock (m_Sync)
|
||||||
|
{
|
||||||
// Stitch seven more aggregate tiles together
|
// Stitch seven more aggregate tiles together
|
||||||
for (uint zoomLevel = 2; zoomLevel <= ZOOM_LEVELS; zoomLevel++)
|
for (uint zoomLevel = 2; zoomLevel <= ZOOM_LEVELS; zoomLevel++)
|
||||||
{
|
{
|
||||||
|
@ -126,7 +155,7 @@ namespace OpenSim.Services.MapImageService
|
||||||
|
|
||||||
if (!CreateTile(zoomLevel, x1, y1))
|
if (!CreateTile(zoomLevel, x1, y1))
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("[MAP IMAGE SERVICE]: Unable to create tile for {0} at zoom level {1}", fileName, zoomLevel);
|
m_log.WarnFormat("[MAP IMAGE SERVICE]: Unable to create tile for {0},{1} at zoom level {1}", x, y, zoomLevel);
|
||||||
reason = string.Format("Map tile at zoom level {0} failed", zoomLevel);
|
reason = string.Format("Map tile at zoom level {0} failed", zoomLevel);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue