From 550c3572a1b33e26b0bfe260f80fd499169b6420 Mon Sep 17 00:00:00 2001 From: John Hurliman Date: Thu, 29 Jul 2010 14:39:08 -0700 Subject: [PATCH 01/19] * Tweaked WebUtil.PostToService() to help debug an object disposed exception --- OpenSim/Framework/WebUtil.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index e20866eaa3..d16f9bf213 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -139,8 +139,9 @@ namespace OpenSim.Framework request.ContentLength = requestData.Length; request.ContentType = "application/x-www-form-urlencoded"; - using (Stream requestStream = request.GetRequestStream()) - requestStream.Write(requestData, 0, requestData.Length); + Stream requestStream = request.GetRequestStream(); + requestStream.Write(requestData, 0, requestData.Length); + requestStream.Close(); using (WebResponse response = request.GetResponse()) { @@ -169,7 +170,7 @@ namespace OpenSim.Framework } catch (Exception ex) { - m_log.Warn("POST to URL " + url + " failed: " + ex.Message); + m_log.Warn("POST to URL " + url + " failed: " + ex); errorMessage = ex.Message; } From 2257e39edae4ab4ec8aa485808663b6d298085e3 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Sun, 20 Jun 2010 06:23:08 +0200 Subject: [PATCH 02/19] Make dataserver() return a 0 when agent id offline, instead of a timeout --- .../ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 417cef4e64..6edd08d5e8 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -3918,22 +3918,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api UUID uuid = (UUID)id; UserAccount account = World.UserAccountService.GetUserAccount(World.RegionInfo.ScopeID, uuid); + if (account == null) + return UUID.Zero.ToString(); + PresenceInfo pinfo = null; PresenceInfo[] pinfos = World.PresenceService.GetAgents(new string[] { uuid.ToString() }); if (pinfos != null && pinfos.Length > 0) pinfo = pinfos[0]; - if (pinfo == null) - return UUID.Zero.ToString(); - string reply = String.Empty; switch (data) { case 1: // DATA_ONLINE (0|1) - // TODO: implement fetching of this information - if (pinfo != null) + if (pinfo != null && pinfo.RegionID != UUID.Zero) reply = "1"; else reply = "0"; From b83910f12aebaca17d83cbfaca8241a527feeb1f Mon Sep 17 00:00:00 2001 From: John Hurliman Date: Thu, 29 Jul 2010 16:42:00 -0700 Subject: [PATCH 03/19] * Added debug logging to SimianGrid inventory service response parsing --- .../Connectors/SimianGrid/SimianInventoryServiceConnector.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs index dc68259d93..2b6d29c44d 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs @@ -745,6 +745,7 @@ namespace OpenSim.Services.Connectors.SimianGrid } } + m_log.Debug("[SIMIAN INVENTORY CONNECTOR]: Parsed " + invFolders.Count + " folders from SimianGrid response"); return invFolders; } @@ -810,6 +811,7 @@ namespace OpenSim.Services.Connectors.SimianGrid } } + m_log.Debug("[SIMIAN INVENTORY CONNECTOR]: Parsed " + invItems.Count + " items from SimianGrid response"); return invItems; } From 5b80e3fc18bdb21a689c1806480714dbfff4200e Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Jul 2010 19:26:54 +0100 Subject: [PATCH 04/19] convert attachments module from old region module style to new --- .../Avatar/Attachments/AttachmentsModule.cs | 44 +++++++++++-------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index ff3036aca8..1187e91cdc 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs @@ -29,6 +29,7 @@ using System; using System.Collections.Generic; using System.Reflection; using log4net; +using Mono.Addins; using Nini.Config; using OpenMetaverse; using OpenMetaverse.Packets; @@ -39,38 +40,43 @@ using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.CoreModules.Avatar.Attachments { - public class AttachmentsModule : IAttachmentsModule, IRegionModule + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "AttachmentsModule")] + public class AttachmentsModule : IAttachmentsModule, INonSharedRegionModule { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected Scene m_scene = null; + + public string Name { get { return "Attachments Module"; } } + public Type ReplaceableInterface { get { return null; } } - public void Initialise(Scene scene, IConfigSource source) + public void Initialise(IConfigSource source) {} + + public void AddRegion(Scene scene) { - scene.RegisterModuleInterface(this); m_scene = scene; + m_scene.RegisterModuleInterface(this); } - - public void PostInitialise() + + public void RemoveRegion(Scene scene) { + m_scene.UnregisterModuleInterface(this); } - - public void Close() + + public void RegionLoaded(Scene scene) {} + + public void Close() { + RemoveRegion(m_scene); } - public string Name - { - get { return "Attachments Module"; } - } - - public bool IsSharedModule - { - get { return false; } - } - - // Called by client - // + /// + /// Called by client + /// + /// + /// + /// + /// public void AttachObject(IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, bool silent) { m_log.Debug("[ATTACHMENTS MODULE]: Invoking AttachObject"); From f393e10ea48804d7de4ed8f534bf425660b2c441 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Jul 2010 19:34:55 +0100 Subject: [PATCH 05/19] remove unused ACL class --- OpenSim/Framework/ACL.cs | 252 ----------------------------- OpenSim/Framework/Tests/ACLTest.cs | 125 -------------- 2 files changed, 377 deletions(-) delete mode 100644 OpenSim/Framework/ACL.cs delete mode 100644 OpenSim/Framework/Tests/ACLTest.cs diff --git a/OpenSim/Framework/ACL.cs b/OpenSim/Framework/ACL.cs deleted file mode 100644 index f76e8b7288..0000000000 --- a/OpenSim/Framework/ACL.cs +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; - -namespace OpenSim.Framework -{ - // ACL Class - // Modelled after the structure of the Zend ACL Framework Library - // with one key difference - the tree will search for all matching - // permissions rather than just the first. Deny permissions will - // override all others. - - #region ACL Core Class - - /// - /// Access Control List Engine - /// - public class ACL - { - private Dictionary Resources = new Dictionary(); - private Dictionary Roles = new Dictionary(); - - /// - /// Adds a new role - /// - /// - /// - public ACL AddRole(Role role) - { - if (Roles.ContainsKey(role.Name)) - throw new AlreadyContainsRoleException(role); - - Roles.Add(role.Name, role); - - return this; - } - - /// - /// Adds a new resource - /// - /// - /// - public ACL AddResource(Resource resource) - { - Resources.Add(resource.Name, resource); - - return this; - } - - /// - /// Permision for user/roll on a resource - /// - /// - /// - /// - public Permission HasPermission(string role, string resource) - { - if (!Roles.ContainsKey(role)) - throw new KeyNotFoundException(); - - if (!Resources.ContainsKey(resource)) - throw new KeyNotFoundException(); - - return Roles[role].RequestPermission(resource); - } - - public ACL GrantPermission(string role, string resource) - { - if (!Roles.ContainsKey(role)) - throw new KeyNotFoundException(); - - if (!Resources.ContainsKey(resource)) - throw new KeyNotFoundException(); - - Roles[role].GivePermission(resource, Permission.Allow); - - return this; - } - - public ACL DenyPermission(string role, string resource) - { - if (!Roles.ContainsKey(role)) - throw new KeyNotFoundException(); - - if (!Resources.ContainsKey(resource)) - throw new KeyNotFoundException(); - - Roles[role].GivePermission(resource, Permission.Deny); - - return this; - } - - public ACL ResetPermission(string role, string resource) - { - if (!Roles.ContainsKey(role)) - throw new KeyNotFoundException(); - - if (!Resources.ContainsKey(resource)) - throw new KeyNotFoundException(); - - Roles[role].GivePermission(resource, Permission.None); - - return this; - } - } - - #endregion - - #region Exceptions - - /// - /// Thrown when an ACL attempts to add a duplicate role. - /// - public class AlreadyContainsRoleException : Exception - { - protected Role m_role; - - public AlreadyContainsRoleException(Role role) - { - m_role = role; - } - - public Role ErrorRole - { - get { return m_role; } - } - - public override string ToString() - { - return "This ACL already contains a role called '" + m_role.Name + "'."; - } - } - - #endregion - - #region Roles and Resources - - /// - /// Does this Role have permission to access a specified Resource? - /// - public enum Permission - { - Deny, - None, - Allow - } ; - - /// - /// A role class, for use with Users or Groups - /// - public class Role - { - private string m_name; - private Role[] m_parents; - private Dictionary m_resources = new Dictionary(); - - public Role(string name) - { - m_name = name; - m_parents = null; - } - - public Role(string name, Role[] parents) - { - m_name = name; - m_parents = parents; - } - - public string Name - { - get { return m_name; } - } - - public Permission RequestPermission(string resource) - { - return RequestPermission(resource, Permission.None); - } - - public Permission RequestPermission(string resource, Permission current) - { - // Deny permissions always override any others - if (current == Permission.Deny) - return current; - - Permission temp = Permission.None; - - // Pickup non-None permissions - if (m_resources.ContainsKey(resource) && m_resources[resource] != Permission.None) - temp = m_resources[resource]; - - if (m_parents != null) - { - foreach (Role parent in m_parents) - { - temp = parent.RequestPermission(resource, temp); - } - } - - return temp; - } - - public void GivePermission(string resource, Permission perm) - { - m_resources[resource] = perm; - } - } - - public class Resource - { - private string m_name; - - public Resource(string name) - { - m_name = name; - } - - public string Name - { - get { return m_name; } - } - } - - #endregion - - -} \ No newline at end of file diff --git a/OpenSim/Framework/Tests/ACLTest.cs b/OpenSim/Framework/Tests/ACLTest.cs deleted file mode 100644 index 06e860e01c..0000000000 --- a/OpenSim/Framework/Tests/ACLTest.cs +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using NUnit.Framework; -using System.Collections.Generic; - - -namespace OpenSim.Framework.Tests -{ - [TestFixture] - public class ACLTest - { - #region Tests - - /// - /// ACL Test class - /// - [Test] - public void ACLTest01() - { - ACL acl = new ACL(); - - Role Guests = new Role("Guests"); - acl.AddRole(Guests); - - Role[] parents = new Role[1]; - parents[0] = Guests; - - Role JoeGuest = new Role("JoeGuest", parents); - acl.AddRole(JoeGuest); - - Resource CanBuild = new Resource("CanBuild"); - acl.AddResource(CanBuild); - - - acl.GrantPermission("Guests", "CanBuild"); - - Permission perm = acl.HasPermission("JoeGuest", "CanBuild"); - Assert.That(perm == Permission.Allow, "JoeGuest should have permission to build"); - perm = Permission.None; - try - { - perm = acl.HasPermission("unknownGuest", "CanBuild"); - - } - catch (KeyNotFoundException) - { - - - } - catch (Exception) - { - Assert.That(false,"Exception thrown should have been KeyNotFoundException"); - } - Assert.That(perm == Permission.None,"Permission None should be set because exception should have been thrown"); - - } - - [Test] - public void KnownButPermissionDenyAndPermissionNoneUserTest() - { - ACL acl = new ACL(); - - Role Guests = new Role("Guests"); - acl.AddRole(Guests); - Role Administrators = new Role("Administrators"); - acl.AddRole(Administrators); - Role[] Guestparents = new Role[1]; - Role[] Adminparents = new Role[1]; - - Guestparents[0] = Guests; - Adminparents[0] = Administrators; - - Role JoeGuest = new Role("JoeGuest", Guestparents); - acl.AddRole(JoeGuest); - - Resource CanBuild = new Resource("CanBuild"); - acl.AddResource(CanBuild); - - Resource CanScript = new Resource("CanScript"); - acl.AddResource(CanScript); - - Resource CanRestart = new Resource("CanRestart"); - acl.AddResource(CanRestart); - - acl.GrantPermission("Guests", "CanBuild"); - acl.DenyPermission("Guests", "CanRestart"); - - acl.GrantPermission("Administrators", "CanScript"); - - acl.GrantPermission("Administrators", "CanRestart"); - Permission setPermission = acl.HasPermission("JoeGuest", "CanRestart"); - Assert.That(setPermission == Permission.Deny, "Guests Should not be able to restart"); - Assert.That(acl.HasPermission("JoeGuest", "CanScript") == Permission.None, - "No Explicit Permissions set so should be Permission.None"); - } - - #endregion - } -} From c7652d287bebe27d324a2ed3e5cd2746c75ff2d1 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Jul 2010 19:44:39 +0100 Subject: [PATCH 06/19] remove now unused GridConfig, MessageServerConfig, UserConfig --- OpenSim/Framework/ConfigBase.cs | 38 ---- OpenSim/Framework/GridConfig.cs | 162 ---------------- OpenSim/Framework/MessageServerConfig.cs | 152 --------------- OpenSim/Framework/UserConfig.cs | 231 ----------------------- 4 files changed, 583 deletions(-) delete mode 100644 OpenSim/Framework/ConfigBase.cs delete mode 100644 OpenSim/Framework/GridConfig.cs delete mode 100644 OpenSim/Framework/MessageServerConfig.cs delete mode 100644 OpenSim/Framework/UserConfig.cs diff --git a/OpenSim/Framework/ConfigBase.cs b/OpenSim/Framework/ConfigBase.cs deleted file mode 100644 index 40ec32f2f2..0000000000 --- a/OpenSim/Framework/ConfigBase.cs +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace OpenSim.Framework -{ - public abstract class ConfigBase - { - protected ConfigurationMember m_configMember; - } -} diff --git a/OpenSim/Framework/GridConfig.cs b/OpenSim/Framework/GridConfig.cs deleted file mode 100644 index 3a43a14415..0000000000 --- a/OpenSim/Framework/GridConfig.cs +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; - -namespace OpenSim.Framework -{ - public class GridConfig:ConfigBase - { - public string AllowForcefulBanlines = "TRUE"; - public bool AllowRegionRegistration = true; - public string AssetRecvKey = String.Empty; - public string AssetSendKey = String.Empty; - - public string DatabaseProvider = String.Empty; - public string DatabaseConnect = String.Empty; - public string DefaultAssetServer = String.Empty; - public string DefaultUserServer = String.Empty; - public uint HttpPort = ConfigSettings.DefaultGridServerHttpPort; - public string SimRecvKey = String.Empty; - public string SimSendKey = String.Empty; - public string UserRecvKey = String.Empty; - public string UserSendKey = String.Empty; - public string ConsoleUser = String.Empty; - public string ConsolePass = String.Empty; - - public GridConfig(string description, string filename) - { - m_configMember = - new ConfigurationMember(filename, description, loadConfigurationOptions, handleIncomingConfiguration, true); - m_configMember.performConfigurationRetrieve(); - } - - public void loadConfigurationOptions() - { - m_configMember.addConfigurationOption("default_asset_server", - ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, - "Default Asset Server URI", - "http://127.0.0.1:" + ConfigSettings.DefaultAssetServerHttpPort.ToString() + "/", - false); - m_configMember.addConfigurationOption("asset_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Key to send to asset server", "null", false); - m_configMember.addConfigurationOption("asset_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Key to expect from asset server", "null", false); - - m_configMember.addConfigurationOption("default_user_server", - ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, - "Default User Server URI", - "http://127.0.0.1:" + ConfigSettings.DefaultUserServerHttpPort.ToString() + "/", false); - m_configMember.addConfigurationOption("user_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Key to send to user server", "null", false); - m_configMember.addConfigurationOption("user_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Key to expect from user server", "null", false); - - m_configMember.addConfigurationOption("sim_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Key to send to a simulator", "null", false); - m_configMember.addConfigurationOption("sim_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Key to expect from a simulator", "null", false); - m_configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "DLL for database provider", "OpenSim.Data.MySQL.dll", false); - m_configMember.addConfigurationOption("database_connect", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Database connect string", "", false); - - m_configMember.addConfigurationOption("http_port", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, - "Http Listener port", ConfigSettings.DefaultGridServerHttpPort.ToString(), false); - - m_configMember.addConfigurationOption("allow_forceful_banlines", - ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Allow Forceful Banlines", "TRUE", true); - - m_configMember.addConfigurationOption("allow_region_registration", - ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN, - "Allow regions to register immediately upon grid server startup? true/false", - "True", - false); - m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Remote console access user name [Default: disabled]", "", false); - - m_configMember.addConfigurationOption("console_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Remote console access password [Default: disabled]", "", false); - - } - - public bool handleIncomingConfiguration(string configuration_key, object configuration_result) - { - switch (configuration_key) - { - case "default_asset_server": - DefaultAssetServer = (string) configuration_result; - break; - case "asset_send_key": - AssetSendKey = (string) configuration_result; - break; - case "asset_recv_key": - AssetRecvKey = (string) configuration_result; - break; - case "default_user_server": - DefaultUserServer = (string) configuration_result; - break; - case "user_send_key": - UserSendKey = (string) configuration_result; - break; - case "user_recv_key": - UserRecvKey = (string) configuration_result; - break; - case "sim_send_key": - SimSendKey = (string) configuration_result; - break; - case "sim_recv_key": - SimRecvKey = (string) configuration_result; - break; - case "database_provider": - DatabaseProvider = (string) configuration_result; - break; - case "database_connect": - DatabaseConnect = (string) configuration_result; - break; - case "http_port": - HttpPort = (uint) configuration_result; - break; - case "allow_forceful_banlines": - AllowForcefulBanlines = (string) configuration_result; - break; - case "allow_region_registration": - AllowRegionRegistration = (bool)configuration_result; - break; - case "console_user": - ConsoleUser = (string)configuration_result; - break; - case "console_pass": - ConsolePass = (string)configuration_result; - break; - } - - return true; - } - } -} diff --git a/OpenSim/Framework/MessageServerConfig.cs b/OpenSim/Framework/MessageServerConfig.cs deleted file mode 100644 index 884c0eab23..0000000000 --- a/OpenSim/Framework/MessageServerConfig.cs +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; - -namespace OpenSim.Framework -{ - /// - /// Message Server Config - Configuration of the Message Server - /// - public class MessageServerConfig:ConfigBase - { - public string DatabaseProvider = String.Empty; - public string DatabaseConnect = String.Empty; - public string GridCommsProvider = String.Empty; - public string GridRecvKey = String.Empty; - public string GridSendKey = String.Empty; - public string GridServerURL = String.Empty; - public uint HttpPort = ConfigSettings.DefaultMessageServerHttpPort; - public bool HttpSSL = ConfigSettings.DefaultMessageServerHttpSSL; - public string MessageServerIP = String.Empty; - public string UserRecvKey = String.Empty; - public string UserSendKey = String.Empty; - public string UserServerURL = String.Empty; - public string ConsoleUser = String.Empty; - public string ConsolePass = String.Empty; - - public MessageServerConfig(string description, string filename) - { - m_configMember = - new ConfigurationMember(filename, description, loadConfigurationOptions, handleIncomingConfiguration, true); - m_configMember.performConfigurationRetrieve(); - } - - public void loadConfigurationOptions() - { - m_configMember.addConfigurationOption("default_user_server", - ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, - "Default User Server URI", - "http://127.0.0.1:" + ConfigSettings.DefaultUserServerHttpPort.ToString() + "/", false); - m_configMember.addConfigurationOption("user_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Key to send to user server", "null", false); - m_configMember.addConfigurationOption("user_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Key to expect from user server", "null", false); - m_configMember.addConfigurationOption("default_grid_server", - ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, - "Default Grid Server URI", - "http://127.0.0.1:" + ConfigSettings.DefaultGridServerHttpPort.ToString() + "/", false); - m_configMember.addConfigurationOption("grid_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Key to send to grid server", "null", false); - m_configMember.addConfigurationOption("grid_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Key to expect from grid server", "null", false); - - m_configMember.addConfigurationOption("database_connect", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Connection String for Database", "", false); - - m_configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "DLL for database provider", "OpenSim.Data.MySQL.dll", false); - - m_configMember.addConfigurationOption("region_comms_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "DLL for comms provider", "OpenSim.Region.Communications.OGS1.dll", false); - - m_configMember.addConfigurationOption("http_port", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, - "Http Listener port", ConfigSettings.DefaultMessageServerHttpPort.ToString(), false); - m_configMember.addConfigurationOption("http_ssl", ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN, - "Use SSL? true/false", ConfigSettings.DefaultMessageServerHttpSSL.ToString(), false); - m_configMember.addConfigurationOption("published_ip", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "My Published IP Address", "127.0.0.1", false); - m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Remote console access user name [Default: disabled]", "", false); - - m_configMember.addConfigurationOption("console_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Remote console access password [Default: disabled]", "", false); - - } - - public bool handleIncomingConfiguration(string configuration_key, object configuration_result) - { - switch (configuration_key) - { - case "default_user_server": - UserServerURL = (string) configuration_result; - break; - case "user_send_key": - UserSendKey = (string) configuration_result; - break; - case "user_recv_key": - UserRecvKey = (string) configuration_result; - break; - case "default_grid_server": - GridServerURL = (string) configuration_result; - break; - case "grid_send_key": - GridSendKey = (string) configuration_result; - break; - case "grid_recv_key": - GridRecvKey = (string) configuration_result; - break; - case "database_provider": - DatabaseProvider = (string) configuration_result; - break; - case "database_connect": - DatabaseConnect = (string)configuration_result; - break; - case "http_port": - HttpPort = (uint) configuration_result; - break; - case "http_ssl": - HttpSSL = (bool) configuration_result; - break; - case "region_comms_provider": - GridCommsProvider = (string) configuration_result; - break; - case "published_ip": - MessageServerIP = (string) configuration_result; - break; - case "console_user": - ConsoleUser = (string)configuration_result; - break; - case "console_pass": - ConsolePass = (string)configuration_result; - break; - } - - return true; - } - } -} diff --git a/OpenSim/Framework/UserConfig.cs b/OpenSim/Framework/UserConfig.cs deleted file mode 100644 index 0fa82cf4c2..0000000000 --- a/OpenSim/Framework/UserConfig.cs +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.IO; - -namespace OpenSim.Framework -{ - /// - /// UserConfig -- For User Server Configuration - /// - public class UserConfig:ConfigBase - { - public string DatabaseProvider = String.Empty; - public string DatabaseConnect = String.Empty; - public string DefaultStartupMsg = String.Empty; - public uint DefaultX = 1000; - public uint DefaultY = 1000; - public string GridRecvKey = String.Empty; - public string GridSendKey = String.Empty; - public uint HttpPort = ConfigSettings.DefaultUserServerHttpPort; - public bool HttpSSL = ConfigSettings.DefaultUserServerHttpSSL; - public uint DefaultUserLevel = 0; - public string LibraryXmlfile = ""; - public string ConsoleUser = String.Empty; - public string ConsolePass = String.Empty; - - private Uri m_inventoryUrl; - - public Uri InventoryUrl - { - get - { - return m_inventoryUrl; - } - set - { - m_inventoryUrl = value; - } - } - - private Uri m_authUrl; - public Uri AuthUrl - { - get - { - return m_authUrl; - } - set - { - m_authUrl = value; - } - } - - private Uri m_gridServerURL; - - public Uri GridServerURL - { - get - { - return m_gridServerURL; - } - set - { - m_gridServerURL = value; - } - } - - public bool EnableLLSDLogin = true; - - public bool EnableHGLogin = true; - - public UserConfig() - { - // weird, but UserManagerBase needs this. - } - public UserConfig(string description, string filename) - { - m_configMember = - new ConfigurationMember(filename, description, loadConfigurationOptions, handleIncomingConfiguration, true); - m_configMember.performConfigurationRetrieve(); - } - - public void loadConfigurationOptions() - { - m_configMember.addConfigurationOption("default_startup_message", - ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, - "Default Startup Message", "Welcome to OGS", false); - - m_configMember.addConfigurationOption("default_grid_server", - ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, - "Default Grid Server URI", - "http://127.0.0.1:" + ConfigSettings.DefaultGridServerHttpPort + "/", false); - m_configMember.addConfigurationOption("grid_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Key to send to grid server", "null", false); - m_configMember.addConfigurationOption("grid_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Key to expect from grid server", "null", false); - - m_configMember.addConfigurationOption("default_inventory_server", - ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, - "Default Inventory Server URI", - "http://127.0.0.1:" + ConfigSettings.DefaultInventoryServerHttpPort + "/", - false); - m_configMember.addConfigurationOption("default_authentication_server", - ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, - "User Server (this) External URI for authentication keys", - "http://localhost:" + ConfigSettings.DefaultUserServerHttpPort + "/", - false); - m_configMember.addConfigurationOption("library_location", - ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, - "Path to library control file", - string.Format(".{0}inventory{0}Libraries.xml", Path.DirectorySeparatorChar), false); - - m_configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "DLL for database provider", "OpenSim.Data.MySQL.dll", false); - m_configMember.addConfigurationOption("database_connect", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Connection String for Database", "", false); - - m_configMember.addConfigurationOption("http_port", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, - "Http Listener port", ConfigSettings.DefaultUserServerHttpPort.ToString(), false); - m_configMember.addConfigurationOption("http_ssl", ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN, - "Use SSL? true/false", ConfigSettings.DefaultUserServerHttpSSL.ToString(), false); - m_configMember.addConfigurationOption("default_X", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, - "Known good region X", "1000", false); - m_configMember.addConfigurationOption("default_Y", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, - "Known good region Y", "1000", false); - m_configMember.addConfigurationOption("enable_llsd_login", ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN, - "Enable LLSD login support [Currently used by libsl based clients/bots]? true/false", true.ToString(), false); - - m_configMember.addConfigurationOption("enable_hg_login", ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN, - "Enable Hypergrid login support [Currently used by GridSurfer-proxied clients]? true/false", true.ToString(), false); - - m_configMember.addConfigurationOption("default_loginLevel", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, - "Minimum Level a user should have to login [0 default]", "0", false); - - m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Remote console access user name [Default: disabled]", "", false); - - m_configMember.addConfigurationOption("console_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - "Remote console access password [Default: disabled]", "", false); - - } - - public bool handleIncomingConfiguration(string configuration_key, object configuration_result) - { - switch (configuration_key) - { - case "default_startup_message": - DefaultStartupMsg = (string) configuration_result; - break; - case "default_grid_server": - GridServerURL = new Uri((string) configuration_result); - break; - case "grid_send_key": - GridSendKey = (string) configuration_result; - break; - case "grid_recv_key": - GridRecvKey = (string) configuration_result; - break; - case "default_inventory_server": - InventoryUrl = new Uri((string) configuration_result); - break; - case "default_authentication_server": - AuthUrl = new Uri((string)configuration_result); - break; - case "database_provider": - DatabaseProvider = (string) configuration_result; - break; - case "database_connect": - DatabaseConnect = (string) configuration_result; - break; - case "http_port": - HttpPort = (uint) configuration_result; - break; - case "http_ssl": - HttpSSL = (bool) configuration_result; - break; - case "default_X": - DefaultX = (uint) configuration_result; - break; - case "default_Y": - DefaultY = (uint) configuration_result; - break; - case "enable_llsd_login": - EnableLLSDLogin = (bool)configuration_result; - break; - case "enable_hg_login": - EnableHGLogin = (bool)configuration_result; - break; - case "default_loginLevel": - DefaultUserLevel = (uint)configuration_result; - break; - case "library_location": - LibraryXmlfile = (string)configuration_result; - break; - case "console_user": - ConsoleUser = (string)configuration_result; - break; - case "console_pass": - ConsolePass = (string)configuration_result; - break; - } - - return true; - } - } -} From 4596c780731ec3c0e9515f6cb32b27c9c938bddf Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Jul 2010 19:50:47 +0100 Subject: [PATCH 07/19] remove unused FriendRegionInfo --- OpenSim/Framework/FriendRegionInfo.cs | 38 --------------------------- 1 file changed, 38 deletions(-) delete mode 100644 OpenSim/Framework/FriendRegionInfo.cs diff --git a/OpenSim/Framework/FriendRegionInfo.cs b/OpenSim/Framework/FriendRegionInfo.cs deleted file mode 100644 index 68b5f3da1c..0000000000 --- a/OpenSim/Framework/FriendRegionInfo.cs +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using OpenMetaverse; - -namespace OpenSim.Framework -{ - public class FriendRegionInfo - { - public bool isOnline; - public ulong regionHandle; - public UUID regionID; - } -} From ce358db159e1b2e89339fd483ebfab574792660f Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Jul 2010 19:54:27 +0100 Subject: [PATCH 08/19] remove long superseded HGNetworkServersInfo --- OpenSim/Framework/HGNetworkServersInfo.cs | 107 ---------------------- 1 file changed, 107 deletions(-) delete mode 100644 OpenSim/Framework/HGNetworkServersInfo.cs diff --git a/OpenSim/Framework/HGNetworkServersInfo.cs b/OpenSim/Framework/HGNetworkServersInfo.cs deleted file mode 100644 index 08655764d1..0000000000 --- a/OpenSim/Framework/HGNetworkServersInfo.cs +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System.Net; - -namespace OpenSim.Framework -{ - public class HGNetworkServersInfo - { - - public readonly string LocalAssetServerURI, LocalInventoryServerURI, LocalUserServerURI; - - private static HGNetworkServersInfo m_singleton; - public static HGNetworkServersInfo Singleton - { - get { return m_singleton; } - } - - public static void Init(string assetserver, string inventoryserver, string userserver) - { - m_singleton = new HGNetworkServersInfo(assetserver, inventoryserver, userserver); - - } - - private HGNetworkServersInfo(string a, string i, string u) - { - LocalAssetServerURI = ServerURI(a); - LocalInventoryServerURI = ServerURI(i); - LocalUserServerURI = ServerURI(u); - } - - public bool IsLocalUser(string userserver) - { - string userServerURI = ServerURI(userserver); - bool ret = (((userServerURI == null) || (userServerURI == "") || (userServerURI == LocalUserServerURI))); - //m_log.Debug("-------------> HGNetworkServersInfo.IsLocalUser? " + ret + "(userServer=" + userServerURI + "; localuserserver=" + LocalUserServerURI + ")"); - return ret; - } - - public bool IsLocalUser(UserProfileData userData) - { - if (userData != null) - { - if (userData is ForeignUserProfileData) - return IsLocalUser(((ForeignUserProfileData)userData).UserServerURI); - else - return true; - } - else - // Something fishy; ignore it - return true; - } - - public static string ServerURI(string uri) - { - // Get rid of eventual slashes at the end - try - { - if (uri.EndsWith("/")) - uri = uri.Substring(0, uri.Length - 1); - } - catch { } - - IPAddress ipaddr1 = null; - string port1 = ""; - try - { - ipaddr1 = Util.GetHostFromURL(uri); - } - catch { } - - try - { - port1 = uri.Split(new char[] { ':' })[2]; - } - catch { } - - // We tried our best to convert the domain names to IP addresses - return (ipaddr1 != null) ? "http://" + ipaddr1.ToString() + ":" + port1 : uri; - } - - } -} From 315b065bce345d3466dfa4bd0edbc2b184ce504a Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Jul 2010 19:58:29 +0100 Subject: [PATCH 09/19] Remove unused LLFileTransfer --- OpenSim/Framework/IClientFileTransfer.cs | 40 -- .../ClientStack/LindenUDP/LLFileTransfer.cs | 367 ------------------ 2 files changed, 407 deletions(-) delete mode 100644 OpenSim/Framework/IClientFileTransfer.cs delete mode 100644 OpenSim/Region/ClientStack/LindenUDP/LLFileTransfer.cs diff --git a/OpenSim/Framework/IClientFileTransfer.cs b/OpenSim/Framework/IClientFileTransfer.cs deleted file mode 100644 index f947b17de3..0000000000 --- a/OpenSim/Framework/IClientFileTransfer.cs +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using OpenMetaverse; - -namespace OpenSim.Framework -{ - public delegate void UploadComplete(string filename, UUID fileID, ulong transferID, byte[] fileData, IClientAPI remoteClient); - public delegate void UploadAborted(string filename, UUID fileID, ulong transferID, IClientAPI remoteClient); - - public interface IClientFileTransfer - { - bool RequestUpload(string clientFileName, UploadComplete uploadCompleteCallback, UploadAborted abortCallback); - bool RequestUpload(UUID fileID, UploadComplete uploadCompleteCallback, UploadAborted abortCallback); - } -} diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLFileTransfer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLFileTransfer.cs deleted file mode 100644 index 10e5a954b6..0000000000 --- a/OpenSim/Region/ClientStack/LindenUDP/LLFileTransfer.cs +++ /dev/null @@ -1,367 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using OpenMetaverse; -using OpenSim.Framework; - -namespace OpenSim.Region.ClientStack.LindenUDP -{ - /// - /// A work in progress, to contain the SL specific file transfer code that is currently in various region modules - /// This file currently contains multiple classes that need to be split out into their own files. - /// - public class LLFileTransfer : IClientFileTransfer - { - protected IClientAPI m_clientAPI; - - /// Dictionary of handlers for uploading files from client - /// TODO: Need to add cleanup code to remove handlers that have completed their upload - protected Dictionary m_uploadHandlers; - protected object m_uploadHandlersLock = new object(); - - - /// - /// Dictionary of files ready to be sent to clients - /// - protected static Dictionary m_files; - - /// - /// Dictionary of Download Transfers in progess - /// - protected Dictionary m_downloadHandlers = new Dictionary(); - - - public LLFileTransfer(IClientAPI clientAPI) - { - m_uploadHandlers = new Dictionary(); - m_clientAPI = clientAPI; - - m_clientAPI.OnXferReceive += XferReceive; - m_clientAPI.OnAbortXfer += AbortXferUploadHandler; - } - - public void Close() - { - if (m_clientAPI != null) - { - m_clientAPI.OnXferReceive -= XferReceive; - m_clientAPI.OnAbortXfer -= AbortXferUploadHandler; - m_clientAPI = null; - } - } - - #region Upload Handling - - public bool RequestUpload(string clientFileName, UploadComplete uploadCompleteCallback, UploadAborted abortCallback) - { - if ((String.IsNullOrEmpty(clientFileName)) || (uploadCompleteCallback == null)) - { - return false; - } - - XferUploadHandler uploader = new XferUploadHandler(m_clientAPI, clientFileName); - - return StartUpload(uploader, uploadCompleteCallback, abortCallback); - } - - public bool RequestUpload(UUID fileID, UploadComplete uploadCompleteCallback, UploadAborted abortCallback) - { - if ((fileID == UUID.Zero) || (uploadCompleteCallback == null)) - { - return false; - } - - XferUploadHandler uploader = new XferUploadHandler(m_clientAPI, fileID); - - return StartUpload(uploader, uploadCompleteCallback, abortCallback); - } - - private bool StartUpload(XferUploadHandler uploader, UploadComplete uploadCompleteCallback, UploadAborted abortCallback) - { - uploader.UploadDone += uploadCompleteCallback; - uploader.UploadDone += RemoveXferUploadHandler; - - if (abortCallback != null) - { - uploader.UploadAborted += abortCallback; - } - - lock (m_uploadHandlersLock) - { - if (!m_uploadHandlers.ContainsKey(uploader.XferID)) - { - m_uploadHandlers.Add(uploader.XferID, uploader); - uploader.RequestStartXfer(m_clientAPI); - return true; - } - else - { - // something went wrong with the xferID allocation - uploader.UploadDone -= uploadCompleteCallback; - uploader.UploadDone -= RemoveXferUploadHandler; - if (abortCallback != null) - { - uploader.UploadAborted -= abortCallback; - } - return false; - } - } - } - - protected void AbortXferUploadHandler(IClientAPI remoteClient, ulong xferID) - { - lock (m_uploadHandlersLock) - { - if (m_uploadHandlers.ContainsKey(xferID)) - { - m_uploadHandlers[xferID].AbortUpload(remoteClient); - m_uploadHandlers.Remove(xferID); - } - } - } - - protected void XferReceive(IClientAPI remoteClient, ulong xferID, uint packetID, byte[] data) - { - lock (m_uploadHandlersLock) - { - if (m_uploadHandlers.ContainsKey(xferID)) - { - m_uploadHandlers[xferID].XferReceive(remoteClient, xferID, packetID, data); - } - } - } - - protected void RemoveXferUploadHandler(string filename, UUID fileID, ulong transferID, byte[] fileData, IClientAPI remoteClient) - { - - } - #endregion - - } - - public class XferUploadHandler - { - private AssetBase m_asset; - - public event UploadComplete UploadDone; - public event UploadAborted UploadAborted; - - private sbyte type = 0; - - public ulong mXferID; - private UploadComplete handlerUploadDone; - private UploadAborted handlerAbort; - - private bool m_complete = false; - - public bool UploadComplete - { - get { return m_complete; } - } - - public XferUploadHandler(IClientAPI pRemoteClient, string pClientFilename) - { - Initialise(UUID.Zero, pClientFilename); - } - - public XferUploadHandler(IClientAPI pRemoteClient, UUID fileID) - { - Initialise(fileID, String.Empty); - } - - private void Initialise(UUID fileID, string fileName) - { - m_asset = new AssetBase(fileID, fileName, type, UUID.Zero.ToString()); - m_asset.Data = new byte[0]; - m_asset.Description = "empty"; - m_asset.Local = true; - m_asset.Temporary = true; - mXferID = Util.GetNextXferID(); - } - - public ulong XferID - { - get { return mXferID; } - } - - public void RequestStartXfer(IClientAPI pRemoteClient) - { - m_asset.Metadata.CreatorID = pRemoteClient.AgentId.ToString(); - - if (!String.IsNullOrEmpty(m_asset.Name)) - { - pRemoteClient.SendXferRequest(mXferID, m_asset.Type, m_asset.FullID, 0, Utils.StringToBytes(m_asset.Name)); - } - else - { - pRemoteClient.SendXferRequest(mXferID, m_asset.Type, m_asset.FullID, 0, new byte[0]); - } - } - - /// - /// Process transfer data received from the client. - /// - /// - /// - /// - public void XferReceive(IClientAPI remoteClient, ulong xferID, uint packetID, byte[] data) - { - if (mXferID == xferID) - { - if (m_asset.Data.Length > 1) - { - byte[] destinationArray = new byte[m_asset.Data.Length + data.Length]; - Array.Copy(m_asset.Data, 0, destinationArray, 0, m_asset.Data.Length); - Array.Copy(data, 0, destinationArray, m_asset.Data.Length, data.Length); - m_asset.Data = destinationArray; - } - else - { - byte[] buffer2 = new byte[data.Length - 4]; - Array.Copy(data, 4, buffer2, 0, data.Length - 4); - m_asset.Data = buffer2; - } - - remoteClient.SendConfirmXfer(xferID, packetID); - - if ((packetID & 0x80000000) != 0) - { - SendCompleteMessage(remoteClient); - - } - } - } - - protected void SendCompleteMessage(IClientAPI remoteClient) - { - m_complete = true; - handlerUploadDone = UploadDone; - if (handlerUploadDone != null) - { - handlerUploadDone(m_asset.Name, m_asset.FullID, mXferID, m_asset.Data, remoteClient); - } - } - - public void AbortUpload(IClientAPI remoteClient) - { - handlerAbort = UploadAborted; - if (handlerAbort != null) - { - handlerAbort(m_asset.Name, m_asset.FullID, mXferID, remoteClient); - } - } - } - - public class XferDownloadHandler - { - public IClientAPI Client; - private bool complete; - public byte[] Data = new byte[0]; - public int DataPointer = 0; - public string FileName = String.Empty; - public uint Packet = 0; - public uint Serial = 1; - public ulong XferID = 0; - - public XferDownloadHandler(string fileName, byte[] data, ulong xferID, IClientAPI client) - { - FileName = fileName; - Data = data; - XferID = xferID; - Client = client; - } - - public XferDownloadHandler() - { - } - - /// - /// Start a transfer - /// - /// True if the transfer is complete, false if not - public bool StartSend() - { - if (Data.Length < 1000) - { - // for now (testing) we only support files under 1000 bytes - byte[] transferData = new byte[Data.Length + 4]; - Array.Copy(Utils.IntToBytes(Data.Length), 0, transferData, 0, 4); - Array.Copy(Data, 0, transferData, 4, Data.Length); - Client.SendXferPacket(XferID, 0 + 0x80000000, transferData); - - complete = true; - } - else - { - byte[] transferData = new byte[1000 + 4]; - Array.Copy(Utils.IntToBytes(Data.Length), 0, transferData, 0, 4); - Array.Copy(Data, 0, transferData, 4, 1000); - Client.SendXferPacket(XferID, 0, transferData); - Packet++; - DataPointer = 1000; - } - - return complete; - } - - /// - /// Respond to an ack packet from the client - /// - /// - /// True if the transfer is complete, false otherwise - public bool AckPacket(uint packet) - { - if (!complete) - { - if ((Data.Length - DataPointer) > 1000) - { - byte[] transferData = new byte[1000]; - Array.Copy(Data, DataPointer, transferData, 0, 1000); - Client.SendXferPacket(XferID, Packet, transferData); - Packet++; - DataPointer += 1000; - } - else - { - byte[] transferData = new byte[Data.Length - DataPointer]; - Array.Copy(Data, DataPointer, transferData, 0, Data.Length - DataPointer); - uint endPacket = Packet |= (uint)0x80000000; - Client.SendXferPacket(XferID, endPacket, transferData); - Packet++; - DataPointer += (Data.Length - DataPointer); - - complete = true; - } - } - - return complete; - } - } - -} From 68b1d6f0afafab158339b2022cb25444448f3294 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Jul 2010 20:02:00 +0100 Subject: [PATCH 10/19] Remove unused ILoginServiceToRegionsConnector --- .../ILoginServiceToRegionsConnector.cs | 41 ------------------- 1 file changed, 41 deletions(-) delete mode 100644 OpenSim/Framework/ILoginServiceToRegionsConnector.cs diff --git a/OpenSim/Framework/ILoginServiceToRegionsConnector.cs b/OpenSim/Framework/ILoginServiceToRegionsConnector.cs deleted file mode 100644 index 5a155c1127..0000000000 --- a/OpenSim/Framework/ILoginServiceToRegionsConnector.cs +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using OpenMetaverse; - -namespace OpenSim.Framework -{ - public interface ILoginServiceToRegionsConnector - { - void LogOffUserFromGrid(ulong regionHandle, UUID AvatarID, UUID RegionSecret, string message); - bool NewUserConnection(ulong regionHandle, AgentCircuitData agent, out string reason); - RegionInfo RequestClosestRegion(string region); - RegionInfo RequestNeighbourInfo(UUID regionID); - RegionInfo RequestNeighbourInfo(ulong regionhandle); - } -} From cdd3f17b2bee58def470635cfc06e26b0d0145b2 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Jul 2010 20:19:46 +0100 Subject: [PATCH 11/19] remove long unused OpenSim/Framework/Configuration/* projects --- .../Configuration/HTTP/HTTPConfiguration.cs | 119 --------------- .../HTTP/RemoteConfigSettings.cs | 63 -------- .../Configuration/XML/XmlConfiguration.cs | 141 ------------------ prebuild.xml | 52 ------- 4 files changed, 375 deletions(-) delete mode 100644 OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs delete mode 100644 OpenSim/Framework/Configuration/HTTP/RemoteConfigSettings.cs delete mode 100644 OpenSim/Framework/Configuration/XML/XmlConfiguration.cs diff --git a/OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs b/OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs deleted file mode 100644 index 3dce578193..0000000000 --- a/OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.IO; -using System.Net; -using System.Reflection; -using System.Text; -using log4net; -using OpenSim.Framework.Configuration.XML; - -namespace OpenSim.Framework.Configuration.HTTP -{ - public class HTTPConfiguration : IGenericConfig - { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private RemoteConfigSettings remoteConfigSettings; - - private XmlConfiguration xmlConfig; - - private string configFileName = String.Empty; - - public HTTPConfiguration() - { - remoteConfigSettings = new RemoteConfigSettings("remoteconfig.xml"); - xmlConfig = new XmlConfiguration(); - } - - public void SetFileName(string fileName) - { - configFileName = fileName; - } - - public void LoadData() - { - try - { - StringBuilder sb = new StringBuilder(); - - byte[] buf = new byte[8192]; - HttpWebRequest request = - (HttpWebRequest) WebRequest.Create(remoteConfigSettings.baseConfigURL + configFileName); - HttpWebResponse response = (HttpWebResponse) request.GetResponse(); - - Stream resStream = response.GetResponseStream(); - - string tempString = null; - int count = 0; - - do - { - count = resStream.Read(buf, 0, buf.Length); - if (count != 0) - { - tempString = Util.UTF8.GetString(buf, 0, count); - sb.Append(tempString); - } - } while (count > 0); - LoadDataFromString(sb.ToString()); - } - catch (WebException) - { - m_log.Warn("Unable to connect to remote configuration file (" + - remoteConfigSettings.baseConfigURL + configFileName + - "). Creating local file instead."); - xmlConfig.SetFileName(configFileName); - xmlConfig.LoadData(); - } - } - - public void LoadDataFromString(string data) - { - xmlConfig.LoadDataFromString(data); - } - - public string GetAttribute(string attributeName) - { - return xmlConfig.GetAttribute(attributeName); - } - - public bool SetAttribute(string attributeName, string attributeValue) - { - return true; - } - - public void Commit() - { - } - - public void Close() - { - } - } -} diff --git a/OpenSim/Framework/Configuration/HTTP/RemoteConfigSettings.cs b/OpenSim/Framework/Configuration/HTTP/RemoteConfigSettings.cs deleted file mode 100644 index 10bc88aa6c..0000000000 --- a/OpenSim/Framework/Configuration/HTTP/RemoteConfigSettings.cs +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; - -namespace OpenSim.Framework.Configuration.HTTP -{ - public class RemoteConfigSettings - { - private ConfigurationMember configMember; - - public string baseConfigURL = String.Empty; - - public RemoteConfigSettings(string filename) - { - configMember = - new ConfigurationMember(filename, "REMOTE CONFIG SETTINGS", loadConfigurationOptions, - handleIncomingConfiguration,true); - configMember.forceConfigurationPluginLibrary("OpenSim.Framework.Configuration.XML.dll"); - configMember.performConfigurationRetrieve(); - } - - public void loadConfigurationOptions() - { - configMember.addConfigurationOption("base_config_url", - ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, - "URL Containing Configuration Files", "http://localhost/", false); - } - - public bool handleIncomingConfiguration(string configuration_key, object configuration_result) - { - if (configuration_key == "base_config_url") - { - baseConfigURL = (string) configuration_result; - } - return true; - } - } -} diff --git a/OpenSim/Framework/Configuration/XML/XmlConfiguration.cs b/OpenSim/Framework/Configuration/XML/XmlConfiguration.cs deleted file mode 100644 index 43162fc227..0000000000 --- a/OpenSim/Framework/Configuration/XML/XmlConfiguration.cs +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.IO; -using System.Xml; - -namespace OpenSim.Framework.Configuration.XML -{ - public class XmlConfiguration : IGenericConfig - { - private XmlDocument doc; - private XmlNode rootNode; - private XmlNode configNode; - private string fileName; - private bool createdFile = false; - - public void SetFileName(string file) - { - fileName = file; - } - - private void LoadDataToClass() - { - rootNode = doc.SelectSingleNode("Root"); - if (null == rootNode) - throw new Exception("Error: Invalid .xml File. Missing "); - - configNode = rootNode.SelectSingleNode("Config"); - if (null == configNode) - throw new Exception("Error: Invalid .xml File. should contain a "); - } - - public void LoadData() - { - lock (this) - { - doc = new XmlDocument(); - if (File.Exists(fileName)) - { - XmlTextReader reader = new XmlTextReader(fileName); - reader.WhitespaceHandling = WhitespaceHandling.None; - doc.Load(reader); - reader.Close(); - } - else - { - createdFile = true; - rootNode = doc.CreateNode(XmlNodeType.Element, "Root", String.Empty); - doc.AppendChild(rootNode); - configNode = doc.CreateNode(XmlNodeType.Element, "Config", String.Empty); - rootNode.AppendChild(configNode); - } - - LoadDataToClass(); - - if (createdFile) - { - Commit(); - } - } - } - - public void LoadDataFromString(string data) - { - doc = new XmlDocument(); - doc.LoadXml(data); - - LoadDataToClass(); - } - - public string GetAttribute(string attributeName) - { - string result = null; - if (configNode.Attributes[attributeName] != null) - { - result = ((XmlAttribute) configNode.Attributes.GetNamedItem(attributeName)).Value; - } - return result; - } - - public bool SetAttribute(string attributeName, string attributeValue) - { - if (configNode.Attributes[attributeName] != null) - { - ((XmlAttribute) configNode.Attributes.GetNamedItem(attributeName)).Value = attributeValue; - } - else - { - XmlAttribute attri; - attri = doc.CreateAttribute(attributeName); - attri.Value = attributeValue; - configNode.Attributes.Append(attri); - } - return true; - } - - public void Commit() - { - if (fileName == null || fileName == String.Empty) - return; - - if (!Directory.Exists(Util.configDir())) - { - Directory.CreateDirectory(Util.configDir()); - } - doc.Save(fileName); - } - - public void Close() - { - configNode = null; - rootNode = null; - doc = null; - } - } -} diff --git a/prebuild.xml b/prebuild.xml index 1eb8fee64b..491e822ee9 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -255,58 +255,6 @@ - - - - ../../../../bin/ - - - - - ../../../../bin/ - - - - ../../../../bin/ - - - - - - - - - - - - - - - - ../../../../bin/ - - - - - ../../../../bin/ - - - - ../../../../bin/ - - - - - - - - - - - - - - From c6bc1d28ecce5d2f7da57c396e0b964b3a750719 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Jul 2010 20:34:14 +0100 Subject: [PATCH 12/19] move ChannelDigger from its own project into the main terrain module with the rest of the effects --- .../ChannelDigger.cs | 2 +- prebuild.xml | 24 ------------------- 2 files changed, 1 insertion(+), 25 deletions(-) rename OpenSim/Region/CoreModules/World/Terrain/{DefaultEffects => Effects}/ChannelDigger.cs (98%) diff --git a/OpenSim/Region/CoreModules/World/Terrain/DefaultEffects/ChannelDigger.cs b/OpenSim/Region/CoreModules/World/Terrain/Effects/ChannelDigger.cs similarity index 98% rename from OpenSim/Region/CoreModules/World/Terrain/DefaultEffects/ChannelDigger.cs rename to OpenSim/Region/CoreModules/World/Terrain/Effects/ChannelDigger.cs index e23be595f9..36917e9e38 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/DefaultEffects/ChannelDigger.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/Effects/ChannelDigger.cs @@ -30,7 +30,7 @@ using OpenSim.Region.CoreModules.World.Terrain; using OpenSim.Region.CoreModules.World.Terrain.FloodBrushes; using OpenSim.Region.Framework.Interfaces; -namespace OpenSim.Region.Modules.Terrain.Extensions.DefaultEffects.Effects +namespace OpenSim.Region.CoreModules.World.Terrain.Effects { public class ChannelDigger : ITerrainEffect { diff --git a/prebuild.xml b/prebuild.xml index 491e822ee9..5f55461268 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -1366,35 +1366,11 @@ - - - - - ../../../../../../bin/Terrain/ - - - - - ../../../../../../bin/Terrain/ - - - - ../../../../../../bin/ - - - - - - - - - - From f37ec933ae342a044558a89cbfc829ed8e95e6fa Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Jul 2010 20:54:02 +0100 Subject: [PATCH 13/19] store terrain module trying to load plugins if plugin path does not exist --- .../Region/CoreModules/World/Terrain/TerrainModule.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs index 1e7ea7bce6..2c5e44432c 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs @@ -68,7 +68,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain #endregion private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - + private readonly Commander m_commander = new Commander("terrain"); private readonly Dictionary m_floodeffects = @@ -381,8 +381,13 @@ namespace OpenSim.Region.CoreModules.World.Terrain private void LoadPlugins() { m_plugineffects = new Dictionary(); + string plugineffectsPath = "Terrain"; + // Load the files in the Terrain/ dir - string[] files = Directory.GetFiles("Terrain"); + if (!Directory.Exists(plugineffectsPath)) + return; + + string[] files = Directory.GetFiles(plugineffectsPath); foreach (string file in files) { m_log.Info("Loading effects in " + file); From 4d83b2d8a6a69f263d57ce3753138b227daa19a4 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Jul 2010 21:06:45 +0100 Subject: [PATCH 14/19] remove unused BasicQuadTreeNode --- OpenSim/Region/Framework/Scenes/SceneGraph.cs | 5 - .../Scenes/Types/BasicQuadTreeNode.cs | 269 ------------------ 2 files changed, 274 deletions(-) delete mode 100644 OpenSim/Region/Framework/Scenes/Types/BasicQuadTreeNode.cs diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 40332a6f93..f47450fbb3 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -78,8 +78,6 @@ namespace OpenSim.Region.Framework.Scenes // protected internal Dictionary Entities = new Dictionary(); protected internal Dictionary RestorePresences = new Dictionary(); - protected internal BasicQuadTreeNode QuadTree; - protected RegionInfo m_regInfo; protected Scene m_parentScene; protected Dictionary m_updateList = new Dictionary(); @@ -107,9 +105,6 @@ namespace OpenSim.Region.Framework.Scenes { m_parentScene = parent; m_regInfo = regInfo; - QuadTree = new BasicQuadTreeNode(null, "/0/", 0, 0, (short)Constants.RegionSize, (short)Constants.RegionSize); - QuadTree.Subdivide(); - QuadTree.Subdivide(); } public PhysicsScene PhysicsScene diff --git a/OpenSim/Region/Framework/Scenes/Types/BasicQuadTreeNode.cs b/OpenSim/Region/Framework/Scenes/Types/BasicQuadTreeNode.cs deleted file mode 100644 index 38a9203a45..0000000000 --- a/OpenSim/Region/Framework/Scenes/Types/BasicQuadTreeNode.cs +++ /dev/null @@ -1,269 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using OpenSim.Region.Framework.Scenes; - -namespace OpenSim.Region.Framework.Scenes.Types -{ - public class BasicQuadTreeNode - { - private List m_objects = new List(); - private BasicQuadTreeNode[] m_childNodes = null; - private BasicQuadTreeNode m_parent = null; - - private short m_leftX; - private short m_leftY; - private short m_width; - private short m_height; - //private int m_quadNumber; - private string m_quadID; - - public BasicQuadTreeNode(BasicQuadTreeNode parent, string quadID, short leftX, short leftY, short width, - short height) - { - m_parent = parent; - m_quadID = quadID; - m_leftX = leftX; - m_leftY = leftY; - m_width = width; - m_height = height; - // m_log.Debug("creating quadtree node " + m_quadID); - } - - public void AddObject(SceneObjectGroup obj) - { - if (m_childNodes == null) - { - if (!m_objects.Contains(obj)) - { - m_objects.Add(obj); - } - } - else - { - if (obj.AbsolutePosition.X < (m_leftX + (m_width/2))) - { - if (obj.AbsolutePosition.Y < (m_leftY + (m_height/2))) - { - m_childNodes[0].AddObject(obj); - } - else - { - m_childNodes[2].AddObject(obj); - } - } - else - { - if (obj.AbsolutePosition.Y < (m_leftY + (m_height/2))) - { - m_childNodes[1].AddObject(obj); - } - else - { - m_childNodes[3].AddObject(obj); - } - } - } - } - - public void Subdivide() - { - if (m_childNodes == null) - { - m_childNodes = new BasicQuadTreeNode[4]; - m_childNodes[0] = - new BasicQuadTreeNode(this, m_quadID + "1/", m_leftX, m_leftY, (short) (m_width/2), - (short) (m_height/2)); - m_childNodes[1] = - new BasicQuadTreeNode(this, m_quadID + "2/", (short) (m_leftX + (m_width/2)), m_leftY, - (short) (m_width/2), (short) (m_height/2)); - m_childNodes[2] = - new BasicQuadTreeNode(this, m_quadID + "3/", m_leftX, (short) (m_leftY + (m_height/2)), - (short) (m_width/2), (short) (m_height/2)); - m_childNodes[3] = - new BasicQuadTreeNode(this, m_quadID + "4/", (short) (m_leftX + (m_width/2)), - (short) (m_height + (m_height/2)), (short) (m_width/2), (short) (m_height/2)); - } - else - { - for (int i = 0; i < m_childNodes.Length; i++) - { - m_childNodes[i].Subdivide(); - } - } - } - - public List GetObjectsFrom(float x, float y) - { - if (m_childNodes == null) - { - return new List(m_objects); - } - else - { - if (x < m_leftX + (m_width/2)) - { - if (y < m_leftY + (m_height/2)) - { - return m_childNodes[0].GetObjectsFrom(x, y); - } - else - { - return m_childNodes[2].GetObjectsFrom(x, y); - } - } - else - { - if (y < m_leftY + (m_height/2)) - { - return m_childNodes[1].GetObjectsFrom(x, y); - } - else - { - return m_childNodes[3].GetObjectsFrom(x, y); - } - } - } - } - - public List GetObjectsFrom(string nodeName) - { - if (nodeName == m_quadID) - { - return new List(m_objects); - } - else if (m_childNodes != null) - { - for (int i = 0; i < 4; i++) - { - List retVal; - retVal = m_childNodes[i].GetObjectsFrom(nodeName); - if (retVal != null) - { - return retVal; - } - } - } - return null; - } - - public string GetNodeID(float x, float y) - { - if (m_childNodes == null) - { - return m_quadID; - } - else - { - if (x < m_leftX + (m_width/2)) - { - if (y < m_leftY + (m_height/2)) - { - return m_childNodes[0].GetNodeID(x, y); - } - else - { - return m_childNodes[2].GetNodeID(x, y); - } - } - else - { - if (y < m_leftY + (m_height/2)) - { - return m_childNodes[1].GetNodeID(x, y); - } - else - { - return m_childNodes[3].GetNodeID(x, y); - } - } - } - } - - public void Update() - { - if (m_childNodes != null) - { - for (int i = 0; i < 4; i++) - { - m_childNodes[i].Update(); - } - } - else - { - List outBounds = new List(); - foreach (SceneObjectGroup group in m_objects) - { - if (((group.AbsolutePosition.X > m_leftX) && (group.AbsolutePosition.X < (m_leftX + m_width))) && - ((group.AbsolutePosition.Y > m_leftY) && (group.AbsolutePosition.Y < (m_leftY + m_height)))) - { - //still in bounds - } - else - { - outBounds.Add(group); - } - } - - foreach (SceneObjectGroup removee in outBounds) - { - m_objects.Remove(removee); - if (m_parent != null) - { - m_parent.PassUp(removee); - } - } - outBounds.Clear(); - } - } - - public void PassUp(SceneObjectGroup group) - { - if (((group.AbsolutePosition.X > m_leftX) && (group.AbsolutePosition.X < (m_leftX + m_width))) && - ((group.AbsolutePosition.Y > m_leftY) && (group.AbsolutePosition.Y < (m_leftY + m_height)))) - { - AddObject(group); - } - else - { - if (m_parent != null) - { - m_parent.PassUp(group); - } - } - } - - public string[] GetNeighbours(string nodeName) - { - string[] retVal = new string[1]; - retVal[0] = String.Empty; - return retVal; - } - } -} From 424b4b2b8663f0f6780d2d3a2656e5b298418711 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Jul 2010 21:41:44 +0100 Subject: [PATCH 15/19] move attachment subscription events into AttachmentsModule from scene. restored to some heavy casting in order to preserve RegionCombinerModule semantics, pending better events. --- .../Avatar/Attachments/AttachmentsModule.cs | 23 +++++++++++- OpenSim/Region/Framework/Scenes/Scene.cs | 36 ++----------------- .../RegionCombinerIndividualEventForwarder.cs | 7 ++-- 3 files changed, 28 insertions(+), 38 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index 1187e91cdc..d895bb1e13 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs @@ -56,11 +56,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments { m_scene = scene; m_scene.RegisterModuleInterface(this); + m_scene.EventManager.OnNewClient += SubscribeToClientEvents; + // TODO: Should probably be subscribing to CloseClient too, but this doesn't yet give us IClientAPI } public void RemoveRegion(Scene scene) { m_scene.UnregisterModuleInterface(this); + m_scene.EventManager.OnNewClient -= SubscribeToClientEvents; } public void RegionLoaded(Scene scene) {} @@ -69,7 +72,25 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments { RemoveRegion(m_scene); } - + + public void SubscribeToClientEvents(IClientAPI client) + { + client.OnRezSingleAttachmentFromInv += RezSingleAttachmentFromInventory; + client.OnRezMultipleAttachmentsFromInv += RezMultipleAttachmentsFromInventory; + client.OnObjectAttach += AttachObject; + client.OnObjectDetach += DetachObject; + client.OnDetachAttachmentIntoInv += ShowDetachInUserInventory; + } + + public void UnsubscribeFromClientEvents(IClientAPI client) + { + client.OnRezSingleAttachmentFromInv -= RezSingleAttachmentFromInventory; + client.OnRezMultipleAttachmentsFromInv -= RezMultipleAttachmentsFromInventory; + client.OnObjectAttach -= AttachObject; + client.OnObjectDetach -= DetachObject; + client.OnDetachAttachmentIntoInv -= ShowDetachInUserInventory; + } + /// /// Called by client /// diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 9141d447ef..088d210b4f 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -2783,17 +2783,12 @@ namespace OpenSim.Region.Framework.Scenes SubscribeToClientPrimEvents(client); SubscribeToClientPrimRezEvents(client); SubscribeToClientInventoryEvents(client); - SubscribeToClientAttachmentEvents(client); SubscribeToClientTeleportEvents(client); SubscribeToClientScriptEvents(client); SubscribeToClientParcelEvents(client); SubscribeToClientGridEvents(client); SubscribeToClientGodEvents(client); - SubscribeToClientNetworkEvents(client); - - - // EventManager.TriggerOnNewClient(client); } public virtual void SubscribeToClientTerrainEvents(IClientAPI client) @@ -2874,18 +2869,6 @@ namespace OpenSim.Region.Framework.Scenes client.OnMoveTaskItem += ClientMoveTaskInventoryItem; } - public virtual void SubscribeToClientAttachmentEvents(IClientAPI client) - { - if (AttachmentsModule != null) - { - client.OnRezSingleAttachmentFromInv += AttachmentsModule.RezSingleAttachmentFromInventory; - client.OnRezMultipleAttachmentsFromInv += AttachmentsModule.RezMultipleAttachmentsFromInventory; - client.OnObjectAttach += AttachmentsModule.AttachObject; - client.OnObjectDetach += AttachmentsModule.DetachObject; - client.OnDetachAttachmentIntoInv += AttachmentsModule.ShowDetachInUserInventory; - } - } - public virtual void SubscribeToClientTeleportEvents(IClientAPI client) { client.OnTeleportLocationRequest += RequestTeleportLocation; @@ -2934,16 +2917,15 @@ namespace OpenSim.Region.Framework.Scenes } /// - /// Register for events from the client + /// Unsubscribe the client from events. /// - /// The IClientAPI of the connected client + /// The IClientAPI of the client public virtual void UnSubscribeToClientEvents(IClientAPI client) { UnSubscribeToClientTerrainEvents(client); UnSubscribeToClientPrimEvents(client); UnSubscribeToClientPrimRezEvents(client); UnSubscribeToClientInventoryEvents(client); - UnSubscribeToClientAttachmentEvents(client); UnSubscribeToClientTeleportEvents(client); UnSubscribeToClientScriptEvents(client); UnSubscribeToClientParcelEvents(client); @@ -2951,8 +2933,6 @@ namespace OpenSim.Region.Framework.Scenes UnSubscribeToClientGodEvents(client); UnSubscribeToClientNetworkEvents(client); - - // EventManager.TriggerOnNewClient(client); } public virtual void UnSubscribeToClientTerrainEvents(IClientAPI client) @@ -3029,18 +3009,6 @@ namespace OpenSim.Region.Framework.Scenes client.OnMoveTaskItem -= ClientMoveTaskInventoryItem; } - public virtual void UnSubscribeToClientAttachmentEvents(IClientAPI client) - { - if (AttachmentsModule != null) - { - client.OnRezSingleAttachmentFromInv -= AttachmentsModule.RezSingleAttachmentFromInventory; - client.OnRezMultipleAttachmentsFromInv -= AttachmentsModule.RezMultipleAttachmentsFromInventory; - client.OnObjectAttach -= AttachmentsModule.AttachObject; - client.OnObjectDetach -= AttachmentsModule.DetachObject; - client.OnDetachAttachmentIntoInv -= AttachmentsModule.ShowDetachInUserInventory; - } - } - public virtual void UnSubscribeToClientTeleportEvents(IClientAPI client) { client.OnTeleportLocationRequest -= RequestTeleportLocation; diff --git a/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs b/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs index 9d41c9c225..62410e2d5f 100644 --- a/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs +++ b/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs @@ -28,11 +28,12 @@ using System; using OpenMetaverse; using OpenSim.Framework; +using OpenSim.Region.CoreModules.Avatar.Attachments; using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.RegionCombinerModule { - public class RegionCombinerIndividualEventForwarder + public class RegionCombinerIndividualEventForwarder { private Scene m_rootScene; private Scene m_virtScene; @@ -48,7 +49,7 @@ namespace OpenSim.Region.RegionCombinerModule m_virtScene.UnSubscribeToClientPrimEvents(client); m_virtScene.UnSubscribeToClientPrimRezEvents(client); m_virtScene.UnSubscribeToClientInventoryEvents(client); - m_virtScene.UnSubscribeToClientAttachmentEvents(client); + ((AttachmentsModule)m_virtScene.AttachmentsModule).UnsubscribeFromClientEvents(client); //m_virtScene.UnSubscribeToClientTeleportEvents(client); m_virtScene.UnSubscribeToClientScriptEvents(client); m_virtScene.UnSubscribeToClientGodEvents(client); @@ -58,7 +59,7 @@ namespace OpenSim.Region.RegionCombinerModule client.OnAddPrim += LocalAddNewPrim; client.OnRezObject += LocalRezObject; m_rootScene.SubscribeToClientInventoryEvents(client); - m_rootScene.SubscribeToClientAttachmentEvents(client); + ((AttachmentsModule)m_rootScene.AttachmentsModule).SubscribeToClientEvents(client); //m_rootScene.SubscribeToClientTeleportEvents(client); m_rootScene.SubscribeToClientScriptEvents(client); m_rootScene.SubscribeToClientGodEvents(client); From 63f3a16b72b5abde70872292cdaf3ebb8523a7e7 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Jul 2010 21:44:50 +0100 Subject: [PATCH 16/19] remove empty, unused and uncalled UnsubscribeToClientEvents() --- OpenSim/Region/Framework/Scenes/Scene.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 088d210b4f..61817f269d 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -2912,10 +2912,6 @@ namespace OpenSim.Region.Framework.Scenes client.OnViewerEffect += ProcessViewerEffect; } - protected virtual void UnsubscribeToClientEvents(IClientAPI client) - { - } - /// /// Unsubscribe the client from events. /// From f84dbafb0c1de99c8211c3f9b96182a845d4d7b4 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Jul 2010 21:58:24 +0100 Subject: [PATCH 17/19] remove gods event subscription to gods module from scene --- .../CoreModules/Avatar/Gods/GodsModule.cs | 13 ++++++++++ OpenSim/Region/Framework/Scenes/Scene.cs | 25 +++---------------- .../RegionCombinerIndividualEventForwarder.cs | 19 +++++++++++--- 3 files changed, 32 insertions(+), 25 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs b/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs index 50171a391e..4b30b0d9ee 100644 --- a/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs @@ -47,6 +47,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Gods m_scene = scene; m_dialogModule = m_scene.RequestModuleInterface(); m_scene.RegisterModuleInterface(this); + m_scene.EventManager.OnNewClient += SubscribeToClientEvents; } public void PostInitialise() {} @@ -54,6 +55,18 @@ namespace OpenSim.Region.CoreModules.Avatar.Gods public string Name { get { return "Gods Module"; } } public bool IsSharedModule { get { return false; } } + public void SubscribeToClientEvents(IClientAPI client) + { + client.OnGodKickUser += KickUser; + client.OnRequestGodlikePowers += RequestGodlikePowers; + } + + public void UnsubscribeFromClientEvents(IClientAPI client) + { + client.OnGodKickUser -= KickUser; + client.OnRequestGodlikePowers -= RequestGodlikePowers; + } + public void RequestGodlikePowers( UUID agentID, UUID sessionID, UUID token, bool godLike, IClientAPI controllingClient) { diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 61817f269d..83489e878f 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -2787,7 +2787,6 @@ namespace OpenSim.Region.Framework.Scenes SubscribeToClientScriptEvents(client); SubscribeToClientParcelEvents(client); SubscribeToClientGridEvents(client); - SubscribeToClientGodEvents(client); SubscribeToClientNetworkEvents(client); } @@ -2798,8 +2797,7 @@ namespace OpenSim.Region.Framework.Scenes } public virtual void SubscribeToClientPrimEvents(IClientAPI client) - { - + { client.OnUpdatePrimGroupPosition += m_sceneGraph.UpdatePrimPosition; client.OnUpdatePrimSinglePosition += m_sceneGraph.UpdatePrimSinglePosition; client.OnUpdatePrimGroupRotation += m_sceneGraph.UpdatePrimRotation; @@ -2898,14 +2896,7 @@ namespace OpenSim.Region.Framework.Scenes client.OnSetStartLocationRequest += SetHomeRezPoint; client.OnRegionHandleRequest += RegionHandleRequest; } - - public virtual void SubscribeToClientGodEvents(IClientAPI client) - { - IGodsModule godsModule = RequestModuleInterface(); - client.OnGodKickUser += godsModule.KickUser; - client.OnRequestGodlikePowers += godsModule.RequestGodlikePowers; - } - + public virtual void SubscribeToClientNetworkEvents(IClientAPI client) { client.OnNetworkStatsUpdate += StatsReporter.AddPacketsStats; @@ -2915,6 +2906,7 @@ namespace OpenSim.Region.Framework.Scenes /// /// Unsubscribe the client from events. /// + /// FIXME: Not called anywhere! /// The IClientAPI of the client public virtual void UnSubscribeToClientEvents(IClientAPI client) { @@ -2926,8 +2918,6 @@ namespace OpenSim.Region.Framework.Scenes UnSubscribeToClientScriptEvents(client); UnSubscribeToClientParcelEvents(client); UnSubscribeToClientGridEvents(client); - UnSubscribeToClientGodEvents(client); - UnSubscribeToClientNetworkEvents(client); } @@ -3036,13 +3026,6 @@ namespace OpenSim.Region.Framework.Scenes client.OnRegionHandleRequest -= RegionHandleRequest; } - public virtual void UnSubscribeToClientGodEvents(IClientAPI client) - { - IGodsModule godsModule = RequestModuleInterface(); - client.OnGodKickUser -= godsModule.KickUser; - client.OnRequestGodlikePowers -= godsModule.RequestGodlikePowers; - } - public virtual void UnSubscribeToClientNetworkEvents(IClientAPI client) { client.OnNetworkStatsUpdate -= StatsReporter.AddPacketsStats; @@ -5256,4 +5239,4 @@ namespace OpenSim.Region.Framework.Scenes return offsets.ToArray(); } } -} +} \ No newline at end of file diff --git a/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs b/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs index 62410e2d5f..a0d6197004 100644 --- a/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs +++ b/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs @@ -29,6 +29,8 @@ using System; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Region.CoreModules.Avatar.Attachments; +using OpenSim.Region.CoreModules.Avatar.Gods; +using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.RegionCombinerModule @@ -47,22 +49,31 @@ namespace OpenSim.Region.RegionCombinerModule public void ClientConnect(IClientAPI client) { m_virtScene.UnSubscribeToClientPrimEvents(client); - m_virtScene.UnSubscribeToClientPrimRezEvents(client); + m_virtScene.UnSubscribeToClientPrimRezEvents(client); m_virtScene.UnSubscribeToClientInventoryEvents(client); ((AttachmentsModule)m_virtScene.AttachmentsModule).UnsubscribeFromClientEvents(client); //m_virtScene.UnSubscribeToClientTeleportEvents(client); m_virtScene.UnSubscribeToClientScriptEvents(client); - m_virtScene.UnSubscribeToClientGodEvents(client); + + IGodsModule virtGodsModule = m_virtScene.RequestModuleInterface(); + if (virtGodsModule != null) + ((GodsModule)virtGodsModule).UnsubscribeFromClientEvents(client); + m_virtScene.UnSubscribeToClientNetworkEvents(client); m_rootScene.SubscribeToClientPrimEvents(client); client.OnAddPrim += LocalAddNewPrim; client.OnRezObject += LocalRezObject; + m_rootScene.SubscribeToClientInventoryEvents(client); - ((AttachmentsModule)m_rootScene.AttachmentsModule).SubscribeToClientEvents(client); + ((AttachmentsModule)m_rootScene.AttachmentsModule).SubscribeToClientEvents(client); //m_rootScene.SubscribeToClientTeleportEvents(client); m_rootScene.SubscribeToClientScriptEvents(client); - m_rootScene.SubscribeToClientGodEvents(client); + + IGodsModule rootGodsModule = m_virtScene.RequestModuleInterface(); + if (rootGodsModule != null) + ((GodsModule)rootGodsModule).UnsubscribeFromClientEvents(client); + m_rootScene.SubscribeToClientNetworkEvents(client); } From 8ab7d80b093de2e2ed71737e0138b7a7c2c92f99 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 30 Jul 2010 14:04:13 -0700 Subject: [PATCH 18/19] Changed the way HG client verification is done: now transforming local and LAN client IPs into external IPs. This addresses some issues related to running both the user agents service and the viewer in the same machine/LAN, which then presents a problem when the user agent goes to an external network. --- OpenSim/Framework/NetworkUtil.cs | 72 +++++++++++++++++++ OpenSim/Region/Framework/Scenes/Scene.cs | 4 +- .../HypergridService/UserAgentService.cs | 11 +-- .../Services/LLLoginService/LLLoginService.cs | 6 +- 4 files changed, 84 insertions(+), 9 deletions(-) diff --git a/OpenSim/Framework/NetworkUtil.cs b/OpenSim/Framework/NetworkUtil.cs index 5fe343d059..7c30bd3c2b 100644 --- a/OpenSim/Framework/NetworkUtil.cs +++ b/OpenSim/Framework/NetworkUtil.cs @@ -31,6 +31,7 @@ using System.Net.Sockets; using System.Net; using System.Net.NetworkInformation; using System.Reflection; +using System.Text; using log4net; namespace OpenSim.Framework @@ -180,10 +181,14 @@ namespace OpenSim.Framework throw new ArgumentException("[NetworkUtil] Unable to resolve defaultHostname to an IPv4 address for an IPv4 client"); } + static IPAddress externalIPAddress; + static NetworkUtil() { try { + externalIPAddress = GetExternalIP(); + foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) { foreach (UnicastIPAddressInformation address in ni.GetIPProperties().UnicastAddresses) @@ -244,5 +249,72 @@ namespace OpenSim.Framework } return defaultHostname; } + + public static IPAddress GetExternalIPOf(IPAddress user) + { + // Check if we're accessing localhost. + foreach (IPAddress host in Dns.GetHostAddresses(Dns.GetHostName())) + { + if (host.Equals(user) && host.AddressFamily == AddressFamily.InterNetwork) + { + m_log.Info("[NetworkUtil] Localhost user detected, sending '" + externalIPAddress + "' instead of '" + user + "'"); + return externalIPAddress; + } + } + + // Check for same LAN segment + foreach (KeyValuePair subnet in m_subnets) + { + byte[] subnetBytes = subnet.Value.GetAddressBytes(); + byte[] localBytes = subnet.Key.GetAddressBytes(); + byte[] destBytes = user.GetAddressBytes(); + + if (subnetBytes.Length != destBytes.Length || subnetBytes.Length != localBytes.Length) + return user; + + bool valid = true; + + for (int i = 0; i < subnetBytes.Length; i++) + { + if ((localBytes[i] & subnetBytes[i]) != (destBytes[i] & subnetBytes[i])) + { + valid = false; + break; + } + } + + if (subnet.Key.AddressFamily != AddressFamily.InterNetwork) + valid = false; + + if (valid) + { + m_log.Info("[NetworkUtil] Local LAN user detected, sending '" + externalIPAddress + "' instead of '" + user + "'"); + return externalIPAddress; + } + } + + // Otherwise, return user address + return user; + } + + private static IPAddress GetExternalIP() + { + string whatIsMyIp = "http://www.whatismyip.com/automation/n09230945.asp"; + WebClient wc = new WebClient(); + UTF8Encoding utf8 = new UTF8Encoding(); + string requestHtml = ""; + try + { + requestHtml = utf8.GetString(wc.DownloadData(whatIsMyIp)); + } + catch (WebException we) + { + // do something with exception + m_log.Info("[NetworkUtil]: Exception in GetExternalIP: " + we.ToString()); + } + + IPAddress externalIp = IPAddress.Parse(requestHtml); + return externalIp; + } } } diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 9141d447ef..28720adad8 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -2725,7 +2725,9 @@ namespace OpenSim.Region.Framework.Scenes IUserAgentVerificationModule userVerification = RequestModuleInterface(); if (userVerification != null && ep != null) { - if (!userVerification.VerifyClient(aCircuit, ep.Address.ToString())) + System.Net.IPAddress addr = NetworkUtil.GetExternalIPOf(ep.Address); + + if (!userVerification.VerifyClient(aCircuit, /*ep.Address.ToString() */ addr.ToString())) { // uh-oh, this is fishy m_log.DebugFormat("[Scene]: User Client Verification for {0} {1} in {2} returned false", aCircuit.firstname, aCircuit.lastname, RegionInfo.RegionName); diff --git a/OpenSim/Services/HypergridService/UserAgentService.cs b/OpenSim/Services/HypergridService/UserAgentService.cs index 2f1fed40db..aec82e8868 100644 --- a/OpenSim/Services/HypergridService/UserAgentService.cs +++ b/OpenSim/Services/HypergridService/UserAgentService.cs @@ -63,6 +63,8 @@ namespace OpenSim.Services.HypergridService protected static IGridService m_GridService; protected static GatekeeperServiceConnector m_GatekeeperConnector; + protected static bool m_BypassClientVerification; + public UserAgentService(IConfigSource config) { if (!m_Initialized) @@ -76,6 +78,8 @@ namespace OpenSim.Services.HypergridService string gridService = serverConfig.GetString("GridService", String.Empty); string gridUserService = serverConfig.GetString("GridUserService", String.Empty); + m_BypassClientVerification = serverConfig.GetBoolean("BypassClientVerification", false); + if (gridService == string.Empty || gridUserService == string.Empty) throw new Exception(String.Format("Incomplete specifications, UserAgent Service cannot function.")); @@ -212,11 +216,10 @@ namespace OpenSim.Services.HypergridService public bool VerifyClient(UUID sessionID, string token) { - m_log.DebugFormat("[USER AGENT SERVICE]: Verifying Client session {0} with token {1}", sessionID, token); - //return true; + if (m_BypassClientVerification) + return true; - // Commenting this for now until I understand better what part of a sender's - // info stays unchanged throughout a session + m_log.DebugFormat("[USER AGENT SERVICE]: Verifying Client session {0} with token {1}", sessionID, token); if (m_TravelingAgents.ContainsKey(sessionID)) return m_TravelingAgents[sessionID].ClientToken == token; diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs index f4e045ccb3..036bec623b 100644 --- a/OpenSim/Services/LLLoginService/LLLoginService.cs +++ b/OpenSim/Services/LLLoginService/LLLoginService.cs @@ -754,10 +754,8 @@ namespace OpenSim.Services.LLLoginService m_log.Debug("[LLOGIN SERVICE] Launching agent at " + destination.RegionName); if (m_UserAgentService.LoginAgentToGrid(aCircuit, gatekeeper, destination, out reason)) { - // We may need to do this at some point, - // so leaving it here in comments. - //IPAddress addr = NetworkUtil.GetIPFor(clientIP.Address, destination.ExternalEndPoint.Address); - m_UserAgentService.SetClientToken(aCircuit.SessionID, /*addr.Address.ToString() */ clientIP.Address.ToString()); + IPAddress addr = NetworkUtil.GetExternalIPOf(clientIP.Address); + m_UserAgentService.SetClientToken(aCircuit.SessionID, addr.ToString() /* clientIP.Address.ToString() */); return true; } return false; From 86bc25b84fbc01c827f3959b4eca67e34383b041 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 30 Jul 2010 14:27:53 -0700 Subject: [PATCH 19/19] Slight improvement on previous commit. --- OpenSim/Framework/NetworkUtil.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/OpenSim/Framework/NetworkUtil.cs b/OpenSim/Framework/NetworkUtil.cs index 7c30bd3c2b..831ff70e77 100644 --- a/OpenSim/Framework/NetworkUtil.cs +++ b/OpenSim/Framework/NetworkUtil.cs @@ -188,7 +188,11 @@ namespace OpenSim.Framework try { externalIPAddress = GetExternalIP(); + } + catch { /* ignore */ } + try + { foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) { foreach (UnicastIPAddressInformation address in ni.GetIPProperties().UnicastAddresses) @@ -252,6 +256,14 @@ namespace OpenSim.Framework public static IPAddress GetExternalIPOf(IPAddress user) { + if (externalIPAddress == null) + return user; + + if (user.ToString() == "127.0.0.1") + { + m_log.Info("[NetworkUtil] 127.0.0.1 user detected, sending '" + externalIPAddress + "' instead of '" + user + "'"); + return externalIPAddress; + } // Check if we're accessing localhost. foreach (IPAddress host in Dns.GetHostAddresses(Dns.GetHostName())) { @@ -309,8 +321,8 @@ namespace OpenSim.Framework } catch (WebException we) { - // do something with exception m_log.Info("[NetworkUtil]: Exception in GetExternalIP: " + we.ToString()); + return null; } IPAddress externalIp = IPAddress.Parse(requestHtml);