diff options
Diffstat (limited to 'OpenSim/Region')
13 files changed, 132 insertions, 70 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index f8e2a60..f599342 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -2290,9 +2290,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2290 | 2290 | ||
2291 | public void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle) | 2291 | public void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle) |
2292 | { | 2292 | { |
2293 | m_activeGroupID = activegroupid; | 2293 | if (agentid == AgentId) |
2294 | m_activeGroupName = groupname; | 2294 | { |
2295 | m_activeGroupPowers = grouppowers; | 2295 | m_activeGroupID = activegroupid; |
2296 | m_activeGroupName = groupname; | ||
2297 | m_activeGroupPowers = grouppowers; | ||
2298 | } | ||
2296 | 2299 | ||
2297 | AgentDataUpdatePacket sendAgentDataUpdate = (AgentDataUpdatePacket)PacketPool.Instance.GetPacket(PacketType.AgentDataUpdate); | 2300 | AgentDataUpdatePacket sendAgentDataUpdate = (AgentDataUpdatePacket)PacketPool.Instance.GetPacket(PacketType.AgentDataUpdate); |
2298 | sendAgentDataUpdate.AgentData.ActiveGroupID = activegroupid; | 2301 | sendAgentDataUpdate.AgentData.ActiveGroupID = activegroupid; |
diff --git a/OpenSim/Region/ClientStack/RegionApplicationBase.cs b/OpenSim/Region/ClientStack/RegionApplicationBase.cs index 853b72d..287c278 100644 --- a/OpenSim/Region/ClientStack/RegionApplicationBase.cs +++ b/OpenSim/Region/ClientStack/RegionApplicationBase.cs | |||
@@ -100,13 +100,25 @@ namespace OpenSim.Region.ClientStack | |||
100 | // "OOB" Server | 100 | // "OOB" Server |
101 | if (m_networkServersInfo.ssl_listener) | 101 | if (m_networkServersInfo.ssl_listener) |
102 | { | 102 | { |
103 | BaseHttpServer server = new BaseHttpServer( | 103 | if (!m_networkServersInfo.ssl_external) |
104 | m_networkServersInfo.https_port, m_networkServersInfo.ssl_listener, m_networkServersInfo.cert_path, | 104 | { |
105 | m_networkServersInfo.cert_pass); | 105 | BaseHttpServer server = new BaseHttpServer( |
106 | m_networkServersInfo.https_port, m_networkServersInfo.ssl_listener, m_networkServersInfo.cert_path, | ||
107 | m_networkServersInfo.cert_pass); | ||
106 | 108 | ||
107 | m_log.InfoFormat("[REGION SERVER]: Starting HTTPS server on port {0}", server.Port); | 109 | m_log.InfoFormat("[REGION SERVER]: Starting HTTPS server on port {0}", server.Port); |
108 | MainServer.AddHttpServer(server); | 110 | MainServer.AddHttpServer(server); |
109 | server.Start(); | 111 | server.Start(); |
112 | } | ||
113 | else | ||
114 | { | ||
115 | BaseHttpServer server = new BaseHttpServer( | ||
116 | m_networkServersInfo.https_port); | ||
117 | |||
118 | m_log.InfoFormat("[REGION SERVER]: Starting HTTP server on port {0} for external HTTPS", server.Port); | ||
119 | MainServer.AddHttpServer(server); | ||
120 | server.Start(); | ||
121 | } | ||
110 | } | 122 | } |
111 | 123 | ||
112 | base.StartupSpecific(); | 124 | base.StartupSpecific(); |
@@ -132,4 +144,4 @@ namespace OpenSim.Region.ClientStack | |||
132 | return physicsPluginManager.GetPhysicsScene(engine, meshEngine, config, osSceneIdentifier); | 144 | return physicsPluginManager.GetPhysicsScene(engine, meshEngine, config, osSceneIdentifier); |
133 | } | 145 | } |
134 | } | 146 | } |
135 | } \ No newline at end of file | 147 | } |
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs index 2d46276..41958b3 100644 --- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs | |||
@@ -40,6 +40,13 @@ using OpenSim.Region.Framework.Scenes; | |||
40 | 40 | ||
41 | namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | 41 | namespace OpenSim.Region.CoreModules.Avatar.InstantMessage |
42 | { | 42 | { |
43 | public struct SendReply | ||
44 | { | ||
45 | public bool Success; | ||
46 | public string Message; | ||
47 | public int Disposition; | ||
48 | } | ||
49 | |||
43 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "OfflineMessageModule")] | 50 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "OfflineMessageModule")] |
44 | public class OfflineMessageModule : ISharedRegionModule | 51 | public class OfflineMessageModule : ISharedRegionModule |
45 | { | 52 | { |
@@ -50,6 +57,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
50 | private string m_RestURL = String.Empty; | 57 | private string m_RestURL = String.Empty; |
51 | IMessageTransferModule m_TransferModule = null; | 58 | IMessageTransferModule m_TransferModule = null; |
52 | private bool m_ForwardOfflineGroupMessages = true; | 59 | private bool m_ForwardOfflineGroupMessages = true; |
60 | private Dictionary<IClientAPI, List<UUID>> m_repliesSent= new Dictionary<IClientAPI, List<UUID>>(); | ||
53 | 61 | ||
54 | public void Initialise(IConfigSource config) | 62 | public void Initialise(IConfigSource config) |
55 | { | 63 | { |
@@ -169,6 +177,12 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
169 | private void OnNewClient(IClientAPI client) | 177 | private void OnNewClient(IClientAPI client) |
170 | { | 178 | { |
171 | client.OnRetrieveInstantMessages += RetrieveInstantMessages; | 179 | client.OnRetrieveInstantMessages += RetrieveInstantMessages; |
180 | client.OnLogout += OnClientLoggedOut; | ||
181 | } | ||
182 | |||
183 | public void OnClientLoggedOut(IClientAPI client) | ||
184 | { | ||
185 | m_repliesSent.Remove(client); | ||
172 | } | 186 | } |
173 | 187 | ||
174 | private void RetrieveInstantMessages(IClientAPI client) | 188 | private void RetrieveInstantMessages(IClientAPI client) |
@@ -228,7 +242,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
228 | if (scene == null) | 242 | if (scene == null) |
229 | scene = m_SceneList[0]; | 243 | scene = m_SceneList[0]; |
230 | 244 | ||
231 | bool success = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, bool>( | 245 | SendReply reply = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, SendReply>( |
232 | "POST", m_RestURL+"/SaveMessage/?scope=" + | 246 | "POST", m_RestURL+"/SaveMessage/?scope=" + |
233 | scene.RegionInfo.ScopeID.ToString(), im); | 247 | scene.RegionInfo.ScopeID.ToString(), im); |
234 | 248 | ||
@@ -238,13 +252,38 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
238 | if (client == null) | 252 | if (client == null) |
239 | return; | 253 | return; |
240 | 254 | ||
241 | client.SendInstantMessage(new GridInstantMessage( | 255 | if (reply.Message == String.Empty) |
242 | null, new UUID(im.toAgentID), | 256 | reply.Message = "User is not logged in. " + (reply.Success ? "Message saved." : "Message not saved"); |
243 | "System", new UUID(im.fromAgentID), | 257 | |
244 | (byte)InstantMessageDialog.MessageFromAgent, | 258 | bool sendReply = true; |
245 | "User is not logged in. "+ | 259 | |
246 | (success ? "Message saved." : "Message not saved"), | 260 | switch (reply.Disposition) |
247 | false, new Vector3())); | 261 | { |
262 | case 0: // Normal | ||
263 | break; | ||
264 | case 1: // Only once per user | ||
265 | if (m_repliesSent.ContainsKey(client) && m_repliesSent[client].Contains(new UUID(im.toAgentID))) | ||
266 | { | ||
267 | sendReply = false; | ||
268 | } | ||
269 | else | ||
270 | { | ||
271 | if (!m_repliesSent.ContainsKey(client)) | ||
272 | m_repliesSent[client] = new List<UUID>(); | ||
273 | m_repliesSent[client].Add(new UUID(im.toAgentID)); | ||
274 | } | ||
275 | break; | ||
276 | } | ||
277 | |||
278 | if (sendReply) | ||
279 | { | ||
280 | client.SendInstantMessage(new GridInstantMessage( | ||
281 | null, new UUID(im.toAgentID), | ||
282 | "System", new UUID(im.fromAgentID), | ||
283 | (byte)InstantMessageDialog.MessageFromAgent, | ||
284 | reply.Message, | ||
285 | false, new Vector3())); | ||
286 | } | ||
248 | } | 287 | } |
249 | } | 288 | } |
250 | } | 289 | } |
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index 7aa1ced..47390e7 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs | |||
@@ -96,6 +96,10 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
96 | 96 | ||
97 | m_commands = new EstateManagementCommands(this); | 97 | m_commands = new EstateManagementCommands(this); |
98 | m_commands.Initialise(); | 98 | m_commands.Initialise(); |
99 | |||
100 | m_regionChangeTimer.Interval = 10000; | ||
101 | m_regionChangeTimer.Elapsed += RaiseRegionInfoChange; | ||
102 | m_regionChangeTimer.AutoReset = false; | ||
99 | } | 103 | } |
100 | 104 | ||
101 | public void RemoveRegion(Scene scene) {} | 105 | public void RemoveRegion(Scene scene) {} |
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 399e9b0..0e2aba9 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | |||
@@ -546,7 +546,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
546 | requiredPowers = GroupPowers.LandManageBanned; | 546 | requiredPowers = GroupPowers.LandManageBanned; |
547 | 547 | ||
548 | if (m_scene.Permissions.CanEditParcelProperties(agentID, | 548 | if (m_scene.Permissions.CanEditParcelProperties(agentID, |
549 | land, requiredPowers)) | 549 | land, requiredPowers, false)) |
550 | { | 550 | { |
551 | land.UpdateAccessList(flags, transactionID, sequenceID, | 551 | land.UpdateAccessList(flags, transactionID, sequenceID, |
552 | sections, entries, remote_client); | 552 | sections, entries, remote_client); |
@@ -908,7 +908,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
908 | 908 | ||
909 | //If we are still here, then they are subdividing within one piece of land | 909 | //If we are still here, then they are subdividing within one piece of land |
910 | //Check owner | 910 | //Check owner |
911 | if (!m_scene.Permissions.CanEditParcelProperties(attempting_user_id, startLandObject, GroupPowers.LandDivideJoin)) | 911 | if (!m_scene.Permissions.CanEditParcelProperties(attempting_user_id, startLandObject, GroupPowers.LandDivideJoin, true)) |
912 | { | 912 | { |
913 | return; | 913 | return; |
914 | } | 914 | } |
@@ -977,7 +977,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
977 | { | 977 | { |
978 | return; | 978 | return; |
979 | } | 979 | } |
980 | if (!m_scene.Permissions.CanEditParcelProperties(attempting_user_id, masterLandObject, GroupPowers.LandDivideJoin)) | 980 | if (!m_scene.Permissions.CanEditParcelProperties(attempting_user_id, masterLandObject, GroupPowers.LandDivideJoin, true)) |
981 | { | 981 | { |
982 | return; | 982 | return; |
983 | } | 983 | } |
@@ -1708,7 +1708,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1708 | 1708 | ||
1709 | if (land == null) return; | 1709 | if (land == null) return; |
1710 | 1710 | ||
1711 | if (!m_scene.Permissions.CanEditParcelProperties(remoteClient.AgentId, land, GroupPowers.LandOptions)) | 1711 | if (!m_scene.Permissions.CanEditParcelProperties(remoteClient.AgentId, land, GroupPowers.LandOptions, false)) |
1712 | return; | 1712 | return; |
1713 | 1713 | ||
1714 | land.LandData.OtherCleanTime = otherCleanTime; | 1714 | land.LandData.OtherCleanTime = otherCleanTime; |
@@ -1808,7 +1808,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1808 | if (targetAvatar.UserLevel == 0) | 1808 | if (targetAvatar.UserLevel == 0) |
1809 | { | 1809 | { |
1810 | ILandObject land = ((Scene)client.Scene).LandChannel.GetLandObject(targetAvatar.AbsolutePosition.X, targetAvatar.AbsolutePosition.Y); | 1810 | ILandObject land = ((Scene)client.Scene).LandChannel.GetLandObject(targetAvatar.AbsolutePosition.X, targetAvatar.AbsolutePosition.Y); |
1811 | if (!((Scene)client.Scene).Permissions.CanEditParcelProperties(client.AgentId, land, GroupPowers.LandEjectAndFreeze)) | 1811 | if (!((Scene)client.Scene).Permissions.CanEditParcelProperties(client.AgentId, land, GroupPowers.LandEjectAndFreeze, true)) |
1812 | return; | 1812 | return; |
1813 | if (flags == 0) | 1813 | if (flags == 0) |
1814 | { | 1814 | { |
@@ -1857,7 +1857,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1857 | 1857 | ||
1858 | // Check if you even have permission to do this | 1858 | // Check if you even have permission to do this |
1859 | ILandObject land = m_scene.LandChannel.GetLandObject(targetAvatar.AbsolutePosition.X, targetAvatar.AbsolutePosition.Y); | 1859 | ILandObject land = m_scene.LandChannel.GetLandObject(targetAvatar.AbsolutePosition.X, targetAvatar.AbsolutePosition.Y); |
1860 | if (!m_scene.Permissions.CanEditParcelProperties(client.AgentId, land, GroupPowers.LandEjectAndFreeze) && | 1860 | if (!m_scene.Permissions.CanEditParcelProperties(client.AgentId, land, GroupPowers.LandEjectAndFreeze, true) && |
1861 | !m_scene.Permissions.IsAdministrator(client.AgentId)) | 1861 | !m_scene.Permissions.IsAdministrator(client.AgentId)) |
1862 | return; | 1862 | return; |
1863 | 1863 | ||
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index ce4bd0f..74c2144 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -279,7 +279,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
279 | // ParcelFlags.ForSaleObjects | 279 | // ParcelFlags.ForSaleObjects |
280 | // ParcelFlags.LindenHome | 280 | // ParcelFlags.LindenHome |
281 | 281 | ||
282 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandOptions)) | 282 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandOptions, false)) |
283 | { | 283 | { |
284 | allowedDelta |= (uint)(ParcelFlags.AllowLandmark | | 284 | allowedDelta |= (uint)(ParcelFlags.AllowLandmark | |
285 | ParcelFlags.AllowTerraform | | 285 | ParcelFlags.AllowTerraform | |
@@ -294,7 +294,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
294 | ParcelFlags.AllowFly); | 294 | ParcelFlags.AllowFly); |
295 | } | 295 | } |
296 | 296 | ||
297 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandSetSale)) | 297 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandSetSale, true)) |
298 | { | 298 | { |
299 | if (args.AuthBuyerID != newData.AuthBuyerID || | 299 | if (args.AuthBuyerID != newData.AuthBuyerID || |
300 | args.SalePrice != newData.SalePrice) | 300 | args.SalePrice != newData.SalePrice) |
@@ -317,7 +317,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
317 | allowedDelta |= (uint)ParcelFlags.ForSale; | 317 | allowedDelta |= (uint)ParcelFlags.ForSale; |
318 | } | 318 | } |
319 | 319 | ||
320 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.FindPlaces)) | 320 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.FindPlaces, false)) |
321 | { | 321 | { |
322 | newData.Category = args.Category; | 322 | newData.Category = args.Category; |
323 | 323 | ||
@@ -326,21 +326,21 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
326 | ParcelFlags.MaturePublish) | (uint)(1 << 23); | 326 | ParcelFlags.MaturePublish) | (uint)(1 << 23); |
327 | } | 327 | } |
328 | 328 | ||
329 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.LandChangeIdentity)) | 329 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.LandChangeIdentity, false)) |
330 | { | 330 | { |
331 | newData.Description = args.Desc; | 331 | newData.Description = args.Desc; |
332 | newData.Name = args.Name; | 332 | newData.Name = args.Name; |
333 | newData.SnapshotID = args.SnapshotID; | 333 | newData.SnapshotID = args.SnapshotID; |
334 | } | 334 | } |
335 | 335 | ||
336 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.SetLandingPoint)) | 336 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.SetLandingPoint, false)) |
337 | { | 337 | { |
338 | newData.LandingType = args.LandingType; | 338 | newData.LandingType = args.LandingType; |
339 | newData.UserLocation = args.UserLocation; | 339 | newData.UserLocation = args.UserLocation; |
340 | newData.UserLookAt = args.UserLookAt; | 340 | newData.UserLookAt = args.UserLookAt; |
341 | } | 341 | } |
342 | 342 | ||
343 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.ChangeMedia)) | 343 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.ChangeMedia, false)) |
344 | { | 344 | { |
345 | newData.MediaAutoScale = args.MediaAutoScale; | 345 | newData.MediaAutoScale = args.MediaAutoScale; |
346 | newData.MediaID = args.MediaID; | 346 | newData.MediaID = args.MediaID; |
@@ -361,7 +361,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
361 | ParcelFlags.UseEstateVoiceChan); | 361 | ParcelFlags.UseEstateVoiceChan); |
362 | } | 362 | } |
363 | 363 | ||
364 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.LandManagePasses)) | 364 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId,this, GroupPowers.LandManagePasses, false)) |
365 | { | 365 | { |
366 | newData.PassHours = args.PassHours; | 366 | newData.PassHours = args.PassHours; |
367 | newData.PassPrice = args.PassPrice; | 367 | newData.PassPrice = args.PassPrice; |
@@ -369,25 +369,27 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
369 | allowedDelta |= (uint)ParcelFlags.UsePassList; | 369 | allowedDelta |= (uint)ParcelFlags.UsePassList; |
370 | } | 370 | } |
371 | 371 | ||
372 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandManageAllowed)) | 372 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandManageAllowed, false)) |
373 | { | 373 | { |
374 | allowedDelta |= (uint)(ParcelFlags.UseAccessGroup | | 374 | allowedDelta |= (uint)(ParcelFlags.UseAccessGroup | |
375 | ParcelFlags.UseAccessList); | 375 | ParcelFlags.UseAccessList); |
376 | } | 376 | } |
377 | 377 | ||
378 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandManageBanned)) | 378 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandManageBanned, false)) |
379 | { | 379 | { |
380 | allowedDelta |= (uint)(ParcelFlags.UseBanList | | 380 | allowedDelta |= (uint)(ParcelFlags.UseBanList | |
381 | ParcelFlags.DenyAnonymous | | 381 | ParcelFlags.DenyAnonymous | |
382 | ParcelFlags.DenyAgeUnverified); | 382 | ParcelFlags.DenyAgeUnverified); |
383 | } | 383 | } |
384 | 384 | ||
385 | uint preserve = LandData.Flags & ~allowedDelta; | 385 | if (allowedDelta != (uint)ParcelFlags.None) |
386 | newData.Flags = preserve | (args.ParcelFlags & allowedDelta); | 386 | { |
387 | 387 | uint preserve = LandData.Flags & ~allowedDelta; | |
388 | m_scene.LandChannel.UpdateLandObject(LandData.LocalID, newData); | 388 | newData.Flags = preserve | (args.ParcelFlags & allowedDelta); |
389 | 389 | ||
390 | SendLandUpdateToAvatarsOverMe(snap_selection); | 390 | m_scene.LandChannel.UpdateLandObject(LandData.LocalID, newData); |
391 | SendLandUpdateToAvatarsOverMe(snap_selection); | ||
392 | } | ||
391 | } | 393 | } |
392 | 394 | ||
393 | public void UpdateLandSold(UUID avatarID, UUID groupID, bool groupOwned, uint AuctionID, int claimprice, int area) | 395 | public void UpdateLandSold(UUID avatarID, UUID groupID, bool groupOwned, uint AuctionID, int claimprice, int area) |
@@ -943,7 +945,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
943 | 945 | ||
944 | public void SendForceObjectSelect(int local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client) | 946 | public void SendForceObjectSelect(int local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client) |
945 | { | 947 | { |
946 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandOptions)) | 948 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandOptions, true)) |
947 | { | 949 | { |
948 | List<uint> resultLocalIDs = new List<uint>(); | 950 | List<uint> resultLocalIDs = new List<uint>(); |
949 | try | 951 | try |
@@ -993,7 +995,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
993 | /// </param> | 995 | /// </param> |
994 | public void SendLandObjectOwners(IClientAPI remote_client) | 996 | public void SendLandObjectOwners(IClientAPI remote_client) |
995 | { | 997 | { |
996 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandOptions)) | 998 | if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandOptions, true)) |
997 | { | 999 | { |
998 | Dictionary<UUID, int> primCount = new Dictionary<UUID, int>(); | 1000 | Dictionary<UUID, int> primCount = new Dictionary<UUID, int>(); |
999 | List<UUID> groups = new List<UUID>(); | 1001 | List<UUID> groups = new List<UUID>(); |
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index 50855fe..616fe98 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs | |||
@@ -1047,7 +1047,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1047 | return GenericObjectPermission(editorID, objectID, false); | 1047 | return GenericObjectPermission(editorID, objectID, false); |
1048 | } | 1048 | } |
1049 | 1049 | ||
1050 | private bool CanEditParcelProperties(UUID user, ILandObject parcel, GroupPowers p, Scene scene) | 1050 | private bool CanEditParcelProperties(UUID user, ILandObject parcel, GroupPowers p, Scene scene, bool allowManager) |
1051 | { | 1051 | { |
1052 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1052 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1053 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1053 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs index 535d87a..4d90726 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs | |||
@@ -70,7 +70,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
70 | public delegate bool IsGridGodHandler(UUID user, Scene requestFromScene); | 70 | public delegate bool IsGridGodHandler(UUID user, Scene requestFromScene); |
71 | public delegate bool IsAdministratorHandler(UUID user); | 71 | public delegate bool IsAdministratorHandler(UUID user); |
72 | public delegate bool EditParcelHandler(UUID user, ILandObject parcel, Scene scene); | 72 | public delegate bool EditParcelHandler(UUID user, ILandObject parcel, Scene scene); |
73 | public delegate bool EditParcelPropertiesHandler(UUID user, ILandObject parcel, GroupPowers p, Scene scene); | 73 | public delegate bool EditParcelPropertiesHandler(UUID user, ILandObject parcel, GroupPowers p, Scene scene, bool allowManager); |
74 | public delegate bool SellParcelHandler(UUID user, ILandObject parcel, Scene scene); | 74 | public delegate bool SellParcelHandler(UUID user, ILandObject parcel, Scene scene); |
75 | public delegate bool AbandonParcelHandler(UUID user, ILandObject parcel, Scene scene); | 75 | public delegate bool AbandonParcelHandler(UUID user, ILandObject parcel, Scene scene); |
76 | public delegate bool ReclaimParcelHandler(UUID user, ILandObject parcel, Scene scene); | 76 | public delegate bool ReclaimParcelHandler(UUID user, ILandObject parcel, Scene scene); |
@@ -763,7 +763,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
763 | 763 | ||
764 | #region EDIT PARCEL | 764 | #region EDIT PARCEL |
765 | 765 | ||
766 | public bool CanEditParcelProperties(UUID user, ILandObject parcel, GroupPowers p) | 766 | public bool CanEditParcelProperties(UUID user, ILandObject parcel, GroupPowers p, bool allowManager) |
767 | { | 767 | { |
768 | EditParcelPropertiesHandler handler = OnEditParcelProperties; | 768 | EditParcelPropertiesHandler handler = OnEditParcelProperties; |
769 | if (handler != null) | 769 | if (handler != null) |
@@ -771,7 +771,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
771 | Delegate[] list = handler.GetInvocationList(); | 771 | Delegate[] list = handler.GetInvocationList(); |
772 | foreach (EditParcelPropertiesHandler h in list) | 772 | foreach (EditParcelPropertiesHandler h in list) |
773 | { | 773 | { |
774 | if (h(user, parcel, p, m_scene) == false) | 774 | if (h(user, parcel, p, m_scene, allowManager) == false) |
775 | return false; | 775 | return false; |
776 | } | 776 | } |
777 | } | 777 | } |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 2420048..cfa862e 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -1881,25 +1881,27 @@ namespace OpenSim.Region.Framework.Scenes | |||
1881 | { | 1881 | { |
1882 | SceneObjectPart part = parts[i]; | 1882 | SceneObjectPart part = parts[i]; |
1883 | 1883 | ||
1884 | Scene.ForEachScenePresence(sp => | 1884 | if (Scene != null) |
1885 | { | 1885 | { |
1886 | if (!sp.IsChildAgent && sp.ParentID == LocalId) | 1886 | Scene.ForEachRootScenePresence(delegate(ScenePresence avatar) |
1887 | sp.StandUp(); | ||
1888 | |||
1889 | if (!silent) | ||
1890 | { | 1887 | { |
1891 | part.ClearUpdateSchedule(); | 1888 | if (avatar.ParentID == LocalId) |
1892 | if (part == m_rootPart) | 1889 | avatar.StandUp(); |
1890 | |||
1891 | if (!silent) | ||
1893 | { | 1892 | { |
1894 | if (!IsAttachment | 1893 | part.ClearUpdateSchedule(); |
1895 | || AttachedAvatar == sp.UUID | 1894 | if (part == m_rootPart) |
1896 | || !HasPrivateAttachmentPoint) | 1895 | { |
1897 | sp.ControllingClient.SendKillObject(new List<uint> { part.LocalId }); | 1896 | if (!IsAttachment |
1897 | || AttachedAvatar == avatar.ControllingClient.AgentId | ||
1898 | || !HasPrivateAttachmentPoint) | ||
1899 | avatar.ControllingClient.SendKillObject(new List<uint> { part.LocalId }); | ||
1900 | } | ||
1898 | } | 1901 | } |
1899 | } | 1902 | }); |
1900 | }); | 1903 | } |
1901 | } | 1904 | } |
1902 | |||
1903 | } | 1905 | } |
1904 | 1906 | ||
1905 | public void AddScriptLPS(int count) | 1907 | public void AddScriptLPS(int count) |
diff --git a/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs b/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs index b05482e..38ba54d 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs | |||
@@ -639,15 +639,15 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice | |||
639 | // TODO: EstateSettings don't seem to get propagated... | 639 | // TODO: EstateSettings don't seem to get propagated... |
640 | if (!scene.RegionInfo.EstateSettings.AllowVoice) | 640 | if (!scene.RegionInfo.EstateSettings.AllowVoice) |
641 | { | 641 | { |
642 | m_log.DebugFormat("[VivoxVoice][PARCELVOICE]: region \"{0}\": voice not enabled in estate settings", | 642 | //m_log.DebugFormat("[VivoxVoice][PARCELVOICE]: region \"{0}\": voice not enabled in estate settings", |
643 | scene.RegionInfo.RegionName); | 643 | // scene.RegionInfo.RegionName); |
644 | channel_uri = String.Empty; | 644 | channel_uri = String.Empty; |
645 | } | 645 | } |
646 | 646 | ||
647 | if ((land.Flags & (uint)ParcelFlags.AllowVoiceChat) == 0) | 647 | if ((land.Flags & (uint)ParcelFlags.AllowVoiceChat) == 0) |
648 | { | 648 | { |
649 | m_log.DebugFormat("[VivoxVoice][PARCELVOICE]: region \"{0}\": Parcel \"{1}\" ({2}): avatar \"{3}\": voice not enabled for parcel", | 649 | //m_log.DebugFormat("[VivoxVoice][PARCELVOICE]: region \"{0}\": Parcel \"{1}\" ({2}): avatar \"{3}\": voice not enabled for parcel", |
650 | scene.RegionInfo.RegionName, land.Name, land.LocalID, avatarName); | 650 | // scene.RegionInfo.RegionName, land.Name, land.LocalID, avatarName); |
651 | channel_uri = String.Empty; | 651 | channel_uri = String.Empty; |
652 | } | 652 | } |
653 | else | 653 | else |
diff --git a/OpenSim/Region/RegionCombinerModule/RegionCombinerPermissionModule.cs b/OpenSim/Region/RegionCombinerModule/RegionCombinerPermissionModule.cs index 7c662c9..40ed3fd 100644 --- a/OpenSim/Region/RegionCombinerModule/RegionCombinerPermissionModule.cs +++ b/OpenSim/Region/RegionCombinerModule/RegionCombinerPermissionModule.cs | |||
@@ -105,9 +105,9 @@ namespace OpenSim.Region.RegionCombinerModule | |||
105 | return m_rootScene.Permissions.CanEditObject(objectid, editorid); | 105 | return m_rootScene.Permissions.CanEditObject(objectid, editorid); |
106 | } | 106 | } |
107 | 107 | ||
108 | public bool CanEditParcelProperties(UUID user, ILandObject parcel, GroupPowers g, Scene scene) | 108 | public bool CanEditParcelProperties(UUID user, ILandObject parcel, GroupPowers g, Scene scene, bool allowManager) |
109 | { | 109 | { |
110 | return m_rootScene.Permissions.CanEditParcelProperties(user, parcel, g); | 110 | return m_rootScene.Permissions.CanEditParcelProperties(user, parcel, g, allowManager); |
111 | } | 111 | } |
112 | 112 | ||
113 | public bool CanInstantMessage(UUID user, UUID target, Scene startscene) | 113 | public bool CanInstantMessage(UUID user, UUID target, Scene startscene) |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index cfec630..916d841 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -7186,7 +7186,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
7186 | UUID key; | 7186 | UUID key; |
7187 | ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition); | 7187 | ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition); |
7188 | 7188 | ||
7189 | if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageBanned)) | 7189 | if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageBanned, false)) |
7190 | { | 7190 | { |
7191 | int expires = 0; | 7191 | int expires = 0; |
7192 | if (hours != 0) | 7192 | if (hours != 0) |
@@ -10513,7 +10513,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
10513 | // according to the docs, this command only works if script owner and land owner are the same | 10513 | // according to the docs, this command only works if script owner and land owner are the same |
10514 | // lets add estate owners and gods, too, and use the generic permission check. | 10514 | // lets add estate owners and gods, too, and use the generic permission check. |
10515 | ILandObject landObject = World.LandChannel.GetLandObject(m_host.AbsolutePosition); | 10515 | ILandObject landObject = World.LandChannel.GetLandObject(m_host.AbsolutePosition); |
10516 | if (!World.Permissions.CanEditParcelProperties(m_host.OwnerID, landObject, GroupPowers.ChangeMedia)) return; | 10516 | if (!World.Permissions.CanEditParcelProperties(m_host.OwnerID, landObject, GroupPowers.ChangeMedia, false)) return; |
10517 | 10517 | ||
10518 | bool update = false; // send a ParcelMediaUpdate (and possibly change the land's media URL)? | 10518 | bool update = false; // send a ParcelMediaUpdate (and possibly change the land's media URL)? |
10519 | byte loop = 0; | 10519 | byte loop = 0; |
@@ -10956,7 +10956,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
10956 | m_host.AddScriptLPS(1); | 10956 | m_host.AddScriptLPS(1); |
10957 | UUID key; | 10957 | UUID key; |
10958 | ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition); | 10958 | ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition); |
10959 | if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageBanned)) | 10959 | if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageBanned, false)) |
10960 | { | 10960 | { |
10961 | int expires = 0; | 10961 | int expires = 0; |
10962 | if (hours != 0) | 10962 | if (hours != 0) |
@@ -10997,7 +10997,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
10997 | m_host.AddScriptLPS(1); | 10997 | m_host.AddScriptLPS(1); |
10998 | UUID key; | 10998 | UUID key; |
10999 | ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition); | 10999 | ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition); |
11000 | if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageAllowed)) | 11000 | if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageAllowed, false)) |
11001 | { | 11001 | { |
11002 | if (UUID.TryParse(avatar, out key)) | 11002 | if (UUID.TryParse(avatar, out key)) |
11003 | { | 11003 | { |
@@ -11024,7 +11024,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
11024 | m_host.AddScriptLPS(1); | 11024 | m_host.AddScriptLPS(1); |
11025 | UUID key; | 11025 | UUID key; |
11026 | ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition); | 11026 | ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition); |
11027 | if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageBanned)) | 11027 | if (World.Permissions.CanEditParcelProperties(m_host.OwnerID, land, GroupPowers.LandManageBanned, false)) |
11028 | { | 11028 | { |
11029 | if (UUID.TryParse(avatar, out key)) | 11029 | if (UUID.TryParse(avatar, out key)) |
11030 | { | 11030 | { |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index c474173..7081416 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -1434,7 +1434,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1434 | return; | 1434 | return; |
1435 | } | 1435 | } |
1436 | 1436 | ||
1437 | if (!World.Permissions.CanEditParcelProperties(m_host.OwnerID, startLandObject, GroupPowers.LandOptions)) | 1437 | if (!World.Permissions.CanEditParcelProperties(m_host.OwnerID, startLandObject, GroupPowers.LandOptions, false)) |
1438 | { | 1438 | { |
1439 | OSSLShoutError("You do not have permission to modify the parcel"); | 1439 | OSSLShoutError("You do not have permission to modify the parcel"); |
1440 | return; | 1440 | return; |