From 8e37e7eb07d55146f5c130dc3fd58c1b546e596b Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Mon, 2 Aug 2010 00:54:58 +0200 Subject: [PATCH 1/8] Remove the (wrong) implementation if llPointAt. It never worked on the LL grid and is officially deprecated. There is no way to rotate an avatar programmatically. --- .../ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 525f0f0ea2..ed63aeee02 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -3248,17 +3248,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public void llPointAt(LSL_Vector pos) { m_host.AddScriptLPS(1); - ScenePresence Owner = World.GetScenePresence(m_host.UUID); - LSL_Rotation rot = llEuler2Rot(pos); - Owner.PreviousRotation = Owner.Rotation; - Owner.Rotation = (new Quaternion((float)rot.x,(float)rot.y,(float)rot.z,(float)rot.s)); } public void llStopPointAt() { m_host.AddScriptLPS(1); - ScenePresence Owner = m_host.ParentGroup.Scene.GetScenePresence(m_host.OwnerID); - Owner.Rotation = Owner.PreviousRotation; } public void llTargetOmega(LSL_Vector axis, double spinrate, double gain) From 239478f3a9b0f651b451282cd204269545b025d9 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 3 Aug 2010 16:02:52 -0700 Subject: [PATCH 2/8] Bug fix (HG): mantis #4891. This doesn't actually fix the underlying bug, but it clears up the circular dependency issue between Gatekeeper and UserAgents that had made me resort to in-process remote calls, which, in turn, were hitting bugs down there somewhere in mono. NOTE: CONFIGURATION CHANGE IN ROBUST.HG.INI.EXAMPLE !!!###!!! --- .../HypergridService/GatekeeperService.cs | 87 ++++++++++--------- .../HypergridService/UserAgentService.cs | 16 ++-- bin/Robust.HG.ini.example | 1 + bin/config-include/StandaloneHypergrid.ini | 2 + 4 files changed, 58 insertions(+), 48 deletions(-) diff --git a/OpenSim/Services/HypergridService/GatekeeperService.cs b/OpenSim/Services/HypergridService/GatekeeperService.cs index c5cfe75fdf..3fc932758b 100644 --- a/OpenSim/Services/HypergridService/GatekeeperService.cs +++ b/OpenSim/Services/HypergridService/GatekeeperService.cs @@ -49,61 +49,64 @@ namespace OpenSim.Services.HypergridService LogManager.GetLogger( MethodBase.GetCurrentMethod().DeclaringType); - IGridService m_GridService; - IPresenceService m_PresenceService; - IUserAccountService m_UserAccountService; - IUserAgentService m_UserAgentService; - ISimulationService m_SimulationService; + private static bool m_Initialized = false; - string m_AuthDll; + private static IGridService m_GridService; + private static IPresenceService m_PresenceService; + private static IUserAccountService m_UserAccountService; + private static IUserAgentService m_UserAgentService; + private static ISimulationService m_SimulationService; - UUID m_ScopeID; - bool m_AllowTeleportsToAnyRegion; - string m_ExternalName; - GridRegion m_DefaultGatewayRegion; + private static UUID m_ScopeID; + private static bool m_AllowTeleportsToAnyRegion; + private static string m_ExternalName; + private static GridRegion m_DefaultGatewayRegion; public GatekeeperService(IConfigSource config, ISimulationService simService) { - IConfig serverConfig = config.Configs["GatekeeperService"]; - if (serverConfig == null) - throw new Exception(String.Format("No section GatekeeperService in config file")); + if (!m_Initialized) + { + m_Initialized = true; - string accountService = serverConfig.GetString("UserAccountService", String.Empty); - string homeUsersService = serverConfig.GetString("HomeUsersSecurityService", string.Empty); - string gridService = serverConfig.GetString("GridService", String.Empty); - string presenceService = serverConfig.GetString("PresenceService", String.Empty); - string simulationService = serverConfig.GetString("SimulationService", String.Empty); + IConfig serverConfig = config.Configs["GatekeeperService"]; + if (serverConfig == null) + throw new Exception(String.Format("No section GatekeeperService in config file")); - //m_AuthDll = serverConfig.GetString("AuthenticationService", String.Empty); + string accountService = serverConfig.GetString("UserAccountService", String.Empty); + string homeUsersService = serverConfig.GetString("HomeUsersSecurityService", string.Empty); + string gridService = serverConfig.GetString("GridService", String.Empty); + string presenceService = serverConfig.GetString("PresenceService", String.Empty); + string simulationService = serverConfig.GetString("SimulationService", String.Empty); - // These 3 are mandatory, the others aren't - if (gridService == string.Empty || presenceService == string.Empty || m_AuthDll == string.Empty) - throw new Exception("Incomplete specifications, Gatekeeper Service cannot function."); - - string scope = serverConfig.GetString("ScopeID", UUID.Zero.ToString()); - UUID.TryParse(scope, out m_ScopeID); - //m_WelcomeMessage = serverConfig.GetString("WelcomeMessage", "Welcome to OpenSim!"); - m_AllowTeleportsToAnyRegion = serverConfig.GetBoolean("AllowTeleportsToAnyRegion", true); - m_ExternalName = serverConfig.GetString("ExternalName", string.Empty); + // These 3 are mandatory, the others aren't + if (gridService == string.Empty || presenceService == string.Empty) + throw new Exception("Incomplete specifications, Gatekeeper Service cannot function."); + + string scope = serverConfig.GetString("ScopeID", UUID.Zero.ToString()); + UUID.TryParse(scope, out m_ScopeID); + //m_WelcomeMessage = serverConfig.GetString("WelcomeMessage", "Welcome to OpenSim!"); + m_AllowTeleportsToAnyRegion = serverConfig.GetBoolean("AllowTeleportsToAnyRegion", true); + m_ExternalName = serverConfig.GetString("ExternalName", string.Empty); - Object[] args = new Object[] { config }; - m_GridService = ServerUtils.LoadPlugin(gridService, args); - m_PresenceService = ServerUtils.LoadPlugin(presenceService, args); + Object[] args = new Object[] { config }; + m_GridService = ServerUtils.LoadPlugin(gridService, args); + m_PresenceService = ServerUtils.LoadPlugin(presenceService, args); - if (accountService != string.Empty) - m_UserAccountService = ServerUtils.LoadPlugin(accountService, args); - if (homeUsersService != string.Empty) - m_UserAgentService = ServerUtils.LoadPlugin(homeUsersService, args); + if (accountService != string.Empty) + m_UserAccountService = ServerUtils.LoadPlugin(accountService, args); + if (homeUsersService != string.Empty) + m_UserAgentService = ServerUtils.LoadPlugin(homeUsersService, args); - if (simService != null) - m_SimulationService = simService; - else if (simulationService != string.Empty) - m_SimulationService = ServerUtils.LoadPlugin(simulationService, args); + if (simService != null) + m_SimulationService = simService; + else if (simulationService != string.Empty) + m_SimulationService = ServerUtils.LoadPlugin(simulationService, args); - if (m_GridService == null || m_PresenceService == null || m_SimulationService == null) - throw new Exception("Unable to load a required plugin, Gatekeeper Service cannot function."); + if (m_GridService == null || m_PresenceService == null || m_SimulationService == null) + throw new Exception("Unable to load a required plugin, Gatekeeper Service cannot function."); - m_log.Debug("[GATEKEEPER SERVICE]: Starting..."); + m_log.Debug("[GATEKEEPER SERVICE]: Starting..."); + } } public GatekeeperService(IConfigSource config) diff --git a/OpenSim/Services/HypergridService/UserAgentService.cs b/OpenSim/Services/HypergridService/UserAgentService.cs index aec82e8868..4bee4b5ed5 100644 --- a/OpenSim/Services/HypergridService/UserAgentService.cs +++ b/OpenSim/Services/HypergridService/UserAgentService.cs @@ -61,7 +61,8 @@ namespace OpenSim.Services.HypergridService protected static IGridUserService m_GridUserService; protected static IGridService m_GridService; - protected static GatekeeperServiceConnector m_GatekeeperConnector; + //protected static GatekeeperServiceConnector m_GatekeeperConnector; + protected static IGatekeeperService m_GatekeeperService; protected static bool m_BypassClientVerification; @@ -69,6 +70,8 @@ namespace OpenSim.Services.HypergridService { if (!m_Initialized) { + m_Initialized = true; + m_log.DebugFormat("[HOME USERS SECURITY]: Starting..."); IConfig serverConfig = config.Configs["UserAgentService"]; @@ -77,18 +80,18 @@ namespace OpenSim.Services.HypergridService string gridService = serverConfig.GetString("GridService", String.Empty); string gridUserService = serverConfig.GetString("GridUserService", String.Empty); + string gatekeeperService = serverConfig.GetString("GatekeeperService", String.Empty); m_BypassClientVerification = serverConfig.GetBoolean("BypassClientVerification", false); - if (gridService == string.Empty || gridUserService == string.Empty) + if (gridService == string.Empty || gridUserService == string.Empty || gatekeeperService == string.Empty) throw new Exception(String.Format("Incomplete specifications, UserAgent Service cannot function.")); Object[] args = new Object[] { config }; m_GridService = ServerUtils.LoadPlugin(gridService, args); m_GridUserService = ServerUtils.LoadPlugin(gridUserService, args); - m_GatekeeperConnector = new GatekeeperServiceConnector(); - - m_Initialized = true; + //m_GatekeeperConnector = new GatekeeperServiceConnector(); + m_GatekeeperService = ServerUtils.LoadPlugin(gatekeeperService, args); } } @@ -135,7 +138,8 @@ namespace OpenSim.Services.HypergridService agentCircuit.ServiceSessionID = "http://" + region.ExternalHostName + ":" + region.HttpPort + ";" + UUID.Random(); TravelingAgentInfo old = UpdateTravelInfo(agentCircuit, region); - bool success = m_GatekeeperConnector.CreateAgent(region, agentCircuit, (uint)Constants.TeleportFlags.ViaLogin, out reason); + //bool success = m_GatekeeperConnector.CreateAgent(region, agentCircuit, (uint)Constants.TeleportFlags.ViaLogin, out reason); + bool success = m_GatekeeperService.LoginAgent(agentCircuit, finalDestination, out reason); if (!success) { diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example index 0cf9ab1431..9269e39d89 100644 --- a/bin/Robust.HG.ini.example +++ b/bin/Robust.HG.ini.example @@ -207,6 +207,7 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003 ;; for the service GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService" GridService = "OpenSim.Services.GridService.dll:GridService" + GatekeeperService = "OpenSim.Services.HypergridService.dll:GatekeeperService" ;; The interface that local users get when they are in other grids. ;; This restricts the inventory operations while in other grids. diff --git a/bin/config-include/StandaloneHypergrid.ini b/bin/config-include/StandaloneHypergrid.ini index e87270d7e8..35e7da26ed 100644 --- a/bin/config-include/StandaloneHypergrid.ini +++ b/bin/config-include/StandaloneHypergrid.ini @@ -114,6 +114,8 @@ ;; for the service GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService" GridService = "OpenSim.Services.GridService.dll:GridService" + GatekeeperService = "OpenSim.Services.HypergridService.dll:GatekeeperService" + ;; The interface that local users get when they are in other grids ;; This greatly restricts the inventory operations while in other grids From 16bdb53683bf15a39f77603d558eda026fd4d21e Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Wed, 4 Aug 2010 00:45:15 +0200 Subject: [PATCH 3/8] Allow specifying default region flags. Correct a typo. --- OpenSim/Services/GridService/GridService.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OpenSim/Services/GridService/GridService.cs b/OpenSim/Services/GridService/GridService.cs index f49d86d50a..ebaed42dc5 100644 --- a/OpenSim/Services/GridService/GridService.cs +++ b/OpenSim/Services/GridService/GridService.cs @@ -124,7 +124,7 @@ namespace OpenSim.Services.GridService { // Regions reserved for the null key cannot be taken. if ((string)region.Data["PrincipalID"] == UUID.Zero.ToString()) - return "Region location us reserved"; + return "Region location is reserved"; // Treat it as an auth request // @@ -210,6 +210,7 @@ namespace OpenSim.Services.GridService { int newFlags = 0; string regionName = rdata.RegionName.Trim().Replace(' ', '_'); + newFlags = ParseFlags(newFlags, gridConfig.GetString("DefaultRegionFlags", String.Empty)); newFlags = ParseFlags(newFlags, gridConfig.GetString("Region_" + regionName, String.Empty)); newFlags = ParseFlags(newFlags, gridConfig.GetString("Region_" + rdata.RegionID.ToString(), String.Empty)); rdata.Data["flags"] = newFlags.ToString(); From 9c7e35860e290e6bb77da7749d4d3b82a5c75418 Mon Sep 17 00:00:00 2001 From: Melanie Date: Wed, 4 Aug 2010 01:00:06 +0100 Subject: [PATCH 4/8] re-Add the XML configuration loader dll. It's gone AWOL in a cleanup, but still needed for web-loading region configs and for loading legacy XML region files --- bin/OpenSim.Framework.Configuration.XML.dll | Bin 0 -> 5120 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 bin/OpenSim.Framework.Configuration.XML.dll diff --git a/bin/OpenSim.Framework.Configuration.XML.dll b/bin/OpenSim.Framework.Configuration.XML.dll new file mode 100755 index 0000000000000000000000000000000000000000..de0b87527cde5700c62ae33cb93a1ac6aab990cd GIT binary patch literal 5120 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 Date: Wed, 4 Aug 2010 01:09:51 +0100 Subject: [PATCH 5/8] Revert "re-Add the XML configuration loader dll. It's gone AWOL in a cleanup, but" This reverts commit 9c7e35860e290e6bb77da7749d4d3b82a5c75418. --- bin/OpenSim.Framework.Configuration.XML.dll | Bin 5120 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 bin/OpenSim.Framework.Configuration.XML.dll diff --git a/bin/OpenSim.Framework.Configuration.XML.dll b/bin/OpenSim.Framework.Configuration.XML.dll deleted file mode 100755 index de0b87527cde5700c62ae33cb93a1ac6aab990cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5120 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 Date: Wed, 4 Aug 2010 01:10:01 +0100 Subject: [PATCH 6/8] Revert "remove long unused OpenSim/Framework/Configuration/* projects" This reverts commit cdd3f17b2bee58def470635cfc06e26b0d0145b2. --- .../Configuration/HTTP/HTTPConfiguration.cs | 119 +++++++++++++++ .../HTTP/RemoteConfigSettings.cs | 63 ++++++++ .../Configuration/XML/XmlConfiguration.cs | 141 ++++++++++++++++++ prebuild.xml | 52 +++++++ 4 files changed, 375 insertions(+) create mode 100644 OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs create mode 100644 OpenSim/Framework/Configuration/HTTP/RemoteConfigSettings.cs create mode 100644 OpenSim/Framework/Configuration/XML/XmlConfiguration.cs diff --git a/OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs b/OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs new file mode 100644 index 0000000000..3dce578193 --- /dev/null +++ b/OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs @@ -0,0 +1,119 @@ +/* + * 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 new file mode 100644 index 0000000000..10bc88aa6c --- /dev/null +++ b/OpenSim/Framework/Configuration/HTTP/RemoteConfigSettings.cs @@ -0,0 +1,63 @@ +/* + * 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 new file mode 100644 index 0000000000..43162fc227 --- /dev/null +++ b/OpenSim/Framework/Configuration/XML/XmlConfiguration.cs @@ -0,0 +1,141 @@ +/* + * 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 5f55461268..8a6d3a1e7a 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -255,6 +255,58 @@ + + + + ../../../../bin/ + + + + + ../../../../bin/ + + + + ../../../../bin/ + + + + + + + + + + + + + + + + ../../../../bin/ + + + + + ../../../../bin/ + + + + ../../../../bin/ + + + + + + + + + + + + + + From d57bfec702fd6eb067ab5d46cb791690ae81e10d Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Wed, 4 Aug 2010 02:16:46 +0200 Subject: [PATCH 7/8] A god is a god is a god is a god. Right? Right. You're a god from 200, let's show it! --- OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs index 50d2f9da82..06b1b00a22 100644 --- a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs @@ -218,7 +218,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat fromPos = avatar.AbsolutePosition; fromName = avatar.Name; fromID = c.Sender.AgentId; - if (avatar.GodLevel > 200) + if (avatar.GodLevel >= 200) { fromNamePrefix = m_adminPrefix; } From 5ff9db7388b5b05e49092d8ee59b3d1b5c963e78 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Wed, 4 Aug 2010 02:51:41 +0200 Subject: [PATCH 8/8] Clean up some messiness in IM sending. Having offline IM enabled now no longer suppresses "Inventory Saved" messages. --- .../Avatar/InstantMessage/InstantMessageModule.cs | 3 ++- .../Avatar/InstantMessage/MessageTransferModule.cs | 13 ++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/InstantMessageModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/InstantMessageModule.cs index ffdac58ac9..cbea54cc87 100644 --- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/InstantMessageModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/InstantMessageModule.cs @@ -187,7 +187,8 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage delegate(bool success) { if (dialog == (uint)InstantMessageDialog.StartTyping || - dialog == (uint)InstantMessageDialog.StopTyping) + dialog == (uint)InstantMessageDialog.StopTyping || + dialog == (uint)InstantMessageDialog.MessageFromObject) { return; } diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs index 83209fc86f..d025f0c0e3 100644 --- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs @@ -185,13 +185,16 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage { UndeliveredMessage handlerUndeliveredMessage = OnUndeliveredMessage; - // If this event has handlers, then the IM will be considered - // delivered. This will suppress the error message. + // If this event has handlers, then an IM from an agent will be + // considered delivered. This will suppress the error message. // if (handlerUndeliveredMessage != null) { handlerUndeliveredMessage(im); - result(true); + if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent) + result(true); + else + result(false); return; } @@ -504,14 +507,14 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage // if (upd.RegionID == prevRegionID) { - m_log.Error("[GRID INSTANT MESSAGE]: Unable to deliver an instant message"); + // m_log.Error("[GRID INSTANT MESSAGE]: Unable to deliver an instant message"); HandleUndeliveredMessage(im, result); return; } } else { - m_log.Error("[GRID INSTANT MESSAGE]: Unable to deliver an instant message"); + // m_log.Error("[GRID INSTANT MESSAGE]: Unable to deliver an instant message"); HandleUndeliveredMessage(im, result); return; }