From b790a16e986a0296b3a006f0db2b1011e5377ce9 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Wed, 2 Apr 2008 01:03:31 +0000 Subject: * Updating the version of the ODE library. (big update). The Mac library needs to be updated still. * Adding some XMPP stuff that's incomplete. --- OpenSim/Framework/Communications/XMPP/Stanza.cs | 31 ++++++ .../Framework/Communications/XMPP/XMPPParser.cs | 14 +++ OpenSim/Framework/JId.cs | 42 ++++++++ OpenSim/Grid/MessagingServer/XMPPHTTPService.cs | 111 +++++++++++++++++++++ .../Region/Environment/Modules/FriendsModule.cs | 8 +- OpenSim/Region/Environment/Scenes/ScenePresence.cs | 2 + OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 4 +- 7 files changed, 209 insertions(+), 3 deletions(-) create mode 100644 OpenSim/Framework/Communications/XMPP/Stanza.cs create mode 100644 OpenSim/Framework/Communications/XMPP/XMPPParser.cs create mode 100644 OpenSim/Framework/JId.cs create mode 100644 OpenSim/Grid/MessagingServer/XMPPHTTPService.cs (limited to 'OpenSim') diff --git a/OpenSim/Framework/Communications/XMPP/Stanza.cs b/OpenSim/Framework/Communications/XMPP/Stanza.cs new file mode 100644 index 0000000..4c57114 --- /dev/null +++ b/OpenSim/Framework/Communications/XMPP/Stanza.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Xml; + +namespace OpenSim.Framework.Communications.XMPP +{ + public class Stanza + { + + public string localName = String.Empty; + public JId to; + public JId from; + string id; + string lang; + string nodeName; + + public Stanza(XmlNode node, Object defaults, bool hasID) + { + + } + //public virtual XmlElement getNode() + //{ + //return new XmlElement(); + //} + public virtual string generateId() + { + return ""; + } + } +} diff --git a/OpenSim/Framework/Communications/XMPP/XMPPParser.cs b/OpenSim/Framework/Communications/XMPP/XMPPParser.cs new file mode 100644 index 0000000..0539afb --- /dev/null +++ b/OpenSim/Framework/Communications/XMPP/XMPPParser.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Xml; +using OpenSim.Framework; + + +namespace OpenSim.Framework.Communications.XMPP +{ + public class XMPPParser + { + + } +} diff --git a/OpenSim/Framework/JId.cs b/OpenSim/Framework/JId.cs new file mode 100644 index 0000000..790a9e0 --- /dev/null +++ b/OpenSim/Framework/JId.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace OpenSim.Framework +{ + public class JId + { + public string ServerIP = String.Empty; + public int ServerPort = 0; + public string username = String.Empty; + public string resource = String.Empty; + + public JId() + { + + } + public JId(string sJId) + { + // user@address:port/resource + string[] jidsplit = sJId.Split('@'); + if (jidsplit.GetUpperBound(0) == 2) + { + string[] serversplit = jidsplit[1].Split(':'); + if (serversplit.GetUpperBound(0) == 2) + { + ServerIP = serversplit[0]; + string[] resourcesplit = serversplit[1].Split('/'); + + ServerPort = Convert.ToInt32(resourcesplit[0]); + + if (resourcesplit.GetUpperBound(0) == 2) + resource = resourcesplit[1]; + + username = jidsplit[0]; + + } + } + } + + } +} diff --git a/OpenSim/Grid/MessagingServer/XMPPHTTPService.cs b/OpenSim/Grid/MessagingServer/XMPPHTTPService.cs new file mode 100644 index 0000000..4a66717 --- /dev/null +++ b/OpenSim/Grid/MessagingServer/XMPPHTTPService.cs @@ -0,0 +1,111 @@ +/* + * 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 OpenSim 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.Text; +using System.Xml; +using System.Xml.Serialization; +using libsecondlife; +using OpenSim.Framework; +using OpenSim.Framework.Console; +using OpenSim.Framework.Servers; + +namespace OpenSim.Grid.MessagingServer +{ + public class XMPPHTTPStreamHandler : BaseStreamHandler + { + private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + + + /// + /// Constructor. + /// + /// + /// + public XMPPHTTPStreamHandler() + : base("GET", "/presence") + { + m_log.Info("[REST]: In Get Request"); + + } + + public override byte[] Handle(string path, Stream request) + { + string param = GetParam(path); + byte[] result = new byte[] {}; + try + { + string[] p = param.Split(new char[] {'/', '?', '&'}, StringSplitOptions.RemoveEmptyEntries); + + if (p.Length > 0) + { + LLUUID assetID = null; + + if (!LLUUID.TryParse(p[0], out assetID)) + { + m_log.InfoFormat( + "[REST]: GET:/presence ignoring request with malformed UUID {0}", p[0]); + return result; + } + + } + } + catch (Exception e) + { + m_log.Error(e.ToString()); + } + return result; + } + } + + public class PostXMPPStreamHandler : BaseStreamHandler + { + private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + + public override byte[] Handle(string path, Stream request) + { + string param = GetParam(path); + + LLUUID assetId; + if (param.Length > 0) + LLUUID.TryParse(param, out assetId); + byte[] txBuffer = new byte[4096]; + + // TODO: Read POST serialize XMPP stanzas + + return new byte[] {}; + } + + public PostXMPPStreamHandler() + : base("POST", "/presence") + { + + } + + } +} diff --git a/OpenSim/Region/Environment/Modules/FriendsModule.cs b/OpenSim/Region/Environment/Modules/FriendsModule.cs index a572eb5..7560c90 100644 --- a/OpenSim/Region/Environment/Modules/FriendsModule.cs +++ b/OpenSim/Region/Environment/Modules/FriendsModule.cs @@ -24,7 +24,7 @@ * (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 libsecondlife; using Nini.Config; @@ -107,6 +107,12 @@ namespace OpenSim.Region.Environment.Modules { m_rootAgents[avatar.UUID] = avatar.RegionHandle; m_log.Info("[FRIEND]: Claiming " + avatar.Firstname + " " + avatar.Lastname + " in region:" + avatar.RegionHandle + "."); + if (avatar.JID.Length > 0) + { + JId avatarID = new JId(avatar.JID); + // REST Post XMPP Stanzas! + + } // Claim User! my user! Mine mine mine! } } diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 774e3b4..365c884 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs @@ -77,6 +77,8 @@ namespace OpenSim.Region.Environment.Scenes public bool IsRestrictedToRegion = false; + public string JID = string.Empty; + // Agent moves with a PID controller causing a force to be exerted. private bool m_newForce = false; private bool m_newCoarseLocations = true; diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index 8529234..673818a 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs @@ -290,8 +290,8 @@ namespace OpenSim.Region.Physics.OdePlugin internal void waitForSpaceUnlock(IntPtr space) { - if (space != (IntPtr)0) - while (d.SpaceLockQuery(space)){ } // Wait and do nothing + //if (space != (IntPtr)0) + //while (d.SpaceLockQuery(space)){ } // Wait and do nothing } /// -- cgit v1.1