From 0993af08718eaf6956facd3f2ee77cef602de259 Mon Sep 17 00:00:00 2001 From: Melanie Date: Tue, 24 Jul 2012 11:38:30 +0200 Subject: [PATCH 1/8] Allow load and save of IAR without a password. The password must still be present on the command line for compatibility, but is ignored. Avination's IAR operations are administratively done and the staff doesn't have the passwords of the users. --- .../Avatar/Inventory/Archiver/InventoryArchiverModule.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs index cf870100a4..7d1fe68e8c 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs @@ -492,6 +492,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver return null; } + return account; + /* try { string encpass = Util.Md5Hash(pass); @@ -512,6 +514,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver m_log.ErrorFormat("[INVENTORY ARCHIVER]: Could not authenticate password, {0}", e.Message); return null; } + */ } /// From be22e3599cece284f981d0a98224dd563c3d933f Mon Sep 17 00:00:00 2001 From: Melanie Date: Fri, 27 Jul 2012 03:24:45 +0200 Subject: [PATCH 2/8] Change the stair fudge factor so steps of 0.5m can be climbled to match inworldz claims and SL's realities --- OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs b/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs index a554897e53..f3ac3ca3c1 100644 --- a/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs +++ b/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs @@ -1027,7 +1027,7 @@ namespace OpenSim.Region.Physics.OdePlugin { d.AABB aabb; d.GeomGetAABB(g2, out aabb); - float tmp = vtmp.Z - sz * .25f; + float tmp = vtmp.Z - sz * .18f; if (aabb.MaxZ < tmp) { @@ -1057,7 +1057,7 @@ namespace OpenSim.Region.Physics.OdePlugin { d.AABB aabb; d.GeomGetAABB(g1, out aabb); - float tmp = vtmp.Z - sz * .25f; + float tmp = vtmp.Z - sz * .18f; if (aabb.MaxZ < tmp) { From 9f6236f5bfbb6080ccfc5b87447b134a5cb3d449 Mon Sep 17 00:00:00 2001 From: Melanie Date: Fri, 27 Jul 2012 12:10:04 +0200 Subject: [PATCH 3/8] Implement the linefeed URL hack for ShoutCast and other services --- .../Shared/Api/Implementation/LSL_Api.cs | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 977f39eed0..2425646a8f 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -11471,6 +11471,59 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (userAgent != null) httpHeaders["User-Agent"] = userAgent; + // See if the URL contains any header hacks + string[] urlParts = url.Split(new char[] {'\n'}); + if (urlParts.Length > 1) + { + // Iterate the passed headers and parse them + for (int i = 1 ; i < urlParts.Length ; i++ ) + { + // The rest of those would be added to the body in SL. + // Let's not do that. + if (urlParts[i] == String.Empty) + break; + + // See if this could be a valid header + string[] headerParts = urlParts[i].Split(new char[] {':'}, 2); + if (headerParts.Length != 2) + continue; + + string headerName = headerParts[0].Trim(); + string headerValue = headerParts[1].Trim(); + + // Filter out headers that could be used to abuse + // another system or cloak the request + if (headerName.ToLower() == "x-secondlife-shard" || + headerName.ToLower() == "x-secondlife-object-name" || + headerName.ToLower() == "x-secondlife-object-key" || + headerName.ToLower() == "x-secondlife-region" || + headerName.ToLower() == "x-secondlife-local-position" || + headerName.ToLower() == "x-secondlife-local-velocity" || + headerName.ToLower() == "x-secondlife-local-rotation" || + headerName.ToLower() == "x-secondlife-owner-name" || + headerName.ToLower() == "x-secondlife-owner-key" || + headerName.ToLower() == "connection" || + headerName.ToLower() == "content-length" || + headerName.ToLower() == "from" || + headerName.ToLower() == "host" || + headerName.ToLower() == "proxy-authorization" || + headerName.ToLower() == "referer" || + headerName.ToLower() == "trailer" || + headerName.ToLower() == "transfer-encoding" || + headerName.ToLower() == "via" || + headerName.ToLower() == "authorization") + continue; + + httpHeaders[headerName] = headerValue; + } + + // Finally, strip any protocol specifier from the URL + url = urlParts[0].Trim(); + int idx = url.IndexOf(" HTTP/"); + if (idx != -1) + url = url.Substring(0, idx); + } + string authregex = @"^(https?:\/\/)(\w+):(\w+)@(.*)$"; Regex r = new Regex(authregex); int[] gnums = r.GetGroupNumbers(); From 9163cdd7c17dd7f3732ba2c140b5fc808e5cd17b Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 29 Jul 2012 15:09:42 +0200 Subject: [PATCH 4/8] Bump number of URLs to 15000 per region --- OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs index f4a89bd4f2..e0e358a613 100644 --- a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs +++ b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs @@ -80,7 +80,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp /// /// Maximum number of external urls that can be set up by this module. /// - private int m_TotalUrls = 5000; + private int m_TotalUrls = 15000; private uint https_port = 0; private IHttpServer m_HttpServer = null; From 729046e1ade1dd4c65fbeaf849d7788233593ad2 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 29 Jul 2012 15:10:12 +0200 Subject: [PATCH 5/8] See that if controls are taken, those are released before taking new ones --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index e27d3096b0..89df0ce03a 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -3816,6 +3816,9 @@ namespace OpenSim.Region.Framework.Scenes if (p == null) return; + ControllingClient.SendTakeControls(controls, false, false); + ControllingClient.SendTakeControls(controls, true, false); + ScriptControllers obj = new ScriptControllers(); obj.ignoreControls = ScriptControlled.CONTROL_ZERO; obj.eventControls = ScriptControlled.CONTROL_ZERO; From 659be9dd504587c637e5b3ae14276b2327029e0d Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 29 Jul 2012 15:11:39 +0200 Subject: [PATCH 6/8] When controls are released by script, don't drop the permission to retake them. --- .../Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 2425646a8f..fac249e5c9 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -3315,8 +3315,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { // Unregister controls from Presence presence.UnRegisterControlEventsToScript(m_host.LocalId, m_item.ItemID); - // Remove Take Control permission. - m_item.PermsMask &= ~ScriptBaseClass.PERMISSION_TAKE_CONTROLS; } } } From 30784ab9e15a65e67bba8a75cf4e8786064bc12d Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 29 Jul 2012 15:12:03 +0200 Subject: [PATCH 7/8] Fix an exception while outputting a log message --- OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index 5d8447bddb..775a4c2c5d 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs @@ -100,7 +100,7 @@ namespace OpenSim.Region.Framework.Scenes { m_log.WarnFormat( "[SCENE COMMUNICATION SERVICE]: Region {0} failed to inform neighbour at {1}-{2} that it is up.", - x / Constants.RegionSize, y / Constants.RegionSize); + m_scene.Name, x / Constants.RegionSize, y / Constants.RegionSize); } } From 88d68e68c19107701ca8fbfb73413e0ea978b862 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 29 Jul 2012 15:40:31 +0200 Subject: [PATCH 8/8] Return world rotation on llGetObjectDetails()'s OBJECT_ROT --- .../Shared/Api/Implementation/LSL_Api.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index fac249e5c9..cd72dc2d4b 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -11846,11 +11846,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api ret.Add(new LSL_Vector(opos.X, opos.Y, opos.Z)); break; case ScriptBaseClass.OBJECT_ROT: -// Quaternion orot = obj.RotationOffset; -// ret.Add(new LSL_Rotation(orot.X, orot.Y, orot.Z, orot.W)); + { + Quaternion rot = Quaternion.Identity; - LSL_Rotation objrot = GetPartRot(obj); - ret.Add(objrot); + if (obj.ParentGroup.RootPart == obj) + rot = obj.ParentGroup.GroupRotation; + else + rot = obj.GetWorldRotation(); + + LSL_Rotation objrot = new LSL_Rotation(rot.X, rot.Y, rot.Z, rot.W); + ret.Add(objrot); + } break; case ScriptBaseClass.OBJECT_VELOCITY: Vector3 ovel = obj.Velocity;