From 8e37e7eb07d55146f5c130dc3fd58c1b546e596b Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Mon, 2 Aug 2010 00:54:58 +0200
Subject: 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.

---
 OpenSim/Region/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 525f0f0..ed63aee 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)
-- 
cgit v1.1


From 239478f3a9b0f651b451282cd204269545b025d9 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Tue, 3 Aug 2010 16:02:52 -0700
Subject: 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 !!!###!!!
---
 .../Services/HypergridService/GatekeeperService.cs | 103 +++++++++++----------
 .../Services/HypergridService/UserAgentService.cs  |  16 ++--
 bin/Robust.HG.ini.example                          |   1 +
 bin/config-include/StandaloneHypergrid.ini         |   2 +
 4 files changed, 66 insertions(+), 56 deletions(-)

diff --git a/OpenSim/Services/HypergridService/GatekeeperService.cs b/OpenSim/Services/HypergridService/GatekeeperService.cs
index c5cfe75..3fc9327 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"));
-
-            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);
-
-            //m_AuthDll = serverConfig.GetString("AuthenticationService", 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);
-
-            Object[] args = new Object[] { config };
-            m_GridService = ServerUtils.LoadPlugin<IGridService>(gridService, args);
-            m_PresenceService = ServerUtils.LoadPlugin<IPresenceService>(presenceService, args);
-
-            if (accountService != string.Empty)
-                m_UserAccountService = ServerUtils.LoadPlugin<IUserAccountService>(accountService, args);
-            if (homeUsersService != string.Empty)
-                m_UserAgentService = ServerUtils.LoadPlugin<IUserAgentService>(homeUsersService, args);
-
-            if (simService != null)
-                m_SimulationService = simService;
-            else if (simulationService != string.Empty)
-                    m_SimulationService = ServerUtils.LoadPlugin<ISimulationService>(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.");
-
-            m_log.Debug("[GATEKEEPER SERVICE]: Starting...");
+            if (!m_Initialized)
+            {
+                m_Initialized = true;
+
+                IConfig serverConfig = config.Configs["GatekeeperService"];
+                if (serverConfig == null)
+                    throw new Exception(String.Format("No section GatekeeperService in config file"));
+
+                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)
+                    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<IGridService>(gridService, args);
+                m_PresenceService = ServerUtils.LoadPlugin<IPresenceService>(presenceService, args);
+
+                if (accountService != string.Empty)
+                    m_UserAccountService = ServerUtils.LoadPlugin<IUserAccountService>(accountService, args);
+                if (homeUsersService != string.Empty)
+                    m_UserAgentService = ServerUtils.LoadPlugin<IUserAgentService>(homeUsersService, args);
+
+                if (simService != null)
+                    m_SimulationService = simService;
+                else if (simulationService != string.Empty)
+                        m_SimulationService = ServerUtils.LoadPlugin<ISimulationService>(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.");
+
+                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 aec82e8..4bee4b5 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<IGridService>(gridService, args);
                 m_GridUserService = ServerUtils.LoadPlugin<IGridUserService>(gridUserService, args);
-                m_GatekeeperConnector = new GatekeeperServiceConnector();
-
-                m_Initialized = true;
+                //m_GatekeeperConnector = new GatekeeperServiceConnector();
+                m_GatekeeperService = ServerUtils.LoadPlugin<IGatekeeperService>(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 0cf9ab1..9269e39 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 e87270d..35e7da2 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
-- 
cgit v1.1


From 16bdb53683bf15a39f77603d558eda026fd4d21e Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Wed, 4 Aug 2010 00:45:15 +0200
Subject: 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 f49d86d..ebaed42 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();
-- 
cgit v1.1


From 9c7e35860e290e6bb77da7749d4d3b82a5c75418 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Wed, 4 Aug 2010 01:00:06 +0100
Subject: 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 0000000..de0b875
Binary files /dev/null and b/bin/OpenSim.Framework.Configuration.XML.dll differ
-- 
cgit v1.1


From d987e8ef185c29f5ebed98339b5e21e6d79fba57 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Wed, 4 Aug 2010 01:09:51 +0100
Subject: 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 de0b875..0000000
Binary files a/bin/OpenSim.Framework.Configuration.XML.dll and /dev/null differ
-- 
cgit v1.1


From 71cd4d6e844f5659405754314f686d94fbb1578a Mon Sep 17 00:00:00 2001
From: Melanie
Date: Wed, 4 Aug 2010 01:10:01 +0100
Subject: Revert "remove long unused OpenSim/Framework/Configuration/*
 projects"

This reverts commit cdd3f17b2bee58def470635cfc06e26b0d0145b2.
---
 .../Configuration/HTTP/HTTPConfiguration.cs        | 119 +++++++++++++++++
 .../Configuration/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 0000000..3dce578
--- /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 0000000..10bc88a
--- /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 0000000..43162fc
--- /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 <Root>");
+
+            configNode = rootNode.SelectSingleNode("Config");
+            if (null == configNode)
+                throw new Exception("Error: Invalid .xml File. <Root> should contain a <Config>");
+        }
+
+        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 5f55461..8a6d3a1 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -255,6 +255,58 @@
       </Files>
     </Project>
 
+    <Project frameworkVersion="v3_5" name="OpenSim.Framework.Configuration.XML" path="OpenSim/Framework/Configuration/XML" type="Library">
+      <Configuration name="Debug">
+        <Options>
+          <OutputPath>../../../../bin/</OutputPath>
+        </Options>
+      </Configuration>
+      <Configuration name="Release">
+        <Options>
+          <OutputPath>../../../../bin/</OutputPath>
+        </Options>
+      </Configuration>
+
+      <ReferencePath>../../../../bin/</ReferencePath>
+      <Reference name="System"/>
+      <Reference name="System.Xml"/>
+      <Reference name="OpenMetaverseTypes.dll"/>
+      <Reference name="XMLRPC.dll"/>
+      <Reference name="OpenSim.Framework"/>
+      <Reference name="OpenSim.Framework.Console"/>
+      <Reference name="OpenSim.Data"/>
+      <Files>
+        <Match pattern="*.cs" recurse="true"/>
+      </Files>
+    </Project>
+
+    <Project frameworkVersion="v3_5" name="OpenSim.Framework.Configuration.HTTP" path="OpenSim/Framework/Configuration/HTTP" type="Library">
+      <Configuration name="Debug">
+        <Options>
+          <OutputPath>../../../../bin/</OutputPath>
+        </Options>
+      </Configuration>
+      <Configuration name="Release">
+        <Options>
+          <OutputPath>../../../../bin/</OutputPath>
+        </Options>
+      </Configuration>
+
+      <ReferencePath>../../../../bin/</ReferencePath>
+      <Reference name="System"/>
+      <Reference name="System.Xml"/>
+      <Reference name="OpenMetaverseTypes.dll"/>
+      <Reference name="XMLRPC.dll"/>
+      <Reference name="OpenSim.Framework"/>
+      <Reference name="OpenSim.Framework.Console"/>
+      <Reference name="OpenSim.Framework.Configuration.XML"/>
+      <Reference name="OpenSim.Data"/>
+      <Reference name="log4net.dll"/>
+      <Files>
+        <Match pattern="*.cs" recurse="true"/>
+      </Files>
+    </Project>
+
     <Project frameworkVersion="v3_5" name="OpenSim.Framework.AssetLoader.Filesystem" path="OpenSim/Framework/AssetLoader/Filesystem" type="Library">
       <Configuration name="Debug">
         <Options>
-- 
cgit v1.1


From d57bfec702fd6eb067ab5d46cb791690ae81e10d Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Wed, 4 Aug 2010 02:16:46 +0200
Subject: 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 50d2f9d..06b1b00 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;
                 }
-- 
cgit v1.1


From 5ff9db7388b5b05e49092d8ee59b3d1b5c963e78 Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Wed, 4 Aug 2010 02:51:41 +0200
Subject: 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 ffdac58..cbea54c 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 83209fc..d025f0c 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;
                 }
-- 
cgit v1.1