*Deleting pretty much everything in this branch to add what I have already locally
							parent
							
								
									86db06b278
								
							
						
					
					
						commit
						dfdcd4a6e0
					
				
							
								
								
									
										7241
									
								
								OpenSim.FxCop
								
								
								
								
							
							
						
						
									
										7241
									
								
								OpenSim.FxCop
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -1,70 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Text; | ||||
| using libsecondlife; | ||||
| using libsecondlife.Packets; | ||||
| using OpenSim.Framework.Data; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| using OpenSim.Framework.Types; | ||||
| using OpenSim.Framework.Servers; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Communications | ||||
| { | ||||
|   | ||||
|     public class CommunicationsManager | ||||
|     { | ||||
|         public IUserServices UserServer; | ||||
|         public IGridServices GridServer; | ||||
|         public IInterRegionCommunications InterRegion; | ||||
| 
 | ||||
|         public NetworkServersInfo ServersInfo; | ||||
|         public CommunicationsManager(NetworkServersInfo serversInfo, BaseHttpServer httpServer) | ||||
|         { | ||||
|             ServersInfo = serversInfo; | ||||
|         } | ||||
| 
 | ||||
|         #region Packet Handlers | ||||
|         public void HandleUUIDNameRequest(LLUUID uuid, IClientAPI remote_client) | ||||
|         { | ||||
|             Encoding enc = Encoding.ASCII; | ||||
|             UserProfileData profileData = this.UserServer.GetUserProfile(uuid); | ||||
|             if (profileData != null) | ||||
|             { | ||||
|                 UUIDNameReplyPacket packet = new UUIDNameReplyPacket(); | ||||
|                 packet.UUIDNameBlock = new UUIDNameReplyPacket.UUIDNameBlockBlock[1]; | ||||
|                 packet.UUIDNameBlock[0] = new UUIDNameReplyPacket.UUIDNameBlockBlock(); | ||||
|                 packet.UUIDNameBlock[0].ID = profileData.UUID; | ||||
|                 packet.UUIDNameBlock[0].FirstName = enc.GetBytes(profileData.username + "\0"); | ||||
|                 packet.UUIDNameBlock[0].LastName = enc.GetBytes(profileData.surname +"\0"); | ||||
|                 remote_client.OutPacket((Packet)packet); | ||||
|             } | ||||
|              | ||||
|         } | ||||
|         #endregion | ||||
|     } | ||||
| } | ||||
|  | @ -1,43 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using OpenSim.Framework.Types; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Communications | ||||
| { | ||||
|      | ||||
| 
 | ||||
|     public interface IGridServices | ||||
|     { | ||||
|         RegionCommsListener RegisterRegion(RegionInfo regionInfos); | ||||
|         List<RegionInfo> RequestNeighbours(RegionInfo regionInfo); | ||||
|         RegionInfo RequestNeighbourInfo(ulong regionHandle); | ||||
|         List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY); | ||||
|     } | ||||
| } | ||||
|  | @ -1,38 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| using OpenSim.Framework.Types; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Communications | ||||
| { | ||||
|     public  interface IInterRegionCommunications | ||||
|     { | ||||
|          bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData); | ||||
|          bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position);  | ||||
|     } | ||||
| } | ||||
|  | @ -1,43 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| using OpenSim.Framework.Data; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Communications | ||||
| { | ||||
|     public interface IUserServices | ||||
|     { | ||||
|         UserProfileData GetUserProfile(string firstName, string lastName); | ||||
|         UserProfileData GetUserProfile(string name); | ||||
|         UserProfileData GetUserProfile(LLUUID avatarID); | ||||
| 
 | ||||
|         UserProfileData SetupMasterUser(string firstName, string lastName); | ||||
|         UserProfileData SetupMasterUser(string firstName, string lastName, string password); | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -1,60 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| [assembly: AssemblyTitle("OpenGrid.Framework.Communications")] | ||||
| [assembly: AssemblyDescription("")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("")] | ||||
| [assembly: AssemblyProduct("OpenGrid.Framework.Communications")] | ||||
| [assembly: AssemblyCopyright("Copyright ©  2007")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")] | ||||
| 
 | ||||
| // Setting ComVisible to false makes the types in this assembly not visible  | ||||
| // to COM components.  If you need to access a type in this assembly from  | ||||
| // COM, set the ComVisible attribute to true on that type. | ||||
| [assembly: ComVisible(false)] | ||||
| 
 | ||||
| // The following GUID is for the ID of the typelib if this project is exposed to COM | ||||
| [assembly: Guid("13e7c396-78a9-4a5c-baf2-6f980ea75d95")] | ||||
| 
 | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
| // You can specify all the values or you can default the Revision and Build Numbers  | ||||
| // by using the '*' as shown below: | ||||
| [assembly: AssemblyVersion("1.0.0.0")] | ||||
| [assembly: AssemblyFileVersion("1.0.0.0")] | ||||
|  | @ -1,56 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| // Information about this assembly is defined by the following | ||||
| // attributes. | ||||
| // | ||||
| // change them to the information which is associated with the assembly | ||||
| // you compile. | ||||
| 
 | ||||
| [assembly: AssemblyTitle("ServerConsole")] | ||||
| [assembly: AssemblyDescription("")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("")] | ||||
| [assembly: AssemblyProduct("ServerConsole")] | ||||
| [assembly: AssemblyCopyright("")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")] | ||||
| 
 | ||||
| // This sets the default COM visibility of types in the assembly to invisible. | ||||
| // If you need to expose a type to COM, use [ComVisible(true)] on that type. | ||||
| [assembly: ComVisible(false)] | ||||
| 
 | ||||
| // The assembly version has following format : | ||||
| // | ||||
| // Major.Minor.Build.Revision | ||||
| // | ||||
| // You can specify all values by your own or you can build default build and revision | ||||
| // numbers with the '*' character (the default): | ||||
| 
 | ||||
| [assembly: AssemblyVersion("1.0.*")] | ||||
|  | @ -1,35 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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. | ||||
| *  | ||||
| */ | ||||
| namespace OpenSim.Framework.Console | ||||
| {     | ||||
|     public interface conscmd_callback | ||||
|     { | ||||
|         void RunCmd(string cmd, string[] cmdparams); | ||||
|         void Show(string ShowWhat); | ||||
|     } | ||||
| } | ||||
|  | @ -1,282 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Net; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Console | ||||
| { | ||||
|     public enum LogPriority : int | ||||
|     { | ||||
|         CRITICAL, | ||||
|         HIGH, | ||||
|         MEDIUM, | ||||
|         NORMAL, | ||||
|         LOW, | ||||
|         VERBOSE, | ||||
|         EXTRAVERBOSE | ||||
|     } | ||||
| 
 | ||||
|     public class LogBase | ||||
|     { | ||||
|         StreamWriter Log; | ||||
|         public conscmd_callback cmdparser; | ||||
|         public string componentname; | ||||
|         private bool m_silent; | ||||
| 
 | ||||
|         public LogBase(string LogFile, string componentname, conscmd_callback cmdparser, bool silent) | ||||
|         { | ||||
|             this.componentname = componentname; | ||||
|             this.cmdparser = cmdparser; | ||||
|             this.m_silent = silent; | ||||
|             System.Console.WriteLine("ServerConsole.cs - creating new local console"); | ||||
| 
 | ||||
|             if (String.IsNullOrEmpty(LogFile)) | ||||
|             { | ||||
|                 LogFile = componentname + ".log"; | ||||
|             } | ||||
| 
 | ||||
|             System.Console.WriteLine("Logs will be saved to current directory in " + LogFile); | ||||
|             Log = File.AppendText(LogFile); | ||||
|             Log.WriteLine("========================================================================"); | ||||
|             Log.WriteLine(componentname + " Started at " + DateTime.Now.ToString()); | ||||
|         } | ||||
| 
 | ||||
|         public void Close() | ||||
|         { | ||||
|             Log.WriteLine("Shutdown at " + DateTime.Now.ToString()); | ||||
|             Log.Close(); | ||||
|         } | ||||
| 
 | ||||
|         public void Write(string format, params object[] args) | ||||
|         { | ||||
|             Notice(format, args); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         public void WriteLine(LogPriority importance, string format, params object[] args) | ||||
|         { | ||||
|             Log.WriteLine(format, args); | ||||
|             Log.Flush(); | ||||
|             if (!m_silent) | ||||
|             { | ||||
|                 System.Console.WriteLine(format, args); | ||||
|             } | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         public void Warn(string format, params object[] args) | ||||
|         { | ||||
|             WriteNewLine(ConsoleColor.Yellow, format, args); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         public void Notice(string format, params object[] args) | ||||
|         { | ||||
|             WriteNewLine(ConsoleColor.White, format, args); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         public void Error(string format, params object[] args) | ||||
|         { | ||||
|             WriteNewLine(ConsoleColor.Red, format, args); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         public void Verbose(string format, params object[] args) | ||||
|         { | ||||
|             WriteNewLine(ConsoleColor.Gray, format, args); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         public void Status(string format, params object[] args) | ||||
|         { | ||||
|             WriteNewLine(ConsoleColor.Blue, format, args); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         private void WriteNewLine(ConsoleColor color, string format, params object[] args) | ||||
|         { | ||||
|             Log.WriteLine(format, args); | ||||
|             Log.Flush(); | ||||
|             if (!m_silent) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     System.Console.ForegroundColor = color; | ||||
|                     System.Console.WriteLine(format, args); | ||||
|                     System.Console.ResetColor(); | ||||
|                 } | ||||
|                 catch (ArgumentNullException) | ||||
|                 { | ||||
|                     // Some older systems dont support coloured text. | ||||
|                     System.Console.WriteLine(format, args); | ||||
|                 } | ||||
|             } | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         public string ReadLine() | ||||
|         { | ||||
|             string TempStr = System.Console.ReadLine(); | ||||
|             Log.WriteLine(TempStr); | ||||
|             return TempStr; | ||||
|         } | ||||
| 
 | ||||
|         public int Read() | ||||
|         { | ||||
|             int TempInt = System.Console.Read(); | ||||
|             Log.Write((char)TempInt); | ||||
|             return TempInt; | ||||
|         } | ||||
| 
 | ||||
|         public IPAddress CmdPromptIPAddress(string prompt, string defaultvalue) | ||||
|         { | ||||
|             IPAddress address; | ||||
|             string addressStr; | ||||
| 
 | ||||
|             while (true) | ||||
|             { | ||||
|                 addressStr = MainLog.Instance.CmdPrompt(prompt, defaultvalue); | ||||
|                 if (IPAddress.TryParse(addressStr, out address)) | ||||
|                 { | ||||
|                     break; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     MainLog.Instance.Error("Illegal address. Please re-enter."); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return address; | ||||
|         } | ||||
| 
 | ||||
|         public int CmdPromptIPPort(string prompt, string defaultvalue) | ||||
|         { | ||||
|             int port; | ||||
|             string portStr; | ||||
| 
 | ||||
|             while (true) | ||||
|             { | ||||
|                 portStr = MainLog.Instance.CmdPrompt(prompt, defaultvalue); | ||||
|                 if (int.TryParse(portStr, out port)) | ||||
|                 { | ||||
|                     if (port >= IPEndPoint.MinPort && port <= IPEndPoint.MaxPort) | ||||
|                     { | ||||
|                         break; | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 MainLog.Instance.Error("Illegal address. Please re-enter."); | ||||
|             } | ||||
| 
 | ||||
|             return port; | ||||
|         } | ||||
| 
 | ||||
|         // Displays a prompt and waits for the user to enter a string, then returns that string | ||||
|         // Done with no echo and suitable for passwords | ||||
|         public string PasswdPrompt(string prompt) | ||||
|         { | ||||
|             // FIXME: Needs to be better abstracted | ||||
|             Log.WriteLine(prompt); | ||||
|             this.Write(prompt); | ||||
|             ConsoleColor oldfg = System.Console.ForegroundColor; | ||||
|             System.Console.ForegroundColor = System.Console.BackgroundColor; | ||||
|             string temp = System.Console.ReadLine(); | ||||
|             System.Console.ForegroundColor = oldfg; | ||||
|             return temp; | ||||
|         } | ||||
| 
 | ||||
|         // Displays a command prompt and waits for the user to enter a string, then returns that string | ||||
|         public string CmdPrompt(string prompt) | ||||
|         { | ||||
|             this.Write(String.Format("{0}: ", prompt)); | ||||
|             return this.ReadLine(); | ||||
|         } | ||||
| 
 | ||||
|         // Displays a command prompt and returns a default value if the user simply presses enter | ||||
|         public string CmdPrompt(string prompt, string defaultresponse) | ||||
|         { | ||||
|             string temp = CmdPrompt(String.Format("{0} [{1}]", prompt, defaultresponse)); | ||||
|             if (temp == "") | ||||
|             { | ||||
|                 return defaultresponse; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return temp; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // Displays a command prompt and returns a default value, user may only enter 1 of 2 options | ||||
|         public string CmdPrompt(string prompt, string defaultresponse, string OptionA, string OptionB) | ||||
|         { | ||||
|             bool itisdone = false; | ||||
|             string temp = CmdPrompt(prompt, defaultresponse); | ||||
|             while (itisdone == false) | ||||
|             { | ||||
|                 if ((temp == OptionA) || (temp == OptionB)) | ||||
|                 { | ||||
|                     itisdone = true; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     Notice("Valid options are " + OptionA + " or " + OptionB); | ||||
|                     temp = CmdPrompt(prompt, defaultresponse); | ||||
|                 } | ||||
|             } | ||||
|             return temp; | ||||
|         } | ||||
| 
 | ||||
|         // Runs a command with a number of parameters | ||||
|         public Object RunCmd(string Cmd, string[] cmdparams) | ||||
|         { | ||||
|             cmdparser.RunCmd(Cmd, cmdparams); | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         // Shows data about something | ||||
|         public void ShowCommands(string ShowWhat) | ||||
|         { | ||||
|             cmdparser.Show(ShowWhat); | ||||
|         } | ||||
| 
 | ||||
|         public void MainLogPrompt() | ||||
|         { | ||||
|             string[] tempstrarray; | ||||
|             string tempstr = this.CmdPrompt(this.componentname + "# "); | ||||
|             tempstrarray = tempstr.Split(' '); | ||||
|             string cmd = tempstrarray[0]; | ||||
|             Array.Reverse(tempstrarray); | ||||
|             Array.Resize<string>(ref tempstrarray, tempstrarray.Length - 1); | ||||
|             Array.Reverse(tempstrarray); | ||||
|             string[] cmdparams = (string[])tempstrarray; | ||||
|             RunCmd(cmd, cmdparams); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,47 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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. | ||||
| *  | ||||
| */ | ||||
| namespace OpenSim.Framework.Console | ||||
| { | ||||
| 	public class MainLog { | ||||
| 		 | ||||
| 		private static LogBase instance; | ||||
| 		 | ||||
| 		public static LogBase Instance  | ||||
| 		{ | ||||
| 			get  | ||||
| 			{ | ||||
| 				return instance; | ||||
| 			} | ||||
| 			set | ||||
| 			{ | ||||
| 				instance = value; | ||||
| 			} | ||||
| 		} | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | @ -1,162 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data.DB4o | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A grid server storage mechanism employing the DB4o database system | ||||
|     /// </summary> | ||||
|     class DB4oGridData : IGridData | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// The database manager object | ||||
|         /// </summary> | ||||
|         DB4oGridManager manager; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Called when the plugin is first loaded (as constructors are not called) | ||||
|         /// </summary> | ||||
|         public void Initialise() { | ||||
|              manager = new DB4oGridManager("gridserver.yap"); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a list of regions within the specified ranges | ||||
|         /// </summary> | ||||
|         /// <param name="a">minimum X coordinate</param> | ||||
|         /// <param name="b">minimum Y coordinate</param> | ||||
|         /// <param name="c">maximum X coordinate</param> | ||||
|         /// <param name="d">maximum Y coordinate</param> | ||||
|         /// <returns>An array of region profiles</returns> | ||||
|         public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d) | ||||
|         { | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a region located at the specified regionHandle (warning multiple regions may occupy the one spot, first found is returned) | ||||
|         /// </summary> | ||||
|         /// <param name="handle">The handle to search for</param> | ||||
|         /// <returns>A region profile</returns> | ||||
|         public SimProfileData GetProfileByHandle(ulong handle) { | ||||
|             lock (manager.simProfiles) | ||||
|             { | ||||
|                 foreach (LLUUID UUID in manager.simProfiles.Keys) | ||||
|                 { | ||||
|                     if (manager.simProfiles[UUID].regionHandle == handle) | ||||
|                     { | ||||
|                         return manager.simProfiles[UUID]; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             throw new Exception("Unable to find profile with handle (" + handle.ToString() + ")"); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a specific region | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">The region ID code</param> | ||||
|         /// <returns>A region profile</returns> | ||||
|         public SimProfileData GetProfileByLLUUID(LLUUID uuid) | ||||
|         { | ||||
|             lock (manager.simProfiles) | ||||
|             { | ||||
|                 if (manager.simProfiles.ContainsKey(uuid)) | ||||
|                     return manager.simProfiles[uuid]; | ||||
|             } | ||||
|             throw new Exception("Unable to find profile with UUID (" + uuid.ToStringHyphenated() + "). Total Registered Regions: " + manager.simProfiles.Count); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Adds a new specified region to the database | ||||
|         /// </summary> | ||||
|         /// <param name="profile">The profile to add</param> | ||||
|         /// <returns>A dataresponse enum indicating success</returns> | ||||
|         public DataResponse AddProfile(SimProfileData profile) | ||||
|         { | ||||
|             lock (manager.simProfiles) | ||||
|             { | ||||
|                 if (manager.AddRow(profile)) | ||||
|                 { | ||||
|                     return DataResponse.RESPONSE_OK; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     return DataResponse.RESPONSE_ERROR; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Authenticates a new region using the shared secrets. NOT SECURE. | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">The UUID the region is authenticating with</param> | ||||
|         /// <param name="handle">The location the region is logging into (unused in Db4o)</param> | ||||
|         /// <param name="key">The shared secret</param> | ||||
|         /// <returns>Authenticated?</returns> | ||||
|         public bool AuthenticateSim(LLUUID uuid, ulong handle, string key) { | ||||
|             if (manager.simProfiles[uuid].regionRecvKey == key) | ||||
|                 return true; | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Shuts down the database | ||||
|         /// </summary> | ||||
|         public void Close() | ||||
|         { | ||||
|             manager = null; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the providers name | ||||
|         /// </summary> | ||||
|         /// <returns>The name of the storage system</returns> | ||||
|         public string getName() | ||||
|         { | ||||
|             return "DB4o Grid Provider"; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the providers version | ||||
|         /// </summary> | ||||
|         /// <returns>The version of the storage system</returns> | ||||
|         public string getVersion() | ||||
|         { | ||||
|             return "0.1"; | ||||
|         } | ||||
| 
 | ||||
|         public ReservationData GetReservationAtPoint(uint x, uint y) | ||||
|         { | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,163 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using Db4objects.Db4o; | ||||
| using libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data.DB4o | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A Database manager for Db4o | ||||
|     /// </summary> | ||||
|     class DB4oGridManager | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// A list of the current regions connected (in-memory cache) | ||||
|         /// </summary> | ||||
|         public Dictionary<LLUUID, SimProfileData> simProfiles = new Dictionary<LLUUID, SimProfileData>(); | ||||
|         /// <summary> | ||||
|         /// Database File Name | ||||
|         /// </summary> | ||||
|         string dbfl; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Creates a new grid storage manager | ||||
|         /// </summary> | ||||
|         /// <param name="db4odb">Filename to the database file</param> | ||||
|         public DB4oGridManager(string db4odb) | ||||
|         { | ||||
|             dbfl = db4odb; | ||||
|             IObjectContainer database; | ||||
|             database = Db4oFactory.OpenFile(dbfl); | ||||
|             IObjectSet result = database.Get(typeof(SimProfileData)); | ||||
|             // Loads the file into the in-memory cache | ||||
|             foreach(SimProfileData row in result) { | ||||
|                 simProfiles.Add(row.UUID, row); | ||||
|             } | ||||
|             database.Close(); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Adds a new profile to the database (Warning: Probably slow.) | ||||
|         /// </summary> | ||||
|         /// <param name="row">The profile to add</param> | ||||
|         /// <returns>Successful?</returns> | ||||
|         public bool AddRow(SimProfileData row) | ||||
|         { | ||||
|             if (simProfiles.ContainsKey(row.UUID)) | ||||
|             { | ||||
|                 simProfiles[row.UUID] = row; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 simProfiles.Add(row.UUID, row); | ||||
|             } | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|                 IObjectContainer database; | ||||
|                 database = Db4oFactory.OpenFile(dbfl); | ||||
|                 database.Set(row); | ||||
|                 database.Close(); | ||||
|                 return true; | ||||
|             } | ||||
|             catch (Exception) | ||||
|             { | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     /// <summary> | ||||
|     /// A manager for the DB4o database (user profiles) | ||||
|     /// </summary> | ||||
|     class DB4oUserManager | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// A list of the user profiles (in memory cache) | ||||
|         /// </summary> | ||||
|         public Dictionary<LLUUID, UserProfileData> userProfiles = new Dictionary<LLUUID, UserProfileData>(); | ||||
|         /// <summary> | ||||
|         /// Database filename | ||||
|         /// </summary> | ||||
|         string dbfl; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises a new DB manager | ||||
|         /// </summary> | ||||
|         /// <param name="db4odb">The filename to the database</param> | ||||
|         public DB4oUserManager(string db4odb) | ||||
|         { | ||||
|             dbfl = db4odb; | ||||
|             IObjectContainer database; | ||||
|             database = Db4oFactory.OpenFile(dbfl); | ||||
|             // Load to cache | ||||
|             IObjectSet result = database.Get(typeof(UserProfileData)); | ||||
|             foreach (UserProfileData row in result) | ||||
|             { | ||||
|                 userProfiles.Add(row.UUID, row); | ||||
|             } | ||||
|             database.Close(); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Adds a new profile to the database (Warning: Probably slow.) | ||||
|         /// </summary> | ||||
|         /// <param name="row">The profile to add</param> | ||||
|         /// <returns>Successful?</returns> | ||||
|         public bool AddRow(UserProfileData row) | ||||
|         {  | ||||
|             if (userProfiles.ContainsKey(row.UUID)) | ||||
|             { | ||||
|                 userProfiles[row.UUID] = row; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 userProfiles.Add(row.UUID, row); | ||||
|             } | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|                 IObjectContainer database; | ||||
|                 database = Db4oFactory.OpenFile(dbfl); | ||||
|                 database.Set(row); | ||||
|                 database.Close(); | ||||
|                 return true; | ||||
|             } | ||||
|             catch (Exception) | ||||
|             { | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -1,202 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data.DB4o | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A User storage interface for the DB4o database system | ||||
|     /// </summary> | ||||
|     public class DB4oUserData : IUserData | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// The database manager | ||||
|         /// </summary> | ||||
|         DB4oUserManager manager; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Artificial constructor called upon plugin load | ||||
|         /// </summary> | ||||
|         public void Initialise() | ||||
|         { | ||||
|             manager = new DB4oUserManager("userprofiles.yap"); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Loads a specified user profile from a UUID | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">The users UUID</param> | ||||
|         /// <returns>A user profile</returns> | ||||
|         public UserProfileData getUserByUUID(LLUUID uuid) | ||||
|         { | ||||
|             if(manager.userProfiles.ContainsKey(uuid)) | ||||
|                 return manager.userProfiles[uuid]; | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a user by searching for its name | ||||
|         /// </summary> | ||||
|         /// <param name="name">The users account name</param> | ||||
|         /// <returns>A matching users profile</returns> | ||||
|         public UserProfileData getUserByName(string name) | ||||
|         { | ||||
|             return getUserByName(name.Split(' ')[0], name.Split(' ')[1]); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a user by searching for its name | ||||
|         /// </summary> | ||||
|         /// <param name="fname">The first part of the users account name</param> | ||||
|         /// <param name="lname">The second part of the users account name</param> | ||||
|         /// <returns>A matching users profile</returns> | ||||
|         public UserProfileData getUserByName(string fname, string lname) | ||||
|         { | ||||
|             foreach (UserProfileData profile in manager.userProfiles.Values) | ||||
|             { | ||||
|                 if (profile.username == fname && profile.surname == lname) | ||||
|                     return profile; | ||||
|             } | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a user by UUID direct | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">The users account ID</param> | ||||
|         /// <returns>A matching users profile</returns> | ||||
|         public UserAgentData getAgentByUUID(LLUUID uuid) | ||||
|         {    | ||||
|             try | ||||
|             { | ||||
|                 return getUserByUUID(uuid).currentAgent; | ||||
|             } | ||||
|             catch (Exception) | ||||
|             { | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a session by account name | ||||
|         /// </summary> | ||||
|         /// <param name="name">The account name</param> | ||||
|         /// <returns>The users session agent</returns> | ||||
|         public UserAgentData getAgentByName(string name) | ||||
|         { | ||||
|             return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a session by account name | ||||
|         /// </summary> | ||||
|         /// <param name="fname">The first part of the users account name</param> | ||||
|         /// <param name="lname">The second part of the users account name</param> | ||||
|         /// <returns>A user agent</returns> | ||||
|         public UserAgentData getAgentByName(string fname, string lname) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 return getUserByName(fname,lname).currentAgent; | ||||
|             } | ||||
|             catch (Exception) | ||||
|             { | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Creates a new user profile | ||||
|         /// </summary> | ||||
|         /// <param name="user">The profile to add to the database</param> | ||||
|         public void addNewUserProfile(UserProfileData user) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 manager.AddRow(user); | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Creates a new user agent | ||||
|         /// </summary> | ||||
|         /// <param name="agent">The agent to add to the database</param> | ||||
|         public void addNewUserAgent(UserAgentData agent) | ||||
|         { | ||||
|             // Do nothing. yet. | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Transfers money between two user accounts | ||||
|         /// </summary> | ||||
|         /// <param name="from">Starting account</param> | ||||
|         /// <param name="to">End account</param> | ||||
|         /// <param name="amount">The amount to move</param> | ||||
|         /// <returns>Success?</returns> | ||||
|         public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount) | ||||
|         { | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Transfers inventory between two accounts | ||||
|         /// </summary> | ||||
|         /// <remarks>Move to inventory server</remarks> | ||||
|         /// <param name="from">Senders account</param> | ||||
|         /// <param name="to">Recievers account</param> | ||||
|         /// <param name="item">Inventory item</param> | ||||
|         /// <returns>Success?</returns> | ||||
|         public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item) | ||||
|         { | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the name of the storage provider | ||||
|         /// </summary> | ||||
|         /// <returns>Storage provider name</returns> | ||||
|         public string getName() | ||||
|         { | ||||
|             return "DB4o Userdata"; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the version of the storage provider | ||||
|         /// </summary> | ||||
|         /// <returns>Storage provider version</returns> | ||||
|         public string getVersion() | ||||
|         { | ||||
|             return "0.1"; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,33 +0,0 @@ | |||
| using System.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| [assembly: AssemblyTitle("OpenSim.Framework.Data.DB4o")] | ||||
| [assembly: AssemblyDescription("")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("")] | ||||
| [assembly: AssemblyProduct("OpenSim.Framework.Data.DB4o")] | ||||
| [assembly: AssemblyCopyright("Copyright ©  2007")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")] | ||||
| 
 | ||||
| // Setting ComVisible to false makes the types in this assembly not visible  | ||||
| // to COM components.  If you need to access a type in this assembly from  | ||||
| // COM, set the ComVisible attribute to true on that type. | ||||
| [assembly: ComVisible(false)] | ||||
| 
 | ||||
| // The following GUID is for the ID of the typelib if this project is exposed to COM | ||||
| [assembly: Guid("57991e15-79da-41b7-aa06-2e6b49165a63")] | ||||
| 
 | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
| // You can specify all the values or you can default the Revision and Build Numbers  | ||||
| // by using the '*' as shown below: | ||||
| [assembly: AssemblyVersion("1.0.0.0")] | ||||
| [assembly: AssemblyFileVersion("1.0.0.0")] | ||||
|  | @ -1,194 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using System.Data; | ||||
| using System.Security.Cryptography; | ||||
| using System.Text; | ||||
| using libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data.MSSQL | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A grid data interface for Microsoft SQL Server | ||||
|     /// </summary> | ||||
|     public class SqlGridData : IGridData | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Database manager | ||||
|         /// </summary> | ||||
|         private MSSqlManager database; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises the Grid Interface | ||||
|         /// </summary> | ||||
|         public void Initialise() | ||||
|         { | ||||
|             database = new MSSqlManager("localhost", "db", "user", "password", "false"); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Shuts down the grid interface | ||||
|         /// </summary> | ||||
|         public void Close() | ||||
|         { | ||||
|             database.Close(); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the storage system name | ||||
|         /// </summary> | ||||
|         /// <returns>A string containing the storage system name</returns> | ||||
|         public string getName() | ||||
|         { | ||||
|             return "Sql OpenGridData"; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the storage system version | ||||
|         /// </summary> | ||||
|         /// <returns>A string containing the storage system version</returns> | ||||
|         public string getVersion() | ||||
|         { | ||||
|             return "0.1"; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a list of regions within the specified ranges | ||||
|         /// </summary> | ||||
|         /// <param name="a">minimum X coordinate</param> | ||||
|         /// <param name="b">minimum Y coordinate</param> | ||||
|         /// <param name="c">maximum X coordinate</param> | ||||
|         /// <param name="d">maximum Y coordinate</param> | ||||
|         /// <returns>An array of region profiles</returns> | ||||
|         public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d) | ||||
|         { | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a sim profile from it's location | ||||
|         /// </summary> | ||||
|         /// <param name="handle">Region location handle</param> | ||||
|         /// <returns>Sim profile</returns> | ||||
|         public SimProfileData GetProfileByHandle(ulong handle) | ||||
|         { | ||||
|             Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|             param["handle"] = handle.ToString(); | ||||
| 
 | ||||
|             IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param); | ||||
|             IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|             SimProfileData row = database.getRow(reader); | ||||
|             reader.Close(); | ||||
|             result.Dispose(); | ||||
| 
 | ||||
|             return row; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a sim profile from it's UUID | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">The region UUID</param> | ||||
|         /// <returns>The sim profile</returns> | ||||
|         public SimProfileData GetProfileByLLUUID(LLUUID uuid) | ||||
|         { | ||||
|             Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|             param["uuid"] = uuid.ToStringHyphenated(); | ||||
| 
 | ||||
|             IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param); | ||||
|             IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|             SimProfileData row = database.getRow(reader); | ||||
|             reader.Close(); | ||||
|             result.Dispose(); | ||||
| 
 | ||||
|             return row; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Adds a new specified region to the database | ||||
|         /// </summary> | ||||
|         /// <param name="profile">The profile to add</param> | ||||
|         /// <returns>A dataresponse enum indicating success</returns> | ||||
|         public DataResponse AddProfile(SimProfileData profile) | ||||
|         { | ||||
|             if (database.insertRow(profile)) | ||||
|             { | ||||
|                 return DataResponse.RESPONSE_OK; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return DataResponse.RESPONSE_ERROR; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret. | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">The UUID of the challenger</param> | ||||
|         /// <param name="handle">The attempted regionHandle of the challenger</param> | ||||
|         /// <param name="authkey">The secret</param> | ||||
|         /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns> | ||||
|         public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey) | ||||
|         { | ||||
|             bool throwHissyFit = false; // Should be true by 1.0 | ||||
| 
 | ||||
|             if (throwHissyFit) | ||||
|                 throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential."); | ||||
| 
 | ||||
|             SimProfileData data = GetProfileByLLUUID(uuid); | ||||
| 
 | ||||
|             return (handle == data.regionHandle && authkey == data.regionSecret); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region | ||||
|         /// </summary> | ||||
|         /// <remarks>This requires a security audit.</remarks> | ||||
|         /// <param name="uuid"></param> | ||||
|         /// <param name="handle"></param> | ||||
|         /// <param name="authhash"></param> | ||||
|         /// <param name="challenge"></param> | ||||
|         /// <returns></returns> | ||||
|         public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge) | ||||
|         { | ||||
|             SHA512Managed HashProvider = new SHA512Managed(); | ||||
|             ASCIIEncoding TextProvider = new ASCIIEncoding(); | ||||
| 
 | ||||
|             byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge); | ||||
|             byte[] hash = HashProvider.ComputeHash(stream); | ||||
|             return false; | ||||
|         } | ||||
|         public ReservationData GetReservationAtPoint(uint x, uint y) | ||||
|         { | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
|      | ||||
| } | ||||
|  | @ -1,211 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using System.Data; | ||||
| using System.Data.SqlClient; | ||||
| using libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data.MSSQL | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A management class for the MS SQL Storage Engine | ||||
|     /// </summary> | ||||
|     class MSSqlManager | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// The database connection object | ||||
|         /// </summary> | ||||
|         IDbConnection dbcon; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises and creates a new Sql connection and maintains it. | ||||
|         /// </summary> | ||||
|         /// <param name="hostname">The Sql server being connected to</param> | ||||
|         /// <param name="database">The name of the Sql database being used</param> | ||||
|         /// <param name="username">The username logging into the database</param> | ||||
|         /// <param name="password">The password for the user logging in</param> | ||||
|         /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param> | ||||
|         public MSSqlManager(string hostname, string database, string username, string password, string cpooling) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 string connectionString = "Server=" + hostname + ";Database=" + database + ";User ID=" + username + ";Password=" + password + ";Pooling=" + cpooling + ";"; | ||||
|                 dbcon = new SqlConnection(connectionString); | ||||
| 
 | ||||
|                 dbcon.Open(); | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 throw new Exception("Error initialising Sql Database: " + e.ToString()); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Shuts down the database connection | ||||
|         /// </summary> | ||||
|         public void Close() | ||||
|         { | ||||
|             dbcon.Close(); | ||||
|             dbcon = null; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Runs a query with protection against SQL Injection by using parameterised input. | ||||
|         /// </summary> | ||||
|         /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param> | ||||
|         /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param> | ||||
|         /// <returns>A Sql DB Command</returns> | ||||
|         public IDbCommand Query(string sql, Dictionary<string, string> parameters) | ||||
|         { | ||||
|             SqlCommand dbcommand = (SqlCommand)dbcon.CreateCommand(); | ||||
|             dbcommand.CommandText = sql; | ||||
|             foreach (KeyValuePair<string, string> param in parameters) | ||||
|             { | ||||
|                 dbcommand.Parameters.AddWithValue(param.Key, param.Value); | ||||
|             } | ||||
| 
 | ||||
|             return (IDbCommand)dbcommand; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Runs a database reader object and returns a region row | ||||
|         /// </summary> | ||||
|         /// <param name="reader">An active database reader</param> | ||||
|         /// <returns>A region row</returns> | ||||
|         public SimProfileData getRow(IDataReader reader) | ||||
|         { | ||||
|             SimProfileData regionprofile = new SimProfileData(); | ||||
| 
 | ||||
|             if (reader.Read()) | ||||
|             { | ||||
|                 // Region Main | ||||
|                 regionprofile.regionHandle = (ulong)reader["regionHandle"]; | ||||
|                 regionprofile.regionName = (string)reader["regionName"]; | ||||
|                 regionprofile.UUID = new LLUUID((string)reader["uuid"]); | ||||
| 
 | ||||
|                 // Secrets | ||||
|                 regionprofile.regionRecvKey = (string)reader["regionRecvKey"]; | ||||
|                 regionprofile.regionSecret = (string)reader["regionSecret"]; | ||||
|                 regionprofile.regionSendKey = (string)reader["regionSendKey"]; | ||||
| 
 | ||||
|                 // Region Server | ||||
|                 regionprofile.regionDataURI = (string)reader["regionDataURI"]; | ||||
|                 regionprofile.regionOnline = false; // Needs to be pinged before this can be set. | ||||
|                 regionprofile.serverIP = (string)reader["serverIP"]; | ||||
|                 regionprofile.serverPort = (uint)reader["serverPort"]; | ||||
|                 regionprofile.serverURI = (string)reader["serverURI"]; | ||||
| 
 | ||||
|                 // Location | ||||
|                 regionprofile.regionLocX = (uint)((int)reader["locX"]); | ||||
|                 regionprofile.regionLocY = (uint)((int)reader["locY"]); | ||||
|                 regionprofile.regionLocZ = (uint)((int)reader["locZ"]); | ||||
| 
 | ||||
|                 // Neighbours - 0 = No Override | ||||
|                 regionprofile.regionEastOverrideHandle = (ulong)reader["eastOverrideHandle"]; | ||||
|                 regionprofile.regionWestOverrideHandle = (ulong)reader["westOverrideHandle"]; | ||||
|                 regionprofile.regionSouthOverrideHandle = (ulong)reader["southOverrideHandle"]; | ||||
|                 regionprofile.regionNorthOverrideHandle = (ulong)reader["northOverrideHandle"]; | ||||
| 
 | ||||
|                 // Assets | ||||
|                 regionprofile.regionAssetURI = (string)reader["regionAssetURI"]; | ||||
|                 regionprofile.regionAssetRecvKey = (string)reader["regionAssetRecvKey"]; | ||||
|                 regionprofile.regionAssetSendKey = (string)reader["regionAssetSendKey"]; | ||||
| 
 | ||||
|                 // Userserver | ||||
|                 regionprofile.regionUserURI = (string)reader["regionUserURI"]; | ||||
|                 regionprofile.regionUserRecvKey = (string)reader["regionUserRecvKey"]; | ||||
|                 regionprofile.regionUserSendKey = (string)reader["regionUserSendKey"]; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 throw new Exception("No rows to return"); | ||||
|             } | ||||
|             return regionprofile; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Creates a new region in the database | ||||
|         /// </summary> | ||||
|         /// <param name="profile">The region profile to insert</param> | ||||
|         /// <returns>Successful?</returns> | ||||
|         public bool insertRow(SimProfileData profile) | ||||
|         { | ||||
|             string sql = "REPLACE INTO regions VALUES (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, "; | ||||
|             sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, "; | ||||
|             sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey) VALUES "; | ||||
| 
 | ||||
|             sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, "; | ||||
|             sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, "; | ||||
|             sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey);"; | ||||
| 
 | ||||
|             Dictionary<string, string> parameters = new Dictionary<string, string>(); | ||||
| 
 | ||||
|             parameters["regionHandle"] = profile.regionHandle.ToString(); | ||||
|             parameters["regionName"] = profile.regionName; | ||||
|             parameters["uuid"] = profile.UUID.ToString(); | ||||
|             parameters["regionRecvKey"] = profile.regionRecvKey; | ||||
|             parameters["regionSendKey"] = profile.regionSendKey; | ||||
|             parameters["regionDataURI"] = profile.regionDataURI; | ||||
|             parameters["serverIP"] = profile.serverIP; | ||||
|             parameters["serverPort"] = profile.serverPort.ToString(); | ||||
|             parameters["serverURI"] = profile.serverURI; | ||||
|             parameters["locX"] = profile.regionLocX.ToString(); | ||||
|             parameters["locY"] = profile.regionLocY.ToString(); | ||||
|             parameters["locZ"] = profile.regionLocZ.ToString(); | ||||
|             parameters["eastOverrideHandle"] = profile.regionEastOverrideHandle.ToString(); | ||||
|             parameters["westOverrideHandle"] = profile.regionWestOverrideHandle.ToString(); | ||||
|             parameters["northOverrideHandle"] = profile.regionNorthOverrideHandle.ToString(); | ||||
|             parameters["southOverrideHandle"] = profile.regionSouthOverrideHandle.ToString(); | ||||
|             parameters["regionAssetURI"] = profile.regionAssetURI; | ||||
|             parameters["regionAssetRecvKey"] = profile.regionAssetRecvKey; | ||||
|             parameters["regionAssetSendKey"] = profile.regionAssetSendKey; | ||||
|             parameters["regionUserURI"] = profile.regionUserURI; | ||||
|             parameters["regionUserRecvKey"] = profile.regionUserRecvKey; | ||||
|             parameters["regionUserSendKey"] = profile.regionUserSendKey; | ||||
| 
 | ||||
|             bool returnval = false; | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|                 IDbCommand result = Query(sql, parameters); | ||||
| 
 | ||||
|                 if (result.ExecuteNonQuery() == 1) | ||||
|                     returnval = true; | ||||
| 
 | ||||
|                 result.Dispose(); | ||||
|             } | ||||
|             catch (Exception) | ||||
|             { | ||||
|                 return false; | ||||
|             } | ||||
| 
 | ||||
|             return returnval; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,33 +0,0 @@ | |||
| using System.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| [assembly: AssemblyTitle("OpenSim.Framework.Data.MSSQL")] | ||||
| [assembly: AssemblyDescription("")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("")] | ||||
| [assembly: AssemblyProduct("OpenSim.Framework.Data.MSSQL")] | ||||
| [assembly: AssemblyCopyright("Copyright ©  2007")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")] | ||||
| 
 | ||||
| // Setting ComVisible to false makes the types in this assembly not visible  | ||||
| // to COM components.  If you need to access a type in this assembly from  | ||||
| // COM, set the ComVisible attribute to true on that type. | ||||
| [assembly: ComVisible(false)] | ||||
| 
 | ||||
| // The following GUID is for the ID of the typelib if this project is exposed to COM | ||||
| [assembly: Guid("0e1c1ca4-2cf2-4315-b0e7-432c02feea8a")] | ||||
| 
 | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
| // You can specify all the values or you can default the Revision and Build Numbers  | ||||
| // by using the '*' as shown below: | ||||
| [assembly: AssemblyVersion("1.0.0.0")] | ||||
| [assembly: AssemblyFileVersion("1.0.0.0")] | ||||
|  | @ -1,287 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using System.Data; | ||||
| using System.Security.Cryptography; | ||||
| using System.Text; | ||||
| using libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data.MySQL | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A MySQL Interface for the Grid Server | ||||
|     /// </summary> | ||||
|     public class MySQLGridData : IGridData | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// MySQL Database Manager | ||||
|         /// </summary> | ||||
|         private MySQLManager database; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises the Grid Interface | ||||
|         /// </summary> | ||||
|         public void Initialise() | ||||
|         { | ||||
|             IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini"); | ||||
|             string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname"); | ||||
|             string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database"); | ||||
|             string settingUsername = GridDataMySqlFile.ParseFileReadValue("username"); | ||||
|             string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); | ||||
|             string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling"); | ||||
|             string settingPort = GridDataMySqlFile.ParseFileReadValue("port"); | ||||
| 
 | ||||
|             database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Shuts down the grid interface | ||||
|         /// </summary> | ||||
|         public void Close() | ||||
|         { | ||||
|             database.Close(); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the plugin name | ||||
|         /// </summary> | ||||
|         /// <returns>Plugin name</returns> | ||||
|         public string getName() | ||||
|         { | ||||
|             return "MySql OpenGridData"; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the plugin version | ||||
|         /// </summary> | ||||
|         /// <returns>Plugin version</returns> | ||||
|         public string getVersion() | ||||
|         { | ||||
|             return "0.1"; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns all the specified region profiles within coordates -- coordinates are inclusive | ||||
|         /// </summary> | ||||
|         /// <param name="xmin">Minimum X coordinate</param> | ||||
|         /// <param name="ymin">Minimum Y coordinate</param> | ||||
|         /// <param name="xmax">Maximum X coordinate</param> | ||||
|         /// <param name="ymax">Maximum Y coordinate</param> | ||||
|         /// <returns></returns> | ||||
|         public SimProfileData[] GetProfilesInRange(uint xmin, uint ymin, uint xmax, uint ymax) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 lock (database) | ||||
|                 { | ||||
|                     Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|                     param["?xmin"] = xmin.ToString(); | ||||
|                     param["?ymin"] = ymin.ToString(); | ||||
|                     param["?xmax"] = xmax.ToString(); | ||||
|                     param["?ymax"] = ymax.ToString(); | ||||
| 
 | ||||
|                     IDbCommand result = database.Query("SELECT * FROM regions WHERE locX >= ?xmin AND locX <= ?xmax AND locY >= ?ymin AND locY <= ?ymax", param); | ||||
|                     IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|                     SimProfileData row; | ||||
| 
 | ||||
|                     List<SimProfileData> rows = new List<SimProfileData>(); | ||||
| 
 | ||||
|                     while ((row = database.readSimRow(reader)) != null) | ||||
|                     { | ||||
|                         rows.Add(row); | ||||
|                     } | ||||
|                     reader.Close(); | ||||
|                     result.Dispose(); | ||||
| 
 | ||||
|                     return rows.ToArray(); | ||||
| 
 | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 database.Reconnect(); | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a sim profile from it's location | ||||
|         /// </summary> | ||||
|         /// <param name="handle">Region location handle</param> | ||||
|         /// <returns>Sim profile</returns> | ||||
|         public SimProfileData GetProfileByHandle(ulong handle) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 lock (database) | ||||
|                 { | ||||
|                     Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|                     param["?handle"] = handle.ToString(); | ||||
| 
 | ||||
|                     IDbCommand result = database.Query("SELECT * FROM regions WHERE regionHandle = ?handle", param); | ||||
|                     IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|                     SimProfileData row = database.readSimRow(reader); | ||||
|                     reader.Close(); | ||||
|                     result.Dispose(); | ||||
| 
 | ||||
|                     return row; | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 database.Reconnect(); | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a sim profile from it's UUID | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">The region UUID</param> | ||||
|         /// <returns>The sim profile</returns> | ||||
|         public SimProfileData GetProfileByLLUUID(LLUUID uuid) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 lock (database) | ||||
|                 { | ||||
|                     Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|                     param["?uuid"] = uuid.ToStringHyphenated(); | ||||
| 
 | ||||
|                     IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = ?uuid", param); | ||||
|                     IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|                     SimProfileData row = database.readSimRow(reader); | ||||
|                     reader.Close(); | ||||
|                     result.Dispose(); | ||||
| 
 | ||||
|                     return row; | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 database.Reconnect(); | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Adds a new profile to the database | ||||
|         /// </summary> | ||||
|         /// <param name="profile">The profile to add</param> | ||||
|         /// <returns>Successful?</returns> | ||||
|         public DataResponse AddProfile(SimProfileData profile) | ||||
|         { | ||||
|             lock (database) | ||||
|             { | ||||
|                 if (database.insertRegion(profile)) | ||||
|                 { | ||||
|                     return DataResponse.RESPONSE_OK; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     return DataResponse.RESPONSE_ERROR; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret. | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">The UUID of the challenger</param> | ||||
|         /// <param name="handle">The attempted regionHandle of the challenger</param> | ||||
|         /// <param name="authkey">The secret</param> | ||||
|         /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns> | ||||
|         public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey) | ||||
|         { | ||||
|             bool throwHissyFit = false; // Should be true by 1.0 | ||||
| 
 | ||||
|             if (throwHissyFit) | ||||
|                 throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential."); | ||||
| 
 | ||||
|             SimProfileData data = GetProfileByLLUUID(uuid); | ||||
| 
 | ||||
|             return (handle == data.regionHandle && authkey == data.regionSecret); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region | ||||
|         /// </summary> | ||||
|         /// <remarks>This requires a security audit.</remarks> | ||||
|         /// <param name="uuid"></param> | ||||
|         /// <param name="handle"></param> | ||||
|         /// <param name="authhash"></param> | ||||
|         /// <param name="challenge"></param> | ||||
|         /// <returns></returns> | ||||
|         public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge) | ||||
|         { | ||||
|             SHA512Managed HashProvider = new SHA512Managed(); | ||||
|             ASCIIEncoding TextProvider = new ASCIIEncoding(); | ||||
| 
 | ||||
|             byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge); | ||||
|             byte[] hash = HashProvider.ComputeHash(stream); | ||||
| 
 | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         public ReservationData GetReservationAtPoint(uint x, uint y) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 lock (database) | ||||
|                 { | ||||
|                     Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|                     param["?x"] = x.ToString(); | ||||
|                     param["?y"] = y.ToString(); | ||||
|                     IDbCommand result = database.Query("SELECT * FROM reservations WHERE resXMin <= ?x AND resXMax >= ?x AND resYMin <= ?y AND resYMax >= ?y", param); | ||||
|                     IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|                     ReservationData row = database.readReservationRow(reader); | ||||
|                     reader.Close(); | ||||
|                     result.Dispose(); | ||||
| 
 | ||||
|                     return row; | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 database.Reconnect(); | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
|  | @ -1,309 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using System.Data; | ||||
| using libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data.MySQL | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A MySQL interface for the inventory server | ||||
|     /// </summary> | ||||
|     class MySQLInventoryData : IInventoryData | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// The database manager | ||||
|         /// </summary> | ||||
|         public MySQLManager database; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Loads and initialises this database plugin | ||||
|         /// </summary> | ||||
|         public void Initialise() | ||||
|         { | ||||
|             IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini"); | ||||
|             string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname"); | ||||
|             string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database"); | ||||
|             string settingUsername = GridDataMySqlFile.ParseFileReadValue("username"); | ||||
|             string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); | ||||
|             string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling"); | ||||
|             string settingPort = GridDataMySqlFile.ParseFileReadValue("port"); | ||||
| 
 | ||||
|             database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort); | ||||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
|         /// The name of this DB provider | ||||
|         /// </summary> | ||||
|         /// <returns>Name of DB provider</returns> | ||||
|         public string getName() | ||||
|         { | ||||
|             return "MySQL Inventory Data Interface"; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Closes this DB provider | ||||
|         /// </summary> | ||||
|         public void Close() | ||||
|         { | ||||
|             // Do nothing. | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the version of this DB provider | ||||
|         /// </summary> | ||||
|         /// <returns>A string containing the DB provider</returns> | ||||
|         public string getVersion() | ||||
|         { | ||||
|             return "0.1"; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a list of items in a specified folder | ||||
|         /// </summary> | ||||
|         /// <param name="folderID">The folder to search</param> | ||||
|         /// <returns>A list containing inventory items</returns> | ||||
|         public List<InventoryItemBase> getInventoryInFolder(LLUUID folderID) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 lock (database) | ||||
|                 { | ||||
|                     Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|                     param["?uuid"] = folderID.ToStringHyphenated(); | ||||
| 
 | ||||
|                     IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE parentFolderID = ?uuid", param); | ||||
|                     IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|                     List<InventoryItemBase> items = database.readInventoryItems(reader); | ||||
| 
 | ||||
|                     reader.Close(); | ||||
|                     result.Dispose(); | ||||
| 
 | ||||
|                     return items; | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 database.Reconnect(); | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a list of the root folders within a users inventory | ||||
|         /// </summary> | ||||
|         /// <param name="user">The user whos inventory is to be searched</param> | ||||
|         /// <returns>A list of folder objects</returns> | ||||
|         public List<InventoryFolderBase> getUserRootFolders(LLUUID user) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 lock (database) | ||||
|                 { | ||||
|                     Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|                     param["?uuid"] = user.ToStringHyphenated(); | ||||
|                     param["?zero"] = LLUUID.Zero.ToStringHyphenated(); | ||||
| 
 | ||||
|                     IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?zero AND agentID = ?uuid", param); | ||||
|                     IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|                     List<InventoryFolderBase> items = database.readInventoryFolders(reader); | ||||
| 
 | ||||
|                     reader.Close(); | ||||
|                     result.Dispose(); | ||||
| 
 | ||||
|                     return items; | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 database.Reconnect(); | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a list of folders in a users inventory contained within the specified folder | ||||
|         /// </summary> | ||||
|         /// <param name="parentID">The folder to search</param> | ||||
|         /// <returns>A list of inventory folders</returns> | ||||
|         public List<InventoryFolderBase> getInventoryFolders(LLUUID parentID) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 lock (database) | ||||
|                 { | ||||
|                     Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|                     param["?uuid"] = parentID.ToStringHyphenated(); | ||||
| 
 | ||||
|                     IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?uuid", param); | ||||
|                     IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|                     List<InventoryFolderBase> items = database.readInventoryFolders(reader); | ||||
| 
 | ||||
|                     reader.Close(); | ||||
|                     result.Dispose(); | ||||
| 
 | ||||
|                     return items; | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 database.Reconnect(); | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a specified inventory item | ||||
|         /// </summary> | ||||
|         /// <param name="item">The item to return</param> | ||||
|         /// <returns>An inventory item</returns> | ||||
|         public InventoryItemBase getInventoryItem(LLUUID item) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 lock (database) | ||||
|                 { | ||||
|                     Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|                     param["?uuid"] = item.ToStringHyphenated(); | ||||
| 
 | ||||
|                     IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE inventoryID = ?uuid", param); | ||||
|                     IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|                     List<InventoryItemBase> items = database.readInventoryItems(reader); | ||||
| 
 | ||||
|                     reader.Close(); | ||||
|                     result.Dispose(); | ||||
| 
 | ||||
|                     if (items.Count > 0) | ||||
|                     { | ||||
|                         return items[0]; | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         return null; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 database.Reconnect(); | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a specified inventory folder | ||||
|         /// </summary> | ||||
|         /// <param name="folder">The folder to return</param> | ||||
|         /// <returns>A folder class</returns> | ||||
|         public InventoryFolderBase getInventoryFolder(LLUUID folder) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 lock (database) | ||||
|                 { | ||||
|                     Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|                     param["?uuid"] = folder.ToStringHyphenated(); | ||||
| 
 | ||||
|                     IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE folderID = ?uuid", param); | ||||
|                     IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|                     List<InventoryFolderBase> items = database.readInventoryFolders(reader); | ||||
| 
 | ||||
|                     reader.Close(); | ||||
|                     result.Dispose(); | ||||
| 
 | ||||
|                     if (items.Count > 0) | ||||
|                     { | ||||
|                         return items[0]; | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         return null; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 database.Reconnect(); | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Adds a specified item to the database | ||||
|         /// </summary> | ||||
|         /// <param name="item">The inventory item</param> | ||||
|         public void addInventoryItem(InventoryItemBase item) | ||||
|         { | ||||
|             lock (database) | ||||
|             { | ||||
|                 database.insertItem(item); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Updates the specified inventory item | ||||
|         /// </summary> | ||||
|         /// <param name="item">Inventory item to update</param> | ||||
|         public void updateInventoryItem(InventoryItemBase item) | ||||
|         { | ||||
|             addInventoryItem(item); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Creates a new inventory folder | ||||
|         /// </summary> | ||||
|         /// <param name="folder">Folder to create</param> | ||||
|         public void addInventoryFolder(InventoryFolderBase folder) | ||||
|         { | ||||
|             lock (database) | ||||
|             { | ||||
|                 database.insertFolder(folder); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Updates an inventory folder | ||||
|         /// </summary> | ||||
|         /// <param name="folder">Folder to update</param> | ||||
|         public void updateInventoryFolder(InventoryFolderBase folder) | ||||
|         { | ||||
|             addInventoryFolder(folder); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,105 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data.MySQL | ||||
| { | ||||
|     /// <summary> | ||||
|     /// An interface to the log database for MySQL | ||||
|     /// </summary> | ||||
|     class MySQLLogData : ILogData | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// The database manager | ||||
|         /// </summary> | ||||
|         public MySQLManager database; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Artificial constructor called when the plugin is loaded | ||||
|         /// </summary> | ||||
|         public void Initialise() | ||||
|         { | ||||
|             IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini"); | ||||
|             string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname"); | ||||
|             string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database"); | ||||
|             string settingUsername = GridDataMySqlFile.ParseFileReadValue("username"); | ||||
|             string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); | ||||
|             string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling"); | ||||
|             string settingPort = GridDataMySqlFile.ParseFileReadValue("port"); | ||||
| 
 | ||||
|             database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Saves a log item to the database | ||||
|         /// </summary> | ||||
|         /// <param name="serverDaemon">The daemon triggering the event</param> | ||||
|         /// <param name="target">The target of the action (region / agent UUID, etc)</param> | ||||
|         /// <param name="methodCall">The method call where the problem occured</param> | ||||
|         /// <param name="arguments">The arguments passed to the method</param> | ||||
|         /// <param name="priority">How critical is this?</param> | ||||
|         /// <param name="logMessage">The message to log</param> | ||||
|         public void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 database.insertLogRow(serverDaemon, target, methodCall, arguments, priority, logMessage); | ||||
|             } | ||||
|             catch | ||||
|             { | ||||
|                 database.Reconnect(); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the name of this DB provider | ||||
|         /// </summary> | ||||
|         /// <returns>A string containing the DB provider name</returns> | ||||
|         public string getName() | ||||
|         { | ||||
|             return "MySQL Logdata Interface"; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Closes the database provider | ||||
|         /// </summary> | ||||
|         public void Close() | ||||
|         { | ||||
|             // Do nothing. | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the version of this DB provider | ||||
|         /// </summary> | ||||
|         /// <returns>A string containing the provider version</returns> | ||||
|         public string getVersion() | ||||
|         { | ||||
|             return "0.1"; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,602 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using System.Data; | ||||
| using libsecondlife; | ||||
| using MySql.Data.MySqlClient; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data.MySQL | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A MySQL Database manager | ||||
|     /// </summary> | ||||
|     class MySQLManager | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// The database connection object | ||||
|         /// </summary> | ||||
|         IDbConnection dbcon; | ||||
|         /// <summary> | ||||
|         /// Connection string for ADO.net | ||||
|         /// </summary> | ||||
|         string connectionString; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises and creates a new MySQL connection and maintains it. | ||||
|         /// </summary> | ||||
|         /// <param name="hostname">The MySQL server being connected to</param> | ||||
|         /// <param name="database">The name of the MySQL database being used</param> | ||||
|         /// <param name="username">The username logging into the database</param> | ||||
|         /// <param name="password">The password for the user logging in</param> | ||||
|         /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param> | ||||
|         public MySQLManager(string hostname, string database, string username, string password, string cpooling, string port) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 connectionString = "Server=" + hostname + ";Port=" + port + ";Database=" + database + ";User ID=" + username + ";Password=" + password + ";Pooling=" + cpooling + ";"; | ||||
|                 dbcon = new MySqlConnection(connectionString); | ||||
| 
 | ||||
|                 dbcon.Open(); | ||||
| 
 | ||||
|                 Console.WriteLine("MySQL connection established"); | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 throw new Exception("Error initialising MySql Database: " + e.ToString()); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Shuts down the database connection | ||||
|         /// </summary> | ||||
|         public void Close() | ||||
|         { | ||||
|             dbcon.Close(); | ||||
|             dbcon = null; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Reconnects to the database | ||||
|         /// </summary> | ||||
|         public void Reconnect() | ||||
|         { | ||||
|             lock (dbcon) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     // Close the DB connection | ||||
|                     dbcon.Close(); | ||||
|                     // Try reopen it | ||||
|                     dbcon = new MySqlConnection(connectionString); | ||||
|                     dbcon.Open(); | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|                     Console.WriteLine("Unable to reconnect to database " + e.ToString()); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Runs a query with protection against SQL Injection by using parameterised input. | ||||
|         /// </summary> | ||||
|         /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param> | ||||
|         /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param> | ||||
|         /// <returns>A MySQL DB Command</returns> | ||||
|         public IDbCommand Query(string sql, Dictionary<string, string> parameters) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand(); | ||||
|                 dbcommand.CommandText = sql; | ||||
|                 foreach (KeyValuePair<string, string> param in parameters) | ||||
|                 { | ||||
|                     dbcommand.Parameters.Add(param.Key, param.Value); | ||||
|                 } | ||||
| 
 | ||||
|                 return (IDbCommand)dbcommand; | ||||
|             } | ||||
|             catch | ||||
|             { | ||||
|                 lock (dbcon) | ||||
|                 { | ||||
|                     // Close the DB connection | ||||
|                     try | ||||
|                     { | ||||
|                         dbcon.Close(); | ||||
|                     } | ||||
|                     catch { } | ||||
| 
 | ||||
|                     // Try reopen it | ||||
|                     try | ||||
|                     { | ||||
|                         dbcon = new MySqlConnection(connectionString); | ||||
|                         dbcon.Open(); | ||||
|                     } | ||||
|                     catch (Exception e) | ||||
|                     { | ||||
|                         Console.WriteLine("Unable to reconnect to database " + e.ToString()); | ||||
|                     } | ||||
| 
 | ||||
|                     // Run the query again | ||||
|                     try | ||||
|                     { | ||||
|                         MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand(); | ||||
|                         dbcommand.CommandText = sql; | ||||
|                         foreach (KeyValuePair<string, string> param in parameters) | ||||
|                         { | ||||
|                             dbcommand.Parameters.Add(param.Key, param.Value); | ||||
|                         } | ||||
| 
 | ||||
|                         return (IDbCommand)dbcommand; | ||||
|                     } | ||||
|                     catch (Exception e) | ||||
|                     { | ||||
|                         // Return null if it fails. | ||||
|                         Console.WriteLine("Failed during Query generation: " + e.ToString()); | ||||
|                         return null; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Reads a region row from a database reader | ||||
|         /// </summary> | ||||
|         /// <param name="reader">An active database reader</param> | ||||
|         /// <returns>A region profile</returns> | ||||
|         public SimProfileData readSimRow(IDataReader reader) | ||||
|         { | ||||
|             SimProfileData retval = new SimProfileData(); | ||||
| 
 | ||||
|             if (reader.Read()) | ||||
|             { | ||||
|                 // Region Main | ||||
|                 retval.regionHandle = Convert.ToUInt64(reader["regionHandle"].ToString()); | ||||
|                 retval.regionName = (string)reader["regionName"]; | ||||
|                 retval.UUID = new LLUUID((string)reader["uuid"]); | ||||
| 
 | ||||
|                 // Secrets | ||||
|                 retval.regionRecvKey = (string)reader["regionRecvKey"]; | ||||
|                 retval.regionSecret = (string)reader["regionSecret"]; | ||||
|                 retval.regionSendKey = (string)reader["regionSendKey"]; | ||||
| 
 | ||||
|                 // Region Server | ||||
|                 retval.regionDataURI = (string)reader["regionDataURI"]; | ||||
|                 retval.regionOnline = false; // Needs to be pinged before this can be set. | ||||
|                 retval.serverIP = (string)reader["serverIP"]; | ||||
|                 retval.serverPort = (uint)reader["serverPort"]; | ||||
|                 retval.serverURI = (string)reader["serverURI"]; | ||||
| 
 | ||||
|                 // Location | ||||
|                 retval.regionLocX = Convert.ToUInt32(reader["locX"].ToString()); | ||||
|                 retval.regionLocY = Convert.ToUInt32(reader["locY"].ToString()); | ||||
|                 retval.regionLocZ = Convert.ToUInt32(reader["locZ"].ToString()); | ||||
| 
 | ||||
|                 // Neighbours - 0 = No Override | ||||
|                 retval.regionEastOverrideHandle = Convert.ToUInt64(reader["eastOverrideHandle"].ToString()); | ||||
|                 retval.regionWestOverrideHandle = Convert.ToUInt64(reader["westOverrideHandle"].ToString()); | ||||
|                 retval.regionSouthOverrideHandle = Convert.ToUInt64(reader["southOverrideHandle"].ToString()); | ||||
|                 retval.regionNorthOverrideHandle = Convert.ToUInt64(reader["northOverrideHandle"].ToString()); | ||||
| 
 | ||||
|                 // Assets | ||||
|                 retval.regionAssetURI = (string)reader["regionAssetURI"]; | ||||
|                 retval.regionAssetRecvKey = (string)reader["regionAssetRecvKey"]; | ||||
|                 retval.regionAssetSendKey = (string)reader["regionAssetSendKey"]; | ||||
| 
 | ||||
|                 // Userserver | ||||
|                 retval.regionUserURI = (string)reader["regionUserURI"]; | ||||
|                 retval.regionUserRecvKey = (string)reader["regionUserRecvKey"]; | ||||
|                 retval.regionUserSendKey = (string)reader["regionUserSendKey"]; | ||||
| 
 | ||||
|                 // World Map Addition | ||||
|                 string tempRegionMap = reader["regionMapTexture"].ToString(); | ||||
|                 if (tempRegionMap != "") | ||||
|                 { | ||||
|                     retval.regionMapTextureID = new LLUUID(tempRegionMap); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     retval.regionMapTextureID = new LLUUID(); | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return null; | ||||
|             } | ||||
|             return retval; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Reads a reservation row from a database reader | ||||
|         /// </summary> | ||||
|         /// <param name="reader">An active database reader</param> | ||||
|         /// <returns>A reservation data object</returns> | ||||
|         public ReservationData readReservationRow(IDataReader reader) | ||||
|         { | ||||
|             ReservationData retval = new ReservationData(); | ||||
|             if (reader.Read()) | ||||
|             { | ||||
|                 retval.gridRecvKey = (string)reader["gridRecvKey"]; | ||||
|                 retval.gridSendKey = (string)reader["gridSendKey"]; | ||||
|                 retval.reservationCompany = (string)reader["resCompany"]; | ||||
|                 retval.reservationMaxX = Convert.ToInt32(reader["resXMax"].ToString()); | ||||
|                 retval.reservationMaxY = Convert.ToInt32(reader["resYMax"].ToString()); | ||||
|                 retval.reservationMinX = Convert.ToInt32(reader["resXMin"].ToString()); | ||||
|                 retval.reservationMinY = Convert.ToInt32(reader["resYMin"].ToString()); | ||||
|                 retval.reservationName = (string)reader["resName"]; | ||||
|                 retval.status = Convert.ToInt32(reader["status"].ToString()) == 1; | ||||
|                 retval.userUUID = new LLUUID((string)reader["userUUID"]); | ||||
| 
 | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return null; | ||||
|             } | ||||
|             return retval; | ||||
|         } | ||||
|         /// <summary> | ||||
|         /// Reads an agent row from a database reader | ||||
|         /// </summary> | ||||
|         /// <param name="reader">An active database reader</param> | ||||
|         /// <returns>A user session agent</returns> | ||||
|         public UserAgentData readAgentRow(IDataReader reader) | ||||
|         { | ||||
|             UserAgentData retval = new UserAgentData(); | ||||
| 
 | ||||
|             if (reader.Read()) | ||||
|             { | ||||
|                 // Agent IDs | ||||
|                 retval.UUID = new LLUUID((string)reader["UUID"]); | ||||
|                 retval.sessionID = new LLUUID((string)reader["sessionID"]); | ||||
|                 retval.secureSessionID = new LLUUID((string)reader["secureSessionID"]); | ||||
| 
 | ||||
|                 // Agent Who? | ||||
|                 retval.agentIP = (string)reader["agentIP"]; | ||||
|                 retval.agentPort = Convert.ToUInt32(reader["agentPort"].ToString()); | ||||
|                 retval.agentOnline = Convert.ToBoolean(reader["agentOnline"].ToString()); | ||||
| 
 | ||||
|                 // Login/Logout times (UNIX Epoch) | ||||
|                 retval.loginTime = Convert.ToInt32(reader["loginTime"].ToString()); | ||||
|                 retval.logoutTime = Convert.ToInt32(reader["logoutTime"].ToString()); | ||||
| 
 | ||||
|                 // Current position | ||||
|                 retval.currentRegion = (string)reader["currentRegion"]; | ||||
|                 retval.currentHandle = Convert.ToUInt64(reader["currentHandle"].ToString()); | ||||
|                 LLVector3.TryParse((string)reader["currentPos"], out retval.currentPos); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return null; | ||||
|             } | ||||
|             return retval; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Reads a user profile from an active data reader | ||||
|         /// </summary> | ||||
|         /// <param name="reader">An active database reader</param> | ||||
|         /// <returns>A user profile</returns> | ||||
|         public UserProfileData readUserRow(IDataReader reader) | ||||
|         { | ||||
|             UserProfileData retval = new UserProfileData(); | ||||
| 
 | ||||
|             if (reader.Read()) | ||||
|             { | ||||
|                 retval.UUID = new LLUUID((string)reader["UUID"]); | ||||
|                 retval.username = (string)reader["username"]; | ||||
|                 retval.surname = (string)reader["lastname"]; | ||||
| 
 | ||||
|                 retval.passwordHash = (string)reader["passwordHash"]; | ||||
|                 retval.passwordSalt = (string)reader["passwordSalt"]; | ||||
| 
 | ||||
|                 retval.homeRegion = Convert.ToUInt64(reader["homeRegion"].ToString()); | ||||
|                 retval.homeLocation = new LLVector3( | ||||
|                     Convert.ToSingle(reader["homeLocationX"].ToString()), | ||||
|                     Convert.ToSingle(reader["homeLocationY"].ToString()), | ||||
|                     Convert.ToSingle(reader["homeLocationZ"].ToString())); | ||||
|                 retval.homeLookAt = new LLVector3( | ||||
|                     Convert.ToSingle(reader["homeLookAtX"].ToString()), | ||||
|                     Convert.ToSingle(reader["homeLookAtY"].ToString()), | ||||
|                     Convert.ToSingle(reader["homeLookAtZ"].ToString())); | ||||
| 
 | ||||
|                 retval.created = Convert.ToInt32(reader["created"].ToString()); | ||||
|                 retval.lastLogin = Convert.ToInt32(reader["lastLogin"].ToString()); | ||||
| 
 | ||||
|                 retval.userInventoryURI = (string)reader["userInventoryURI"]; | ||||
|                 retval.userAssetURI = (string)reader["userAssetURI"]; | ||||
| 
 | ||||
|                 retval.profileCanDoMask = Convert.ToUInt32(reader["profileCanDoMask"].ToString()); | ||||
|                 retval.profileWantDoMask = Convert.ToUInt32(reader["profileWantDoMask"].ToString()); | ||||
| 
 | ||||
|                 retval.profileAboutText = (string)reader["profileAboutText"]; | ||||
|                 retval.profileFirstText = (string)reader["profileFirstText"]; | ||||
| 
 | ||||
|                 retval.profileImage = new LLUUID((string)reader["profileImage"]); | ||||
|                 retval.profileFirstImage = new LLUUID((string)reader["profileFirstImage"]); | ||||
| 
 | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return null; | ||||
|             } | ||||
|             return retval; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Reads a list of inventory folders returned by a query. | ||||
|         /// </summary> | ||||
|         /// <param name="reader">A MySQL Data Reader</param> | ||||
|         /// <returns>A List containing inventory folders</returns> | ||||
|         public List<InventoryFolderBase> readInventoryFolders(IDataReader reader) | ||||
|         { | ||||
|             List<InventoryFolderBase> rows = new List<InventoryFolderBase>(); | ||||
| 
 | ||||
|             while(reader.Read()) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     InventoryFolderBase folder = new InventoryFolderBase(); | ||||
| 
 | ||||
|                     folder.agentID = new LLUUID((string)reader["agentID"]); | ||||
|                     folder.parentID = new LLUUID((string)reader["parentFolderID"]); | ||||
|                     folder.folderID = new LLUUID((string)reader["folderID"]); | ||||
|                     folder.name = (string)reader["folderName"]; | ||||
| 
 | ||||
|                     rows.Add(folder); | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|                     Console.WriteLine(e.ToString()); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return rows; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Reads a collection of items from an SQL result | ||||
|         /// </summary> | ||||
|         /// <param name="reader">The SQL Result</param> | ||||
|         /// <returns>A List containing Inventory Items</returns> | ||||
|         public List<InventoryItemBase> readInventoryItems(IDataReader reader) | ||||
|         { | ||||
|             List<InventoryItemBase> rows = new List<InventoryItemBase>(); | ||||
| 
 | ||||
|             while (reader.Read()) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     InventoryItemBase item = new InventoryItemBase(); | ||||
| 
 | ||||
|                     item.assetID = new LLUUID((string)reader["assetID"]); | ||||
|                     item.avatarID = new LLUUID((string)reader["avatarID"]); | ||||
|                     item.inventoryCurrentPermissions = Convert.ToUInt32(reader["inventoryCurrentPermissions"].ToString()); | ||||
|                     item.inventoryDescription = (string)reader["inventoryDescription"]; | ||||
|                     item.inventoryID = new LLUUID((string)reader["inventoryID"]); | ||||
|                     item.inventoryName = (string)reader["inventoryName"]; | ||||
|                     item.inventoryNextPermissions = Convert.ToUInt32(reader["inventoryNextPermissions"].ToString()); | ||||
|                     item.parentFolderID = new LLUUID((string)reader["parentFolderID"]); | ||||
|                     item.type = Convert.ToInt32(reader["type"].ToString()); | ||||
| 
 | ||||
|                     rows.Add(item); | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|                     Console.WriteLine(e.ToString()); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return rows; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Inserts a new row into the log database | ||||
|         /// </summary> | ||||
|         /// <param name="serverDaemon">The daemon which triggered this event</param> | ||||
|         /// <param name="target">Who were we operating on when this occured (region UUID, user UUID, etc)</param> | ||||
|         /// <param name="methodCall">The method call where the problem occured</param> | ||||
|         /// <param name="arguments">The arguments passed to the method</param> | ||||
|         /// <param name="priority">How critical is this?</param> | ||||
|         /// <param name="logMessage">Extra message info</param> | ||||
|         /// <returns>Saved successfully?</returns> | ||||
|         public bool insertLogRow(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage) | ||||
|         { | ||||
|             string sql = "INSERT INTO logs (`target`, `server`, `method`, `arguments`, `priority`, `message`) VALUES "; | ||||
|             sql += "(?target, ?server, ?method, ?arguments, ?priority, ?message)"; | ||||
| 
 | ||||
|             Dictionary<string, string> parameters = new Dictionary<string, string>(); | ||||
|             parameters["?server"] = serverDaemon; | ||||
|             parameters["?target"] = target; | ||||
|             parameters["?method"] = methodCall; | ||||
|             parameters["?arguments"] = arguments; | ||||
|             parameters["?priority"] = priority.ToString(); | ||||
|             parameters["?message"] = logMessage; | ||||
| 
 | ||||
|             bool returnval = false; | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|                 IDbCommand result = Query(sql, parameters); | ||||
| 
 | ||||
|                 if (result.ExecuteNonQuery() == 1) | ||||
|                     returnval = true; | ||||
| 
 | ||||
|                 result.Dispose(); | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return false; | ||||
|             } | ||||
| 
 | ||||
|             return returnval; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Inserts a new item into the database | ||||
|         /// </summary> | ||||
|         /// <param name="item">The item</param> | ||||
|         /// <returns>Success?</returns> | ||||
|         public bool insertItem(InventoryItemBase item) | ||||
|         { | ||||
|             string sql = "REPLACE INTO inventoryitems (inventoryID, assetID, type, parentFolderID, avatarID, inventoryName, inventoryDescription, inventoryNextPermissions, inventoryCurrentPermissions) VALUES "; | ||||
|             sql += "(?inventoryID, ?assetID, ?type, ?parentFolderID, ?avatarID, ?inventoryName, ?inventoryDescription, ?inventoryNextPermissions, ?inventoryCurrentPermissions)"; | ||||
| 
 | ||||
|             Dictionary<string, string> parameters = new Dictionary<string, string>(); | ||||
|             parameters["?inventoryID"] = item.inventoryID.ToStringHyphenated(); | ||||
|             parameters["?assetID"] = item.assetID.ToStringHyphenated(); | ||||
|             parameters["?type"] = item.type.ToString(); | ||||
|             parameters["?parentFolderID"] = item.parentFolderID.ToStringHyphenated(); | ||||
|             parameters["?avatarID"] = item.avatarID.ToStringHyphenated(); | ||||
|             parameters["?inventoryName"] = item.inventoryName; | ||||
|             parameters["?inventoryDescription"] = item.inventoryDescription; | ||||
|             parameters["?inventoryNextPermissions"] = item.inventoryNextPermissions.ToString(); | ||||
|             parameters["?inventoryCurrentPermissions"] = item.inventoryCurrentPermissions.ToString(); | ||||
| 
 | ||||
|             bool returnval = false; | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|                 IDbCommand result = Query(sql, parameters); | ||||
| 
 | ||||
|                 if (result.ExecuteNonQuery() == 1) | ||||
|                     returnval = true; | ||||
| 
 | ||||
|                 result.Dispose(); | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return false; | ||||
|             } | ||||
| 
 | ||||
|             return returnval; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Inserts a new folder into the database | ||||
|         /// </summary> | ||||
|         /// <param name="folder">The folder</param> | ||||
|         /// <returns>Success?</returns> | ||||
|         public bool insertFolder(InventoryFolderBase folder) | ||||
|         { | ||||
|             string sql = "REPLACE INTO inventoryfolders (folderID, agentID, parentFolderID, folderName) VALUES "; | ||||
|             sql += "(?folderID, ?agentID, ?parentFolderID, ?folderName)"; | ||||
| 
 | ||||
|             Dictionary<string, string> parameters = new Dictionary<string, string>(); | ||||
|             parameters["?folderID"] = folder.folderID.ToStringHyphenated(); | ||||
|             parameters["?agentID"] = folder.agentID.ToStringHyphenated(); | ||||
|             parameters["?parentFolderID"] = folder.parentID.ToStringHyphenated(); | ||||
|             parameters["?folderName"] = folder.name; | ||||
| 
 | ||||
|             bool returnval = false; | ||||
|             try | ||||
|             { | ||||
|                 IDbCommand result = Query(sql, parameters); | ||||
| 
 | ||||
|                 if (result.ExecuteNonQuery() == 1) | ||||
|                     returnval = true; | ||||
| 
 | ||||
|                 result.Dispose(); | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return false; | ||||
|             } | ||||
|             return returnval; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Inserts a new region into the database | ||||
|         /// </summary> | ||||
|         /// <param name="profile">The region to insert</param> | ||||
|         /// <returns>Success?</returns> | ||||
|         public bool insertRegion(SimProfileData regiondata) | ||||
|         { | ||||
|             string sql = "REPLACE INTO regions (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, "; | ||||
|             sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, "; | ||||
|             sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey, regionMapTexture) VALUES "; | ||||
| 
 | ||||
|             sql += "(?regionHandle, ?regionName, ?uuid, ?regionRecvKey, ?regionSecret, ?regionSendKey, ?regionDataURI, "; | ||||
|             sql += "?serverIP, ?serverPort, ?serverURI, ?locX, ?locY, ?locZ, ?eastOverrideHandle, ?westOverrideHandle, ?southOverrideHandle, ?northOverrideHandle, ?regionAssetURI, ?regionAssetRecvKey, "; | ||||
|             sql += "?regionAssetSendKey, ?regionUserURI, ?regionUserRecvKey, ?regionUserSendKey, ?regionMapTexture);"; | ||||
| 
 | ||||
|             Dictionary<string, string> parameters = new Dictionary<string, string>(); | ||||
| 
 | ||||
|             parameters["?regionHandle"] = regiondata.regionHandle.ToString(); | ||||
|             parameters["?regionName"] = regiondata.regionName.ToString(); | ||||
|             parameters["?uuid"] = regiondata.UUID.ToStringHyphenated(); | ||||
|             parameters["?regionRecvKey"] = regiondata.regionRecvKey.ToString(); | ||||
|             parameters["?regionSecret"] = regiondata.regionSecret.ToString(); | ||||
|             parameters["?regionSendKey"] = regiondata.regionSendKey.ToString(); | ||||
|             parameters["?regionDataURI"] = regiondata.regionDataURI.ToString(); | ||||
|             parameters["?serverIP"] = regiondata.serverIP.ToString(); | ||||
|             parameters["?serverPort"] = regiondata.serverPort.ToString(); | ||||
|             parameters["?serverURI"] = regiondata.serverURI.ToString(); | ||||
|             parameters["?locX"] = regiondata.regionLocX.ToString(); | ||||
|             parameters["?locY"] = regiondata.regionLocY.ToString(); | ||||
|             parameters["?locZ"] = regiondata.regionLocZ.ToString(); | ||||
|             parameters["?eastOverrideHandle"] = regiondata.regionEastOverrideHandle.ToString(); | ||||
|             parameters["?westOverrideHandle"] = regiondata.regionWestOverrideHandle.ToString(); | ||||
|             parameters["?northOverrideHandle"] = regiondata.regionNorthOverrideHandle.ToString(); | ||||
|             parameters["?southOverrideHandle"] = regiondata.regionSouthOverrideHandle.ToString(); | ||||
|             parameters["?regionAssetURI"] = regiondata.regionAssetURI.ToString(); | ||||
|             parameters["?regionAssetRecvKey"] = regiondata.regionAssetRecvKey.ToString(); | ||||
|             parameters["?regionAssetSendKey"] = regiondata.regionAssetSendKey.ToString(); | ||||
|             parameters["?regionUserURI"] = regiondata.regionUserURI.ToString(); | ||||
|             parameters["?regionUserRecvKey"] = regiondata.regionUserRecvKey.ToString(); | ||||
|             parameters["?regionUserSendKey"] = regiondata.regionUserSendKey.ToString(); | ||||
|             parameters["?regionMapTexture"] = regiondata.regionMapTextureID.ToStringHyphenated(); | ||||
| 
 | ||||
|             bool returnval = false; | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|                  | ||||
|                 IDbCommand result = Query(sql, parameters); | ||||
| 
 | ||||
|                 //Console.WriteLine(result.CommandText); | ||||
| 
 | ||||
|                 if (result.ExecuteNonQuery() == 1) | ||||
|                     returnval = true; | ||||
| 
 | ||||
|                 result.Dispose(); | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return false; | ||||
|             } | ||||
| 
 | ||||
|             return returnval; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,256 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using System.Data; | ||||
| using libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data.MySQL | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A database interface class to a user profile storage system | ||||
|     /// </summary> | ||||
|     class MySQLUserData : IUserData | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Database manager for MySQL | ||||
|         /// </summary> | ||||
|         public MySQLManager database; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Loads and initialises the MySQL storage plugin | ||||
|         /// </summary> | ||||
|         public void Initialise() | ||||
|         { | ||||
|             // Load from an INI file connection details | ||||
|             // TODO: move this to XML? | ||||
|             IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini"); | ||||
|             string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname"); | ||||
|             string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database"); | ||||
|             string settingUsername = GridDataMySqlFile.ParseFileReadValue("username"); | ||||
|             string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); | ||||
|             string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling"); | ||||
|             string settingPort = GridDataMySqlFile.ParseFileReadValue("port"); | ||||
| 
 | ||||
|             database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Searches the database for a specified user profile | ||||
|         /// </summary> | ||||
|         /// <param name="name">The account name of the user</param> | ||||
|         /// <returns>A user profile</returns> | ||||
|         public UserProfileData getUserByName(string name) | ||||
|         { | ||||
|             return getUserByName(name.Split(' ')[0], name.Split(' ')[1]); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Searches the database for a specified user profile by name components | ||||
|         /// </summary> | ||||
|         /// <param name="user">The first part of the account name</param> | ||||
|         /// <param name="last">The second part of the account name</param> | ||||
|         /// <returns>A user profile</returns> | ||||
|         public UserProfileData getUserByName(string user, string last) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 lock (database) | ||||
|                 { | ||||
|                     Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|                     param["?first"] = user; | ||||
|                     param["?second"] = last; | ||||
| 
 | ||||
|                     IDbCommand result = database.Query("SELECT * FROM users WHERE username = ?first AND lastname = ?second", param); | ||||
|                     IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|                     UserProfileData row = database.readUserRow(reader); | ||||
|                      | ||||
|                     reader.Close(); | ||||
|                     result.Dispose(); | ||||
| 
 | ||||
|                     return row; | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 database.Reconnect(); | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Searches the database for a specified user profile by UUID | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">The account ID</param> | ||||
|         /// <returns>The users profile</returns> | ||||
|         public UserProfileData getUserByUUID(LLUUID uuid) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 lock (database) | ||||
|                 { | ||||
|                     Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|                     param["?uuid"] = uuid.ToStringHyphenated(); | ||||
| 
 | ||||
|                     IDbCommand result = database.Query("SELECT * FROM users WHERE UUID = ?uuid", param); | ||||
|                     IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|                     UserProfileData row = database.readUserRow(reader); | ||||
| 
 | ||||
|                     reader.Close(); | ||||
|                     result.Dispose(); | ||||
| 
 | ||||
|                     return row; | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 database.Reconnect(); | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a user session searching by name | ||||
|         /// </summary> | ||||
|         /// <param name="name">The account name</param> | ||||
|         /// <returns>The users session</returns> | ||||
|         public UserAgentData getAgentByName(string name) | ||||
|         { | ||||
|             return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a user session by account name | ||||
|         /// </summary> | ||||
|         /// <param name="user">First part of the users account name</param> | ||||
|         /// <param name="last">Second part of the users account name</param> | ||||
|         /// <returns>The users session</returns> | ||||
|         public UserAgentData getAgentByName(string user, string last) | ||||
|         { | ||||
|             UserProfileData profile = getUserByName(user, last); | ||||
|             return getAgentByUUID(profile.UUID); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns an agent session by account UUID | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">The accounts UUID</param> | ||||
|         /// <returns>The users session</returns> | ||||
|         public UserAgentData getAgentByUUID(LLUUID uuid) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 lock (database) | ||||
|                 { | ||||
|                     Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|                     param["?uuid"] = uuid.ToStringHyphenated(); | ||||
| 
 | ||||
|                     IDbCommand result = database.Query("SELECT * FROM agents WHERE UUID = ?uuid", param); | ||||
|                     IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|                     UserAgentData row = database.readAgentRow(reader); | ||||
| 
 | ||||
|                     reader.Close(); | ||||
|                     result.Dispose(); | ||||
| 
 | ||||
|                     return row; | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 database.Reconnect(); | ||||
|                 Console.WriteLine(e.ToString()); | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Creates a new users profile | ||||
|         /// </summary> | ||||
|         /// <param name="user">The user profile to create</param> | ||||
|         public void addNewUserProfile(UserProfileData user) | ||||
|         { | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Creates a new agent | ||||
|         /// </summary> | ||||
|         /// <param name="agent">The agent to create</param> | ||||
|         public void addNewUserAgent(UserAgentData agent) | ||||
|         { | ||||
|             // Do nothing. | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Performs a money transfer request between two accounts | ||||
|         /// </summary> | ||||
|         /// <param name="from">The senders account ID</param> | ||||
|         /// <param name="to">The recievers account ID</param> | ||||
|         /// <param name="amount">The amount to transfer</param> | ||||
|         /// <returns>Success?</returns> | ||||
|         public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount) | ||||
|         { | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Performs an inventory transfer request between two accounts | ||||
|         /// </summary> | ||||
|         /// <remarks>TODO: Move to inventory server</remarks> | ||||
|         /// <param name="from">The senders account ID</param> | ||||
|         /// <param name="to">The recievers account ID</param> | ||||
|         /// <param name="item">The item to transfer</param> | ||||
|         /// <returns>Success?</returns> | ||||
|         public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item) | ||||
|         { | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Database provider name | ||||
|         /// </summary> | ||||
|         /// <returns>Provider name</returns> | ||||
|         public string getName() | ||||
|         { | ||||
|             return "MySQL Userdata Interface"; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Database provider version | ||||
|         /// </summary> | ||||
|         /// <returns>provider version</returns> | ||||
|         public string getVersion() | ||||
|         { | ||||
|             return "0.1"; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,33 +0,0 @@ | |||
| using System.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| [assembly: AssemblyTitle("OpenSim.Framework.Data.MySQL")] | ||||
| [assembly: AssemblyDescription("")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("")] | ||||
| [assembly: AssemblyProduct("OpenSim.Framework.Data.MySQL")] | ||||
| [assembly: AssemblyCopyright("Copyright ©  2007")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")] | ||||
| 
 | ||||
| // Setting ComVisible to false makes the types in this assembly not visible  | ||||
| // to COM components.  If you need to access a type in this assembly from  | ||||
| // COM, set the ComVisible attribute to true on that type. | ||||
| [assembly: ComVisible(false)] | ||||
| 
 | ||||
| // The following GUID is for the ID of the typelib if this project is exposed to COM | ||||
| [assembly: Guid("e49826b2-dcef-41be-a5bd-596733fa3304")] | ||||
| 
 | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
| // You can specify all the values or you can default the Revision and Build Numbers  | ||||
| // by using the '*' as shown below: | ||||
| [assembly: AssemblyVersion("1.0.0.0")] | ||||
| [assembly: AssemblyFileVersion("1.0.0.0")] | ||||
|  | @ -1,33 +0,0 @@ | |||
| using System.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| [assembly: AssemblyTitle("OpenSim.Framework.Data.SQLite")] | ||||
| [assembly: AssemblyDescription("")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("")] | ||||
| [assembly: AssemblyProduct("OpenSim.Framework.Data.SQLite")] | ||||
| [assembly: AssemblyCopyright("Copyright ©  2007")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")] | ||||
| 
 | ||||
| // Setting ComVisible to false makes the types in this assembly not visible  | ||||
| // to COM components.  If you need to access a type in this assembly from  | ||||
| // COM, set the ComVisible attribute to true on that type. | ||||
| [assembly: ComVisible(false)] | ||||
| 
 | ||||
| // The following GUID is for the ID of the typelib if this project is exposed to COM | ||||
| [assembly: Guid("6113d5ce-4547-49f4-9236-0dcc503457b1")] | ||||
| 
 | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
| // You can specify all the values or you can default the Revision and Build Numbers  | ||||
| // by using the '*' as shown below: | ||||
| [assembly: AssemblyVersion("1.0.0.0")] | ||||
| [assembly: AssemblyFileVersion("1.0.0.0")] | ||||
|  | @ -1,197 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using System.Data; | ||||
| using System.Security.Cryptography; | ||||
| using System.Text; | ||||
| using libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data.SQLite | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A Grid Interface to the SQLite database | ||||
|     /// </summary> | ||||
|     public class SQLiteGridData : IGridData | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// A database manager | ||||
|         /// </summary> | ||||
|         private SQLiteManager database; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises the Grid Interface | ||||
|         /// </summary> | ||||
|         public void Initialise() | ||||
|         { | ||||
|             database = new SQLiteManager("localhost", "db", "user", "password", "false"); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Shuts down the grid interface | ||||
|         /// </summary> | ||||
|         public void Close() | ||||
|         { | ||||
|             database.Close(); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the name of this grid interface | ||||
|         /// </summary> | ||||
|         /// <returns>A string containing the grid interface</returns> | ||||
|         public string getName() | ||||
|         { | ||||
|             return "SQLite OpenGridData"; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the version of this grid interface | ||||
|         /// </summary> | ||||
|         /// <returns>A string containing the version</returns> | ||||
|         public string getVersion() | ||||
|         { | ||||
|             return "0.1"; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a list of regions within the specified ranges | ||||
|         /// </summary> | ||||
|         /// <param name="a">minimum X coordinate</param> | ||||
|         /// <param name="b">minimum Y coordinate</param> | ||||
|         /// <param name="c">maximum X coordinate</param> | ||||
|         /// <param name="d">maximum Y coordinate</param> | ||||
|         /// <returns>An array of region profiles</returns> | ||||
|         public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d) | ||||
|         { | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a sim profile from it's location | ||||
|         /// </summary> | ||||
|         /// <param name="handle">Region location handle</param> | ||||
|         /// <returns>Sim profile</returns> | ||||
|         public SimProfileData GetProfileByHandle(ulong handle) | ||||
|         { | ||||
|             Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|             param["handle"] = handle.ToString(); | ||||
| 
 | ||||
|             IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param); | ||||
|             IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|             SimProfileData row = database.getRow(reader); | ||||
|             reader.Close(); | ||||
|             result.Dispose(); | ||||
| 
 | ||||
|             return row; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a sim profile from it's UUID | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">The region UUID</param> | ||||
|         /// <returns>The sim profile</returns> | ||||
|         public SimProfileData GetProfileByLLUUID(LLUUID uuid) | ||||
|         { | ||||
|             Dictionary<string, string> param = new Dictionary<string, string>(); | ||||
|             param["uuid"] = uuid.ToStringHyphenated(); | ||||
| 
 | ||||
|             IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param); | ||||
|             IDataReader reader = result.ExecuteReader(); | ||||
| 
 | ||||
|             SimProfileData row = database.getRow(reader); | ||||
|             reader.Close(); | ||||
|             result.Dispose(); | ||||
| 
 | ||||
|             return row; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Adds a new specified region to the database | ||||
|         /// </summary> | ||||
|         /// <param name="profile">The profile to add</param> | ||||
|         /// <returns>A dataresponse enum indicating success</returns> | ||||
|         public DataResponse AddProfile(SimProfileData profile) | ||||
|         { | ||||
|             if (database.insertRow(profile)) | ||||
|             { | ||||
|                 return DataResponse.RESPONSE_OK; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return DataResponse.RESPONSE_ERROR; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret. | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">The UUID of the challenger</param> | ||||
|         /// <param name="handle">The attempted regionHandle of the challenger</param> | ||||
|         /// <param name="authkey">The secret</param> | ||||
|         /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns> | ||||
|         public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey) | ||||
|         { | ||||
|             bool throwHissyFit = false; // Should be true by 1.0 | ||||
| 
 | ||||
|             if (throwHissyFit) | ||||
|                 throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential."); | ||||
| 
 | ||||
|             SimProfileData data = GetProfileByLLUUID(uuid); | ||||
| 
 | ||||
|             return (handle == data.regionHandle && authkey == data.regionSecret); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region | ||||
|         /// </summary> | ||||
|         /// <remarks>This requires a security audit.</remarks> | ||||
|         /// <param name="uuid"></param> | ||||
|         /// <param name="handle"></param> | ||||
|         /// <param name="authhash"></param> | ||||
|         /// <param name="challenge"></param> | ||||
|         /// <returns></returns> | ||||
|         public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge) | ||||
|         { | ||||
|             SHA512Managed HashProvider = new SHA512Managed(); | ||||
|             ASCIIEncoding TextProvider = new ASCIIEncoding(); | ||||
| 
 | ||||
|             byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge); | ||||
|             byte[] hash = HashProvider.ComputeHash(stream); | ||||
| 
 | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         public ReservationData GetReservationAtPoint(uint x, uint y) | ||||
|         { | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
|  | @ -1,206 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using System.Data; | ||||
| using System.Data.SQLite; | ||||
| using libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data.SQLite | ||||
| { | ||||
|     class SQLiteManager | ||||
|     { | ||||
|         IDbConnection dbcon; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises and creates a new SQLite connection and maintains it. | ||||
|         /// </summary> | ||||
|         /// <param name="hostname">The SQLite server being connected to</param> | ||||
|         /// <param name="database">The name of the SQLite database being used</param> | ||||
|         /// <param name="username">The username logging into the database</param> | ||||
|         /// <param name="password">The password for the user logging in</param> | ||||
|         /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param> | ||||
|         public SQLiteManager(string hostname, string database, string username, string password, string cpooling) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 string connectionString = "URI=file:GridServerSqlite.db;"; | ||||
|                 dbcon = new SQLiteConnection(connectionString); | ||||
| 
 | ||||
|                 dbcon.Open(); | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 throw new Exception("Error initialising SQLite Database: " + e.ToString()); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Shuts down the database connection | ||||
|         /// </summary> | ||||
|         public void Close() | ||||
|         { | ||||
|             dbcon.Close(); | ||||
|             dbcon = null; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Runs a query with protection against SQL Injection by using parameterised input. | ||||
|         /// </summary> | ||||
|         /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param> | ||||
|         /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param> | ||||
|         /// <returns>A SQLite DB Command</returns> | ||||
|         public IDbCommand Query(string sql, Dictionary<string, string> parameters) | ||||
|         { | ||||
|             SQLiteCommand dbcommand = (SQLiteCommand)dbcon.CreateCommand(); | ||||
|             dbcommand.CommandText = sql; | ||||
|             foreach (KeyValuePair<string, string> param in parameters) | ||||
|             { | ||||
|                 SQLiteParameter paramx = new SQLiteParameter(param.Key,param.Value); | ||||
|                 dbcommand.Parameters.Add(paramx); | ||||
|             } | ||||
| 
 | ||||
|             return (IDbCommand)dbcommand; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Reads a region row from a database reader | ||||
|         /// </summary> | ||||
|         /// <param name="reader">An active database reader</param> | ||||
|         /// <returns>A region profile</returns> | ||||
|         public SimProfileData getRow(IDataReader reader) | ||||
|         { | ||||
|             SimProfileData retval = new SimProfileData(); | ||||
| 
 | ||||
|             if (reader.Read()) | ||||
|             { | ||||
|                 // Region Main | ||||
|                 retval.regionHandle = (ulong)reader["regionHandle"]; | ||||
|                 retval.regionName = (string)reader["regionName"]; | ||||
|                 retval.UUID = new LLUUID((string)reader["uuid"]); | ||||
| 
 | ||||
|                 // Secrets | ||||
|                 retval.regionRecvKey = (string)reader["regionRecvKey"]; | ||||
|                 retval.regionSecret = (string)reader["regionSecret"]; | ||||
|                 retval.regionSendKey = (string)reader["regionSendKey"]; | ||||
| 
 | ||||
|                 // Region Server | ||||
|                 retval.regionDataURI = (string)reader["regionDataURI"]; | ||||
|                 retval.regionOnline = false; // Needs to be pinged before this can be set. | ||||
|                 retval.serverIP = (string)reader["serverIP"]; | ||||
|                 retval.serverPort = (uint)reader["serverPort"]; | ||||
|                 retval.serverURI = (string)reader["serverURI"]; | ||||
| 
 | ||||
|                 // Location | ||||
|                 retval.regionLocX = (uint)((int)reader["locX"]); | ||||
|                 retval.regionLocY = (uint)((int)reader["locY"]); | ||||
|                 retval.regionLocZ = (uint)((int)reader["locZ"]); | ||||
| 
 | ||||
|                 // Neighbours - 0 = No Override | ||||
|                 retval.regionEastOverrideHandle = (ulong)reader["eastOverrideHandle"]; | ||||
|                 retval.regionWestOverrideHandle = (ulong)reader["westOverrideHandle"]; | ||||
|                 retval.regionSouthOverrideHandle = (ulong)reader["southOverrideHandle"]; | ||||
|                 retval.regionNorthOverrideHandle = (ulong)reader["northOverrideHandle"]; | ||||
| 
 | ||||
|                 // Assets | ||||
|                 retval.regionAssetURI = (string)reader["regionAssetURI"]; | ||||
|                 retval.regionAssetRecvKey = (string)reader["regionAssetRecvKey"]; | ||||
|                 retval.regionAssetSendKey = (string)reader["regionAssetSendKey"]; | ||||
| 
 | ||||
|                 // Userserver | ||||
|                 retval.regionUserURI = (string)reader["regionUserURI"]; | ||||
|                 retval.regionUserRecvKey = (string)reader["regionUserRecvKey"]; | ||||
|                 retval.regionUserSendKey = (string)reader["regionUserSendKey"]; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 throw new Exception("No rows to return"); | ||||
|             } | ||||
|             return retval; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Inserts a new region into the database | ||||
|         /// </summary> | ||||
|         /// <param name="profile">The region to insert</param> | ||||
|         /// <returns>Success?</returns> | ||||
|         public bool insertRow(SimProfileData profile) | ||||
|         { | ||||
|             string sql = "REPLACE INTO regions VALUES (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, "; | ||||
|             sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, "; | ||||
|             sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey) VALUES "; | ||||
| 
 | ||||
|             sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, "; | ||||
|             sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, "; | ||||
|             sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey);"; | ||||
| 
 | ||||
|             Dictionary<string, string> parameters = new Dictionary<string, string>(); | ||||
| 
 | ||||
|             parameters["regionHandle"] = profile.regionHandle.ToString(); | ||||
|             parameters["regionName"] = profile.regionName; | ||||
|             parameters["uuid"] = profile.UUID.ToString(); | ||||
|             parameters["regionRecvKey"] = profile.regionRecvKey; | ||||
|             parameters["regionSendKey"] = profile.regionSendKey; | ||||
|             parameters["regionDataURI"] = profile.regionDataURI; | ||||
|             parameters["serverIP"] = profile.serverIP; | ||||
|             parameters["serverPort"] = profile.serverPort.ToString(); | ||||
|             parameters["serverURI"] = profile.serverURI; | ||||
|             parameters["locX"] = profile.regionLocX.ToString(); | ||||
|             parameters["locY"] = profile.regionLocY.ToString(); | ||||
|             parameters["locZ"] = profile.regionLocZ.ToString(); | ||||
|             parameters["eastOverrideHandle"] = profile.regionEastOverrideHandle.ToString(); | ||||
|             parameters["westOverrideHandle"] = profile.regionWestOverrideHandle.ToString(); | ||||
|             parameters["northOverrideHandle"] = profile.regionNorthOverrideHandle.ToString(); | ||||
|             parameters["southOverrideHandle"] = profile.regionSouthOverrideHandle.ToString(); | ||||
|             parameters["regionAssetURI"] = profile.regionAssetURI; | ||||
|             parameters["regionAssetRecvKey"] = profile.regionAssetRecvKey; | ||||
|             parameters["regionAssetSendKey"] = profile.regionAssetSendKey; | ||||
|             parameters["regionUserURI"] = profile.regionUserURI; | ||||
|             parameters["regionUserRecvKey"] = profile.regionUserRecvKey; | ||||
|             parameters["regionUserSendKey"] = profile.regionUserSendKey; | ||||
| 
 | ||||
|             bool returnval = false; | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|                 IDbCommand result = Query(sql, parameters); | ||||
| 
 | ||||
|                 if (result.ExecuteNonQuery() == 1) | ||||
|                     returnval = true; | ||||
| 
 | ||||
|                 result.Dispose(); | ||||
|             } | ||||
|             catch (Exception) | ||||
|             { | ||||
|                 return false; | ||||
|             } | ||||
| 
 | ||||
|             return returnval; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,111 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data | ||||
| { | ||||
|     public enum DataResponse | ||||
|     { | ||||
|         RESPONSE_OK, | ||||
|         RESPONSE_AUTHREQUIRED, | ||||
|         RESPONSE_INVALIDCREDENTIALS, | ||||
|         RESPONSE_ERROR | ||||
|     } | ||||
| 
 | ||||
|     /// <summary> | ||||
|     /// A standard grid interface | ||||
|     /// </summary> | ||||
|     public interface IGridData | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Returns a sim profile from a regionHandle | ||||
|         /// </summary> | ||||
|         /// <param name="regionHandle">A 64bit Region Handle</param> | ||||
|         /// <returns>A simprofile</returns> | ||||
|         SimProfileData GetProfileByHandle(ulong regionHandle); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a sim profile from a UUID | ||||
|         /// </summary> | ||||
|         /// <param name="UUID">A 128bit UUID</param> | ||||
|         /// <returns>A sim profile</returns> | ||||
|         SimProfileData GetProfileByLLUUID(LLUUID UUID); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns all profiles within the specified range | ||||
|         /// </summary> | ||||
|         /// <param name="Xmin">Minimum sim coordinate (X)</param> | ||||
|         /// <param name="Ymin">Minimum sim coordinate (Y)</param> | ||||
|         /// <param name="Xmax">Maximum sim coordinate (X)</param> | ||||
|         /// <param name="Ymin">Maximum sim coordinate (Y)</param> | ||||
|         /// <returns>An array containing all the sim profiles in the specified range</returns> | ||||
|         SimProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Authenticates a sim by use of it's recv key.  | ||||
|         /// WARNING: Insecure | ||||
|         /// </summary> | ||||
|         /// <param name="UUID">The UUID sent by the sim</param> | ||||
|         /// <param name="regionHandle">The regionhandle sent by the sim</param> | ||||
|         /// <param name="simrecvkey">The recieving key sent by the sim</param> | ||||
|         /// <returns>Whether the sim has been authenticated</returns> | ||||
|         bool AuthenticateSim(LLUUID UUID, ulong regionHandle, string simrecvkey); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises the interface | ||||
|         /// </summary> | ||||
|         void Initialise(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Closes the interface | ||||
|         /// </summary> | ||||
|         void Close(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// The plugin being loaded | ||||
|         /// </summary> | ||||
|         /// <returns>A string containing the plugin name</returns> | ||||
|         string getName(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// The plugins version | ||||
|         /// </summary> | ||||
|         /// <returns>A string containing the plugin version</returns> | ||||
|         string getVersion(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Adds a new profile to the database | ||||
|         /// </summary> | ||||
|         /// <param name="profile">The profile to add</param> | ||||
|         /// <returns>RESPONSE_OK if successful, error if not.</returns> | ||||
|         DataResponse AddProfile(SimProfileData profile); | ||||
| 
 | ||||
|         ReservationData GetReservationAtPoint(uint x, uint y); | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -1,90 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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. | ||||
| *  | ||||
| */ | ||||
| namespace OpenSim.Framework.Data | ||||
| { | ||||
|     /// <summary> | ||||
|     /// The severity of an individual log message | ||||
|     /// </summary> | ||||
|     public enum LogSeverity : int | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Critical: systems failure | ||||
|         /// </summary> | ||||
|         CRITICAL = 1, | ||||
|         /// <summary> | ||||
|         /// Major: warning prior to systems failure | ||||
|         /// </summary> | ||||
|         MAJOR = 2, | ||||
|         /// <summary> | ||||
|         /// Medium: an individual non-critical task failed | ||||
|         /// </summary> | ||||
|         MEDIUM = 3, | ||||
|         /// <summary> | ||||
|         /// Low: Informational warning | ||||
|         /// </summary> | ||||
|         LOW = 4, | ||||
|         /// <summary> | ||||
|         /// Info: Information | ||||
|         /// </summary> | ||||
|         INFO = 5, | ||||
|         /// <summary> | ||||
|         /// Verbose: Debug Information | ||||
|         /// </summary> | ||||
|         VERBOSE = 6 | ||||
|     } | ||||
| 
 | ||||
|     /// <summary> | ||||
|     /// An interface to a LogData storage system | ||||
|     /// </summary> | ||||
|     public interface ILogData | ||||
|     { | ||||
|         void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority,string logMessage); | ||||
|         /// <summary> | ||||
|         /// Initialises the interface | ||||
|         /// </summary> | ||||
|         void Initialise(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Closes the interface | ||||
|         /// </summary> | ||||
|         void Close(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// The plugin being loaded | ||||
|         /// </summary> | ||||
|         /// <returns>A string containing the plugin name</returns> | ||||
|         string getName(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// The plugins version | ||||
|         /// </summary> | ||||
|         /// <returns>A string containing the plugin version</returns> | ||||
|         string getVersion(); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | @ -1,96 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.IO; | ||||
| using System.Text.RegularExpressions; | ||||
| /*  | ||||
|  Taken from public code listing at by Alex Pinsker | ||||
|  http://alexpinsker.blogspot.com/2005/12/reading-ini-file-from-c_113432097333021549.html | ||||
|  */ | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data | ||||
| { | ||||
|     /// <summary> | ||||
|     /// Parse settings from ini-like files | ||||
|     /// </summary> | ||||
|     public class IniFile | ||||
|     { | ||||
|         static IniFile() | ||||
|         { | ||||
|             _iniKeyValuePatternRegex = new Regex( | ||||
|                 @"((\s)*(?<Key>([^\=^\s^\n]+))[\s^\n]*
 | ||||
|                 # key part (surrounding whitespace stripped) | ||||
|                 \= | ||||
|                 (\s)*(?<Value>([^\n^\s]+(\n){0,1}))) | ||||
|                 # value part (surrounding whitespace stripped) | ||||
|                 ",
 | ||||
|                 RegexOptions.IgnorePatternWhitespace | | ||||
|                 RegexOptions.Compiled | | ||||
|                 RegexOptions.CultureInvariant); | ||||
|         } | ||||
|         static private Regex _iniKeyValuePatternRegex; | ||||
| 
 | ||||
|         public IniFile(string iniFileName) | ||||
|         { | ||||
|             _iniFileName = iniFileName; | ||||
|         } | ||||
| 
 | ||||
|         public string ParseFileReadValue(string key) | ||||
|         { | ||||
|             using (StreamReader reader = | ||||
|                   new StreamReader(_iniFileName)) | ||||
|             { | ||||
|                 do | ||||
|                 { | ||||
|                     string line = reader.ReadLine(); | ||||
|                     Match match = | ||||
|                         _iniKeyValuePatternRegex.Match(line); | ||||
|                     if (match.Success) | ||||
|                     { | ||||
|                         string currentKey = | ||||
|                                 match.Groups["Key"].Value as string; | ||||
|                         if (currentKey != null && | ||||
|                        currentKey.Trim().CompareTo(key) == 0) | ||||
|                         { | ||||
|                             string value = | ||||
|                               match.Groups["Value"].Value as string; | ||||
|                             return value; | ||||
|                         } | ||||
|                     } | ||||
| 
 | ||||
|                 } | ||||
|                 while (reader.Peek() != -1); | ||||
|             } | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         public string IniFileName | ||||
|         { | ||||
|             get { return _iniFileName; } | ||||
|         }    private string _iniFileName; | ||||
|     } | ||||
| } | ||||
|  | @ -1,185 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data | ||||
| { | ||||
|     /// <summary> | ||||
|     /// Inventory Item - contains all the properties associated with an individual inventory piece. | ||||
|     /// </summary> | ||||
|     public class InventoryItemBase | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// A UUID containing the ID for the inventory item itself | ||||
|         /// </summary> | ||||
|         public LLUUID inventoryID; | ||||
|         /// <summary> | ||||
|         /// The UUID of the associated asset on the asset server | ||||
|         /// </summary> | ||||
|         public LLUUID assetID; | ||||
|         /// <summary> | ||||
|         /// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc) | ||||
|         /// </summary> | ||||
|         public int type; | ||||
|         /// <summary> | ||||
|         /// The folder this item is contained in (NULL_KEY = Inventory Root) | ||||
|         /// </summary> | ||||
|         public LLUUID parentFolderID; | ||||
|         /// <summary> | ||||
|         /// The owner of this inventory item | ||||
|         /// </summary> | ||||
|         public LLUUID avatarID; | ||||
|         /// <summary> | ||||
|         /// The name of the inventory item (must be less than 64 characters) | ||||
|         /// </summary> | ||||
|         public string inventoryName; | ||||
|         /// <summary> | ||||
|         /// The description of the inventory item (must be less than 64 characters) | ||||
|         /// </summary> | ||||
|         public string inventoryDescription; | ||||
|         /// <summary> | ||||
|         /// A mask containing the permissions for the next owner (cannot be enforced) | ||||
|         /// </summary> | ||||
|         public uint inventoryNextPermissions; | ||||
|         /// <summary> | ||||
|         /// A mask containing permissions for the current owner (cannot be enforced) | ||||
|         /// </summary> | ||||
|         public uint inventoryCurrentPermissions; | ||||
|     } | ||||
| 
 | ||||
|     /// <summary> | ||||
|     /// A Class for folders which contain users inventory | ||||
|     /// </summary> | ||||
|     public class InventoryFolderBase | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// The name of the folder (64 characters or less) | ||||
|         /// </summary> | ||||
|         public string name; | ||||
|         /// <summary> | ||||
|         /// The agent who's inventory this is contained by | ||||
|         /// </summary> | ||||
|         public LLUUID agentID; | ||||
|         /// <summary> | ||||
|         /// The folder this folder is contained in (NULL_KEY for root) | ||||
|         /// </summary> | ||||
|         public LLUUID parentID; | ||||
|         /// <summary> | ||||
|         /// The UUID for this folder | ||||
|         /// </summary> | ||||
|         public LLUUID folderID; | ||||
|     } | ||||
| 
 | ||||
|     /// <summary> | ||||
|     /// An interface for accessing inventory data from a storage server | ||||
|     /// </summary> | ||||
|     public interface IInventoryData | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Initialises the interface | ||||
|         /// </summary> | ||||
|         void Initialise(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Closes the interface | ||||
|         /// </summary> | ||||
|         void Close(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// The plugin being loaded | ||||
|         /// </summary> | ||||
|         /// <returns>A string containing the plugin name</returns> | ||||
|         string getName(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// The plugins version | ||||
|         /// </summary> | ||||
|         /// <returns>A string containing the plugin version</returns> | ||||
|         string getVersion(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a list of inventory items contained within the specified folder | ||||
|         /// </summary> | ||||
|         /// <param name="folderID">The UUID of the target folder</param> | ||||
|         /// <returns>A List of InventoryItemBase items</returns> | ||||
|         List<InventoryItemBase> getInventoryInFolder(LLUUID folderID); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a list of folders in the users inventory root. | ||||
|         /// </summary> | ||||
|         /// <param name="user">The UUID of the user who is having inventory being returned</param> | ||||
|         /// <returns>A list of folders</returns> | ||||
|         List<InventoryFolderBase> getUserRootFolders(LLUUID user); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a list of inventory folders contained in the folder 'parentID' | ||||
|         /// </summary> | ||||
|         /// <param name="parentID">The folder to get subfolders for</param> | ||||
|         /// <returns>A list of inventory folders</returns> | ||||
|         List<InventoryFolderBase> getInventoryFolders(LLUUID parentID); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns an inventory item by its UUID | ||||
|         /// </summary> | ||||
|         /// <param name="item">The UUID of the item to be returned</param> | ||||
|         /// <returns>A class containing item information</returns> | ||||
|         InventoryItemBase getInventoryItem(LLUUID item); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a specified inventory folder by its UUID | ||||
|         /// </summary> | ||||
|         /// <param name="folder">The UUID of the folder to be returned</param> | ||||
|         /// <returns>A class containing folder information</returns> | ||||
|         InventoryFolderBase getInventoryFolder(LLUUID folder); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Creates a new inventory item based on item | ||||
|         /// </summary> | ||||
|         /// <param name="item">The item to be created</param> | ||||
|         void addInventoryItem(InventoryItemBase item); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Updates an inventory item with item (updates based on ID) | ||||
|         /// </summary> | ||||
|         /// <param name="item">The updated item</param> | ||||
|         void updateInventoryItem(InventoryItemBase item); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Adds a new folder specified by folder | ||||
|         /// </summary> | ||||
|         /// <param name="folder">The inventory folder</param> | ||||
|         void addInventoryFolder(InventoryFolderBase folder); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Updates a folder based on its ID with folder | ||||
|         /// </summary> | ||||
|         /// <param name="folder">The inventory folder</param> | ||||
|         void updateInventoryFolder(InventoryFolderBase folder); | ||||
|     } | ||||
| } | ||||
|  | @ -1,33 +0,0 @@ | |||
| using System.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| [assembly: AssemblyTitle("OpenSim.Framework.Data")] | ||||
| [assembly: AssemblyDescription("")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("")] | ||||
| [assembly: AssemblyProduct("OpenSim.Framework.Data")] | ||||
| [assembly: AssemblyCopyright("Copyright ©  2007")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")] | ||||
| 
 | ||||
| // Setting ComVisible to false makes the types in this assembly not visible  | ||||
| // to COM components.  If you need to access a type in this assembly from  | ||||
| // COM, set the ComVisible attribute to true on that type. | ||||
| [assembly: ComVisible(false)] | ||||
| 
 | ||||
| // The following GUID is for the ID of the typelib if this project is exposed to COM | ||||
| [assembly: Guid("3a711c34-b0c0-4264-b0fe-f366eabf9d7b")] | ||||
| 
 | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
| // You can specify all the values or you can default the Revision and Build Numbers  | ||||
| // by using the '*' as shown below: | ||||
| [assembly: AssemblyVersion("1.0.0.0")] | ||||
| [assembly: AssemblyFileVersion("1.0.0.0")] | ||||
|  | @ -1,47 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data | ||||
| { | ||||
|     public class ReservationData | ||||
|     { | ||||
|         public LLUUID userUUID = new LLUUID(); | ||||
|         public int reservationMinX = 0; | ||||
|         public int reservationMinY = 0; | ||||
|         public int reservationMaxX = 65536; | ||||
|         public int reservationMaxY = 65536; | ||||
|          | ||||
|         public string reservationName = ""; | ||||
|         public string reservationCompany = ""; | ||||
|         public bool status = true; | ||||
| 
 | ||||
|         public string gridSendKey = ""; | ||||
|         public string gridRecvKey = ""; | ||||
|     } | ||||
| } | ||||
|  | @ -1,192 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| using Nwc.XmlRpc; | ||||
| 
 | ||||
| using System; | ||||
| using System.Collections; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A class which contains information known to the grid server about a region | ||||
|     /// </summary> | ||||
|     public class SimProfileData | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// The name of the region | ||||
|         /// </summary> | ||||
|         public string regionName = ""; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// A 64-bit number combining map position into a (mostly) unique ID | ||||
|         /// </summary> | ||||
|         public ulong regionHandle; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// OGS/OpenSim Specific ID for a region | ||||
|         /// </summary> | ||||
|         public LLUUID UUID; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Coordinates of the region | ||||
|         /// </summary> | ||||
|         public uint regionLocX; | ||||
|         public uint regionLocY; | ||||
|         public uint regionLocZ; // Reserved (round-robin, layers, etc) | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Authentication secrets | ||||
|         /// </summary> | ||||
|         /// <remarks>Not very secure, needs improvement.</remarks> | ||||
|         public string regionSendKey = ""; | ||||
|         public string regionRecvKey = ""; | ||||
|         public string regionSecret = ""; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Whether the region is online | ||||
|         /// </summary> | ||||
|         public bool regionOnline; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Information about the server that the region is currently hosted on | ||||
|         /// </summary> | ||||
|         public string serverIP = ""; | ||||
|         public uint serverPort; | ||||
|         public string serverURI = ""; | ||||
| 
 | ||||
|         public uint httpPort; | ||||
|         public uint remotingPort; | ||||
|         public string httpServerURI = ""; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Set of optional overrides. Can be used to create non-eulicidean spaces. | ||||
|         /// </summary> | ||||
|         public ulong regionNorthOverrideHandle; | ||||
|         public ulong regionSouthOverrideHandle; | ||||
|         public ulong regionEastOverrideHandle; | ||||
|         public ulong regionWestOverrideHandle; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Optional: URI Location of the region database | ||||
|         /// </summary> | ||||
|         /// <remarks>Used for floating sim pools where the region data is not nessecarily coupled to a specific server</remarks> | ||||
|         public string regionDataURI = ""; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Region Asset Details | ||||
|         /// </summary> | ||||
|         public string regionAssetURI = ""; | ||||
|         public string regionAssetSendKey = ""; | ||||
|         public string regionAssetRecvKey = ""; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Region Userserver Details | ||||
|         /// </summary> | ||||
|         public string regionUserURI = ""; | ||||
|         public string regionUserSendKey = ""; | ||||
|         public string regionUserRecvKey = ""; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Region Map Texture Asset | ||||
|         /// </summary> | ||||
|         public LLUUID regionMapTextureID = new LLUUID("00000000-0000-0000-9999-000000000006"); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Get Sim profile data from grid server when in grid mode | ||||
|         /// </summary> | ||||
|         /// <param name="region_uuid"></param> | ||||
|         /// <param name="gridserver_url"></param> | ||||
|         /// <param name="?"></param> | ||||
|         /// <returns></returns> | ||||
|         public SimProfileData RequestSimProfileData(LLUUID region_uuid, string gridserver_url, string gridserver_sendkey, string gridserver_recvkey) | ||||
|         { | ||||
|             Hashtable requestData = new Hashtable(); | ||||
|             requestData["region_uuid"] = region_uuid.UUID.ToString(); | ||||
|             requestData["authkey"] = gridserver_sendkey; | ||||
|             ArrayList SendParams = new ArrayList(); | ||||
|             SendParams.Add(requestData); | ||||
|             XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams); | ||||
|             XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000); | ||||
| 
 | ||||
|             Hashtable responseData = (Hashtable)GridResp.Value; | ||||
| 
 | ||||
|             if (responseData.ContainsKey("error")) | ||||
|             { | ||||
|                 return null; | ||||
|             } | ||||
| 
 | ||||
|             SimProfileData simData = new SimProfileData(); | ||||
|             simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]); | ||||
|             simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]); | ||||
|             simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256)); | ||||
|             simData.serverIP = (string)responseData["sim_ip"]; | ||||
|             simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]); | ||||
|             simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]); | ||||
|             simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]); | ||||
|             simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/"; | ||||
|             simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/"; | ||||
|             simData.UUID = new LLUUID((string)responseData["region_UUID"]); | ||||
|             simData.regionName = (string)responseData["region_name"]; | ||||
| 
 | ||||
|             return simData;             | ||||
|         } | ||||
|         public SimProfileData RequestSimProfileData(ulong region_handle, string gridserver_url, string gridserver_sendkey, string gridserver_recvkey) | ||||
|         { | ||||
|             Hashtable requestData = new Hashtable(); | ||||
|             requestData["region_handle"] = region_handle.ToString(); | ||||
|             requestData["authkey"] = gridserver_sendkey; | ||||
|             ArrayList SendParams = new ArrayList(); | ||||
|             SendParams.Add(requestData); | ||||
|             XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams); | ||||
|             XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000); | ||||
| 
 | ||||
|             Hashtable responseData = (Hashtable)GridResp.Value; | ||||
| 
 | ||||
|             if (responseData.ContainsKey("error")) | ||||
|             { | ||||
|                 return null; | ||||
|             } | ||||
| 
 | ||||
|             SimProfileData simData = new SimProfileData(); | ||||
|             simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]); | ||||
|             simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]); | ||||
|             simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256)); | ||||
|             simData.serverIP = (string)responseData["sim_ip"]; | ||||
|             simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]); | ||||
|             simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]); | ||||
|             simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]); | ||||
|             simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/"; | ||||
|             simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/"; | ||||
|             simData.UUID = new LLUUID((string)responseData["region_UUID"]); | ||||
|             simData.regionName = (string)responseData["region_name"]; | ||||
| 
 | ||||
|             return simData;  | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,128 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data | ||||
| { | ||||
|     /// <summary> | ||||
|     /// An interface for connecting to user storage servers. | ||||
|     /// </summary> | ||||
|     public interface IUserData | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Returns a user profile from a database via their UUID | ||||
|         /// </summary> | ||||
|         /// <param name="user">The accounts UUID</param> | ||||
|         /// <returns>The user data profile</returns> | ||||
|         UserProfileData getUserByUUID(LLUUID user); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a users profile by searching their username | ||||
|         /// </summary> | ||||
|         /// <param name="name">The users username</param> | ||||
|         /// <returns>The user data profile</returns> | ||||
|         UserProfileData getUserByName(string name); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a users profile by searching their username parts | ||||
|         /// </summary> | ||||
|         /// <param name="fname">Account firstname</param> | ||||
|         /// <param name="lname">Account lastname</param> | ||||
|         /// <returns>The user data profile</returns> | ||||
|         UserProfileData getUserByName(string fname, string lname); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the current agent for a user searching by it's UUID | ||||
|         /// </summary> | ||||
|         /// <param name="user">The users UUID</param> | ||||
|         /// <returns>The current agent session</returns> | ||||
|         UserAgentData getAgentByUUID(LLUUID user); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the current session agent for a user searching by username | ||||
|         /// </summary> | ||||
|         /// <param name="name">The users account name</param> | ||||
|         /// <returns>The current agent session</returns> | ||||
|         UserAgentData getAgentByName(string name); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the current session agent for a user searching by username parts | ||||
|         /// </summary> | ||||
|         /// <param name="fname">The users first account name</param> | ||||
|         /// <param name="lname">The users account surname</param> | ||||
|         /// <returns>The current agent session</returns> | ||||
|         UserAgentData getAgentByName(string fname, string lname); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Adds a new User profile to the database  | ||||
|         /// </summary> | ||||
|         /// <param name="user">UserProfile to add</param> | ||||
|         void addNewUserProfile(UserProfileData user); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Adds a new agent to the database | ||||
|         /// </summary> | ||||
|         /// <param name="agent">The agent to add</param> | ||||
|         void addNewUserAgent(UserAgentData agent); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Attempts to move currency units between accounts (NOT RELIABLE / TRUSTWORTHY. DONT TRY RUN YOUR OWN CURRENCY EXCHANGE WITH REAL VALUES) | ||||
|         /// </summary> | ||||
|         /// <param name="from">The account to transfer from</param> | ||||
|         /// <param name="to">The account to transfer to</param> | ||||
|         /// <param name="amount">The amount to transfer</param> | ||||
|         /// <returns>Successful?</returns> | ||||
|         bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Attempts to move inventory between accounts, if inventory is copyable it will be copied into the target account. | ||||
|         /// </summary> | ||||
|         /// <param name="from">User to transfer from</param> | ||||
|         /// <param name="to">User to transfer to</param> | ||||
|         /// <param name="inventory">Specified inventory item</param> | ||||
|         /// <returns>Successful?</returns> | ||||
|         bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID inventory); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the plugin version | ||||
|         /// </summary> | ||||
|         /// <returns>Plugin version in MAJOR.MINOR.REVISION.BUILD format</returns> | ||||
|         string getVersion(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the plugin name | ||||
|         /// </summary> | ||||
|         /// <returns>Plugin name, eg MySQL User Provider</returns> | ||||
|         string getName(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises the plugin (artificial constructor) | ||||
|         /// </summary> | ||||
|         void Initialise(); | ||||
|     } | ||||
| } | ||||
|  | @ -1,180 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Data | ||||
| { | ||||
|     /// <summary> | ||||
|     /// Information about a particular user known to the userserver | ||||
|     /// </summary> | ||||
|     public class UserProfileData | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// The ID value for this user | ||||
|         /// </summary> | ||||
|         public LLUUID UUID; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// The first component of a users account name | ||||
|         /// </summary> | ||||
|         public string username; | ||||
|         /// <summary> | ||||
|         /// The second component of a users account name | ||||
|         /// </summary> | ||||
|         public string surname; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// A salted hash containing the users password, in the format md5(md5(password) + ":" + salt) | ||||
|         /// </summary> | ||||
|         /// <remarks>This is double MD5'd because the client sends an unsalted MD5 to the loginserver</remarks> | ||||
|         public string passwordHash; | ||||
|         /// <summary> | ||||
|         /// The salt used for the users hash, should be 32 bytes or longer | ||||
|         /// </summary> | ||||
|         public string passwordSalt; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// The regionhandle of the users preffered home region. If multiple sims occupy the same spot, the grid may decide which region the user logs into | ||||
|         /// </summary> | ||||
|         public ulong homeRegion; | ||||
|         /// <summary> | ||||
|         /// The coordinates inside the region of the home location | ||||
|         /// </summary> | ||||
|         public LLVector3 homeLocation; | ||||
|         /// <summary> | ||||
|         /// Where the user will be looking when they rez. | ||||
|         /// </summary> | ||||
|         public LLVector3 homeLookAt; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// A UNIX Timestamp (seconds since epoch) for the users creation | ||||
|         /// </summary> | ||||
|         public int created; | ||||
|         /// <summary> | ||||
|         /// A UNIX Timestamp for the users last login date / time | ||||
|         /// </summary> | ||||
|         public int lastLogin; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// A URI to the users inventory server, used for foreigners and large grids | ||||
|         /// </summary> | ||||
|         public string userInventoryURI; | ||||
|         /// <summary> | ||||
|         /// A URI to the users asset server, used for foreigners and large grids. | ||||
|         /// </summary> | ||||
|         public string userAssetURI; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// A uint mask containing the "I can do" fields of the users profile | ||||
|         /// </summary> | ||||
|         public uint profileCanDoMask; | ||||
|         /// <summary> | ||||
|         /// A uint mask containing the "I want to do" part of the users profile | ||||
|         /// </summary> | ||||
|         public uint profileWantDoMask; // Profile window "I want to" mask | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// The about text listed in a users profile. | ||||
|         /// </summary> | ||||
|         public string profileAboutText; | ||||
|         /// <summary> | ||||
|         /// The first life about text listed in a users profile | ||||
|         /// </summary> | ||||
|         public string profileFirstText; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// The profile image for an avatar stored on the asset server | ||||
|         /// </summary> | ||||
|         public LLUUID profileImage; | ||||
|         /// <summary> | ||||
|         /// The profile image for the users first life tab | ||||
|         /// </summary> | ||||
|         public LLUUID profileFirstImage; | ||||
|         /// <summary> | ||||
|         /// The users last registered agent (filled in on the user server) | ||||
|         /// </summary> | ||||
|         public UserAgentData currentAgent; | ||||
|     } | ||||
| 
 | ||||
|     /// <summary> | ||||
|     /// Information about a users session | ||||
|     /// </summary> | ||||
|     public class UserAgentData | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// The UUID of the users avatar (not the agent!) | ||||
|         /// </summary> | ||||
|         public LLUUID UUID; | ||||
|         /// <summary> | ||||
|         /// The IP address of the user | ||||
|         /// </summary> | ||||
|         public string agentIP = String.Empty; | ||||
|         /// <summary> | ||||
|         /// The port of the user | ||||
|         /// </summary> | ||||
|         public uint agentPort; | ||||
|         /// <summary> | ||||
|         /// Is the user online? | ||||
|         /// </summary> | ||||
|         public bool agentOnline; | ||||
|         /// <summary> | ||||
|         /// The session ID for the user (also the agent ID) | ||||
|         /// </summary> | ||||
|         public LLUUID sessionID; | ||||
|         /// <summary> | ||||
|         /// The "secure" session ID for the user | ||||
|         /// </summary> | ||||
|         /// <remarks>Not very secure. Dont rely on it for anything more than Linden Lab does.</remarks> | ||||
|         public LLUUID secureSessionID; | ||||
|         /// <summary> | ||||
|         /// The region the user logged into initially | ||||
|         /// </summary> | ||||
|         public LLUUID regionID; | ||||
|         /// <summary> | ||||
|         /// A unix timestamp from when the user logged in | ||||
|         /// </summary> | ||||
|         public int loginTime; | ||||
|         /// <summary> | ||||
|         /// When this agent expired and logged out, 0 if still online | ||||
|         /// </summary> | ||||
|         public int logoutTime; | ||||
|         /// <summary> | ||||
|         /// Current region the user is logged into | ||||
|         /// </summary> | ||||
|         public LLUUID currentRegion; | ||||
|         /// <summary> | ||||
|         /// Region handle of the current region the user is in | ||||
|         /// </summary> | ||||
|         public ulong currentHandle; | ||||
|         /// <summary> | ||||
|         /// The position of the user within the region | ||||
|         /// </summary> | ||||
|         public LLVector3 currentPos; | ||||
|     } | ||||
| } | ||||
|  | @ -1,265 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using libsecondlife; | ||||
| using libsecondlife.Packets; | ||||
| using OpenSim.Framework.Types; | ||||
| using OpenSim.Framework.Utilities; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Inventory | ||||
| { | ||||
|     public class AgentInventory | ||||
|     { | ||||
|         //Holds the local copy of Inventory info for a agent | ||||
|         public Dictionary<LLUUID, InventoryFolder> InventoryFolders; | ||||
|         public Dictionary<LLUUID, InventoryItem> InventoryItems; | ||||
|         public InventoryFolder InventoryRoot; | ||||
|         public int LastCached;  //maybe used by opensim app, time this was last stored/compared to user server | ||||
|         public LLUUID AgentID; | ||||
|         public AvatarWearable[] Wearables; | ||||
| 
 | ||||
|         public AgentInventory() | ||||
|         { | ||||
|             InventoryFolders = new Dictionary<LLUUID, InventoryFolder>(); | ||||
|             InventoryItems = new Dictionary<LLUUID, InventoryItem>(); | ||||
|             this.Initialise(); | ||||
|         } | ||||
| 
 | ||||
|         public virtual void Initialise() | ||||
|         { | ||||
|             Wearables = new AvatarWearable[13]; //should be 12 of these | ||||
|             for (int i = 0; i < 13; i++) | ||||
|             { | ||||
|                 Wearables[i] = new AvatarWearable(); | ||||
|             } | ||||
|        | ||||
|         } | ||||
| 
 | ||||
|         public bool CreateNewFolder(LLUUID folderID, ushort type) | ||||
|         { | ||||
|             InventoryFolder Folder = new InventoryFolder(); | ||||
|             Folder.FolderID = folderID; | ||||
|             Folder.OwnerID = this.AgentID; | ||||
|             Folder.DefaultType = type; | ||||
|             this.InventoryFolders.Add(Folder.FolderID, Folder); | ||||
|             return (true); | ||||
|         } | ||||
| 
 | ||||
|         public void CreateRootFolder(LLUUID newAgentID, bool createTextures) | ||||
|         { | ||||
|             this.AgentID = newAgentID; | ||||
|             InventoryRoot = new InventoryFolder(); | ||||
|             InventoryRoot.FolderID = LLUUID.Random(); | ||||
|             InventoryRoot.ParentID = new LLUUID(); | ||||
|             InventoryRoot.Version = 1; | ||||
|             InventoryRoot.DefaultType = 8; | ||||
|             InventoryRoot.OwnerID = this.AgentID; | ||||
|             InventoryRoot.FolderName = "My Inventory"; | ||||
|             InventoryFolders.Add(InventoryRoot.FolderID, InventoryRoot); | ||||
|             InventoryRoot.OwnerID = this.AgentID; | ||||
|             if (createTextures) | ||||
|             { | ||||
|                 this.CreateNewFolder(LLUUID.Random(), 0, "Textures", InventoryRoot.FolderID); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public bool CreateNewFolder(LLUUID folderID, ushort type, string folderName) | ||||
|         { | ||||
|             InventoryFolder Folder = new InventoryFolder(); | ||||
|             Folder.FolderID = folderID; | ||||
|             Folder.OwnerID = this.AgentID; | ||||
|             Folder.DefaultType = type; | ||||
|             Folder.FolderName = folderName; | ||||
|             this.InventoryFolders.Add(Folder.FolderID, Folder); | ||||
| 
 | ||||
|             return (true); | ||||
|         } | ||||
| 
 | ||||
|         public bool CreateNewFolder(LLUUID folderID, ushort type, string folderName, LLUUID parent) | ||||
|         { | ||||
|             if (!this.InventoryFolders.ContainsKey(folderID)) | ||||
|             { | ||||
|                 System.Console.WriteLine("creating new folder called " + folderName + " in agents inventory"); | ||||
|                 InventoryFolder Folder = new InventoryFolder(); | ||||
|                 Folder.FolderID = folderID; | ||||
|                 Folder.OwnerID = this.AgentID; | ||||
|                 Folder.DefaultType = type; | ||||
|                 Folder.FolderName = folderName; | ||||
|                 Folder.ParentID = parent; | ||||
|                 this.InventoryFolders.Add(Folder.FolderID, Folder); | ||||
|             } | ||||
| 
 | ||||
|             return (true); | ||||
|         } | ||||
| 
 | ||||
|         public bool HasFolder(LLUUID folderID) | ||||
|         { | ||||
|             if (this.InventoryFolders.ContainsKey(folderID)) | ||||
|             { | ||||
|                 return true; | ||||
|             } | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         public LLUUID GetFolderID(string folderName) | ||||
|         { | ||||
|             foreach (InventoryFolder inv in this.InventoryFolders.Values) | ||||
|             { | ||||
|                 if (inv.FolderName == folderName) | ||||
|                 { | ||||
|                     return inv.FolderID; | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return LLUUID.Zero; | ||||
|         } | ||||
| 
 | ||||
|         public bool UpdateItemAsset(LLUUID itemID, AssetBase asset) | ||||
|         { | ||||
|             if(this.InventoryItems.ContainsKey(itemID)) | ||||
|             { | ||||
|                 InventoryItem Item = this.InventoryItems[itemID]; | ||||
|                 Item.AssetID = asset.FullID; | ||||
|                 System.Console.WriteLine("updated inventory item " + itemID.ToStringHyphenated() + " so it now is set to asset " + asset.FullID.ToStringHyphenated()); | ||||
|                 //TODO need to update the rest of the info | ||||
|             } | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         public bool UpdateItemDetails(LLUUID itemID, UpdateInventoryItemPacket.InventoryDataBlock packet) | ||||
|         { | ||||
|             System.Console.WriteLine("updating inventory item details"); | ||||
|             if (this.InventoryItems.ContainsKey(itemID)) | ||||
|             { | ||||
|                 System.Console.WriteLine("changing name to "+ Util.FieldToString(packet.Name)); | ||||
|                 InventoryItem Item = this.InventoryItems[itemID]; | ||||
|                 Item.Name = Util.FieldToString(packet.Name); | ||||
|                 System.Console.WriteLine("updated inventory item " + itemID.ToStringHyphenated()); | ||||
|                 //TODO need to update the rest of the info | ||||
|             } | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         public LLUUID AddToInventory(LLUUID folderID, AssetBase asset) | ||||
|         { | ||||
|             if (this.InventoryFolders.ContainsKey(folderID)) | ||||
|             { | ||||
|                 LLUUID NewItemID = LLUUID.Random(); | ||||
| 
 | ||||
|                 InventoryItem Item = new InventoryItem(); | ||||
|                 Item.FolderID = folderID; | ||||
|                 Item.OwnerID = AgentID; | ||||
|                 Item.AssetID = asset.FullID; | ||||
|                 Item.ItemID = NewItemID; | ||||
|                 Item.Type = asset.Type; | ||||
|                 Item.Name = asset.Name; | ||||
|                 Item.Description = asset.Description; | ||||
|                 Item.InvType = asset.InvType; | ||||
|                 this.InventoryItems.Add(Item.ItemID, Item); | ||||
|                 InventoryFolder Folder = InventoryFolders[Item.FolderID]; | ||||
|                 Folder.Items.Add(Item); | ||||
|                 return (Item.ItemID); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return (null); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public bool DeleteFromInventory(LLUUID itemID) | ||||
|         { | ||||
|             bool res = false; | ||||
|             if (this.InventoryItems.ContainsKey(itemID)) | ||||
|             { | ||||
|                 InventoryItem item = this.InventoryItems[itemID]; | ||||
|                 this.InventoryItems.Remove(itemID); | ||||
|                 foreach (InventoryFolder fold in InventoryFolders.Values) | ||||
|                 { | ||||
|                     if (fold.Items.Contains(item)) | ||||
|                     { | ||||
|                         fold.Items.Remove(item); | ||||
|                         break; | ||||
|                     } | ||||
|                 } | ||||
|                 res = true; | ||||
|                  | ||||
|             } | ||||
|             return res; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public class InventoryFolder | ||||
|     { | ||||
|         public List<InventoryItem> Items; | ||||
|         //public List<InventoryFolder> Subfolders; | ||||
|         public LLUUID FolderID; | ||||
|         public LLUUID OwnerID; | ||||
|         public LLUUID ParentID = LLUUID.Zero; | ||||
|         public string FolderName; | ||||
|         public ushort DefaultType; | ||||
|         public ushort Version; | ||||
| 
 | ||||
|         public InventoryFolder() | ||||
|         { | ||||
|             Items = new List<InventoryItem>(); | ||||
|             //Subfolders = new List<InventoryFolder>(); | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     public class InventoryItem | ||||
|     { | ||||
|         public LLUUID FolderID; | ||||
|         public LLUUID OwnerID; | ||||
|         public LLUUID ItemID; | ||||
|         public LLUUID AssetID; | ||||
|         public LLUUID CreatorID; | ||||
|         public sbyte InvType; | ||||
|         public sbyte Type; | ||||
|         public string Name =""; | ||||
|         public string Description; | ||||
| 
 | ||||
|         public InventoryItem() | ||||
|         { | ||||
|             this.CreatorID = LLUUID.Zero; | ||||
|         } | ||||
| 
 | ||||
|         public string ExportString() | ||||
|         { | ||||
|             string typ = "notecard"; | ||||
|             string result = ""; | ||||
|             result += "\tinv_object\t0\n\t{\n"; | ||||
|             result += "\t\tobj_id\t%s\n"; | ||||
|             result +=  "\t\tparent_id\t"+ ItemID.ToString() +"\n"; | ||||
|             result += "\t\ttype\t"+ typ +"\n"; | ||||
|             result += "\t\tname\t" + Name+"|\n"; | ||||
|             result += "\t}\n"; | ||||
|             return result; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,130 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using libsecondlife; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| using OpenSim.Framework.Types; | ||||
| 
 | ||||
| namespace OpenSim.Framework | ||||
| { | ||||
|     public class AuthenticateSessionsBase | ||||
|     { | ||||
|         public Dictionary<uint, AgentCircuitData> AgentCircuits = new Dictionary<uint, AgentCircuitData>(); | ||||
| 
 | ||||
|         public AuthenticateSessionsBase() | ||||
|         { | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         public virtual AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitcode) | ||||
|         { | ||||
|             AgentCircuitData validcircuit = null; | ||||
|             if (this.AgentCircuits.ContainsKey(circuitcode)) | ||||
|             { | ||||
|                 validcircuit = this.AgentCircuits[circuitcode]; | ||||
|             } | ||||
|             AuthenticateResponse user = new AuthenticateResponse(); | ||||
|             if (validcircuit == null) | ||||
|             { | ||||
|                 //don't have this circuit code in our list | ||||
|                 user.Authorised = false; | ||||
|                 return (user); | ||||
|             } | ||||
| 
 | ||||
|             if ((sessionID == validcircuit.SessionID) && (agentID == validcircuit.AgentID)) | ||||
|             { | ||||
|                 user.Authorised = true; | ||||
|                 user.LoginInfo = new Login(); | ||||
|                 user.LoginInfo.Agent = agentID; | ||||
|                 user.LoginInfo.Session = sessionID; | ||||
|                 user.LoginInfo.SecureSession = validcircuit.SecureSessionID; | ||||
|                 user.LoginInfo.First = validcircuit.firstname; | ||||
|                 user.LoginInfo.Last = validcircuit.lastname; | ||||
|                 user.LoginInfo.InventoryFolder = validcircuit.InventoryFolder; | ||||
|                 user.LoginInfo.BaseFolder = validcircuit.BaseFolder; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 // Invalid | ||||
|                 user.Authorised = false; | ||||
|             } | ||||
| 
 | ||||
|             return (user); | ||||
|         } | ||||
| 
 | ||||
|         public virtual void AddNewCircuit(uint circuitCode, AgentCircuitData agentData) | ||||
|         { | ||||
|             if (this.AgentCircuits.ContainsKey(circuitCode)) | ||||
|             { | ||||
|                 this.AgentCircuits[circuitCode] = agentData; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 this.AgentCircuits.Add(circuitCode, agentData); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public LLVector3 GetPosition(uint circuitCode) | ||||
|         { | ||||
|             LLVector3 vec = new LLVector3(); | ||||
|             if (this.AgentCircuits.ContainsKey(circuitCode)) | ||||
|             { | ||||
|                 vec = this.AgentCircuits[circuitCode].startpos; | ||||
|             } | ||||
|             return vec; | ||||
|         } | ||||
| 
 | ||||
|         public void UpdateAgentData(AgentCircuitData agentData) | ||||
|         { | ||||
|             if (this.AgentCircuits.ContainsKey((uint)agentData.circuitcode)) | ||||
|             { | ||||
|                 this.AgentCircuits[(uint)agentData.circuitcode].firstname = agentData.firstname; | ||||
|                 this.AgentCircuits[(uint)agentData.circuitcode].lastname = agentData.lastname; | ||||
|                 this.AgentCircuits[(uint)agentData.circuitcode].startpos = agentData.startpos; | ||||
|                // Console.WriteLine("update user start pos is " + agentData.startpos.X + " , " + agentData.startpos.Y + " , " + agentData.startpos.Z); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public void UpdateAgentChildStatus(uint circuitcode, bool childstatus) | ||||
|         { | ||||
|             if (this.AgentCircuits.ContainsKey(circuitcode)) | ||||
|             { | ||||
|                 this.AgentCircuits[circuitcode].child = childstatus; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public bool GetAgentChildStatus(uint circuitcode) | ||||
|         { | ||||
|             if (this.AgentCircuits.ContainsKey(circuitcode)) | ||||
|             { | ||||
|                 return this.AgentCircuits[circuitcode].child; | ||||
|             } | ||||
|             return false; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,58 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using System.Threading; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Utilities | ||||
| { | ||||
|     public class BlockingQueue<T> | ||||
|     { | ||||
|         private Queue<T> _queue = new Queue<T>(); | ||||
|         private object _queueSync = new object(); | ||||
| 
 | ||||
|         public void Enqueue(T value) | ||||
|         { | ||||
|             lock (_queueSync) | ||||
|             { | ||||
|                 _queue.Enqueue(value); | ||||
|                 Monitor.Pulse(_queueSync); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public T Dequeue() | ||||
|         { | ||||
|             lock (_queueSync) | ||||
|             { | ||||
|                 if (_queue.Count < 1) | ||||
|                     Monitor.Wait(_queueSync); | ||||
| 
 | ||||
|                 return _queue.Dequeue(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,31 +0,0 @@ | |||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Text; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| 
 | ||||
| namespace OpenSim.Framework | ||||
| { | ||||
|     public delegate void ForEachClientDelegate( IClientAPI client ); | ||||
|     public class ClientManager | ||||
|     { | ||||
|         private Dictionary<uint, IClientAPI> m_clients; | ||||
|                  | ||||
|         public void ForEachClient(ForEachClientDelegate whatToDo) | ||||
|         { | ||||
|             foreach (IClientAPI client in m_clients.Values) | ||||
|             { | ||||
|                 whatToDo(client); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         public ClientManager() | ||||
|         { | ||||
|             m_clients = new Dictionary<uint, IClientAPI>(); | ||||
|         } | ||||
| 
 | ||||
|         public void Add(uint id, IClientAPI client ) | ||||
|         { | ||||
|             m_clients.Add( id, client ); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,46 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using libsecondlife; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| using OpenSim.Framework.Types; | ||||
| 
 | ||||
| namespace OpenSim.Framework | ||||
| { | ||||
|     public delegate void ExpectUserDelegate(ulong regionHandle, AgentCircuitData agent); | ||||
|     public delegate void UpdateNeighbours(List<RegionInfo> neighbours); | ||||
|     public delegate void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position); | ||||
| 
 | ||||
|     public interface IRegionCommsListener | ||||
|     { | ||||
|         event ExpectUserDelegate OnExpectUser; | ||||
|         event GenericCall2 OnExpectChildAgent; | ||||
|         event AgentCrossing OnAvatarCrossingIntoRegion; | ||||
|         event UpdateNeighbours OnNeighboursUpdate; | ||||
|     } | ||||
| } | ||||
|  | @ -1,43 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 OpenSim.Framework.Types; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Interfaces | ||||
| { | ||||
|     public class AuthenticateResponse | ||||
|     { | ||||
|         public bool Authorised; | ||||
|         public Login LoginInfo; | ||||
| 
 | ||||
|         public AuthenticateResponse() | ||||
|         { | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -1,38 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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. | ||||
| *  | ||||
| */ | ||||
| namespace OpenSim.Framework.Interfaces | ||||
| { | ||||
|     public interface IGenericConfig | ||||
|     { | ||||
|         void LoadData(); | ||||
|         string GetAttribute(string attributeName); | ||||
|         bool SetAttribute(string attributeName, string attributeValue); | ||||
|         void Commit(); | ||||
|         void Close(); | ||||
|     } | ||||
| } | ||||
|  | @ -1,59 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 OpenSim.world; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Interfaces | ||||
| { | ||||
|     /// <summary> | ||||
|     /// </summary> | ||||
| 
 | ||||
| 
 | ||||
|     public abstract class GridConfig | ||||
|     { | ||||
| 	public string GridOwner; | ||||
|         public string DefaultStartupMsg; | ||||
|         public string DefaultAssetServer; | ||||
|         public string AssetSendKey; | ||||
|         public string AssetRecvKey; | ||||
|         public string DefaultUserServer; | ||||
|         public string UserSendKey; | ||||
|         public string UserRecvKey; | ||||
|         public string SimSendKey; | ||||
|         public string SimRecvKey; | ||||
| 
 | ||||
| 
 | ||||
|         public abstract void InitConfig(); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     public interface IGridConfig | ||||
|     { | ||||
|         GridConfig GetConfigObject(); | ||||
|     } | ||||
| } | ||||
|  | @ -1,53 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 OpenSim.world; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Interfaces | ||||
| { | ||||
|     /// <summary> | ||||
|     /// </summary> | ||||
| 
 | ||||
| 
 | ||||
|     public abstract class UserConfig | ||||
|     { | ||||
|         public string DefaultStartupMsg; | ||||
|         public string GridServerURL; | ||||
|         public string GridSendKey; | ||||
|         public string GridRecvKey; | ||||
| 
 | ||||
| 
 | ||||
|         public abstract void InitConfig(); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     public interface IUserConfig | ||||
|     { | ||||
|         UserConfig GetConfigObject(); | ||||
|     } | ||||
| } | ||||
|  | @ -1,64 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| using OpenSim.Framework.Types; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Interfaces | ||||
| { | ||||
|     /// <summary> | ||||
|     /// Description of IAssetServer. | ||||
|     /// </summary> | ||||
| 
 | ||||
|     public interface IAssetServer | ||||
|     { | ||||
|         void SetReceiver(IAssetReceiver receiver); | ||||
|         void RequestAsset(LLUUID assetID, bool isTexture); | ||||
|         void UpdateAsset(AssetBase asset); | ||||
|         void UploadNewAsset(AssetBase asset); | ||||
|         void SetServerInfo(string ServerUrl, string ServerKey); | ||||
|         void Close(); | ||||
|     } | ||||
| 
 | ||||
|     // could change to delegate? | ||||
|     public interface IAssetReceiver | ||||
|     { | ||||
|         void AssetReceived(AssetBase asset, bool IsTexture); | ||||
|         void AssetNotFound(AssetBase asset); | ||||
|     } | ||||
| 
 | ||||
|     public interface IAssetPlugin | ||||
|     { | ||||
|         IAssetServer GetAssetServer(); | ||||
|     } | ||||
| 
 | ||||
|     public struct ARequest | ||||
|     { | ||||
|         public LLUUID AssetID; | ||||
|         public bool IsTexture; | ||||
|     } | ||||
| } | ||||
|  | @ -1,178 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using System.Net; | ||||
| using libsecondlife; | ||||
| using libsecondlife.Packets; | ||||
| using OpenSim.Framework.Types; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Interfaces | ||||
| { | ||||
|     public delegate void ChatFromViewer(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID); | ||||
|     public delegate void ImprovedInstantMessage(LLUUID fromAgentID, LLUUID toAgentID, uint timestamp, string fromAgentName, string message); // Cut down from full list | ||||
|     public delegate void RezObject(AssetBase primAsset, LLVector3 pos); | ||||
|     public delegate void ModifyTerrain(float height, float seconds, byte size, byte action, float north, float west); | ||||
|     public delegate void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam); | ||||
|     public delegate void StartAnim(LLUUID animID, int seq); | ||||
|     public delegate void LinkObjects(uint parent, List<uint> children); | ||||
|     public delegate void RequestMapBlocks(IClientAPI remoteClient, int minX, int minY, int maxX, int maxY); | ||||
|     public delegate void TeleportLocationRequest(IClientAPI remoteClient, ulong regionHandle, LLVector3 position, LLVector3 lookAt, uint flags); | ||||
| 
 | ||||
|     public delegate void GenericCall(IClientAPI remoteClient); | ||||
|     public delegate void GenericCall2(); | ||||
|     public delegate void GenericCall3(Packet packet); // really don't want to be passing packets in these events, so this is very temporary. | ||||
|     public delegate void GenericCall4(Packet packet, IClientAPI remoteClient); | ||||
|     public delegate void GenericCall5(IClientAPI remoteClient, bool status); | ||||
|     public delegate void GenericCall6(LLUUID uid); | ||||
|     public delegate void GenericCall7(uint localID, string message); | ||||
| 
 | ||||
|     public delegate void UpdateShape(uint localID, ObjectShapePacket.ObjectDataBlock shapeBlock); | ||||
|     public delegate void ObjectSelect(uint localID, IClientAPI remoteClient); | ||||
|     public delegate void UpdatePrimFlags(uint localID, Packet packet, IClientAPI remoteClient); | ||||
|     public delegate void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient); | ||||
|     public delegate void UpdateVector(uint localID, LLVector3 pos, IClientAPI remoteClient); | ||||
|     public delegate void UpdatePrimRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient); | ||||
|     public delegate void UpdatePrimSingleRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient); | ||||
|     public delegate void UpdatePrimGroupRotation(uint localID,LLVector3 pos, LLQuaternion rot, IClientAPI remoteClient); | ||||
|     public delegate void ObjectDuplicate(uint localID, LLVector3 offset, uint dupeFlags); | ||||
|     public delegate void StatusChange(bool status); | ||||
|     public delegate void NewAvatar(IClientAPI remoteClient, LLUUID agentID, bool status); | ||||
|     public delegate void UpdateAgent(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation); | ||||
|     public delegate void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 grapPos, IClientAPI remoteClient); | ||||
| 
 | ||||
|     public delegate void ParcelPropertiesRequest(int start_x, int start_y, int end_x, int end_y, int sequence_id, bool snap_selection, IClientAPI remote_client); | ||||
|     public delegate void ParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client); | ||||
|     public delegate void ParcelJoinRequest(int west, int south, int east, int north, IClientAPI remote_client); | ||||
|     public delegate void ParcelPropertiesUpdateRequest(ParcelPropertiesUpdatePacket packet, IClientAPI remote_client); // NOTETOSELFremove the packet part | ||||
| 
 | ||||
|     public delegate void EstateOwnerMessageRequest(EstateOwnerMessagePacket packet, IClientAPI remote_client); | ||||
| 
 | ||||
|     public delegate void UUIDNameRequest(LLUUID id, IClientAPI remote_client); | ||||
| 
 | ||||
|     public interface IClientAPI | ||||
|     { | ||||
|         event ImprovedInstantMessage OnInstantMessage; | ||||
|         event ChatFromViewer OnChatFromViewer; | ||||
|         event RezObject OnRezObject; | ||||
|         event ModifyTerrain OnModifyTerrain; | ||||
|         event SetAppearance OnSetAppearance; | ||||
|         event StartAnim OnStartAnim; | ||||
|         event LinkObjects OnLinkObjects; | ||||
|         event RequestMapBlocks OnRequestMapBlocks; | ||||
|         event TeleportLocationRequest OnTeleportLocationRequest; | ||||
| 
 | ||||
|         event GenericCall4 OnDeRezObject; | ||||
|         event GenericCall OnRegionHandShakeReply; | ||||
|         event GenericCall OnRequestWearables; | ||||
|         event GenericCall2 OnCompleteMovementToRegion; | ||||
|         event UpdateAgent OnAgentUpdate; | ||||
|         event GenericCall OnRequestAvatarsData; | ||||
|         event GenericCall4 OnAddPrim; | ||||
|         event ObjectDuplicate OnObjectDuplicate; | ||||
|         event UpdateVector OnGrapObject; | ||||
|         event ObjectSelect OnDeGrapObject; | ||||
|         event MoveObject OnGrapUpdate; | ||||
| 
 | ||||
|         event UpdateShape OnUpdatePrimShape; | ||||
|         event ObjectSelect OnObjectSelect; | ||||
|         event GenericCall7 OnObjectDescription; | ||||
|         event GenericCall7 OnObjectName; | ||||
|         event UpdatePrimFlags OnUpdatePrimFlags; | ||||
|         event UpdatePrimTexture OnUpdatePrimTexture; | ||||
|         event UpdateVector OnUpdatePrimGroupPosition; | ||||
|         event UpdateVector OnUpdatePrimSinglePosition; | ||||
|         event UpdatePrimRotation OnUpdatePrimGroupRotation; | ||||
|         event UpdatePrimSingleRotation OnUpdatePrimSingleRotation; | ||||
|         event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation; | ||||
|         event UpdateVector OnUpdatePrimScale; | ||||
|         event StatusChange OnChildAgentStatus; | ||||
|         event GenericCall2 OnStopMovement; | ||||
|         event NewAvatar OnNewAvatar; | ||||
|         event GenericCall6 OnRemoveAvatar; | ||||
| 
 | ||||
|         event UUIDNameRequest OnNameFromUUIDRequest; | ||||
| 
 | ||||
|         event ParcelPropertiesRequest OnParcelPropertiesRequest; | ||||
|         event ParcelDivideRequest OnParcelDivideRequest; | ||||
|         event ParcelJoinRequest OnParcelJoinRequest; | ||||
|         event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest; | ||||
| 
 | ||||
|         event EstateOwnerMessageRequest OnEstateOwnerMessage; | ||||
| 
 | ||||
|         LLVector3 StartPos | ||||
|         { | ||||
|             get; | ||||
|             set; | ||||
|         } | ||||
| 
 | ||||
|         LLUUID AgentId | ||||
|         { | ||||
|             get; | ||||
|         } | ||||
| 
 | ||||
|         string FirstName | ||||
|         { | ||||
|             get; | ||||
|         } | ||||
| 
 | ||||
|         string LastName | ||||
|         { | ||||
|             get; | ||||
|         } | ||||
| 
 | ||||
|         void OutPacket(Packet newPack); | ||||
|         void SendWearables(AvatarWearable[] wearables); | ||||
|         void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId); | ||||
|         void SendRegionHandshake(RegionInfo regionInfo); | ||||
|         void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID); | ||||
|         void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID); | ||||
|         void SendInstantMessage(string message, LLUUID target); | ||||
|         void SendLayerData(float[] map); | ||||
|         void SendLayerData(int px, int py, float[] map); | ||||
|         void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look); | ||||
|         void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint ); | ||||
|         AgentCircuitData RequestClientInfo(); | ||||
|         void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint newRegionExternalEndPoint ); | ||||
|         void SendMapBlock(List<MapBlockData> mapBlocks); | ||||
|         void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags); | ||||
|         void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags); | ||||
|         void SendTeleportCancel(); | ||||
|         void SendTeleportLocationStart(); | ||||
|         void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance); | ||||
| 
 | ||||
|         void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry); | ||||
|         void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity); | ||||
| 
 | ||||
|         void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint); | ||||
|         void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID , uint flags); | ||||
|         void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags); | ||||
|         void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLQuaternion rotation, LLUUID textureID, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID); | ||||
|         void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLUUID textureID, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID); | ||||
|         void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation); | ||||
|     } | ||||
| } | ||||
|  | @ -1,68 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| using OpenSim.Framework.Types; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Interfaces | ||||
| { | ||||
|     /// <summary> | ||||
|     /// ILocalStorage. Really hacked together right now needs cleaning up | ||||
|     /// </summary> | ||||
|     public interface ILocalStorage | ||||
|     { | ||||
|         void Initialise(string datastore); | ||||
| 
 | ||||
|         void StorePrim(PrimData prim); | ||||
|         void RemovePrim(LLUUID primID); | ||||
|         void LoadPrimitives(ILocalStorageReceiver receiver); | ||||
| 
 | ||||
|         float[] LoadWorld(); | ||||
|         void SaveMap(float[] heightmap); | ||||
| 
 | ||||
|         void SaveParcels(ParcelData[] parcels); | ||||
|         void SaveParcel(ParcelData parcel); | ||||
|         void RemoveParcel(ParcelData parcel); | ||||
|         void RemoveAllParcels(); | ||||
|         void LoadParcels(ILocalStorageParcelReceiver recv); | ||||
| 
 | ||||
|         void ShutDown(); | ||||
|     } | ||||
| 
 | ||||
|     public interface ILocalStorageReceiver | ||||
|     { | ||||
|         void PrimFromStorage(PrimData prim); | ||||
|     } | ||||
| 
 | ||||
|     public interface ILocalStorageParcelReceiver | ||||
|     { | ||||
|         void ParcelFromStorage(ParcelData data); | ||||
|         void NoParcelDataFromStorage(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | @ -1,39 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| using OpenSim.Framework.Inventory; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Interfaces | ||||
| { | ||||
|     public interface IUserServer | ||||
|     { | ||||
|         AgentInventory RequestAgentsInventory(LLUUID agentID); | ||||
|         void SetServerInfo(string ServerUrl, string SendKey, string RecvKey); | ||||
|         bool UpdateAgentsInventory(LLUUID agentID, AgentInventory inventory); | ||||
|     } | ||||
| } | ||||
|  | @ -1,42 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| using OpenSim.Framework.Types; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Interfaces | ||||
| { | ||||
|     public interface IWorld | ||||
|     { | ||||
|         void AddNewClient(IClientAPI client, bool child); | ||||
|         void RemoveClient(LLUUID agentID); | ||||
|          | ||||
|         RegionInfo RegionInfo { get; } | ||||
|         object SyncRoot { get; } | ||||
|         uint NextLocalId { get; } | ||||
|     } | ||||
| } | ||||
|  | @ -1,34 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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. | ||||
| *  | ||||
| */ | ||||
| namespace OpenSim.Framework.Grid | ||||
| { | ||||
|     public abstract class LoginService | ||||
|     { | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -1,31 +0,0 @@ | |||
| using System.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| [assembly: AssemblyTitle("OpenSim.FrameWork")] | ||||
| [assembly: AssemblyDescription("")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("")] | ||||
| [assembly: AssemblyProduct("OpenSim.FrameWork")] | ||||
| [assembly: AssemblyCopyright("Copyright ©  2007")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")] | ||||
| 
 | ||||
| // Setting ComVisible to false makes the types in this assembly not visible  | ||||
| // to COM components.  If you need to access a type in this assembly from  | ||||
| // COM, set the ComVisible attribute to true on that type. | ||||
| [assembly: ComVisible(false)] | ||||
| 
 | ||||
| // The following GUID is for the ID of the typelib if this project is exposed to COM | ||||
| [assembly: Guid("a08e20c7-f191-4137-b1f0-9291408fa521")] | ||||
| 
 | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
| [assembly: AssemblyVersion("1.0.0.0")] | ||||
| [assembly: AssemblyFileVersion("1.0.0.0")] | ||||
|  | @ -1,68 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| using OpenSim.Framework.Types; | ||||
| 
 | ||||
| namespace OpenSim.Framework | ||||
| { | ||||
|     public class RegionCommsListener :IRegionCommsListener | ||||
|     { | ||||
|         public event ExpectUserDelegate OnExpectUser; | ||||
|         public event GenericCall2 OnExpectChildAgent; | ||||
|         public event AgentCrossing OnAvatarCrossingIntoRegion; | ||||
|         public event UpdateNeighbours OnNeighboursUpdate; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         ///  | ||||
|         /// </summary> | ||||
|         /// <param name="agent"></param> | ||||
|         /// <returns></returns> | ||||
|         public virtual bool TriggerExpectUser(ulong regionHandle, AgentCircuitData  agent) | ||||
|         { | ||||
|             if(OnExpectUser != null) | ||||
|             { | ||||
|                  | ||||
|                 OnExpectUser(regionHandle, agent); | ||||
|                 return true; | ||||
|             } | ||||
| 
 | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         public virtual bool TriggerExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position) | ||||
|         { | ||||
|             if (OnAvatarCrossingIntoRegion != null) | ||||
|             { | ||||
|                 OnAvatarCrossingIntoRegion(regionHandle, agentID, position); | ||||
|                 return true; | ||||
|             } | ||||
|             return false; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,135 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Security.Cryptography; | ||||
| using System.Text; | ||||
| 
 | ||||
| namespace OpenSim.Framework | ||||
| { | ||||
|     /// <summary> | ||||
|     /// NEEDS AUDIT. | ||||
|     /// </summary> | ||||
|     /// <remarks> | ||||
|     /// Suggested implementation | ||||
|     /// <para>Store two digests for each foreign host. A local copy of the local hash using the local challenge (when issued), and a local copy of the remote hash using the remote challenge.</para> | ||||
|     /// <para>When sending data to the foreign host - run 'Sign' on the data and affix the returned byte[] to the message.</para> | ||||
|     /// <para>When recieving data from the foreign host - run 'Authenticate' against the data and the attached byte[].</para> | ||||
|     /// <para>Both hosts should be performing these operations for this to be effective.</para> | ||||
|     /// </remarks> | ||||
|     class RemoteDigest | ||||
|     { | ||||
|         private byte[] currentHash; | ||||
|         private byte[] secret; | ||||
| 
 | ||||
|         private SHA512Managed SHA512; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises a new RemoteDigest authentication mechanism | ||||
|         /// </summary> | ||||
|         /// <remarks>Needs an audit by a cryptographic professional - was not "roll your own"'d by choice but rather a serious lack of decent authentication mechanisms in .NET remoting</remarks> | ||||
|         /// <param name="sharedSecret">The shared secret between systems (for inter-sim, this is provided in encrypted form during connection, for grid this is input manually in setup)</param> | ||||
|         /// <param name="salt">Binary salt - some common value - to be decided what</param> | ||||
|         /// <param name="challenge">The challenge key provided by the third party</param> | ||||
|         public RemoteDigest(string sharedSecret, byte[] salt, string challenge) | ||||
|         { | ||||
|             SHA512 = new SHA512Managed(); | ||||
|             Rfc2898DeriveBytes RFC2898 = new Rfc2898DeriveBytes(sharedSecret,salt); | ||||
|             secret = RFC2898.GetBytes(512); | ||||
|             ASCIIEncoding ASCII = new ASCIIEncoding(); | ||||
| 
 | ||||
|             currentHash = SHA512.ComputeHash(AppendArrays(secret, ASCII.GetBytes(challenge))); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Authenticates a piece of incoming data against the local digest. Upon successful authentication, digest string is incremented. | ||||
|         /// </summary> | ||||
|         /// <param name="data">The incoming data</param> | ||||
|         /// <param name="digest">The remote digest</param> | ||||
|         /// <returns></returns> | ||||
|         public bool Authenticate(byte[] data, byte[] digest) | ||||
|         { | ||||
|             byte[] newHash = SHA512.ComputeHash(AppendArrays(AppendArrays(currentHash, secret), data)); | ||||
|             if (digest == newHash) | ||||
|             { | ||||
|                 currentHash = newHash; | ||||
|                 return true; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 throw new Exception("Hash comparison failed. Key resync required."); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Signs a new bit of data with the current hash. Returns a byte array which should be affixed to the message. | ||||
|         /// Signing a piece of data will automatically increment the hash - if you sign data and do not send it, the  | ||||
|         /// hashes will get out of sync and throw an exception when validation is attempted. | ||||
|         /// </summary> | ||||
|         /// <param name="data">The outgoing data</param> | ||||
|         /// <returns>The local digest</returns> | ||||
|         public byte[] Sign(byte[] data) | ||||
|         { | ||||
|             currentHash = SHA512.ComputeHash(AppendArrays(AppendArrays(currentHash, secret), data)); | ||||
|             return currentHash; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Generates a new challenge string to be issued to a foreign host. Challenges are 1024-bit (effective strength of less than 512-bits) messages generated using the Crytographic Random Number Generator. | ||||
|         /// </summary> | ||||
|         /// <returns>A 128-character hexadecimal string containing the challenge.</returns> | ||||
|         public static string GenerateChallenge() | ||||
|         { | ||||
|             RNGCryptoServiceProvider RNG = new RNGCryptoServiceProvider(); | ||||
|             byte[] bytes = new byte[64]; | ||||
|             RNG.GetBytes(bytes); | ||||
| 
 | ||||
|             StringBuilder sb = new StringBuilder(bytes.Length * 2); | ||||
|             foreach (byte b in bytes) | ||||
|             { | ||||
|                 sb.AppendFormat("{0:x2}", b); | ||||
|             } | ||||
|             return sb.ToString(); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Helper function, merges two byte arrays | ||||
|         /// </summary> | ||||
|         /// <remarks>Sourced from MSDN Forum</remarks> | ||||
|         /// <param name="a">A</param> | ||||
|         /// <param name="b">B</param> | ||||
|         /// <returns>C</returns> | ||||
|         private byte[] AppendArrays(byte[] a, byte[] b) | ||||
|         { | ||||
|             byte[] c = new byte[a.Length + b.Length]; | ||||
|             Buffer.BlockCopy(a, 0, c, 0, a.Length); | ||||
|             Buffer.BlockCopy(b, 0, c, a.Length, b.Length); | ||||
|             return c; | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -1,47 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|     public class AgentCircuitData | ||||
|     { | ||||
|         public AgentCircuitData() { } | ||||
|         public LLUUID AgentID; | ||||
|         public LLUUID SessionID; | ||||
|         public LLUUID SecureSessionID; | ||||
|         public LLVector3 startpos; | ||||
|         public string firstname; | ||||
|         public string lastname; | ||||
|         public uint circuitcode; | ||||
|         public bool child; | ||||
|         public LLUUID InventoryFolder; | ||||
|         public LLUUID BaseFolder; | ||||
|         public string CapsPath = "";  | ||||
|     } | ||||
| } | ||||
|  | @ -1,57 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|     public class AvatarWearable | ||||
|     { | ||||
|         public LLUUID AssetID = new LLUUID("00000000-0000-0000-0000-000000000000"); | ||||
|         public LLUUID ItemID = new LLUUID("00000000-0000-0000-0000-000000000000"); | ||||
| 
 | ||||
|         public AvatarWearable() | ||||
|         { | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         public static AvatarWearable[] DefaultWearables | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 AvatarWearable[] defaultWearables =  new AvatarWearable[13]; //should be 13 of these | ||||
|                 for (int i = 0; i < 13; i++) | ||||
|                 { | ||||
|                     defaultWearables[i] = new AvatarWearable(); | ||||
|                 } | ||||
|                 defaultWearables[0].AssetID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73"); | ||||
|                 defaultWearables[0].ItemID = LLUUID.Random(); | ||||
|                 return defaultWearables; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,46 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|     public class AssetBase | ||||
|     { | ||||
|         public byte[] Data; | ||||
|         public LLUUID FullID; | ||||
|         public sbyte Type; | ||||
|         public sbyte InvType; | ||||
|         public string Name; | ||||
|         public string Description; | ||||
| 
 | ||||
|         public AssetBase() | ||||
|         { | ||||
| 
 | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,59 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Text; | ||||
| using libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|     public class AssetLandmark : AssetBase | ||||
|     { | ||||
|         public int Version; | ||||
|         public LLVector3 Position; | ||||
|         public LLUUID RegionID; | ||||
| 
 | ||||
|         public AssetLandmark(AssetBase a) | ||||
|         { | ||||
|             this.Data = a.Data; | ||||
|             this.FullID = a.FullID; | ||||
|             this.Type = a.Type; | ||||
|             this.InvType = a.InvType; | ||||
|             this.Name = a.Name; | ||||
|             this.Description = a.Description; | ||||
|             InternData(); | ||||
|         } | ||||
| 
 | ||||
|         private void InternData() | ||||
|         { | ||||
|             string temp = Encoding.UTF8.GetString(Data).Trim();  | ||||
|             string[] parts = temp.Split('\n'); | ||||
|             int.TryParse(parts[0].Substring(17, 1), out Version); | ||||
|             LLUUID.TryParse(parts[1].Substring(10, 36), out RegionID); | ||||
|             LLVector3.TryParse(parts[2].Substring(11, parts[2].Length - 11), out Position); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,47 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
| 	public class AssetStorage | ||||
| 	{ | ||||
| 
 | ||||
| 		public AssetStorage() { | ||||
| 		} | ||||
| 
 | ||||
| 		public AssetStorage(LLUUID assetUUID) { | ||||
| 			UUID=assetUUID; | ||||
| 		} | ||||
| 
 | ||||
| 		public byte[] Data; | ||||
| 		public sbyte Type; | ||||
| 		public string Name; | ||||
| 		public LLUUID UUID; | ||||
| 	} | ||||
| } | ||||
|  | @ -1,93 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|     public class EstateSettings | ||||
|     { | ||||
|         //Settings to this island | ||||
|         public float billableFactor = (float)0.0; | ||||
|         public uint estateID = 0; | ||||
|         public uint parentEstateID = 0; | ||||
| 
 | ||||
|         public byte maxAgents = 40; | ||||
|         public float objectBonusFactor = (float)1.0; | ||||
| 
 | ||||
|         public int redirectGridX = 0; //?? | ||||
|         public int redirectGridY = 0; //?? | ||||
|         public Simulator.RegionFlags regionFlags = Simulator.RegionFlags.None; //Booleam values of various region settings | ||||
|         public Simulator.SimAccess simAccess = Simulator.SimAccess.Mature; //Is sim PG, Mature, etc? Mature by default. | ||||
|         public float sunHour = 0; | ||||
| 
 | ||||
|         public float terrainRaiseLimit = 0; | ||||
|         public float terrainLowerLimit = 0; | ||||
| 
 | ||||
|         public bool useFixedSun = false; | ||||
|         public int pricePerMeter = 1; | ||||
| 
 | ||||
|         public ushort regionWaterHeight = 20; | ||||
|         public bool regionAllowTerraform = true; | ||||
| 
 | ||||
|         // Region Information | ||||
|         // Low resolution 'base' textures. No longer used. | ||||
|         public LLUUID terrainBase0 = new LLUUID("b8d3965a-ad78-bf43-699b-bff8eca6c975"); // Default | ||||
|         public LLUUID terrainBase1 = new LLUUID("abb783e6-3e93-26c0-248a-247666855da3"); // Default | ||||
|         public LLUUID terrainBase2 = new LLUUID("179cdabd-398a-9b6b-1391-4dc333ba321f"); // Default | ||||
|         public LLUUID terrainBase3 = new LLUUID("beb169c7-11ea-fff2-efe5-0f24dc881df2"); // Default | ||||
| 
 | ||||
|         // Higher resolution terrain textures | ||||
|         public LLUUID terrainDetail0 = new LLUUID("00000000-0000-0000-0000-000000000000"); | ||||
|         public LLUUID terrainDetail1 = new LLUUID("00000000-0000-0000-0000-000000000000"); | ||||
|         public LLUUID terrainDetail2 = new LLUUID("00000000-0000-0000-0000-000000000000"); | ||||
|         public LLUUID terrainDetail3 = new LLUUID("00000000-0000-0000-0000-000000000000"); | ||||
| 
 | ||||
|         // First quad - each point is bilinearly interpolated at each meter of terrain | ||||
|         public float terrainStartHeight0 = 10.0f;       | ||||
|         public float terrainStartHeight1 = 10.0f;       | ||||
|         public float terrainStartHeight2 = 10.0f;        | ||||
|         public float terrainStartHeight3 = 10.0f;        | ||||
| 
 | ||||
|         // Second quad - also bilinearly interpolated. | ||||
|         // Terrain texturing is done that: | ||||
|         // 0..3 (0 = base0, 3 = base3) = (terrain[x,y] - start[x,y]) / range[x,y] | ||||
|         public float terrainHeightRange0 = 60.0f; //00 | ||||
|         public float terrainHeightRange1 = 60.0f; //01 | ||||
|         public float terrainHeightRange2 = 60.0f; //10 | ||||
|         public float terrainHeightRange3 = 60.0f; //11 | ||||
| 
 | ||||
|         // Terrain Default (Must be in F32 Format!) | ||||
|         public string terrainFile = "default.r32"; | ||||
|         public double terrainMultiplier = 60.0; | ||||
|         public float waterHeight = (float)20.0; | ||||
| 
 | ||||
|         public LLUUID terrainImageID = LLUUID.Zero; // the assetID that is the current Map image for this region | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -1,49 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|     public class Login | ||||
|     { | ||||
|         public string First = "Test"; | ||||
|         public string Last = "User"; | ||||
|         public LLUUID Agent; | ||||
|         public LLUUID Session; | ||||
|         public LLUUID SecureSession = LLUUID.Zero; | ||||
|         public LLUUID InventoryFolder; | ||||
|         public LLUUID BaseFolder; | ||||
|         public uint CircuitCode; | ||||
|         public string CapsPath =""; | ||||
| 
 | ||||
|         public Login() | ||||
|         { | ||||
| 
 | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,23 +0,0 @@ | |||
| using System; | ||||
| using libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|     public class MapBlockData | ||||
|     { | ||||
|         public uint Flags; | ||||
|         public ushort X; | ||||
|         public ushort Y; | ||||
|         public byte Agents; | ||||
|         public byte Access; | ||||
|         public byte WaterHeight; | ||||
|         public LLUUID MapImageId; | ||||
|         public String Name; | ||||
|         public uint RegionFlags; | ||||
| 
 | ||||
|         public MapBlockData() | ||||
|         { | ||||
| 
 | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,42 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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. | ||||
| *  | ||||
| */ | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|     public class NeighbourInfo | ||||
|     { | ||||
|         public NeighbourInfo() | ||||
|         { | ||||
|         } | ||||
| 
 | ||||
|         public ulong regionhandle; | ||||
|         public uint RegionLocX; | ||||
|         public uint RegionLocY; | ||||
|         public string sim_ip; | ||||
|         public uint sim_port; | ||||
|     } | ||||
| } | ||||
|  | @ -1,219 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 OpenSim.Framework.Console; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|     public class NetworkServersInfo | ||||
|     { | ||||
|         public string AssetURL = "http://127.0.0.1:8003/"; | ||||
|         public string AssetSendKey = ""; | ||||
| 
 | ||||
|         public string GridURL = ""; | ||||
|         public string GridSendKey = ""; | ||||
|         public string GridRecvKey = ""; | ||||
|         public string UserURL = ""; | ||||
|         public string UserSendKey = ""; | ||||
|         public string UserRecvKey = ""; | ||||
|         public bool isSandbox; | ||||
| 
 | ||||
|         public uint DefaultHomeLocX = 0; | ||||
|         public uint DefaultHomeLocY = 0; | ||||
| 
 | ||||
|         public int HttpListenerPort = 9000; | ||||
|         public int RemotingListenerPort = 8895; | ||||
| 
 | ||||
|         public void InitConfig(bool sandboxMode, IGenericConfig configData) | ||||
|         { | ||||
|             this.isSandbox = sandboxMode; | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|                 string attri = ""; | ||||
| 
 | ||||
|                 attri = ""; | ||||
|                 attri = configData.GetAttribute("HttpListenerPort"); | ||||
|                 if (attri == "") | ||||
|                 { | ||||
|                     string location = MainLog.Instance.CmdPrompt("Http Listener Port", "9000"); | ||||
|                     configData.SetAttribute("HttpListenerPort", location); | ||||
|                     this.HttpListenerPort = Convert.ToInt32(location); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     this.HttpListenerPort = Convert.ToInt32(attri); | ||||
|                 } | ||||
| 
 | ||||
|                 attri = ""; | ||||
|                 attri = configData.GetAttribute("RemotingListenerPort"); | ||||
|                 if (attri == "") | ||||
|                 { | ||||
|                     string location = MainLog.Instance.CmdPrompt("Remoting Listener Port", "8895"); | ||||
|                     configData.SetAttribute("RemotingListenerPort", location); | ||||
|                     this.RemotingListenerPort = Convert.ToInt32(location); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     this.RemotingListenerPort = Convert.ToInt32(attri); | ||||
|                 } | ||||
| 
 | ||||
|                 if (sandboxMode) | ||||
|                 { | ||||
|                     // default home location X | ||||
|                     attri = ""; | ||||
|                     attri = configData.GetAttribute("DefaultLocationX"); | ||||
|                     if (attri == "") | ||||
|                     { | ||||
|                         string location = MainLog.Instance.CmdPrompt("Default Home Location X", "1000"); | ||||
|                         configData.SetAttribute("DefaultLocationX", location); | ||||
|                         this.DefaultHomeLocX = (uint)Convert.ToUInt32(location); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         this.DefaultHomeLocX = (uint)Convert.ToUInt32(attri); | ||||
|                     } | ||||
| 
 | ||||
|                     // default home location Y | ||||
|                     attri = ""; | ||||
|                     attri = configData.GetAttribute("DefaultLocationY"); | ||||
|                     if (attri == "") | ||||
|                     { | ||||
|                         string location = MainLog.Instance.CmdPrompt("Default Home Location Y", "1000"); | ||||
|                         configData.SetAttribute("DefaultLocationY", location); | ||||
|                         this.DefaultHomeLocY = (uint)Convert.ToUInt32(location); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         this.DefaultHomeLocY = (uint)Convert.ToUInt32(attri); | ||||
|                     } | ||||
|                 } | ||||
|                 if (!isSandbox) | ||||
|                 { | ||||
|                     //Grid Server  | ||||
|                     attri = ""; | ||||
|                     attri = configData.GetAttribute("GridServerURL"); | ||||
|                     if (attri == "") | ||||
|                     { | ||||
|                         this.GridURL = MainLog.Instance.CmdPrompt("Grid server URL", "http://127.0.0.1:8001/"); | ||||
|                         configData.SetAttribute("GridServerURL", this.GridURL); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         this.GridURL = attri; | ||||
|                     } | ||||
| 
 | ||||
|                     //Grid Send Key | ||||
|                     attri = ""; | ||||
|                     attri = configData.GetAttribute("GridSendKey"); | ||||
|                     if (attri == "") | ||||
|                     { | ||||
|                         this.GridSendKey = MainLog.Instance.CmdPrompt("Key to send to grid server", "null"); | ||||
|                         configData.SetAttribute("GridSendKey", this.GridSendKey); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         this.GridSendKey = attri; | ||||
|                     } | ||||
| 
 | ||||
|                     //Grid Receive Key | ||||
|                     attri = ""; | ||||
|                     attri = configData.GetAttribute("GridRecvKey"); | ||||
|                     if (attri == "") | ||||
|                     { | ||||
|                         this.GridRecvKey = MainLog.Instance.CmdPrompt("Key to expect from grid server", "null"); | ||||
|                         configData.SetAttribute("GridRecvKey", this.GridRecvKey); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         this.GridRecvKey = attri; | ||||
|                     } | ||||
| 
 | ||||
|                     //Grid Server  | ||||
|                     attri = ""; | ||||
|                     attri = configData.GetAttribute("UserServerURL"); | ||||
|                     if (attri == "") | ||||
|                     { | ||||
|                         this.UserURL= MainLog.Instance.CmdPrompt("User server URL", "http://127.0.0.1:8002/"); | ||||
|                         configData.SetAttribute("UserServerURL", this.UserURL); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         this.UserURL = attri; | ||||
|                     } | ||||
| 
 | ||||
|                     //Grid Send Key | ||||
|                     attri = ""; | ||||
|                     attri = configData.GetAttribute("UserSendKey"); | ||||
|                     if (attri == "") | ||||
|                     { | ||||
|                         this.UserSendKey = MainLog.Instance.CmdPrompt("Key to send to user server", "null"); | ||||
|                         configData.SetAttribute("UserSendKey", this.UserSendKey); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         this.UserSendKey = attri; | ||||
|                     } | ||||
| 
 | ||||
|                     //Grid Receive Key | ||||
|                     attri = ""; | ||||
|                     attri = configData.GetAttribute("UserRecvKey"); | ||||
|                     if (attri == "") | ||||
|                     { | ||||
|                         this.UserRecvKey = MainLog.Instance.CmdPrompt("Key to expect from user server", "null"); | ||||
|                         configData.SetAttribute("GridRecvKey", this.UserRecvKey); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         this.UserRecvKey = attri; | ||||
|                     } | ||||
| 
 | ||||
|                     attri = ""; | ||||
|                     attri = configData.GetAttribute("AssetServerURL"); | ||||
|                     if (attri == "") | ||||
|                     { | ||||
|                         this.AssetURL = MainLog.Instance.CmdPrompt("Asset server URL", "http://127.0.0.1:8003/"); | ||||
|                         configData.SetAttribute("AssetServerURL", this.GridURL); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         this.AssetURL = attri; | ||||
|                     } | ||||
| 
 | ||||
|                 } | ||||
|                 configData.Commit(); | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured"); | ||||
|                 MainLog.Instance.Warn(e.ToString()); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,112 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|      | ||||
|         public class ParcelData | ||||
|         { | ||||
|             public byte[] parcelBitmapByteArray = new byte[512]; | ||||
|             public string parcelName = ""; | ||||
|             public string parcelDesc = ""; | ||||
|             public LLUUID ownerID = new LLUUID(); | ||||
|             public bool isGroupOwned = false; | ||||
|             public LLVector3 AABBMin = new LLVector3(); | ||||
|             public LLVector3 AABBMax = new LLVector3(); | ||||
|             public int area = 0; | ||||
|             public uint auctionID = 0; //Unemplemented. If set to 0, not being auctioned | ||||
|             public LLUUID authBuyerID = new LLUUID(); //Unemplemented. Authorized Buyer's UUID | ||||
|             public Parcel.ParcelCategory category = new Parcel.ParcelCategory(); //Unemplemented. Parcel's chosen category | ||||
|             public int claimDate = 0; //Unemplemented | ||||
|             public int claimPrice = 0; //Unemplemented | ||||
|             public LLUUID groupID = new LLUUID(); //Unemplemented | ||||
|             public int groupPrims = 0; //Unemplemented | ||||
|             public int salePrice = 0; //Unemeplemented. Parcels price. | ||||
|             public Parcel.ParcelStatus parcelStatus = Parcel.ParcelStatus.None; | ||||
|             public Parcel.ParcelFlags parcelFlags = Parcel.ParcelFlags.None; | ||||
|             public byte landingType = 0; | ||||
|             public byte mediaAutoScale = 0; | ||||
|             public LLUUID mediaID = LLUUID.Zero; | ||||
|             public int localID = 0; | ||||
|             public LLUUID globalID = new LLUUID(); | ||||
| 
 | ||||
|             public string mediaURL = ""; | ||||
|             public string musicURL = ""; | ||||
|             public float passHours = 0; | ||||
|             public int passPrice = 0; | ||||
|             public LLUUID snapshotID = LLUUID.Zero; | ||||
|             public LLVector3 userLocation = new LLVector3(); | ||||
|             public LLVector3 userLookAt = new LLVector3(); | ||||
| 
 | ||||
|             public ParcelData() | ||||
|             { | ||||
|                 globalID = LLUUID.Random(); | ||||
|             } | ||||
| 
 | ||||
|             public ParcelData Copy() | ||||
|             { | ||||
|                 ParcelData parcelData = new ParcelData(); | ||||
| 
 | ||||
|                 parcelData.AABBMax = this.AABBMax; | ||||
|                 parcelData.AABBMin = this.AABBMin; | ||||
|                 parcelData.area = this.area; | ||||
|                 parcelData.auctionID = this.auctionID; | ||||
|                 parcelData.authBuyerID = this.authBuyerID; | ||||
|                 parcelData.category = this.category; | ||||
|                 parcelData.claimDate = this.claimDate; | ||||
|                 parcelData.claimPrice = this.claimPrice; | ||||
|                 parcelData.globalID = this.globalID; | ||||
|                 parcelData.groupID = this.groupID; | ||||
|                 parcelData.groupPrims = this.groupPrims; | ||||
|                 parcelData.isGroupOwned = this.isGroupOwned; | ||||
|                 parcelData.localID = this.localID; | ||||
|                 parcelData.landingType = this.landingType; | ||||
|                 parcelData.mediaAutoScale = this.mediaAutoScale; | ||||
|                 parcelData.mediaID = this.mediaID; | ||||
|                 parcelData.mediaURL = this.mediaURL; | ||||
|                 parcelData.musicURL = this.musicURL; | ||||
|                 parcelData.ownerID = this.ownerID; | ||||
|                 parcelData.parcelBitmapByteArray = (byte[])this.parcelBitmapByteArray.Clone(); | ||||
|                 parcelData.parcelDesc = this.parcelDesc; | ||||
|                 parcelData.parcelFlags = this.parcelFlags; | ||||
|                 parcelData.parcelName = this.parcelName; | ||||
|                 parcelData.parcelStatus = this.parcelStatus; | ||||
|                 parcelData.passHours = this.passHours; | ||||
|                 parcelData.passPrice = this.passPrice; | ||||
|                 parcelData.salePrice = this.salePrice; | ||||
|                 parcelData.snapshotID = this.snapshotID; | ||||
|                 parcelData.userLocation = this.userLocation; | ||||
|                 parcelData.userLookAt = this.userLookAt; | ||||
| 
 | ||||
|                 return parcelData; | ||||
|             | ||||
|             } | ||||
|         } | ||||
|      | ||||
| } | ||||
|  | @ -1,228 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|     public class PrimData | ||||
|     { | ||||
|         private const uint FULL_MASK_PERMISSIONS = 2147483647; | ||||
| 
 | ||||
|         public LLUUID OwnerID; | ||||
|         public byte PCode; | ||||
|         public ushort PathBegin; | ||||
|         public ushort PathEnd; | ||||
|         public byte PathScaleX; | ||||
|         public byte PathScaleY; | ||||
|         public byte PathShearX; | ||||
|         public byte PathShearY; | ||||
|         public sbyte PathSkew; | ||||
|         public ushort ProfileBegin; | ||||
|         public ushort ProfileEnd; | ||||
|         public LLVector3 Scale; | ||||
|         public byte PathCurve; | ||||
|         public byte ProfileCurve; | ||||
|         public uint ParentID = 0; | ||||
|         public ushort ProfileHollow; | ||||
|         public sbyte PathRadiusOffset; | ||||
|         public byte PathRevolutions; | ||||
|         public sbyte PathTaperX; | ||||
|         public sbyte PathTaperY; | ||||
|         public sbyte PathTwist; | ||||
|         public sbyte PathTwistBegin; | ||||
|         public byte[] TextureEntry; // a LL textureEntry in byte[] format | ||||
| 
 | ||||
|         public Int32 CreationDate; | ||||
|         public uint OwnerMask = FULL_MASK_PERMISSIONS; | ||||
|         public uint NextOwnerMask = FULL_MASK_PERMISSIONS; | ||||
|         public uint GroupMask = FULL_MASK_PERMISSIONS; | ||||
|         public uint EveryoneMask = FULL_MASK_PERMISSIONS; | ||||
|         public uint BaseMask = FULL_MASK_PERMISSIONS; | ||||
| 
 | ||||
|         //following only used during prim storage | ||||
|         public LLVector3 Position; | ||||
|         public LLQuaternion Rotation = new LLQuaternion(0, 1, 0, 0); | ||||
|         public uint LocalID; | ||||
|         public LLUUID FullID; | ||||
| 
 | ||||
|         public PrimData() | ||||
|         { | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         public PrimData(byte[] data) | ||||
|         { | ||||
|             int i = 0; | ||||
| 
 | ||||
|             this.OwnerID = new LLUUID(data, i); i += 16; | ||||
|             this.PCode = data[i++]; | ||||
|             this.PathBegin = (ushort)(data[i++] + (data[i++] << 8)); | ||||
|             this.PathEnd = (ushort)(data[i++] + (data[i++] << 8)); | ||||
|             this.PathScaleX = data[i++]; | ||||
|             this.PathScaleY = data[i++]; | ||||
|             this.PathShearX = data[i++]; | ||||
|             this.PathShearY = data[i++]; | ||||
|             this.PathSkew = (sbyte)data[i++]; | ||||
|             this.ProfileBegin = (ushort)(data[i++] + (data[i++] << 8)); | ||||
|             this.ProfileEnd = (ushort)(data[i++] + (data[i++] << 8)); | ||||
|             this.Scale = new LLVector3(data, i); i += 12; | ||||
|             this.PathCurve = data[i++]; | ||||
|             this.ProfileCurve = data[i++]; | ||||
|             this.ParentID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||||
|             this.ProfileHollow = (ushort)(data[i++] + (data[i++] << 8)); | ||||
|             this.PathRadiusOffset = (sbyte)data[i++]; | ||||
|             this.PathRevolutions = data[i++]; | ||||
|             this.PathTaperX = (sbyte)data[i++]; | ||||
|             this.PathTaperY = (sbyte)data[i++]; | ||||
|             this.PathTwist = (sbyte)data[i++]; | ||||
|             this.PathTwistBegin = (sbyte)data[i++]; | ||||
|             ushort length = (ushort)(data[i++] + (data[i++] << 8)); | ||||
|             this.TextureEntry = new byte[length]; | ||||
|             Array.Copy(data, i, TextureEntry, 0, length); i += length; | ||||
|             this.CreationDate = (Int32)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||||
|             this.OwnerMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||||
|             this.NextOwnerMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||||
|             this.GroupMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||||
|             this.EveryoneMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||||
|             this.BaseMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||||
|             this.Position = new LLVector3(data, i); i += 12; | ||||
|             this.Rotation = new LLQuaternion(data, i, true); i += 12; | ||||
|             this.LocalID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||||
|             this.FullID = new LLUUID(data, i); i += 16; | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         public byte[] ToBytes() | ||||
|         { | ||||
|             int i = 0; | ||||
|             byte[] bytes = new byte[126 + TextureEntry.Length]; | ||||
|             Array.Copy(OwnerID.GetBytes(), 0, bytes, i, 16); i += 16; | ||||
|             bytes[i++] = this.PCode; | ||||
|             bytes[i++] = (byte)(this.PathBegin % 256); | ||||
|             bytes[i++] = (byte)((this.PathBegin >> 8) % 256); | ||||
|             bytes[i++] = (byte)(this.PathEnd % 256); | ||||
|             bytes[i++] = (byte)((this.PathEnd >> 8) % 256); | ||||
|             bytes[i++] = this.PathScaleX; | ||||
|             bytes[i++] = this.PathScaleY; | ||||
|             bytes[i++] = this.PathShearX; | ||||
|             bytes[i++] = this.PathShearY; | ||||
|             bytes[i++] = (byte)this.PathSkew; | ||||
|             bytes[i++] = (byte)(this.ProfileBegin % 256); | ||||
|             bytes[i++] = (byte)((this.ProfileBegin >> 8) % 256); | ||||
|             bytes[i++] = (byte)(this.ProfileEnd % 256); | ||||
|             bytes[i++] = (byte)((this.ProfileEnd >> 8) % 256); | ||||
|             Array.Copy(Scale.GetBytes(), 0, bytes, i, 12); i += 12; | ||||
|             bytes[i++] = this.PathCurve; | ||||
|             bytes[i++] = this.ProfileCurve; | ||||
|             bytes[i++] = (byte)(ParentID % 256); | ||||
|             bytes[i++] = (byte)((ParentID >> 8) % 256); | ||||
|             bytes[i++] = (byte)((ParentID >> 16) % 256); | ||||
|             bytes[i++] = (byte)((ParentID >> 24) % 256); | ||||
|             bytes[i++] = (byte)(this.ProfileHollow % 256); | ||||
|             bytes[i++] = (byte)((this.ProfileHollow >> 8) % 256); | ||||
|             bytes[i++] = ((byte)this.PathRadiusOffset); | ||||
|             bytes[i++] = this.PathRevolutions; | ||||
|             bytes[i++] = ((byte)this.PathTaperX); | ||||
|             bytes[i++] = ((byte)this.PathTaperY); | ||||
|             bytes[i++] = ((byte)this.PathTwist); | ||||
|             bytes[i++] = ((byte)this.PathTwistBegin); | ||||
|             bytes[i++] = (byte)(TextureEntry.Length % 256); | ||||
|             bytes[i++] = (byte)((TextureEntry.Length >> 8) % 256); | ||||
|             Array.Copy(TextureEntry, 0, bytes, i, TextureEntry.Length); i += TextureEntry.Length; | ||||
|             bytes[i++] = (byte)(this.CreationDate % 256); | ||||
|             bytes[i++] = (byte)((this.CreationDate >> 8) % 256); | ||||
|             bytes[i++] = (byte)((this.CreationDate >> 16) % 256); | ||||
|             bytes[i++] = (byte)((this.CreationDate >> 24) % 256); | ||||
|             bytes[i++] = (byte)(this.OwnerMask % 256); | ||||
|             bytes[i++] = (byte)((this.OwnerMask >> 8) % 256); | ||||
|             bytes[i++] = (byte)((this.OwnerMask >> 16) % 256); | ||||
|             bytes[i++] = (byte)((this.OwnerMask >> 24) % 256); | ||||
|             bytes[i++] = (byte)(this.NextOwnerMask % 256); | ||||
|             bytes[i++] = (byte)((this.NextOwnerMask >> 8) % 256); | ||||
|             bytes[i++] = (byte)((this.NextOwnerMask >> 16) % 256); | ||||
|             bytes[i++] = (byte)((this.NextOwnerMask >> 24) % 256); | ||||
|             bytes[i++] = (byte)(this.GroupMask % 256); | ||||
|             bytes[i++] = (byte)((this.GroupMask >> 8) % 256); | ||||
|             bytes[i++] = (byte)((this.GroupMask >> 16) % 256); | ||||
|             bytes[i++] = (byte)((this.GroupMask >> 24) % 256); | ||||
|             bytes[i++] = (byte)(this.EveryoneMask % 256); | ||||
|             bytes[i++] = (byte)((this.EveryoneMask >> 8) % 256); | ||||
|             bytes[i++] = (byte)((this.EveryoneMask >> 16) % 256); | ||||
|             bytes[i++] = (byte)((this.EveryoneMask >> 24) % 256); | ||||
|             bytes[i++] = (byte)(this.BaseMask % 256); | ||||
|             bytes[i++] = (byte)((this.BaseMask >> 8) % 256); | ||||
|             bytes[i++] = (byte)((this.BaseMask >> 16) % 256); | ||||
|             bytes[i++] = (byte)((this.BaseMask >> 24) % 256); | ||||
|             Array.Copy(this.Position.GetBytes(), 0, bytes, i, 12); i += 12; | ||||
|             if (this.Rotation == new LLQuaternion(0, 0, 0, 0)) | ||||
|             { | ||||
|                 this.Rotation = new LLQuaternion(0, 1, 0, 0); | ||||
|             } | ||||
|             Array.Copy(this.Rotation.GetBytes(), 0, bytes, i, 12); i += 12; | ||||
|             bytes[i++] = (byte)(this.LocalID % 256); | ||||
|             bytes[i++] = (byte)((this.LocalID >> 8) % 256); | ||||
|             bytes[i++] = (byte)((this.LocalID >> 16) % 256); | ||||
|             bytes[i++] = (byte)((this.LocalID >> 24) % 256); | ||||
|             Array.Copy(FullID.GetBytes(), 0, bytes, i, 16); i += 16; | ||||
| 
 | ||||
|             return bytes; | ||||
|         } | ||||
| 
 | ||||
|         public static PrimData DefaultCube() | ||||
|         { | ||||
|             PrimData primData = new PrimData(); | ||||
|             primData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; | ||||
|             primData.FullID = LLUUID.Random(); | ||||
|             primData.Scale = new LLVector3(0.5f, 0.5f, 0.5f); | ||||
|             primData.Rotation = new LLQuaternion(0, 0, 0, 1); | ||||
|             primData.PCode = 9; | ||||
|             primData.ParentID = 0; | ||||
|             primData.PathBegin = 0; | ||||
|             primData.PathEnd = 0; | ||||
|             primData.PathScaleX = 0; | ||||
|             primData.PathScaleY = 0; | ||||
|             primData.PathShearX = 0; | ||||
|             primData.PathShearY = 0; | ||||
|             primData.PathSkew = 0; | ||||
|             primData.ProfileBegin = 0; | ||||
|             primData.ProfileEnd = 0; | ||||
|             primData.PathCurve = 16; | ||||
|             primData.ProfileCurve = 1; | ||||
|             primData.ProfileHollow = 0; | ||||
|             primData.PathRadiusOffset = 0; | ||||
|             primData.PathRevolutions = 0; | ||||
|             primData.PathTaperX = 0; | ||||
|             primData.PathTaperY = 0; | ||||
|             primData.PathTwist = 0; | ||||
|             primData.PathTwistBegin = 0; | ||||
| 
 | ||||
|             return primData; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,102 +0,0 @@ | |||
| using libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|     public enum ShapeType | ||||
|     { | ||||
|         Box, | ||||
|         Sphere, | ||||
|         Ring, | ||||
|         Tube, | ||||
|         Torus, | ||||
|         Prism, | ||||
|         Scuplted, | ||||
|         Cylinder, | ||||
|         Foliage, | ||||
|         Unknown | ||||
|     } | ||||
| 
 | ||||
|     public class PrimitiveBaseShape | ||||
|     { | ||||
|         private ShapeType type = ShapeType.Unknown; | ||||
| 
 | ||||
|         public byte PCode; | ||||
|         public ushort PathBegin; | ||||
|         public ushort PathEnd; | ||||
|         public byte PathScaleX; | ||||
|         public byte PathScaleY; | ||||
|         public byte PathShearX; | ||||
|         public byte PathShearY; | ||||
|         public sbyte PathSkew; | ||||
|         public ushort ProfileBegin; | ||||
|         public ushort ProfileEnd; | ||||
|         public LLVector3 Scale; | ||||
|         public byte PathCurve; | ||||
|         public byte ProfileCurve; | ||||
|         public ushort ProfileHollow; | ||||
|         public sbyte PathRadiusOffset; | ||||
|         public byte PathRevolutions; | ||||
|         public sbyte PathTaperX; | ||||
|         public sbyte PathTaperY; | ||||
|         public sbyte PathTwist; | ||||
|         public sbyte PathTwistBegin; | ||||
|         public byte[] TextureEntry; // a LL textureEntry in byte[] format | ||||
| 
 | ||||
|         public ShapeType PrimType | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.type; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public LLVector3 PrimScale | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.Scale; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public PrimitiveBaseShape() | ||||
|         { | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         //void returns need to change of course | ||||
|         public void GetMesh() | ||||
|         { | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         public static PrimitiveBaseShape DefaultBox() | ||||
|         { | ||||
|             PrimitiveBaseShape primShape = new PrimitiveBaseShape(); | ||||
| 
 | ||||
|             primShape.type = ShapeType.Box; | ||||
|             primShape.Scale = new LLVector3(0.5f, 0.5f, 0.5f); | ||||
|             primShape.PCode = 9; | ||||
|             primShape.PathBegin = 0; | ||||
|             primShape.PathEnd = 0; | ||||
|             primShape.PathScaleX = 0; | ||||
|             primShape.PathScaleY = 0; | ||||
|             primShape.PathShearX = 0; | ||||
|             primShape.PathShearY = 0; | ||||
|             primShape.PathSkew = 0; | ||||
|             primShape.ProfileBegin = 0; | ||||
|             primShape.ProfileEnd = 0; | ||||
|             primShape.PathCurve = 16; | ||||
|             primShape.ProfileCurve = 1; | ||||
|             primShape.ProfileHollow = 0; | ||||
|             primShape.PathRadiusOffset = 0; | ||||
|             primShape.PathRevolutions = 0; | ||||
|             primShape.PathTaperX = 0; | ||||
|             primShape.PathTaperY = 0; | ||||
|             primShape.PathTwist = 0; | ||||
|             primShape.PathTwistBegin = 0; | ||||
| 
 | ||||
|             return primShape; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | @ -1,121 +0,0 @@ | |||
| using System; | ||||
| using System.Net; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A class for manipulating RegionHandle coordinates | ||||
|     /// </summary> | ||||
|     class RegionHandle | ||||
|     { | ||||
|         private UInt64 handle; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises a new grid-aware RegionHandle | ||||
|         /// </summary> | ||||
|         /// <param name="ip">IP Address of the Grid Server for this region</param> | ||||
|         /// <param name="x">Grid X Coordinate</param> | ||||
|         /// <param name="y">Grid Y Coordinate</param> | ||||
|         public RegionHandle(string ip, short x, short y) | ||||
|         { | ||||
|             IPAddress addr = IPAddress.Parse(ip); | ||||
| 
 | ||||
|             if (addr.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork) | ||||
|                 throw new Exception("Bad RegionHandle Parameter - must be an IPv4 address"); | ||||
| 
 | ||||
|             uint baseHandle = BitConverter.ToUInt32(addr.GetAddressBytes(), 0); | ||||
| 
 | ||||
|             // Split the IP address in half | ||||
|             short a = (short)((baseHandle << 16) & 0xFFFF); | ||||
|             short b = (short)((baseHandle <<  0) & 0xFFFF); | ||||
| 
 | ||||
|             // Raise the bounds a little | ||||
|             uint nx = (uint)x; | ||||
|             uint ny = (uint)y; | ||||
| 
 | ||||
|             // Multiply grid coords to get region coords | ||||
|             nx *= 256; | ||||
|             ny *= 256; | ||||
| 
 | ||||
|             // Stuff the IP address in too | ||||
|             nx = (uint)a << 16; | ||||
|             ny = (uint)b << 16; | ||||
| 
 | ||||
|             handle = ((UInt64)nx << 32) | (uint)ny; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises a new RegionHandle that is not inter-grid aware | ||||
|         /// </summary> | ||||
|         /// <param name="x">Grid X Coordinate</param> | ||||
|         /// <param name="y">Grid Y Coordinate</param> | ||||
|         public RegionHandle(uint x, uint y) | ||||
|         { | ||||
|             handle = ((x * 256) << 32) | (y * 256); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises a new RegionHandle from an existing value | ||||
|         /// </summary> | ||||
|         /// <param name="Region">A U64 RegionHandle</param> | ||||
|         public RegionHandle(UInt64 Region) | ||||
|         { | ||||
|             handle = Region; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the Grid Masked RegionHandle - For use in Teleport packets and other packets where sending the grid IP address may be handy. | ||||
|         /// </summary> | ||||
|         /// <remarks>Do not use for SimulatorEnable packets. The client will choke.</remarks> | ||||
|         /// <returns>Region Handle including IP Address encoding</returns> | ||||
|         public UInt64 getTeleportHandle() | ||||
|         { | ||||
|             return handle; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a RegionHandle which may be used for SimulatorEnable packets. Removes the IP address encoding and returns the lower bounds. | ||||
|         /// </summary> | ||||
|         /// <returns>A U64 RegionHandle for use in SimulatorEnable packets.</returns> | ||||
|         public UInt64 getNeighbourHandle() | ||||
|         { | ||||
|             UInt64 mask = 0x0000FFFF0000FFFF; | ||||
| 
 | ||||
|             return handle | mask; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the IP Address of the GridServer from a Grid-Encoded RegionHandle | ||||
|         /// </summary> | ||||
|         /// <returns>Grid Server IP Address</returns> | ||||
|         public IPAddress getGridIP() | ||||
|         { | ||||
|             uint a = (uint)((handle >> 16) & 0xFFFF); | ||||
|             uint b = (uint)((handle >> 48) & 0xFFFF); | ||||
| 
 | ||||
|             return new IPAddress((long)(a << 16) | (long)b); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the X Coordinate from a Grid-Encoded RegionHandle | ||||
|         /// </summary> | ||||
|         /// <returns>X Coordinate</returns> | ||||
|         public uint getGridX() | ||||
|         { | ||||
|             uint x = (uint)((handle >> 32) & 0xFFFF); | ||||
| 
 | ||||
|             return x; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns the Y Coordinate from a Grid-Encoded RegionHandle | ||||
|         /// </summary> | ||||
|         /// <returns>Y Coordinate</returns> | ||||
|         public uint getGridY() | ||||
|         { | ||||
|             uint y = (uint)((handle >> 0) & 0xFFFF); | ||||
| 
 | ||||
|             return y; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,341 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Globalization; | ||||
| using System.Net; | ||||
| using System.Net.Sockets; | ||||
| using libsecondlife; | ||||
| using OpenSim.Framework.Console; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| using OpenSim.Framework.Utilities; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|     public class RegionInfo | ||||
|     { | ||||
|         public LLUUID SimUUID = new LLUUID(); | ||||
|         public string RegionName = ""; | ||||
| 
 | ||||
|         private IPEndPoint m_internalEndPoint; | ||||
|         public IPEndPoint InternalEndPoint | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return m_internalEndPoint; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public IPEndPoint ExternalEndPoint | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 // Old one defaults to IPv6 | ||||
|                 //return new IPEndPoint( Dns.GetHostAddresses( m_externalHostName )[0], m_internalEndPoint.Port ); | ||||
| 
 | ||||
|                 // New method favors IPv4 | ||||
|                 IPAddress ia = null; | ||||
|                 foreach (IPAddress Adr in Dns.GetHostAddresses(m_externalHostName)) | ||||
|                 { | ||||
|                     if (ia == null) | ||||
|                         ia = Adr; | ||||
| 
 | ||||
|                     if (Adr.AddressFamily == AddressFamily.InterNetwork) | ||||
|                     { | ||||
|                         ia = Adr; | ||||
|                         break; | ||||
|                     } | ||||
| 
 | ||||
|                 } | ||||
|                  | ||||
|                 return new IPEndPoint(ia, m_internalEndPoint.Port); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         private string m_externalHostName; | ||||
|         public string ExternalHostName | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return m_externalHostName; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private uint? m_regionLocX; | ||||
|         public uint RegionLocX | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return m_regionLocX.Value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private uint? m_regionLocY; | ||||
|         public uint RegionLocY | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return m_regionLocY.Value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private ulong? m_regionHandle; | ||||
|         public ulong RegionHandle | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 if (!m_regionHandle.HasValue) | ||||
|                 { | ||||
|                     m_regionHandle = Util.UIntsToLong((RegionLocX * 256), (RegionLocY * 256)); | ||||
|                 } | ||||
| 
 | ||||
|                 return m_regionHandle.Value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // Only used for remote regions , ie ones not in the current instance | ||||
|         private uint m_remotingPort; | ||||
|         public uint RemotingPort | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return m_remotingPort; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 m_remotingPort = value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public string DataStore = ""; | ||||
|         public bool isSandbox = false; | ||||
| 
 | ||||
|         public LLUUID MasterAvatarAssignedUUID = new LLUUID(); | ||||
|         public string MasterAvatarFirstName = ""; | ||||
|         public string MasterAvatarLastName = ""; | ||||
|         public string MasterAvatarSandboxPassword = ""; | ||||
| 
 | ||||
|         public EstateSettings estateSettings; | ||||
| 
 | ||||
|         public RegionInfo() | ||||
|         { | ||||
|             estateSettings = new EstateSettings(); | ||||
|         } | ||||
| 
 | ||||
|         public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) | ||||
|             : this() | ||||
|         { | ||||
|             m_regionLocX = regionLocX; | ||||
|             m_regionLocY = regionLocY; | ||||
| 
 | ||||
|             m_internalEndPoint = internalEndPoint; | ||||
|             m_externalHostName = externalUri; | ||||
|         } | ||||
| 
 | ||||
|         public void InitConfig(bool sandboxMode, IGenericConfig configData) | ||||
|         { | ||||
|             this.isSandbox = sandboxMode; | ||||
|             try | ||||
|             { | ||||
|                 string attri = ""; | ||||
| 
 | ||||
|                 // Sim UUID | ||||
|                 string simId = configData.GetAttribute("SimUUID"); | ||||
|                 if (String.IsNullOrEmpty( simId )) | ||||
|                 { | ||||
|                     this.SimUUID = LLUUID.Random(); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     this.SimUUID = new LLUUID(simId); | ||||
|                 } | ||||
|                 configData.SetAttribute("SimUUID", this.SimUUID.ToString()); | ||||
| 
 | ||||
|                 this.RegionName = GetString(configData, "SimName", "OpenSim test", "Region Name"); | ||||
| 
 | ||||
|                 //m_regionLocX = (uint) GetInt(configData, "SimLocationX", 1000, "Grid Location X"); | ||||
|                  | ||||
|                 attri = ""; | ||||
|                 attri = configData.GetAttribute("SimLocationX"); | ||||
|                 if (attri == "") | ||||
|                 { | ||||
|                     string location = MainLog.Instance.CmdPrompt("Grid Location X", "1000"); | ||||
|                     configData.SetAttribute("SimLocationX", location); | ||||
|                     m_regionLocX = (uint)Convert.ToUInt32(location); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     m_regionLocX = (uint)Convert.ToUInt32(attri); | ||||
|                 } | ||||
|                 // Sim/Grid location Y | ||||
|                 attri = ""; | ||||
|                 attri = configData.GetAttribute("SimLocationY"); | ||||
|                 if (attri == "") | ||||
|                 { | ||||
|                     string location = MainLog.Instance.CmdPrompt("Grid Location Y", "1000"); | ||||
|                     configData.SetAttribute("SimLocationY", location); | ||||
|                     m_regionLocY = (uint)Convert.ToUInt32(location); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     m_regionLocY = (uint)Convert.ToUInt32(attri); | ||||
|                 } | ||||
| 
 | ||||
|                 m_regionHandle = null; | ||||
| 
 | ||||
|                 this.DataStore = GetString(configData, "Datastore", "localworld.yap", "Filename for local storage"); | ||||
|                  | ||||
|                 IPAddress internalAddress = GetIPAddress(configData, "InternalIPAddress", "0.0.0.0", "Internal IP Address for UDP client connections"); | ||||
|                 int internalPort = GetIPPort(configData, "InternalIPPort", "9000", "Internal IP Port for UDP client connections"); | ||||
|                 m_internalEndPoint = new IPEndPoint(internalAddress, internalPort); | ||||
| 
 | ||||
|                 m_externalHostName = GetString(configData, "ExternalHostName", "127.0.0.1", "External Host Name"); | ||||
| 
 | ||||
|                 estateSettings.terrainFile = | ||||
|                     GetString(configData, "TerrainFile", "default.r32", "GENERAL SETTING: Default Terrain File");                 | ||||
|                  | ||||
|                 attri = ""; | ||||
|                 attri = configData.GetAttribute("TerrainMultiplier"); | ||||
|                 if (attri == "") | ||||
|                 { | ||||
|                     string re = MainLog.Instance.CmdPrompt("GENERAL SETTING: Terrain Height Multiplier", "60.0"); | ||||
|                     this.estateSettings.terrainMultiplier = Convert.ToDouble(re, CultureInfo.InvariantCulture); | ||||
|                     configData.SetAttribute("TerrainMultiplier", this.estateSettings.terrainMultiplier.ToString()); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     this.estateSettings.terrainMultiplier = Convert.ToDouble(attri); | ||||
|                 } | ||||
| 
 | ||||
|                 attri = ""; | ||||
|                 attri = configData.GetAttribute("MasterAvatarFirstName"); | ||||
|                 if (attri == "") | ||||
|                 { | ||||
|                     this.MasterAvatarFirstName = MainLog.Instance.CmdPrompt("First name of Master Avatar (Land and Region Owner)", "Test"); | ||||
| 
 | ||||
|                     configData.SetAttribute("MasterAvatarFirstName", this.MasterAvatarFirstName); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     this.MasterAvatarFirstName = attri; | ||||
|                 } | ||||
| 
 | ||||
|                 attri = ""; | ||||
|                 attri = configData.GetAttribute("MasterAvatarLastName"); | ||||
|                 if (attri == "") | ||||
|                 { | ||||
|                     this.MasterAvatarLastName = MainLog.Instance.CmdPrompt("Last name of Master Avatar (Land and Region Owner)", "User"); | ||||
| 
 | ||||
|                     configData.SetAttribute("MasterAvatarLastName", this.MasterAvatarLastName); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     this.MasterAvatarLastName = attri; | ||||
|                 } | ||||
| 
 | ||||
|                 if (isSandbox) //Sandbox Mode Specific Settings | ||||
|                 { | ||||
|                     attri = ""; | ||||
|                     attri = configData.GetAttribute("MasterAvatarSandboxPassword"); | ||||
|                     if (attri == "") | ||||
|                     { | ||||
|                         this.MasterAvatarSandboxPassword = MainLog.Instance.CmdPrompt("Password of Master Avatar (Needed for sandbox mode account creation only)", "test"); | ||||
| 
 | ||||
|                         //Should I store this? | ||||
|                         configData.SetAttribute("MasterAvatarSandboxPassword", this.MasterAvatarSandboxPassword); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         this.MasterAvatarSandboxPassword = attri; | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 configData.Commit(); | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured"); | ||||
|                 MainLog.Instance.Warn(e.ToString()); | ||||
|             } | ||||
| 
 | ||||
|             MainLog.Instance.Verbose("Sim settings loaded:"); | ||||
|             MainLog.Instance.Verbose("UUID: " + this.SimUUID.ToStringHyphenated()); | ||||
|             MainLog.Instance.Verbose("Name: " + this.RegionName); | ||||
|             MainLog.Instance.Verbose("Region Location: [" + this.RegionLocX.ToString() + "," + this.RegionLocY + "]"); | ||||
|             MainLog.Instance.Verbose("Region Handle: " + this.RegionHandle.ToString()); | ||||
|             MainLog.Instance.Verbose("Listening on IP end point: " + m_internalEndPoint.ToString() ); | ||||
|             MainLog.Instance.Verbose("Sandbox Mode? " + isSandbox.ToString()); | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         private uint GetInt(IGenericConfig configData, string p, int p_3, string p_4) | ||||
|         { | ||||
|             throw new Exception("The method or operation is not implemented."); | ||||
|         } | ||||
| 
 | ||||
|         private string GetString(IGenericConfig configData, string attrName, string defaultvalue, string prompt) | ||||
|         { | ||||
|             string s = configData.GetAttribute(attrName); | ||||
| 
 | ||||
|             if (String.IsNullOrEmpty( s )) | ||||
|             { | ||||
|                 s = MainLog.Instance.CmdPrompt(prompt, defaultvalue); | ||||
|                 configData.SetAttribute(attrName, s ); | ||||
|             } | ||||
|             return s; | ||||
|         } | ||||
| 
 | ||||
|         private IPAddress GetIPAddress(IGenericConfig configData, string attrName, string defaultvalue, string prompt) | ||||
|         { | ||||
|             string addressStr = configData.GetAttribute(attrName); | ||||
| 
 | ||||
|             IPAddress address; | ||||
| 
 | ||||
|             if (!IPAddress.TryParse(addressStr, out address)) | ||||
|             { | ||||
|                 address =  MainLog.Instance.CmdPromptIPAddress(prompt, defaultvalue); | ||||
|                 configData.SetAttribute(attrName, address.ToString()); | ||||
|             } | ||||
|             return address; | ||||
|         } | ||||
|          | ||||
|         private int GetIPPort(IGenericConfig configData, string attrName, string defaultvalue, string prompt) | ||||
|         { | ||||
|             string portStr = configData.GetAttribute(attrName); | ||||
| 
 | ||||
|             int port; | ||||
| 
 | ||||
|             if (!int.TryParse(portStr, out port)) | ||||
|             { | ||||
|                 port = MainLog.Instance.CmdPromptIPPort(prompt, defaultvalue); | ||||
|                 configData.SetAttribute(attrName, port.ToString()); | ||||
|             } | ||||
|              | ||||
|             return port; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,127 +0,0 @@ | |||
| using System; | ||||
| using libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Types | ||||
| { | ||||
|     class UUID | ||||
|     { | ||||
|         public LLUUID llUUID; | ||||
| 
 | ||||
|         public UUID(string uuid) | ||||
|         { | ||||
|             llUUID = new LLUUID(uuid); | ||||
|         } | ||||
| 
 | ||||
|         public UUID(byte[] uuid) | ||||
|         { | ||||
|             llUUID = new LLUUID(uuid, 0); | ||||
|         } | ||||
| 
 | ||||
|         public UUID(byte[] uuid, int offset) | ||||
|         { | ||||
|             llUUID = new LLUUID(uuid, offset); | ||||
|         } | ||||
| 
 | ||||
|         public UUID() | ||||
|         { | ||||
|             llUUID = LLUUID.Zero; | ||||
|         } | ||||
| 
 | ||||
|         public UUID(ulong uuid) | ||||
|         { | ||||
|             llUUID = new LLUUID(uuid); | ||||
|         } | ||||
| 
 | ||||
|         public UUID(UInt32 first, UInt32 second, UInt32 third, UInt32 fourth) | ||||
|         { | ||||
|             byte[] uuid = new byte[16]; | ||||
| 
 | ||||
|             byte[] n = BitConverter.GetBytes(first); | ||||
|             n.CopyTo(uuid, 0); | ||||
|             n = BitConverter.GetBytes(second); | ||||
|             n.CopyTo(uuid, 4); | ||||
|             n = BitConverter.GetBytes(third); | ||||
|             n.CopyTo(uuid, 8); | ||||
|             n = BitConverter.GetBytes(fourth); | ||||
|             n.CopyTo(uuid, 12); | ||||
| 
 | ||||
|             llUUID = new LLUUID(uuid,0); | ||||
|         } | ||||
| 
 | ||||
|         public override string ToString() | ||||
|         { | ||||
|             return llUUID.ToString(); | ||||
|         } | ||||
| 
 | ||||
|         public string ToStringHyphenated() | ||||
|         { | ||||
|             return llUUID.ToStringHyphenated(); | ||||
|         } | ||||
| 
 | ||||
|         public byte[] GetBytes() | ||||
|         { | ||||
|             return llUUID.GetBytes(); | ||||
|         } | ||||
| 
 | ||||
|         public UInt32[] GetInts() | ||||
|         { | ||||
|             UInt32[] ints = new UInt32[4]; | ||||
|             ints[0] = BitConverter.ToUInt32(llUUID.Data, 0); | ||||
|             ints[1] = BitConverter.ToUInt32(llUUID.Data, 4); | ||||
|             ints[2] = BitConverter.ToUInt32(llUUID.Data, 8); | ||||
|             ints[3] = BitConverter.ToUInt32(llUUID.Data, 12); | ||||
| 
 | ||||
|             return ints; | ||||
|         } | ||||
| 
 | ||||
|         public LLUUID GetLLUUID() | ||||
|         { | ||||
|             return llUUID; | ||||
|         } | ||||
| 
 | ||||
|         public uint CRC() | ||||
|         { | ||||
|             return llUUID.CRC(); | ||||
|         } | ||||
| 
 | ||||
|         public override int GetHashCode() | ||||
|         { | ||||
|             return llUUID.GetHashCode(); | ||||
|         } | ||||
| 
 | ||||
|         public void Combine(UUID other) | ||||
|         { | ||||
|             llUUID.Combine(other.GetLLUUID()); | ||||
|         } | ||||
| 
 | ||||
|         public void Combine(LLUUID other) | ||||
|         { | ||||
|             llUUID.Combine(other); | ||||
|         } | ||||
| 
 | ||||
|         public override bool Equals(Object other) | ||||
|         { | ||||
|             return llUUID.Equals(other); | ||||
|         } | ||||
| 
 | ||||
|         public static bool operator ==(UUID a, UUID b) | ||||
|         { | ||||
|             return a.llUUID.Equals(b.GetLLUUID()); | ||||
|         } | ||||
| 
 | ||||
|         public static bool operator !=(UUID a, UUID b) | ||||
|         { | ||||
|             return !a.llUUID.Equals(b.GetLLUUID()); | ||||
|         } | ||||
| 
 | ||||
|         public static bool operator ==(UUID a, LLUUID b) | ||||
|         { | ||||
|             return a.Equals(b); | ||||
|         } | ||||
| 
 | ||||
|         public static bool operator !=(UUID a, LLUUID b) | ||||
|         { | ||||
|             return !a.Equals(b); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,87 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections.Generic; | ||||
| using System.Security.Cryptography; | ||||
| using libsecondlife; | ||||
| using OpenSim.Framework.Inventory; | ||||
| 
 | ||||
| namespace OpenSim.Framework.User | ||||
| { | ||||
|     public class UserProfile | ||||
|     { | ||||
| 
 | ||||
|         public string firstname; | ||||
|         public string lastname; | ||||
|         public ulong homeregionhandle; | ||||
|         public LLVector3 homepos; | ||||
|         public LLVector3 homelookat; | ||||
| 
 | ||||
|         public bool IsGridGod = false; | ||||
|         public bool IsLocal = true;	// will be used in future for visitors from foreign grids | ||||
|         public string AssetURL; | ||||
|         public string MD5passwd; | ||||
| 
 | ||||
|         public LLUUID CurrentSessionID; | ||||
|         public LLUUID CurrentSecureSessionID; | ||||
|         public LLUUID UUID; | ||||
|         public Dictionary<LLUUID, uint> Circuits = new Dictionary<LLUUID, uint>();	// tracks circuit codes | ||||
| 
 | ||||
|         public AgentInventory Inventory; | ||||
| 
 | ||||
|         public UserProfile() | ||||
|         { | ||||
|             Circuits = new Dictionary<LLUUID, uint>(); | ||||
|             Inventory = new AgentInventory(); | ||||
|             homeregionhandle = Helpers.UIntsToLong((1000 * 256), (1000 * 256)); | ||||
|             homepos = new LLVector3(); | ||||
| 	    homelookat = new LLVector3(); | ||||
|         } | ||||
| 
 | ||||
|         public void InitSessionData() | ||||
|         { | ||||
|             RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider(); | ||||
| 
 | ||||
|             byte[] randDataS = new byte[16]; | ||||
|             byte[] randDataSS = new byte[16]; | ||||
| 
 | ||||
|             rand.GetBytes(randDataS); | ||||
|             rand.GetBytes(randDataSS); | ||||
| 
 | ||||
|             CurrentSecureSessionID = new LLUUID(randDataSS,0); | ||||
|             CurrentSessionID = new LLUUID(randDataS,0); | ||||
|              | ||||
|         } | ||||
| 
 | ||||
|         public void AddSimCircuit(uint circuitCode, LLUUID regionUUID) | ||||
|         { | ||||
|             if (this.Circuits.ContainsKey(regionUUID) == false) | ||||
|                 this.Circuits.Add(regionUUID, circuitCode); | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -1,184 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Security.Cryptography; | ||||
| using System.Text; | ||||
| using libsecondlife; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Utilities | ||||
| { | ||||
|     public class Util | ||||
|     { | ||||
|         private static Random randomClass = new Random(); | ||||
|         private static uint nextXferID = 5000; | ||||
|         private static object XferLock = new object(); | ||||
| 
 | ||||
|         public static ulong UIntsToLong(uint X, uint Y) | ||||
|         { | ||||
|             return Helpers.UIntsToLong(X, Y); | ||||
|         } | ||||
| 
 | ||||
|         public static Random RandomClass | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return randomClass; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public static uint GetNextXferID() | ||||
|         { | ||||
|             uint id = 0; | ||||
|             lock(XferLock) | ||||
|             { | ||||
|                 id = nextXferID; | ||||
|                 nextXferID++; | ||||
|             } | ||||
|             return id; | ||||
|         } | ||||
| 
 | ||||
|         public static int UnixTimeSinceEpoch() | ||||
|         { | ||||
|             TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1)); | ||||
|             int timestamp = (int)t.TotalSeconds; | ||||
|             return timestamp; | ||||
|         } | ||||
| 
 | ||||
|         public static string Md5Hash(string pass) | ||||
|         { | ||||
|             MD5 md5 = MD5CryptoServiceProvider.Create(); | ||||
|             byte[] dataMd5 = md5.ComputeHash(Encoding.Default.GetBytes(pass)); | ||||
|             StringBuilder sb = new StringBuilder(); | ||||
|             for (int i = 0; i < dataMd5.Length; i++) | ||||
|                 sb.AppendFormat("{0:x2}", dataMd5[i]); | ||||
|             return sb.ToString(); | ||||
|         } | ||||
| 
 | ||||
|         public static string GetRandomCapsPath() | ||||
|         { | ||||
|             LLUUID caps = LLUUID.Random(); | ||||
|             string capsPath = caps.ToStringHyphenated(); | ||||
|             capsPath = capsPath.Remove(capsPath.Length - 4, 4); | ||||
|             return capsPath; | ||||
|         } | ||||
| 
 | ||||
|         //public static int fast_distance2d(int x, int y) | ||||
|         //{ | ||||
|         //    x = System.Math.Abs(x); | ||||
|         //    y = System.Math.Abs(y); | ||||
| 
 | ||||
|         //    int min = System.Math.Min(x, y); | ||||
| 
 | ||||
|         //    return (x + y - (min >> 1) - (min >> 2) + (min >> 4)); | ||||
|         //} | ||||
| 
 | ||||
|         public static string FieldToString(byte[] bytes) | ||||
|         { | ||||
|             return FieldToString(bytes, String.Empty); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Convert a variable length field (byte array) to a string, with a | ||||
|         /// field name prepended to each line of the output | ||||
|         /// </summary> | ||||
|         /// <remarks>If the byte array has unprintable characters in it, a  | ||||
|         /// hex dump will be put in the string instead</remarks> | ||||
|         /// <param name="bytes">The byte array to convert to a string</param> | ||||
|         /// <param name="fieldName">A field name to prepend to each line of output</param> | ||||
|         /// <returns>An ASCII string or a string containing a hex dump, minus  | ||||
|         /// the null terminator</returns> | ||||
|         public static string FieldToString(byte[] bytes, string fieldName) | ||||
|         { | ||||
|             // Check for a common case | ||||
|             if (bytes.Length == 0) return String.Empty; | ||||
| 
 | ||||
|             StringBuilder output = new StringBuilder(); | ||||
|             bool printable = true; | ||||
| 
 | ||||
|             for (int i = 0; i < bytes.Length; ++i) | ||||
|             { | ||||
|                 // Check if there are any unprintable characters in the array | ||||
|                 if ((bytes[i] < 0x20 || bytes[i] > 0x7E) && bytes[i] != 0x09 | ||||
|                     && bytes[i] != 0x0D && bytes[i] != 0x0A && bytes[i] != 0x00) | ||||
|                 { | ||||
|                     printable = false; | ||||
|                     break; | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             if (printable) | ||||
|             { | ||||
|                 if (fieldName.Length > 0) | ||||
|                 { | ||||
|                     output.Append(fieldName); | ||||
|                     output.Append(": "); | ||||
|                 } | ||||
| 
 | ||||
|                 if (bytes[bytes.Length - 1] == 0x00) | ||||
|                     output.Append(UTF8Encoding.UTF8.GetString(bytes, 0, bytes.Length - 1)); | ||||
|                 else | ||||
|                     output.Append(UTF8Encoding.UTF8.GetString(bytes)); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 for (int i = 0; i < bytes.Length; i += 16) | ||||
|                 { | ||||
|                     if (i != 0) | ||||
|                         output.Append(Environment.NewLine); | ||||
|                     if (fieldName.Length > 0) | ||||
|                     { | ||||
|                         output.Append(fieldName); | ||||
|                         output.Append(": "); | ||||
|                     } | ||||
| 
 | ||||
|                     for (int j = 0; j < 16; j++) | ||||
|                     { | ||||
|                         if ((i + j) < bytes.Length) | ||||
|                             output.Append(String.Format("{0:X2} ", bytes[i + j])); | ||||
|                         else | ||||
|                             output.Append("   "); | ||||
|                     } | ||||
| 
 | ||||
|                     for (int j = 0; j < 16 && (i + j) < bytes.Length; j++) | ||||
|                     { | ||||
|                         if (bytes[i + j] >= 0x20 && bytes[i + j] < 0x7E) | ||||
|                             output.Append((char)bytes[i + j]); | ||||
|                         else | ||||
|                             output.Append("."); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return output.ToString(); | ||||
|         } | ||||
|         public Util() | ||||
|         { | ||||
| 
 | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,33 +0,0 @@ | |||
| using System.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| [assembly: AssemblyTitle("OpenSim.GenericConfig")] | ||||
| [assembly: AssemblyDescription("")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("")] | ||||
| [assembly: AssemblyProduct("OpenSim.GenericConfig")] | ||||
| [assembly: AssemblyCopyright("Copyright ©  2007")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")] | ||||
| 
 | ||||
| // Setting ComVisible to false makes the types in this assembly not visible  | ||||
| // to COM components.  If you need to access a type in this assembly from  | ||||
| // COM, set the ComVisible attribute to true on that type. | ||||
| [assembly: ComVisible(false)] | ||||
| 
 | ||||
| // The following GUID is for the ID of the typelib if this project is exposed to COM | ||||
| [assembly: Guid("285a3047-f165-46c8-8767-b51428738a09")] | ||||
| 
 | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
| // You can specify all the values or you can default the Revision and Build Numbers  | ||||
| // by using the '*' as shown below: | ||||
| [assembly: AssemblyVersion("1.0.0.0")] | ||||
| [assembly: AssemblyFileVersion("1.0.0.0")] | ||||
|  | @ -1,122 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Xml; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| 
 | ||||
| namespace OpenSim.GenericConfig | ||||
| { | ||||
|     public class XmlConfig : IGenericConfig | ||||
|     { | ||||
|         private XmlDocument doc; | ||||
|         private XmlNode rootNode; | ||||
|         private XmlNode configNode; | ||||
|         private string fileName; | ||||
|         private bool createdFile = false; | ||||
| 
 | ||||
|         public XmlConfig(string filename) | ||||
|         { | ||||
|             fileName = filename; | ||||
|         } | ||||
| 
 | ||||
|         public void LoadData() | ||||
|         { | ||||
|             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", ""); | ||||
|                 doc.AppendChild(rootNode); | ||||
|                 configNode = doc.CreateNode(XmlNodeType.Element, "Config", ""); | ||||
|                 rootNode.AppendChild(configNode); | ||||
|             } | ||||
| 
 | ||||
| 
 | ||||
|             rootNode = doc.FirstChild; | ||||
|             if (rootNode.Name != "Root") | ||||
|                 throw new Exception("Error: Invalid .xml File. Missing <Root>"); | ||||
| 
 | ||||
|             configNode = rootNode.FirstChild; | ||||
|             if (configNode.Name != "Config") | ||||
|                 throw new Exception("Error: Invalid .xml File. <Root> first child should be <Config>"); | ||||
| 
 | ||||
|             if (createdFile) | ||||
|             { | ||||
|                 this.Commit(); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public string GetAttribute(string attributeName) | ||||
|         { | ||||
|             string result = ""; | ||||
|             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() | ||||
|         { | ||||
|             doc.Save(fileName); | ||||
|         } | ||||
| 
 | ||||
|         public void Close() | ||||
|         { | ||||
|             configNode = null; | ||||
|             rootNode = null; | ||||
|             doc = null; | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -1,224 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections; | ||||
| using System.Collections.Generic; | ||||
| using System.IO; | ||||
| using System.Net; | ||||
| using System.Text; | ||||
| using System.Text.RegularExpressions; | ||||
| using System.Threading; | ||||
| using Nwc.XmlRpc; | ||||
| using OpenSim.Framework.Console; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Servers | ||||
| { | ||||
|     public class BaseHttpServer | ||||
|     { | ||||
|         protected Thread m_workerThread; | ||||
|         protected HttpListener m_httpListener; | ||||
|         protected Dictionary<string, XmlRpcMethod> m_rpcHandlers = new Dictionary<string, XmlRpcMethod>(); | ||||
|         protected Dictionary<string, IStreamHandler> m_streamHandlers = new Dictionary<string, IStreamHandler>(); | ||||
|         protected int m_port; | ||||
|         protected bool m_firstcaps = true; | ||||
| 
 | ||||
|         public BaseHttpServer(int port) | ||||
|         { | ||||
|             m_port = port; | ||||
|         } | ||||
| 
 | ||||
|         public void AddStreamHandler( IStreamHandler handler) | ||||
|         { | ||||
|             string httpMethod = handler.HttpMethod; | ||||
|             string path = handler.Path; | ||||
|              | ||||
|             string handlerKey = GetHandlerKey(httpMethod, path); | ||||
|             m_streamHandlers.Add(handlerKey, handler); | ||||
|         } | ||||
| 
 | ||||
|         private static string GetHandlerKey(string httpMethod, string path) | ||||
|         { | ||||
|             return httpMethod + ":" + path; | ||||
|         } | ||||
| 
 | ||||
|         public bool AddXmlRPCHandler(string method, XmlRpcMethod handler) | ||||
|         { | ||||
|             if (!this.m_rpcHandlers.ContainsKey(method)) | ||||
|             { | ||||
|                 this.m_rpcHandlers.Add(method, handler); | ||||
|                 return true; | ||||
|             } | ||||
| 
 | ||||
|             //must already have a handler for that path so return false | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         public virtual void HandleRequest(Object stateinfo) | ||||
|         { | ||||
|             HttpListenerContext context = (HttpListenerContext)stateinfo; | ||||
| 
 | ||||
|             HttpListenerRequest request = context.Request; | ||||
|             HttpListenerResponse response = context.Response; | ||||
| 
 | ||||
|             response.KeepAlive = false; | ||||
|             response.SendChunked = false; | ||||
| 
 | ||||
|             string path = request.RawUrl; | ||||
|             string handlerKey = GetHandlerKey( request.HttpMethod, path ); | ||||
| 
 | ||||
|             IStreamHandler streamHandler; | ||||
| 
 | ||||
|             if (TryGetStreamHandler( handlerKey, out streamHandler)) | ||||
|             { | ||||
|                 byte[] buffer = streamHandler.Handle(path, request.InputStream); | ||||
|                 request.InputStream.Close(); | ||||
| 
 | ||||
|                 response.ContentType = streamHandler.ContentType; | ||||
|                 response.ContentLength64 = buffer.LongLength; | ||||
|                 response.OutputStream.Write(buffer, 0, buffer.Length); | ||||
|                 response.OutputStream.Close(); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 HandleXmlRpcRequests(request, response); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private bool TryGetStreamHandler(string handlerKey, out IStreamHandler streamHandler) | ||||
|         { | ||||
|             string bestMatch = null; | ||||
| 
 | ||||
|             foreach (string pattern in m_streamHandlers.Keys) | ||||
|             { | ||||
|                 if (handlerKey.StartsWith(pattern)) | ||||
|                 { | ||||
|                     if (String.IsNullOrEmpty(bestMatch) || pattern.Length > bestMatch.Length) | ||||
|                     { | ||||
|                         bestMatch = pattern; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             if (String.IsNullOrEmpty(bestMatch)) | ||||
|             { | ||||
|                 streamHandler = null; | ||||
|                 return false; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 streamHandler = m_streamHandlers[bestMatch]; | ||||
|                 return true; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private void HandleXmlRpcRequests(HttpListenerRequest request, HttpListenerResponse response) | ||||
|         { | ||||
|             Stream requestStream = request.InputStream; | ||||
| 
 | ||||
|             Encoding encoding = Encoding.UTF8; | ||||
|             StreamReader reader = new StreamReader(requestStream, encoding); | ||||
| 
 | ||||
|             string requestBody = reader.ReadToEnd(); | ||||
|             reader.Close(); | ||||
|             requestStream.Close(); | ||||
| 
 | ||||
|             XmlRpcRequest xmlRprcRequest = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody); | ||||
| 
 | ||||
|             string methodName = xmlRprcRequest.MethodName; | ||||
| 
 | ||||
|             XmlRpcResponse xmlRpcResponse; | ||||
| 
 | ||||
|             XmlRpcMethod method; | ||||
|             if (this.m_rpcHandlers.TryGetValue(methodName, out method)) | ||||
|             { | ||||
|                 xmlRpcResponse = method(xmlRprcRequest); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 xmlRpcResponse = new XmlRpcResponse(); | ||||
|                 Hashtable unknownMethodError = new Hashtable(); | ||||
|                 unknownMethodError["reason"] = "XmlRequest"; ; | ||||
|                 unknownMethodError["message"] = "Unknown Rpc Request ["+methodName+"]"; | ||||
|                 unknownMethodError["login"] = "false"; | ||||
|                 xmlRpcResponse.Value = unknownMethodError; | ||||
|             } | ||||
| 
 | ||||
|             response.AddHeader("Content-type", "text/xml"); | ||||
| 
 | ||||
|             string responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse); | ||||
|              | ||||
|             byte[] buffer = Encoding.UTF8.GetBytes(responseString); | ||||
| 
 | ||||
|             response.SendChunked = false; | ||||
|             response.ContentLength64 = buffer.Length; | ||||
|             response.ContentEncoding = Encoding.UTF8; | ||||
| 
 | ||||
|             response.OutputStream.Write(buffer, 0, buffer.Length); | ||||
|             response.OutputStream.Close(); | ||||
|         } | ||||
| 
 | ||||
|         public void Start() | ||||
|         { | ||||
|             MainLog.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: Starting up HTTP Server"); | ||||
| 
 | ||||
|             m_workerThread = new Thread(new ThreadStart(StartHTTP)); | ||||
|             m_workerThread.IsBackground = true; | ||||
|             m_workerThread.Start(); | ||||
|         } | ||||
| 
 | ||||
|         private void StartHTTP() | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 MainLog.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: StartHTTP() - Spawned main thread OK"); | ||||
|                 m_httpListener = new HttpListener(); | ||||
| 
 | ||||
|                 m_httpListener.Prefixes.Add("http://+:" + m_port + "/"); | ||||
|                 m_httpListener.Start(); | ||||
| 
 | ||||
|                 HttpListenerContext context; | ||||
|                 while (true) | ||||
|                 { | ||||
|                     context = m_httpListener.GetContext(); | ||||
|                     ThreadPool.QueueUserWorkItem(new WaitCallback(HandleRequest), context); | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 MainLog.Instance.WriteLine(LogPriority.MEDIUM, e.Message); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         public void RemoveStreamHandler(string httpMethod, string path) | ||||
|         { | ||||
|             m_streamHandlers.Remove(GetHandlerKey(httpMethod, path)); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,40 +0,0 @@ | |||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Text; | ||||
| using System.IO; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Servers | ||||
| { | ||||
|     public abstract class BaseStreamHandler : IStreamHandler | ||||
|     { | ||||
|         virtual public string ContentType | ||||
|         { | ||||
|             get { return "application/xml"; } | ||||
|         } | ||||
| 
 | ||||
|         private string m_httpMethod; | ||||
|         virtual public string HttpMethod | ||||
|         { | ||||
|             get { return m_httpMethod; } | ||||
|         } | ||||
| 
 | ||||
|         private string m_path; | ||||
|         virtual public string Path | ||||
|         { | ||||
|             get { return m_path; } | ||||
|         } | ||||
| 	 | ||||
|         protected string GetParam( string path ) | ||||
|         { | ||||
|            return path.Substring( m_path.Length ); | ||||
|         } | ||||
|          | ||||
|         public abstract byte[] Handle(string path, Stream request); | ||||
| 
 | ||||
|         protected BaseStreamHandler(string httpMethod, string path) | ||||
|         { | ||||
|             m_httpMethod = httpMethod; | ||||
|             m_path = path; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,127 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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. | ||||
| *  | ||||
| */ | ||||
| namespace OpenSim.Framework.Servers | ||||
| {/* | ||||
|    public class CheckSumServer : UDPServerBase | ||||
|     { | ||||
|         //protected ConsoleBase m_log; | ||||
| 
 | ||||
|         public CheckSumServer(int port) | ||||
|             : base(port) | ||||
|         { | ||||
|         } | ||||
| 
 | ||||
|         protected override void OnReceivedData(IAsyncResult result) | ||||
|         { | ||||
|             ipeSender = new IPEndPoint(IPAddress.Any, 0); | ||||
|             epSender = (EndPoint)ipeSender; | ||||
|             Packet packet = null; | ||||
|             int numBytes = Server.EndReceiveFrom(result, ref epSender); | ||||
|             int packetEnd = numBytes - 1; | ||||
| 
 | ||||
|             packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer); | ||||
| 
 | ||||
|             if (packet.Type == PacketType.SecuredTemplateChecksumRequest) | ||||
|             { | ||||
|                 SecuredTemplateChecksumRequestPacket checksum = (SecuredTemplateChecksumRequestPacket)packet; | ||||
|                 TemplateChecksumReplyPacket checkreply = new TemplateChecksumReplyPacket(); | ||||
|                 checkreply.DataBlock.Checksum = 3220703154;//180572585; | ||||
|                 checkreply.DataBlock.Flags = 0; | ||||
|                 checkreply.DataBlock.MajorVersion = 1; | ||||
|                 checkreply.DataBlock.MinorVersion = 15; | ||||
|                 checkreply.DataBlock.PatchVersion = 0; | ||||
|                 checkreply.DataBlock.ServerVersion = 0; | ||||
|                 checkreply.TokenBlock.Token = checksum.TokenBlock.Token; | ||||
|                 this.SendPacket(checkreply, epSender); | ||||
| 
 | ||||
|                 /* | ||||
|                 //if we wanted to echo the the checksum/ version from the client (so that any client worked) | ||||
|                 SecuredTemplateChecksumRequestPacket checkrequest = new SecuredTemplateChecksumRequestPacket(); | ||||
|                 checkrequest.TokenBlock.Token = checksum.TokenBlock.Token; | ||||
|                 this.SendPacket(checkrequest, epSender); | ||||
|                  | ||||
|             } | ||||
|             else if (packet.Type == PacketType.TemplateChecksumReply) | ||||
|             { | ||||
|                 //echo back the client checksum reply (Hegemon's method) | ||||
|                 TemplateChecksumReplyPacket checksum2 = (TemplateChecksumReplyPacket)packet; | ||||
|                 TemplateChecksumReplyPacket checkreply2 = new TemplateChecksumReplyPacket(); | ||||
|                 checkreply2.DataBlock.Checksum = checksum2.DataBlock.Checksum; | ||||
|                 checkreply2.DataBlock.Flags = checksum2.DataBlock.Flags; | ||||
|                 checkreply2.DataBlock.MajorVersion = checksum2.DataBlock.MajorVersion; | ||||
|                 checkreply2.DataBlock.MinorVersion = checksum2.DataBlock.MinorVersion; | ||||
|                 checkreply2.DataBlock.PatchVersion = checksum2.DataBlock.PatchVersion; | ||||
|                 checkreply2.DataBlock.ServerVersion = checksum2.DataBlock.ServerVersion; | ||||
|                 checkreply2.TokenBlock.Token = checksum2.TokenBlock.Token; | ||||
|                 this.SendPacket(checkreply2, epSender); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|             } | ||||
| 
 | ||||
|             Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null); | ||||
|         } | ||||
| 
 | ||||
|         private void SendPacket(Packet Pack, EndPoint endp) | ||||
|         { | ||||
|             if (!Pack.Header.Resent) | ||||
|             { | ||||
|                 Pack.Header.Sequence = 1; | ||||
|             } | ||||
| 
 | ||||
|             byte[] ZeroOutBuffer = new byte[4096]; | ||||
|             byte[] sendbuffer; | ||||
|             sendbuffer = Pack.ToBytes(); | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|                 if (Pack.Header.Zerocoded) | ||||
|                 { | ||||
|                     int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer); | ||||
|                     this.SendPackTo(ZeroOutBuffer, packetsize, SocketFlags.None, endp); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     this.SendPackTo(sendbuffer, sendbuffer.Length, SocketFlags.None, endp); | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception) | ||||
|             { | ||||
|                 OpenSim.Framework.Console.MainLog.Instance.Warn("OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection "); | ||||
| 
 | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private void SendPackTo(byte[] buffer, int size, SocketFlags flags, EndPoint endp) | ||||
|         { | ||||
|             this.Server.SendTo(buffer, size, flags, endp); | ||||
|         } | ||||
|   * } | ||||
|  */ | ||||
|      | ||||
| } | ||||
|  | @ -1,22 +0,0 @@ | |||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Text; | ||||
| using System.IO; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Servers | ||||
| { | ||||
|     public interface IStreamHandler | ||||
|     { | ||||
|         // Handle request stream, return byte array | ||||
|         byte[] Handle(string path, Stream request ); | ||||
|          | ||||
|         // Return response content type | ||||
|         string ContentType { get; } | ||||
|          | ||||
|         // Return required http method | ||||
|         string HttpMethod { get;} | ||||
| 
 | ||||
|         // Return path | ||||
|         string Path { get; } | ||||
|     } | ||||
| } | ||||
|  | @ -1,31 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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. | ||||
| *  | ||||
| */ | ||||
| namespace OpenSim.Framework.Servers | ||||
| { | ||||
|     public delegate string RestMethod( string request, string path, string param ); | ||||
| } | ||||
|  | @ -1,31 +0,0 @@ | |||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Text; | ||||
| using System.IO; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Servers | ||||
| { | ||||
|     public class RestStreamHandler : BaseStreamHandler | ||||
|     { | ||||
|         RestMethod m_restMethod; | ||||
| 
 | ||||
|         override public byte[] Handle(string path, Stream request ) | ||||
|         { | ||||
|             Encoding encoding = Encoding.UTF8; | ||||
|             StreamReader streamReader = new StreamReader(request, encoding); | ||||
| 
 | ||||
|             string requestBody = streamReader.ReadToEnd(); | ||||
|             streamReader.Close(); | ||||
| 
 | ||||
|             string param = GetParam(path); | ||||
|             string responseString = m_restMethod(requestBody, path, param ); | ||||
| 
 | ||||
|             return Encoding.UTF8.GetBytes(responseString); | ||||
|         } | ||||
| 
 | ||||
|         public RestStreamHandler(string httpMethod, string path, RestMethod restMethod) : base( httpMethod, path ) | ||||
|         { | ||||
|             m_restMethod = restMethod; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,87 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Net; | ||||
| using System.Net.Sockets; | ||||
| using libsecondlife.Packets; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Servers | ||||
| { | ||||
|     public class UDPServerBase | ||||
|     { | ||||
|         public Socket Server; | ||||
|         protected IPEndPoint ServerIncoming; | ||||
|         protected byte[] RecvBuffer = new byte[4096]; | ||||
|         protected byte[] ZeroBuffer = new byte[8192]; | ||||
|         protected IPEndPoint ipeSender; | ||||
|         protected EndPoint epSender; | ||||
|         protected AsyncCallback ReceivedData; | ||||
|         protected int listenPort; | ||||
| 
 | ||||
|         public UDPServerBase(int port) | ||||
|         { | ||||
|             listenPort = port; | ||||
|         } | ||||
| 
 | ||||
|         protected virtual void OnReceivedData(IAsyncResult result) | ||||
|         { | ||||
|             ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); | ||||
|             epSender = (EndPoint)ipeSender; | ||||
|             Packet packet = null; | ||||
|             int numBytes = Server.EndReceiveFrom(result, ref epSender); | ||||
|             int packetEnd = numBytes - 1; | ||||
| 
 | ||||
|             packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer); | ||||
| 
 | ||||
|             Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null); | ||||
|         } | ||||
| 
 | ||||
|         protected virtual void AddNewClient(Packet packet) | ||||
|         { | ||||
|         } | ||||
| 
 | ||||
|         public virtual void ServerListener() | ||||
|         { | ||||
| 
 | ||||
|             ServerIncoming = new IPEndPoint(IPAddress.Parse("0.0.0.0"), listenPort); | ||||
|             Server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); | ||||
|             Server.Bind(ServerIncoming); | ||||
| 
 | ||||
|             ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); | ||||
|             epSender = (EndPoint)ipeSender; | ||||
|             ReceivedData = new AsyncCallback(this.OnReceivedData); | ||||
|             Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null); | ||||
|         } | ||||
| 
 | ||||
|         public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode) | ||||
|         { | ||||
| 
 | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | @ -1,33 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 Nwc.XmlRpc; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Servers | ||||
| { | ||||
|     public delegate XmlRpcResponse XmlRpcMethod( XmlRpcRequest request );     | ||||
| } | ||||
|  | @ -1,643 +0,0 @@ | |||
| using System; | ||||
| using System.Collections; | ||||
| using libsecondlife; | ||||
| using Nwc.XmlRpc; | ||||
| using OpenSim.Framework.Console; | ||||
| 
 | ||||
| namespace OpenSim.Framework.UserManagement | ||||
| { | ||||
| 
 | ||||
|     /// <summary> | ||||
|     /// A temp class to handle login response. | ||||
|     /// Should make use of UserProfileManager where possible. | ||||
|     /// </summary> | ||||
| 
 | ||||
|     public class LoginResponse | ||||
|     { | ||||
|         private Hashtable loginFlagsHash; | ||||
|         private Hashtable globalTexturesHash; | ||||
|         private Hashtable loginError; | ||||
|         private Hashtable eventCategoriesHash; | ||||
|         private Hashtable uiConfigHash; | ||||
|         private Hashtable classifiedCategoriesHash; | ||||
| 
 | ||||
|         private ArrayList loginFlags; | ||||
|         private ArrayList globalTextures; | ||||
|         private ArrayList eventCategories; | ||||
|         private ArrayList uiConfig; | ||||
|         private ArrayList classifiedCategories; | ||||
|         private ArrayList inventoryRoot; | ||||
|         private ArrayList initialOutfit; | ||||
|         private ArrayList agentInventory; | ||||
| 
 | ||||
|         private UserInfo userProfile; | ||||
| 
 | ||||
|         private LLUUID agentID; | ||||
|         private LLUUID sessionID; | ||||
|         private LLUUID secureSessionID; | ||||
| 
 | ||||
|         // Login Flags | ||||
|         private string dst; | ||||
|         private string stipendSinceLogin; | ||||
|         private string gendered; | ||||
|         private string everLoggedIn; | ||||
|         private string login; | ||||
|         private int simPort; | ||||
|         private string simAddress; | ||||
|         private string agentAccess; | ||||
|         private Int32 circuitCode; | ||||
|         private uint regionX; | ||||
|         private uint regionY; | ||||
| 
 | ||||
|         // Login | ||||
|         private string firstname; | ||||
|         private string lastname; | ||||
| 
 | ||||
|         // Global Textures | ||||
|         private string sunTexture; | ||||
|         private string cloudTexture; | ||||
|         private string moonTexture; | ||||
| 
 | ||||
|         // Error Flags | ||||
|         private string errorReason; | ||||
|         private string errorMessage; | ||||
| 
 | ||||
|         // Response | ||||
|         private XmlRpcResponse xmlRpcResponse; | ||||
|         private XmlRpcResponse defaultXmlRpcResponse; | ||||
| 
 | ||||
|         private string welcomeMessage; | ||||
|         private string startLocation; | ||||
|         private string allowFirstLife; | ||||
|         private string home; | ||||
|         private string seedCapability; | ||||
|         private string lookAt; | ||||
| 
 | ||||
|         public LoginResponse() | ||||
|         { | ||||
|             this.loginFlags = new ArrayList(); | ||||
|             this.globalTextures = new ArrayList(); | ||||
|             this.eventCategories = new ArrayList(); | ||||
|             this.uiConfig = new ArrayList(); | ||||
|             this.classifiedCategories = new ArrayList(); | ||||
| 
 | ||||
|             this.loginError = new Hashtable(); | ||||
|             this.eventCategoriesHash = new Hashtable(); | ||||
|             this.classifiedCategoriesHash = new Hashtable(); | ||||
|             this.uiConfigHash = new Hashtable(); | ||||
| 
 | ||||
|             this.defaultXmlRpcResponse = new XmlRpcResponse(); | ||||
|             this.userProfile = new UserInfo(); | ||||
|             this.inventoryRoot = new ArrayList(); | ||||
|             this.initialOutfit = new ArrayList(); | ||||
|             this.agentInventory = new ArrayList(); | ||||
| 
 | ||||
|             this.xmlRpcResponse = new XmlRpcResponse(); | ||||
|             this.defaultXmlRpcResponse = new XmlRpcResponse(); | ||||
| 
 | ||||
|             this.SetDefaultValues(); | ||||
|         } // LoginServer | ||||
| 
 | ||||
|         public void SetDefaultValues() | ||||
|         { | ||||
|                 this.DST = "N"; | ||||
|                 this.StipendSinceLogin = "N"; | ||||
|                 this.Gendered = "Y"; | ||||
|                 this.EverLoggedIn = "Y"; | ||||
|                 this.login = "false"; | ||||
|                 this.firstname = "Test"; | ||||
|                 this.lastname = "User"; | ||||
|                 this.agentAccess = "M"; | ||||
|                 this.startLocation = "last"; | ||||
|                 this.allowFirstLife = "Y"; | ||||
| 
 | ||||
|                 this.SunTexture = "cce0f112-878f-4586-a2e2-a8f104bba271"; | ||||
|                 this.CloudTexture = "fc4b9f0b-d008-45c6-96a4-01dd947ac621"; | ||||
|                 this.MoonTexture = "fc4b9f0b-d008-45c6-96a4-01dd947ac621"; | ||||
| 
 | ||||
|                 this.ErrorMessage = "You have entered an invalid name/password combination.  Check Caps/lock."; | ||||
|                 this.ErrorReason = "key"; | ||||
|                 this.welcomeMessage = "Welcome to OpenSim!"; | ||||
|                 this.seedCapability = ""; | ||||
|                 this.home = "{'region_handle':[r" + (1000 * 256).ToString() + ",r" + (1000 * 256).ToString() + "], 'position':[r" + this.userProfile.homepos.X.ToString() + ",r" + this.userProfile.homepos.Y.ToString() + ",r" + this.userProfile.homepos.Z.ToString() + "], 'look_at':[r" + this.userProfile.homelookat.X.ToString() + ",r" + this.userProfile.homelookat.Y.ToString() + ",r" + this.userProfile.homelookat.Z.ToString() + "]}"; | ||||
|                 this.lookAt = "[r0.99949799999999999756,r0.03166859999999999814,r0]"; | ||||
|                 this.RegionX = (uint)255232; | ||||
|                 this.RegionY = (uint)254976; | ||||
| 
 | ||||
|                 // Classifieds; | ||||
|                 this.AddClassifiedCategory((Int32)1, "Shopping"); | ||||
|                 this.AddClassifiedCategory((Int32)2, "Land Rental"); | ||||
|                 this.AddClassifiedCategory((Int32)3, "Property Rental"); | ||||
|                 this.AddClassifiedCategory((Int32)4, "Special Attraction"); | ||||
|                 this.AddClassifiedCategory((Int32)5, "New Products"); | ||||
|                 this.AddClassifiedCategory((Int32)6, "Employment"); | ||||
|                 this.AddClassifiedCategory((Int32)7, "Wanted"); | ||||
|                 this.AddClassifiedCategory((Int32)8, "Service"); | ||||
|                 this.AddClassifiedCategory((Int32)9, "Personal"); | ||||
|                  | ||||
| 
 | ||||
|                 this.SessionID = LLUUID.Random(); | ||||
|                 this.SecureSessionID = LLUUID.Random(); | ||||
|                 this.AgentID = LLUUID.Random(); | ||||
| 
 | ||||
|                 Hashtable InitialOutfitHash = new Hashtable(); | ||||
|                 InitialOutfitHash["folder_name"] = "Nightclub Female"; | ||||
|                 InitialOutfitHash["gender"] = "female"; | ||||
|                 this.initialOutfit.Add(InitialOutfitHash); | ||||
|            | ||||
| 
 | ||||
|         } // SetDefaultValues | ||||
| 
 | ||||
|         #region Login Failure Methods | ||||
|         public XmlRpcResponse GenerateFailureResponse(string reason, string message, string login) | ||||
|         { | ||||
|             // Overwrite any default values; | ||||
|             this.xmlRpcResponse = new XmlRpcResponse(); | ||||
| 
 | ||||
|             // Ensure Login Failed message/reason; | ||||
|             this.ErrorMessage = message; | ||||
|             this.ErrorReason = reason; | ||||
| 
 | ||||
|             this.loginError["reason"] = this.ErrorReason; | ||||
|             this.loginError["message"] = this.ErrorMessage; | ||||
|             this.loginError["login"] = login; | ||||
|             this.xmlRpcResponse.Value = this.loginError; | ||||
|             return (this.xmlRpcResponse); | ||||
|         } // GenerateResponse | ||||
| 
 | ||||
|         public XmlRpcResponse CreateFailedResponse() | ||||
|         { | ||||
|             return (this.CreateLoginFailedResponse()); | ||||
|         } // CreateErrorConnectingToGridResponse() | ||||
| 
 | ||||
|         public XmlRpcResponse CreateLoginFailedResponse() | ||||
|         { | ||||
|             return (this.GenerateFailureResponse("key", "Could not authenticate your avatar. Please check your username and password, and check the grid if problems persist.", "false")); | ||||
|         } // LoginFailedResponse | ||||
| 
 | ||||
|         public XmlRpcResponse CreateAlreadyLoggedInResponse() | ||||
|         { | ||||
|             return (this.GenerateFailureResponse("presence", "You appear to be already logged in, if this is not the case please wait for your session to timeout, if this takes longer than a few minutes please contact the grid owner", "false")); | ||||
|         } // CreateAlreadyLoggedInResponse() | ||||
| 
 | ||||
|         public XmlRpcResponse CreateDeadRegionResponse() | ||||
|         { | ||||
|             return (this.GenerateFailureResponse("key", "The region you are attempting to log into is not responding. Please select another region and try again.", "false")); | ||||
|         } | ||||
| 
 | ||||
|          public XmlRpcResponse CreateGridErrorResponse() | ||||
|         { | ||||
|             return (this.GenerateFailureResponse("key", "Error connecting to grid. Could not percieve credentials from login XML.", "false")); | ||||
|         } | ||||
|          | ||||
|         #endregion | ||||
| 
 | ||||
|         public XmlRpcResponse ToXmlRpcResponse() | ||||
|         { | ||||
|             try | ||||
|             { | ||||
| 
 | ||||
|                 Hashtable responseData = new Hashtable(); | ||||
| 
 | ||||
|                 this.loginFlagsHash = new Hashtable(); | ||||
|                 this.loginFlagsHash["daylight_savings"] = this.DST; | ||||
|                 this.loginFlagsHash["stipend_since_login"] = this.StipendSinceLogin; | ||||
|                 this.loginFlagsHash["gendered"] = this.Gendered; | ||||
|                 this.loginFlagsHash["ever_logged_in"] = this.EverLoggedIn; | ||||
|                 this.loginFlags.Add(this.loginFlagsHash); | ||||
| 
 | ||||
|                 responseData["first_name"] = this.Firstname; | ||||
|                 responseData["last_name"] = this.Lastname; | ||||
|                 responseData["agent_access"] = this.agentAccess; | ||||
| 
 | ||||
|                 this.globalTexturesHash = new Hashtable(); | ||||
|                 this.globalTexturesHash["sun_texture_id"] = this.SunTexture; | ||||
|                 this.globalTexturesHash["cloud_texture_id"] = this.CloudTexture; | ||||
|                 this.globalTexturesHash["moon_texture_id"] = this.MoonTexture; | ||||
|                 this.globalTextures.Add(this.globalTexturesHash); | ||||
|                 this.eventCategories.Add(this.eventCategoriesHash); | ||||
| 
 | ||||
|                 this.AddToUIConfig("allow_first_life", this.allowFirstLife); | ||||
|                 this.uiConfig.Add(this.uiConfigHash); | ||||
| 
 | ||||
|                 responseData["sim_port"] =(Int32) this.SimPort; | ||||
|                 responseData["sim_ip"] = this.SimAddress; | ||||
|                  | ||||
|                 MainLog.Instance.Warn("SIM IP: " + responseData["sim_ip"] + "; SIM PORT: " + responseData["sim_port"]); | ||||
|                  | ||||
|                 responseData["agent_id"] = this.AgentID.ToStringHyphenated(); | ||||
|                 responseData["session_id"] = this.SessionID.ToStringHyphenated(); | ||||
|                 responseData["secure_session_id"] = this.SecureSessionID.ToStringHyphenated(); | ||||
|                 responseData["circuit_code"] = this.CircuitCode; | ||||
|                 responseData["seconds_since_epoch"] = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; | ||||
|                 responseData["login-flags"] = this.loginFlags; | ||||
|                 responseData["global-textures"] = this.globalTextures; | ||||
|                 responseData["seed_capability"] = this.seedCapability; | ||||
| 
 | ||||
|                 responseData["event_categories"] = this.eventCategories; | ||||
|                 responseData["event_notifications"] = new ArrayList(); // todo | ||||
|                 responseData["classified_categories"] = this.classifiedCategories; | ||||
|                 responseData["ui-config"] = this.uiConfig; | ||||
| 
 | ||||
|                 responseData["inventory-skeleton"] = this.agentInventory; | ||||
|                 responseData["inventory-skel-lib"] = new ArrayList(); // todo | ||||
|                 responseData["inventory-root"] = this.inventoryRoot; | ||||
|                 responseData["gestures"] = new ArrayList(); // todo | ||||
|                 responseData["inventory-lib-owner"] = new ArrayList(); // todo | ||||
|                 responseData["initial-outfit"] = this.initialOutfit; | ||||
|                 responseData["start_location"] = this.startLocation; | ||||
|                 responseData["seed_capability"] = this.seedCapability; | ||||
|                 responseData["home"] = this.home; | ||||
|                 responseData["look_at"] = this.lookAt; | ||||
|                 responseData["message"] = this.welcomeMessage; | ||||
|                 responseData["region_x"] = (Int32)this.RegionX * 256; | ||||
|                 responseData["region_y"] = (Int32)this.RegionY * 256; | ||||
| 
 | ||||
|                 //responseData["inventory-lib-root"] = new ArrayList(); // todo | ||||
|                 //responseData["buddy-list"] = new ArrayList(); // todo | ||||
| 
 | ||||
|                 responseData["login"] = "true"; | ||||
|                 this.xmlRpcResponse.Value = responseData; | ||||
| 
 | ||||
|                 return (this.xmlRpcResponse); | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 MainLog.Instance.WriteLine( | ||||
|                     LogPriority.LOW, | ||||
|                     "LoginResponse: Error creating XML-RPC Response: " + e.Message | ||||
|                 ); | ||||
|                 return (this.GenerateFailureResponse("Internal Error", "Error generating Login Response", "false")); | ||||
| 
 | ||||
|             } | ||||
| 
 | ||||
|         } // ToXmlRpcResponse | ||||
| 
 | ||||
|         public void SetEventCategories(string category, string value) | ||||
|         { | ||||
|             this.eventCategoriesHash[category] = value; | ||||
|         } // SetEventCategories | ||||
| 
 | ||||
|         public void AddToUIConfig(string itemName, string item) | ||||
|         { | ||||
|             this.uiConfigHash[itemName] = item; | ||||
|         } // SetUIConfig | ||||
| 
 | ||||
|         public void AddClassifiedCategory(Int32 ID, string categoryName) | ||||
|         { | ||||
|             this.classifiedCategoriesHash["category_name"] = categoryName; | ||||
|             this.classifiedCategoriesHash["category_id"] = ID; | ||||
|             this.classifiedCategories.Add(this.classifiedCategoriesHash); | ||||
|             // this.classifiedCategoriesHash.Clear(); | ||||
|         } // SetClassifiedCategory | ||||
| 
 | ||||
|         #region Properties | ||||
|         public string Login | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.login; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.login = value; | ||||
|             } | ||||
|         } // Login | ||||
| 
 | ||||
|         public string DST | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.dst; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.dst = value; | ||||
|             } | ||||
|         } // DST | ||||
| 
 | ||||
|         public string StipendSinceLogin | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.stipendSinceLogin; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.stipendSinceLogin = value; | ||||
|             } | ||||
|         } // StipendSinceLogin | ||||
| 
 | ||||
|         public string Gendered | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.gendered; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.gendered = value; | ||||
|             } | ||||
|         } // Gendered | ||||
| 
 | ||||
|         public string EverLoggedIn | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.everLoggedIn; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.everLoggedIn = value; | ||||
|             } | ||||
|         } // EverLoggedIn | ||||
| 
 | ||||
|         public int SimPort | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.simPort; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.simPort = value; | ||||
|             } | ||||
|         } // SimPort | ||||
| 
 | ||||
|         public string SimAddress | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.simAddress; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.simAddress = value; | ||||
|             } | ||||
|         } // SimAddress | ||||
| 
 | ||||
|         public LLUUID AgentID | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.agentID; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.agentID = value; | ||||
|             } | ||||
|         } // AgentID | ||||
| 
 | ||||
|         public LLUUID SessionID | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.sessionID; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.sessionID = value; | ||||
|             } | ||||
|         } // SessionID | ||||
| 
 | ||||
|         public LLUUID SecureSessionID | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.secureSessionID; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.secureSessionID = value; | ||||
|             } | ||||
|         } // SecureSessionID | ||||
| 
 | ||||
|         public Int32 CircuitCode | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.circuitCode; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.circuitCode = value; | ||||
|             } | ||||
|         } // CircuitCode | ||||
| 
 | ||||
|         public uint RegionX | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.regionX; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.regionX = value; | ||||
|             } | ||||
|         } // RegionX | ||||
| 
 | ||||
|         public uint RegionY | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.regionY; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.regionY = value; | ||||
|             } | ||||
|         } // RegionY | ||||
| 
 | ||||
|         public string SunTexture | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.sunTexture; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.sunTexture = value; | ||||
|             } | ||||
|         } // SunTexture | ||||
| 
 | ||||
|         public string CloudTexture | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.cloudTexture; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.cloudTexture = value; | ||||
|             } | ||||
|         } // CloudTexture | ||||
| 
 | ||||
|         public string MoonTexture | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.moonTexture; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.moonTexture = value; | ||||
|             } | ||||
|         } // MoonTexture | ||||
| 
 | ||||
|         public string Firstname | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.firstname; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.firstname = value; | ||||
|             } | ||||
|         } // Firstname | ||||
| 
 | ||||
|         public string Lastname | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.lastname; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.lastname = value; | ||||
|             } | ||||
|         } // Lastname | ||||
| 
 | ||||
|         public string AgentAccess | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.agentAccess; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.agentAccess = value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public string StartLocation | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.startLocation; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.startLocation = value; | ||||
|             } | ||||
|         } // StartLocation | ||||
| 
 | ||||
|         public string LookAt | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.lookAt; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.lookAt = value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public string SeedCapability | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.seedCapability; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.seedCapability = value; | ||||
|             } | ||||
|         } // SeedCapability | ||||
| 
 | ||||
|         public string ErrorReason | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.errorReason; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.errorReason = value; | ||||
|             } | ||||
|         } // ErrorReason | ||||
| 
 | ||||
|         public string ErrorMessage | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.errorMessage; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.errorMessage = value; | ||||
|             } | ||||
|         } // ErrorMessage | ||||
| 
 | ||||
|         public ArrayList InventoryRoot | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.inventoryRoot; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.inventoryRoot = value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public ArrayList InventorySkeleton | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.agentInventory; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.agentInventory = value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public string Home | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.home; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.home = value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public string Message | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return this.welcomeMessage; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this.welcomeMessage = value; | ||||
|             } | ||||
|         } | ||||
|         #endregion | ||||
| 
 | ||||
| 
 | ||||
|         public class UserInfo | ||||
|         { | ||||
|             public string firstname; | ||||
|             public string lastname; | ||||
|             public ulong homeregionhandle; | ||||
|             public LLVector3 homepos; | ||||
|             public LLVector3 homelookat; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | @ -1,630 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections; | ||||
| using System.Collections.Generic; | ||||
| using System.Reflection; | ||||
| using System.Security.Cryptography; | ||||
| using libsecondlife; | ||||
| using Nwc.XmlRpc; | ||||
| using OpenSim.Framework.Console; | ||||
| using OpenSim.Framework.Data; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| using OpenSim.Framework.Inventory; | ||||
| using OpenSim.Framework.Utilities; | ||||
| 
 | ||||
| namespace OpenSim.Framework.UserManagement | ||||
| { | ||||
|     public abstract class UserManagerBase | ||||
|     { | ||||
|         public UserConfig _config; | ||||
|         Dictionary<string, IUserData> _plugins = new Dictionary<string, IUserData>(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Adds a new user server plugin - user servers will be requested in the order they were loaded. | ||||
|         /// </summary> | ||||
|         /// <param name="FileName">The filename to the user server plugin DLL</param> | ||||
|         public void AddPlugin(string FileName) | ||||
|         { | ||||
|             MainLog.Instance.Verbose( "Userstorage: Attempting to load " + FileName); | ||||
|             Assembly pluginAssembly = Assembly.LoadFrom(FileName); | ||||
| 
 | ||||
|             MainLog.Instance.Verbose( "Userstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces."); | ||||
|             foreach (Type pluginType in pluginAssembly.GetTypes()) | ||||
|             { | ||||
|                 if (!pluginType.IsAbstract) | ||||
|                 { | ||||
|                     Type typeInterface = pluginType.GetInterface("IUserData", true); | ||||
| 
 | ||||
|                     if (typeInterface != null) | ||||
|                     { | ||||
|                         IUserData plug = (IUserData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); | ||||
|                         plug.Initialise(); | ||||
|                         this._plugins.Add(plug.getName(), plug); | ||||
|                         MainLog.Instance.Verbose( "Userstorage: Added IUserData Interface"); | ||||
|                     } | ||||
| 
 | ||||
|                     typeInterface = null; | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             pluginAssembly = null; | ||||
|         } | ||||
| 
 | ||||
|         #region Get UserProfile  | ||||
|         /// <summary> | ||||
|         /// Loads a user profile from a database by UUID | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">The target UUID</param> | ||||
|         /// <returns>A user profile</returns> | ||||
|         public UserProfileData getUserProfile(LLUUID uuid) | ||||
|         { | ||||
|             foreach (KeyValuePair<string, IUserData> plugin in _plugins) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     UserProfileData profile = plugin.Value.getUserByUUID(uuid); | ||||
|                     profile.currentAgent = getUserAgent(profile.UUID); | ||||
|                     return profile; | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|                     MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")"); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Loads a user profile by name | ||||
|         /// </summary> | ||||
|         /// <param name="name">The target name</param> | ||||
|         /// <returns>A user profile</returns> | ||||
|         public UserProfileData getUserProfile(string name) | ||||
|         { | ||||
|             foreach (KeyValuePair<string, IUserData> plugin in _plugins) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     UserProfileData profile = plugin.Value.getUserByName(name); | ||||
|                     profile.currentAgent = getUserAgent(profile.UUID); | ||||
|                     return profile; | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|                     MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")"); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Loads a user profile by name | ||||
|         /// </summary> | ||||
|         /// <param name="fname">First name</param> | ||||
|         /// <param name="lname">Last name</param> | ||||
|         /// <returns>A user profile</returns> | ||||
|         public UserProfileData getUserProfile(string fname, string lname) | ||||
|         { | ||||
|             foreach (KeyValuePair<string, IUserData> plugin in _plugins) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     UserProfileData profile = plugin.Value.getUserByName(fname,lname); | ||||
| 
 | ||||
|                     profile.currentAgent = getUserAgent(profile.UUID); | ||||
| 
 | ||||
|                     return profile; | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|                     MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")"); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return null; | ||||
|         } | ||||
|         #endregion | ||||
| 
 | ||||
|         #region Get UserAgent | ||||
|         /// <summary> | ||||
|         /// Loads a user agent by uuid (not called directly) | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">The agents UUID</param> | ||||
|         /// <returns>Agent profiles</returns> | ||||
|         public UserAgentData getUserAgent(LLUUID uuid) | ||||
|         { | ||||
|             foreach (KeyValuePair<string, IUserData> plugin in _plugins) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     return plugin.Value.getAgentByUUID(uuid); | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|                     MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")"); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Loads a user agent by name (not called directly) | ||||
|         /// </summary> | ||||
|         /// <param name="name">The agents name</param> | ||||
|         /// <returns>A user agent</returns> | ||||
|         public UserAgentData getUserAgent(string name) | ||||
|         { | ||||
|             foreach (KeyValuePair<string, IUserData> plugin in _plugins) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     return plugin.Value.getAgentByName(name); | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|                     MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")"); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Loads a user agent by name (not called directly) | ||||
|         /// </summary> | ||||
|         /// <param name="fname">The agents firstname</param> | ||||
|         /// <param name="lname">The agents lastname</param> | ||||
|         /// <returns>A user agent</returns> | ||||
|         public UserAgentData getUserAgent(string fname, string lname) | ||||
|         { | ||||
|             foreach (KeyValuePair<string, IUserData> plugin in _plugins) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     return plugin.Value.getAgentByName(fname,lname); | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|                     MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")"); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         #endregion | ||||
| 
 | ||||
|         #region CreateAgent | ||||
|         /// <summary> | ||||
|         /// Creates and initialises a new user agent - make sure to use CommitAgent when done to submit to the DB | ||||
|         /// </summary> | ||||
|         /// <param name="profile">The users profile</param> | ||||
|         /// <param name="request">The users loginrequest</param> | ||||
|         public void CreateAgent(UserProfileData profile, XmlRpcRequest request) | ||||
|         { | ||||
|             Hashtable requestData = (Hashtable)request.Params[0]; | ||||
| 
 | ||||
|             UserAgentData agent = new UserAgentData(); | ||||
| 
 | ||||
|             // User connection | ||||
|             agent.agentOnline = true; | ||||
| 
 | ||||
|             // Generate sessions | ||||
|             RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider(); | ||||
|             byte[] randDataS = new byte[16]; | ||||
|             byte[] randDataSS = new byte[16]; | ||||
|             rand.GetBytes(randDataS); | ||||
|             rand.GetBytes(randDataSS); | ||||
| 
 | ||||
|             agent.secureSessionID = new LLUUID(randDataSS, 0); | ||||
|             agent.sessionID = new LLUUID(randDataS, 0); | ||||
| 
 | ||||
|             // Profile UUID | ||||
|             agent.UUID = profile.UUID; | ||||
| 
 | ||||
|             // Current position (from Home) | ||||
|             agent.currentHandle = profile.homeRegion; | ||||
|             agent.currentPos = profile.homeLocation; | ||||
| 
 | ||||
|             // If user specified additional start, use that | ||||
|             if (requestData.ContainsKey("start")) | ||||
|             { | ||||
|                 string startLoc = ((string)requestData["start"]).Trim(); | ||||
|                 if (!(startLoc == "last" || startLoc == "home")) | ||||
|                 { | ||||
|                     // Format: uri:Ahern&162&213&34 | ||||
|                     try | ||||
|                     { | ||||
|                         string[] parts = startLoc.Remove(0, 4).Split('&'); | ||||
|                         string region = parts[0]; | ||||
| 
 | ||||
|                         //////////////////////////////////////////////////// | ||||
|                         //SimProfile SimInfo = new SimProfile(); | ||||
|                         //SimInfo = SimInfo.LoadFromGrid(theUser.currentAgent.currentHandle, _config.GridServerURL, _config.GridSendKey, _config.GridRecvKey); | ||||
|                     } | ||||
|                     catch (Exception) | ||||
|                     { | ||||
| 
 | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             // What time did the user login? | ||||
|             agent.loginTime = Util.UnixTimeSinceEpoch(); | ||||
|             agent.logoutTime = 0; | ||||
| 
 | ||||
|             // Current location | ||||
|             agent.regionID = new LLUUID(); // Fill in later | ||||
|             agent.currentRegion = new LLUUID();      // Fill in later | ||||
| 
 | ||||
|             profile.currentAgent = agent; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Saves a target agent to the database | ||||
|         /// </summary> | ||||
|         /// <param name="profile">The users profile</param> | ||||
|         /// <returns>Successful?</returns> | ||||
|         public bool CommitAgent(ref UserProfileData profile) | ||||
|         { | ||||
|             // Saves the agent to database | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         #endregion | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Checks a user against it's password hash | ||||
|         /// </summary> | ||||
|         /// <param name="profile">The users profile</param> | ||||
|         /// <param name="password">The supplied password</param> | ||||
|         /// <returns>Authenticated?</returns> | ||||
|         public virtual bool AuthenticateUser(UserProfileData profile, string password) | ||||
|         { | ||||
|             MainLog.Instance.Verbose( | ||||
|                 "Authenticating " + profile.username + " " + profile.surname); | ||||
| 
 | ||||
|             password = password.Remove(0, 3); //remove $1$ | ||||
| 
 | ||||
|             string s = Util.Md5Hash(password + ":" + profile.passwordSalt); | ||||
| 
 | ||||
|             return profile.passwordHash.Equals(s.ToString(), StringComparison.InvariantCultureIgnoreCase); | ||||
|         } | ||||
| 
 | ||||
|         #region Xml Response | ||||
| 
 | ||||
|         /// <summary> | ||||
|         ///  | ||||
|         /// </summary> | ||||
|         /// <param name="firstname"></param> | ||||
|         /// <param name="lastname"></param> | ||||
|         /// <returns></returns> | ||||
|         public virtual UserProfileData GetTheUser(string firstname, string lastname) | ||||
|         { | ||||
|             return getUserProfile(firstname, lastname); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         ///  | ||||
|         /// </summary> | ||||
|         /// <returns></returns> | ||||
|         public virtual string GetMessage() | ||||
|         { | ||||
|             return _config.DefaultStartupMsg; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Customises the login response and fills in missing values. | ||||
|         /// </summary> | ||||
|         /// <param name="response">The existing response</param> | ||||
|         /// <param name="theUser">The user profile</param> | ||||
|         public abstract void CustomiseResponse( LoginResponse response, UserProfileData theUser); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Main user login function | ||||
|         /// </summary> | ||||
|         /// <param name="request">The XMLRPC request</param> | ||||
|         /// <returns>The response to send</returns> | ||||
|         public XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request) | ||||
|         { | ||||
| 
 | ||||
|             System.Console.WriteLine("Attempting login now..."); | ||||
|             XmlRpcResponse response = new XmlRpcResponse(); | ||||
|             Hashtable requestData = (Hashtable)request.Params[0]; | ||||
| 
 | ||||
|             bool GoodXML = (requestData.Contains("first") && requestData.Contains("last") && requestData.Contains("passwd")); | ||||
|             bool GoodLogin = false; | ||||
|             string firstname = ""; | ||||
|             string lastname = ""; | ||||
|             string passwd = ""; | ||||
| 
 | ||||
|             UserProfileData userProfile; | ||||
|             LoginResponse logResponse = new LoginResponse(); | ||||
| 
 | ||||
|             if (GoodXML) | ||||
|             { | ||||
|                 firstname = (string)requestData["first"]; | ||||
|                 lastname = (string)requestData["last"]; | ||||
|                 passwd = (string)requestData["passwd"]; | ||||
| 
 | ||||
|                 userProfile = GetTheUser(firstname, lastname); | ||||
|                 if (userProfile == null) | ||||
|                     return logResponse.CreateLoginFailedResponse(); | ||||
| 
 | ||||
|                 GoodLogin = AuthenticateUser(userProfile, passwd); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return logResponse.CreateGridErrorResponse(); | ||||
|             } | ||||
| 
 | ||||
|             if (!GoodLogin) | ||||
|             { | ||||
|                 return logResponse.CreateLoginFailedResponse(); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 // If we already have a session... | ||||
|                 if (userProfile.currentAgent != null && userProfile.currentAgent.agentOnline) | ||||
|                 { | ||||
|                     // Reject the login | ||||
|                     return logResponse.CreateAlreadyLoggedInResponse(); | ||||
|                 } | ||||
|                 // Otherwise... | ||||
|                 // Create a new agent session | ||||
|                 CreateAgent( userProfile, request); | ||||
| 
 | ||||
|                 try | ||||
|                 { | ||||
| 
 | ||||
|                     LLUUID AgentID = userProfile.UUID; | ||||
| 
 | ||||
|                     // Inventory Library Section | ||||
|                     ArrayList AgentInventoryArray = new ArrayList(); | ||||
|                     Hashtable TempHash; | ||||
| 
 | ||||
|                     AgentInventory Library = new AgentInventory(); | ||||
|                     Library.CreateRootFolder(AgentID, true); | ||||
| 
 | ||||
|                     foreach (InventoryFolder InvFolder in Library.InventoryFolders.Values) | ||||
|                     { | ||||
|                         TempHash = new Hashtable(); | ||||
|                         TempHash["name"] = InvFolder.FolderName; | ||||
|                         TempHash["parent_id"] = InvFolder.ParentID.ToStringHyphenated(); | ||||
|                         TempHash["version"] = (Int32)InvFolder.Version; | ||||
|                         TempHash["type_default"] = (Int32)InvFolder.DefaultType; | ||||
|                         TempHash["folder_id"] = InvFolder.FolderID.ToStringHyphenated(); | ||||
|                         AgentInventoryArray.Add(TempHash); | ||||
|                     } | ||||
| 
 | ||||
|                     Hashtable InventoryRootHash = new Hashtable(); | ||||
|                     InventoryRootHash["folder_id"] = Library.InventoryRoot.FolderID.ToStringHyphenated(); | ||||
|                     ArrayList InventoryRoot = new ArrayList(); | ||||
|                     InventoryRoot.Add(InventoryRootHash); | ||||
| 
 | ||||
|                     // Circuit Code | ||||
|                     uint circode = (uint)(Util.RandomClass.Next()); | ||||
| 
 | ||||
|                     logResponse.Lastname = userProfile.surname; | ||||
|                     logResponse.Firstname = userProfile.username; | ||||
|                     logResponse.AgentID = AgentID.ToStringHyphenated(); | ||||
|                     logResponse.SessionID = userProfile.currentAgent.sessionID.ToStringHyphenated(); | ||||
|                     logResponse.SecureSessionID = userProfile.currentAgent.secureSessionID.ToStringHyphenated(); | ||||
|                     logResponse.InventoryRoot = InventoryRoot; | ||||
|                     logResponse.InventorySkeleton = AgentInventoryArray; | ||||
|                     logResponse.CircuitCode = (Int32)circode; | ||||
|                     //logResponse.RegionX = 0; //overwritten | ||||
|                     //logResponse.RegionY = 0; //overwritten | ||||
|                     logResponse.Home = "!!null temporary value {home}!!";   // Overwritten | ||||
|                     //logResponse.LookAt = "\n[r" + TheUser.homeLookAt.X.ToString() + ",r" + TheUser.homeLookAt.Y.ToString() + ",r" + TheUser.homeLookAt.Z.ToString() + "]\n"; | ||||
|                     //logResponse.SimAddress = "127.0.0.1"; //overwritten | ||||
|                     //logResponse.SimPort = 0; //overwritten | ||||
|                     logResponse.Message = this.GetMessage(); | ||||
|                      | ||||
|                     try | ||||
|                     { | ||||
|                         this.CustomiseResponse(  logResponse,   userProfile); | ||||
|                     } | ||||
|                     catch (Exception e) | ||||
|                     { | ||||
|                         System.Console.WriteLine(e.ToString()); | ||||
|                         return logResponse.CreateDeadRegionResponse(); | ||||
|                         //return logResponse.ToXmlRpcResponse(); | ||||
|                     } | ||||
|                     CommitAgent(ref userProfile); | ||||
|                     return logResponse.ToXmlRpcResponse(); | ||||
| 
 | ||||
|                 } | ||||
|                  | ||||
|                 catch (Exception E) | ||||
|                 { | ||||
|                     System.Console.WriteLine(E.ToString()); | ||||
|                 } | ||||
|                 //} | ||||
|             } | ||||
|             return response; | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         #endregion | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Deletes an active agent session | ||||
|         /// </summary> | ||||
|         /// <param name="request">The request</param> | ||||
|         /// <param name="path">The path (eg /bork/narf/test)</param> | ||||
|         /// <param name="param">Parameters sent</param> | ||||
|         /// <returns>Success "OK" else error</returns> | ||||
|         public string RestDeleteUserSessionMethod(string request, string path, string param) | ||||
|         { | ||||
|             // TODO! Important! | ||||
| 
 | ||||
|             return "OK"; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         ///  | ||||
|         /// </summary> | ||||
|         /// <param name="user"></param> | ||||
|         public void AddUserProfile(string firstName, string lastName, string pass, uint regX, uint regY) | ||||
|         { | ||||
|             UserProfileData user = new UserProfileData(); | ||||
|             user.homeLocation = new LLVector3(128, 128, 100); | ||||
|             user.UUID = LLUUID.Random(); | ||||
|             user.username = firstName; | ||||
|             user.surname = lastName; | ||||
|             user.passwordHash = pass; | ||||
|             user.passwordSalt = ""; | ||||
|             user.created = Util.UnixTimeSinceEpoch(); | ||||
|             user.homeLookAt = new LLVector3(100, 100, 100); | ||||
|             user.homeRegion = Util.UIntsToLong((regX * 256), (regY * 256)); | ||||
| 
 | ||||
|             foreach (KeyValuePair<string, IUserData> plugin in _plugins) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     plugin.Value.addNewUserProfile(user); | ||||
| 
 | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|                     MainLog.Instance.Verbose("Unable to add user via " + plugin.Key + "(" + e.ToString() + ")"); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns an error message that the user could not be found in the database | ||||
|         /// </summary> | ||||
|         /// <returns>XML string consisting of a error element containing individual error(s)</returns> | ||||
|         public XmlRpcResponse CreateUnknownUserErrorResponse() | ||||
|         { | ||||
|             XmlRpcResponse response = new XmlRpcResponse(); | ||||
|             Hashtable responseData = new Hashtable(); | ||||
|             responseData["error_type"] = "unknown_user"; | ||||
|             responseData["error_desc"] = "The user requested is not in the database"; | ||||
| 
 | ||||
|             response.Value = responseData; | ||||
|             return response; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Converts a user profile to an XML element which can be returned | ||||
|         /// </summary> | ||||
|         /// <param name="profile">The user profile</param> | ||||
|         /// <returns>A string containing an XML Document of the user profile</returns> | ||||
|         public XmlRpcResponse ProfileToXmlRPCResponse(UserProfileData profile) | ||||
|         { | ||||
|             XmlRpcResponse response = new XmlRpcResponse(); | ||||
|             Hashtable responseData = new Hashtable(); | ||||
| 
 | ||||
|             // Account information | ||||
|             responseData["firstname"] = profile.username; | ||||
|             responseData["lastname"]  = profile.surname; | ||||
|             responseData["uuid"]  = profile.UUID.ToStringHyphenated(); | ||||
|             // Server Information | ||||
|             responseData["server_inventory"]  = profile.userInventoryURI; | ||||
|             responseData["server_asset"]  = profile.userAssetURI; | ||||
|             // Profile Information | ||||
|             responseData["profile_about"]  = profile.profileAboutText; | ||||
|             responseData["profile_firstlife_about"]  = profile.profileFirstText; | ||||
|             responseData["profile_firstlife_image"]  = profile.profileFirstImage.ToStringHyphenated(); | ||||
|             responseData["profile_can_do"]  = profile.profileCanDoMask.ToString(); | ||||
|             responseData["profile_want_do"]  = profile.profileWantDoMask.ToString(); | ||||
|             responseData["profile_image"]  = profile.profileImage.ToStringHyphenated(); | ||||
|             responseData["profile_created"] = profile.created.ToString(); | ||||
|             responseData["profile_lastlogin"] = profile.lastLogin.ToString(); | ||||
|             // Home region information | ||||
|             responseData["home_coordinates_x"] = profile.homeLocation.X.ToString(); | ||||
|             responseData["home_coordinates_y"] = profile.homeLocation.Y.ToString(); | ||||
|             responseData["home_coordinates_z"] = profile.homeLocation.Z.ToString(); | ||||
| 
 | ||||
|             responseData["home_region"]  = profile.homeRegion.ToString(); | ||||
| 
 | ||||
|             responseData["home_look_x"] = profile.homeLookAt.X.ToString(); | ||||
|             responseData["home_look_y"] = profile.homeLookAt.Y.ToString(); | ||||
|             responseData["home_look_z"] = profile.homeLookAt.Z.ToString(); | ||||
|             response.Value = responseData; | ||||
|             return response; | ||||
|         } | ||||
| 
 | ||||
|         #region XMLRPC User Methods  | ||||
|         //should most likely move out of here and into the grid's userserver sub class | ||||
|         public XmlRpcResponse XmlRPCGetUserMethodName(XmlRpcRequest request) | ||||
|         { | ||||
|             XmlRpcResponse response = new XmlRpcResponse(); | ||||
|             Hashtable requestData = (Hashtable)request.Params[0]; | ||||
|             UserProfileData userProfile; | ||||
| 
 | ||||
|             if (requestData.Contains("avatar_name")) | ||||
|             { | ||||
|                 userProfile = getUserProfile((string)requestData["avatar_name"]); | ||||
|                 if (userProfile == null) | ||||
|                 { | ||||
|                     return CreateUnknownUserErrorResponse(); | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return CreateUnknownUserErrorResponse(); | ||||
|             } | ||||
|              | ||||
| 
 | ||||
|             return ProfileToXmlRPCResponse(userProfile); | ||||
|         } | ||||
| 
 | ||||
|         public XmlRpcResponse XmlRPCGetUserMethodUUID(XmlRpcRequest request) | ||||
|         { | ||||
|             XmlRpcResponse response = new XmlRpcResponse(); | ||||
|             Hashtable requestData = (Hashtable)request.Params[0]; | ||||
|             UserProfileData userProfile; | ||||
|             if (requestData.Contains("avatar_uuid")) | ||||
|             { | ||||
|                 userProfile = getUserProfile((LLUUID)requestData["avatar_uuid"]); | ||||
|                 if (userProfile == null) | ||||
|                 { | ||||
|                     return CreateUnknownUserErrorResponse(); | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return CreateUnknownUserErrorResponse(); | ||||
|             } | ||||
| 
 | ||||
| 
 | ||||
|             return ProfileToXmlRPCResponse(userProfile); | ||||
|         } | ||||
|         #endregion | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -1,406 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 Db4objects.Db4o; | ||||
| using libsecondlife; | ||||
| using OpenSim.Framework.Console; | ||||
| using OpenSim.Framework.Types; | ||||
| using OpenSim.Framework.Servers; | ||||
| 
 | ||||
| namespace OpenSim.Grid.AssetServer | ||||
| { | ||||
|     /// <summary> | ||||
|     /// An asset server | ||||
|     /// </summary> | ||||
|     public class OpenAsset_Main : conscmd_callback | ||||
|     { | ||||
|         private IObjectContainer db; | ||||
| 
 | ||||
|         public static OpenAsset_Main assetserver; | ||||
| 
 | ||||
|         private LogBase m_console; | ||||
| 
 | ||||
|         [STAThread] | ||||
|         public static void Main(string[] args) | ||||
|         { | ||||
|             Console.WriteLine("Starting...\n"); | ||||
| 
 | ||||
|             assetserver = new OpenAsset_Main(); | ||||
|             assetserver.Startup(); | ||||
| 
 | ||||
|             assetserver.Work(); | ||||
|         } | ||||
| 
 | ||||
|         private void Work() | ||||
|         { | ||||
|             m_console.Notice("Enter help for a list of commands"); | ||||
| 
 | ||||
|             while (true) | ||||
|             { | ||||
|                 m_console.MainLogPrompt(); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private OpenAsset_Main() | ||||
|         { | ||||
|             m_console = new LogBase("opengrid-AssetServer-console.log", "OpenAsset", this, false); | ||||
|             MainLog.Instance = m_console; | ||||
|         } | ||||
| 
 | ||||
|         public void Startup() | ||||
|         { | ||||
|             m_console.Verbose("Main.cs:Startup() - Setting up asset DB"); | ||||
|             setupDB(); | ||||
| 
 | ||||
|             m_console.Verbose("Main.cs:Startup() - Starting HTTP process"); | ||||
|             BaseHttpServer httpServer = new BaseHttpServer(8003); | ||||
| 
 | ||||
|             httpServer.AddStreamHandler( new GetAssetStreamHandler(this)); | ||||
|             httpServer.AddStreamHandler(new PostAssetStreamHandler( this )); | ||||
| 
 | ||||
|             //httpServer.AddRestHandler("GET", "/assets/", this.assetGetMethod); | ||||
|             //httpServer.AddRestHandler("POST", "/assets/", this.assetPostMethod); | ||||
| 
 | ||||
|             httpServer.Start(); | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         //public string AssetPostMethod(string requestBody, string path, string param) | ||||
|         //{ | ||||
|         //    AssetBase asset = new AssetBase(); | ||||
|         //    asset.Name = ""; | ||||
|         //    asset.FullID = new LLUUID(param); | ||||
|         //    Encoding Windows1252Encoding = Encoding.GetEncoding(1252); | ||||
|         //    byte[] buffer = Windows1252Encoding.GetBytes(requestBody); | ||||
|         //    asset.Data = buffer; | ||||
|         //    AssetStorage store = new AssetStorage(); | ||||
|         //    store.Data = asset.Data; | ||||
|         //    store.Name = asset.Name; | ||||
|         //    store.UUID = asset.FullID; | ||||
|         //    db.Set(store); | ||||
|         //    db.Commit(); | ||||
|         //    return ""; | ||||
|         //} | ||||
| 
 | ||||
|         //public string AssetGetMethod(string request, string path, string param) | ||||
|         //{ | ||||
|         //    Console.WriteLine("got a request " + param); | ||||
|         //    byte[] assetdata = GetAssetData(new LLUUID(param), false); | ||||
|         //    if (assetdata != null) | ||||
|         //    { | ||||
|         //        Encoding Windows1252Encoding = Encoding.GetEncoding(1252); | ||||
|         //        string ret = Windows1252Encoding.GetString(assetdata); | ||||
|         //        //string ret = System.Text.Encoding.Unicode.GetString(assetdata); | ||||
| 
 | ||||
|         //        return ret; | ||||
| 
 | ||||
|         //    } | ||||
|         //    else | ||||
|         //    { | ||||
|         //        return ""; | ||||
|         //    } | ||||
| 
 | ||||
|         //} | ||||
| 
 | ||||
|         public byte[] GetAssetData(LLUUID assetID, bool isTexture) | ||||
|         { | ||||
|             bool found = false; | ||||
|             AssetStorage foundAsset = null; | ||||
| 
 | ||||
|             IObjectSet result = db.Get(new AssetStorage(assetID)); | ||||
|             if (result.Count > 0) | ||||
|             { | ||||
|                 foundAsset = (AssetStorage)result.Next(); | ||||
|                 found = true; | ||||
|             } | ||||
| 
 | ||||
|             if (found) | ||||
|             { | ||||
|                 return foundAsset.Data; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public void setupDB() | ||||
|         { | ||||
|             bool yapfile = File.Exists("assets.yap"); | ||||
|             try | ||||
|             { | ||||
|                 db = Db4oFactory.OpenFile("assets.yap"); | ||||
|                 MainLog.Instance.Verbose("Main.cs:setupDB() - creation"); | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 db.Close(); | ||||
|                 MainLog.Instance.Warn("Main.cs:setupDB() - Exception occured"); | ||||
|                 MainLog.Instance.Warn(e.ToString()); | ||||
|             } | ||||
|             if (!yapfile) | ||||
|             { | ||||
|                 this.LoadDB(); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public void LoadDB() | ||||
|         { | ||||
|             try | ||||
|             { | ||||
| 
 | ||||
|                 Console.WriteLine("setting up Asset database"); | ||||
| 
 | ||||
|                 AssetBase Image = new AssetBase(); | ||||
|                 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001"); | ||||
|                 Image.Name = "Bricks"; | ||||
|                 this.LoadAsset(Image, true, "bricks.jp2"); | ||||
|                 AssetStorage store = new AssetStorage(); | ||||
|                 store.Data = Image.Data; | ||||
|                 store.Name = Image.Name; | ||||
|                 store.UUID = Image.FullID; | ||||
|                 db.Set(store); | ||||
|                 db.Commit(); | ||||
| 
 | ||||
|                 Image = new AssetBase(); | ||||
|                 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002"); | ||||
|                 Image.Name = "Plywood"; | ||||
|                 this.LoadAsset(Image, true, "plywood.jp2"); | ||||
|                 store = new AssetStorage(); | ||||
|                 store.Data = Image.Data; | ||||
|                 store.Name = Image.Name; | ||||
|                 store.UUID = Image.FullID; | ||||
|                 db.Set(store); | ||||
|                 db.Commit(); | ||||
| 
 | ||||
|                 Image = new AssetBase(); | ||||
|                 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003"); | ||||
|                 Image.Name = "Rocks"; | ||||
|                 this.LoadAsset(Image, true, "rocks.jp2"); | ||||
|                 store = new AssetStorage(); | ||||
|                 store.Data = Image.Data; | ||||
|                 store.Name = Image.Name; | ||||
|                 store.UUID = Image.FullID; | ||||
|                 db.Set(store); | ||||
|                 db.Commit(); | ||||
| 
 | ||||
|                 Image = new AssetBase(); | ||||
|                 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004"); | ||||
|                 Image.Name = "Granite"; | ||||
|                 this.LoadAsset(Image, true, "granite.jp2"); | ||||
|                 store = new AssetStorage(); | ||||
|                 store.Data = Image.Data; | ||||
|                 store.Name = Image.Name; | ||||
|                 store.UUID = Image.FullID; | ||||
|                 db.Set(store); | ||||
|                 db.Commit(); | ||||
| 
 | ||||
|                 Image = new AssetBase(); | ||||
|                 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005"); | ||||
|                 Image.Name = "Hardwood"; | ||||
|                 this.LoadAsset(Image, true, "hardwood.jp2"); | ||||
|                 store = new AssetStorage(); | ||||
|                 store.Data = Image.Data; | ||||
|                 store.Name = Image.Name; | ||||
|                 store.UUID = Image.FullID; | ||||
|                 db.Set(store); | ||||
|                 db.Commit(); | ||||
| 
 | ||||
|                 Image = new AssetBase(); | ||||
|                 Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005"); | ||||
|                 Image.Name = "Prim Base Texture"; | ||||
|                 this.LoadAsset(Image, true, "plywood.jp2"); | ||||
|                 store = new AssetStorage(); | ||||
|                 store.Data = Image.Data; | ||||
|                 store.Name = Image.Name; | ||||
|                 store.UUID = Image.FullID; | ||||
|                 db.Set(store); | ||||
|                 db.Commit(); | ||||
| 
 | ||||
|                 Image = new AssetBase(); | ||||
|                 Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73"); | ||||
|                 Image.Name = "Shape"; | ||||
|                 this.LoadAsset(Image, false, "base_shape.dat"); | ||||
|                 store = new AssetStorage(); | ||||
|                 store.Data = Image.Data; | ||||
|                 store.Name = Image.Name; | ||||
|                 store.UUID = Image.FullID; | ||||
|                 db.Set(store); | ||||
|                 db.Commit(); | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 Console.WriteLine(e.Message); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private void LoadAsset(AssetBase info, bool image, string filename) | ||||
|         { | ||||
| 
 | ||||
| 
 | ||||
|             string dataPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "assets"); //+ folder; | ||||
|             string fileName = Path.Combine(dataPath, filename); | ||||
|             FileInfo fInfo = new FileInfo(fileName); | ||||
|             long numBytes = fInfo.Length; | ||||
|             FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); | ||||
|             byte[] idata = new byte[numBytes]; | ||||
|             BinaryReader br = new BinaryReader(fStream); | ||||
|             idata = br.ReadBytes((int)numBytes); | ||||
|             br.Close(); | ||||
|             fStream.Close(); | ||||
|             info.Data = idata; | ||||
|             //info.loaded=true; | ||||
|         } | ||||
| 
 | ||||
|         /*private GridConfig LoadConfigDll(string dllName) | ||||
|         { | ||||
|             Assembly pluginAssembly = Assembly.LoadFrom(dllName); | ||||
|             GridConfig config = null; | ||||
| 
 | ||||
|             foreach (Type pluginType in pluginAssembly.GetTypes()) | ||||
|             { | ||||
|                 if (pluginType.IsPublic) | ||||
|                 { | ||||
|                     if (!pluginType.IsAbstract) | ||||
|                     { | ||||
|                         Type typeInterface = pluginType.GetInterface("IGridConfig", true); | ||||
| 
 | ||||
|                         if (typeInterface != null) | ||||
|                         { | ||||
|                             IGridConfig plug = (IGridConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); | ||||
|                             config = plug.GetConfigObject(); | ||||
|                             break; | ||||
|                         } | ||||
| 
 | ||||
|                         typeInterface = null; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             pluginAssembly = null; | ||||
|             return config; | ||||
|         }*/ | ||||
| 
 | ||||
|         public void CreateAsset(LLUUID assetId, byte[] assetData) | ||||
|         { | ||||
|             AssetBase asset = new AssetBase(); | ||||
|             asset.Name = ""; | ||||
|             asset.FullID = assetId; | ||||
|             asset.Data = assetData; | ||||
|                      | ||||
|             AssetStorage store = new AssetStorage(); | ||||
|             store.Data = asset.Data; | ||||
|             store.Name = asset.Name; | ||||
|             store.UUID = asset.FullID; | ||||
|             db.Set(store); | ||||
|             db.Commit(); | ||||
|         } | ||||
|          | ||||
|         public void RunCmd(string cmd, string[] cmdparams) | ||||
|         { | ||||
|             switch (cmd) | ||||
|             { | ||||
|                 case "help": | ||||
|                     m_console.Notice("shutdown - shutdown this asset server (USE CAUTION!)"); | ||||
|                     break; | ||||
| 
 | ||||
|                 case "shutdown": | ||||
|                     m_console.Close(); | ||||
|                     Environment.Exit(0); | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public void Show(string ShowWhat) | ||||
|         { | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public class GetAssetStreamHandler : BaseStreamHandler | ||||
|     { | ||||
|         OpenAsset_Main m_assetManager; | ||||
| 
 | ||||
|         override public byte[] Handle(string path, Stream request) | ||||
|         { | ||||
|             string param = GetParam(path); | ||||
| 
 | ||||
|             byte[] assetdata = m_assetManager.GetAssetData(new LLUUID(param), false); | ||||
|             if (assetdata != null) | ||||
|             { | ||||
|                 return assetdata; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return new byte[]{}; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public GetAssetStreamHandler(OpenAsset_Main assetManager):base( "/assets/", "GET") | ||||
|         { | ||||
|             m_assetManager = assetManager; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public class PostAssetStreamHandler : BaseStreamHandler | ||||
|     { | ||||
|         OpenAsset_Main m_assetManager; | ||||
| 
 | ||||
|         override public byte[] Handle(string path, Stream request) | ||||
|         { | ||||
|             string param = GetParam(path); | ||||
|             LLUUID assetId = new LLUUID(param); | ||||
|             byte[] txBuffer = new byte[4096]; | ||||
|                  | ||||
|             using( BinaryReader binReader = new BinaryReader( request ) ) | ||||
|             { | ||||
|                 using (MemoryStream memoryStream = new MemoryStream(4096)) | ||||
|                 { | ||||
|                     int count; | ||||
|                     while ((count = binReader.Read(txBuffer, 0, 4096)) > 0) | ||||
|                     { | ||||
|                         memoryStream.Write(txBuffer, 0, count); | ||||
|                     }                     | ||||
| 
 | ||||
|                     byte[] assetData = memoryStream.ToArray(); | ||||
| 
 | ||||
|                     m_assetManager.CreateAsset(assetId, assetData); | ||||
|                 } | ||||
|             } | ||||
|              | ||||
|             return new byte[]{}; | ||||
|         } | ||||
| 
 | ||||
|         public PostAssetStreamHandler( OpenAsset_Main assetManager ) | ||||
|             : base("/assets/", "POST") | ||||
|         { | ||||
|             m_assetManager = assetManager; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,58 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| [assembly: AssemblyTitle("OGS-AssetServer")] | ||||
| [assembly: AssemblyDescription("")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("")] | ||||
| [assembly: AssemblyProduct("OGS-AssetServer")] | ||||
| [assembly: AssemblyCopyright("Copyright ©  2007")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")] | ||||
| 
 | ||||
| // Setting ComVisible to false makes the types in this assembly not visible  | ||||
| // to COM components.  If you need to access a type in this assembly from  | ||||
| // COM, set the ComVisible attribute to true on that type. | ||||
| [assembly: ComVisible(false)] | ||||
| 
 | ||||
| // The following GUID is for the ID of the typelib if this project is exposed to COM | ||||
| [assembly: Guid("b541b244-3d1d-4625-9003-bc2a3a6a39a4")] | ||||
| 
 | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
| [assembly: AssemblyVersion("1.0.0.0")] | ||||
| [assembly: AssemblyFileVersion("1.0.0.0")] | ||||
|  | @ -1,138 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections; | ||||
| using libsecondlife; | ||||
| using Nwc.XmlRpc; | ||||
| using OpenSim.Framework.Servers; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Manager | ||||
| { | ||||
|     /// <summary> | ||||
|     /// Used to pass messages to the gridserver | ||||
|     /// </summary> | ||||
|     /// <param name="param">Pass this argument</param> | ||||
|     public delegate void GridManagerCallback(string param); | ||||
| 
 | ||||
|     /// <summary> | ||||
|     /// Serverside listener for grid commands | ||||
|     /// </summary> | ||||
|     public class GridManagementAgent | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Passes grid server messages | ||||
|         /// </summary> | ||||
|         private GridManagerCallback thecallback; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Security keys | ||||
|         /// </summary> | ||||
|         private string sendkey; | ||||
|         private string recvkey; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Our component type | ||||
|         /// </summary> | ||||
|         private string component_type; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// List of active sessions | ||||
|         /// </summary> | ||||
|         private static ArrayList Sessions; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises a new GridManagementAgent | ||||
|         /// </summary> | ||||
|         /// <param name="app_httpd">HTTP Daemon for this server</param> | ||||
|         /// <param name="component_type">What component type are we?</param> | ||||
|         /// <param name="sendkey">Security send key</param> | ||||
|         /// <param name="recvkey">Security recieve key</param> | ||||
|         /// <param name="thecallback">Message callback</param> | ||||
|         public GridManagementAgent(BaseHttpServer app_httpd, string component_type, string sendkey, string recvkey, GridManagerCallback thecallback) | ||||
|         { | ||||
|             this.sendkey = sendkey; | ||||
|             this.recvkey = recvkey; | ||||
|             this.component_type = component_type; | ||||
|             this.thecallback = thecallback; | ||||
|             Sessions = new ArrayList(); | ||||
| 
 | ||||
|             app_httpd.AddXmlRPCHandler("manager_login", XmlRpcLoginMethod); | ||||
| 
 | ||||
|             switch (component_type) | ||||
|             { | ||||
|                 case "gridserver": | ||||
|                     GridServerManager.sendkey = this.sendkey; | ||||
|                     GridServerManager.recvkey = this.recvkey; | ||||
|                     GridServerManager.thecallback = thecallback; | ||||
|                     app_httpd.AddXmlRPCHandler("shutdown", GridServerManager.XmlRpcShutdownMethod); | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Checks if a session exists | ||||
|         /// </summary> | ||||
|         /// <param name="sessionID">The session ID</param> | ||||
|         /// <returns>Exists?</returns> | ||||
|         public static bool SessionExists(LLUUID sessionID) | ||||
|         { | ||||
|             return Sessions.Contains(sessionID); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Logs a new session to the grid manager | ||||
|         /// </summary> | ||||
|         /// <param name="request">the XMLRPC request</param> | ||||
|         /// <returns>An XMLRPC reply</returns> | ||||
|         public static XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request) | ||||
|         { | ||||
|             XmlRpcResponse response = new XmlRpcResponse(); | ||||
|             Hashtable requestData = (Hashtable)request.Params[0]; | ||||
|             Hashtable responseData = new Hashtable(); | ||||
| 
 | ||||
|             // TODO: Switch this over to using OpenSim.Framework.Data | ||||
|             if (requestData["username"].Equals("admin") && requestData["password"].Equals("supersecret")) | ||||
|             { | ||||
|                 response.IsFault = false; | ||||
|                 LLUUID new_session = LLUUID.Random(); | ||||
|                 Sessions.Add(new_session); | ||||
|                 responseData["session_id"] = new_session.ToString(); | ||||
|                 responseData["msg"] = "Login OK"; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 response.IsFault = true; | ||||
|                 responseData["error"] = "Invalid username or password"; | ||||
|             } | ||||
| 
 | ||||
|             response.Value = responseData; | ||||
|             return response; | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -1,93 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections; | ||||
| using System.Threading; | ||||
| using libsecondlife; | ||||
| using Nwc.XmlRpc; | ||||
| 
 | ||||
| namespace OpenSim.Framework.Manager { | ||||
| 
 | ||||
|     /// <summary> | ||||
|     /// A remote management system for the grid server | ||||
|     /// </summary> | ||||
| 	public class GridServerManager  | ||||
| 	{ | ||||
|         /// <summary> | ||||
|         /// Triggers events from the grid manager | ||||
|         /// </summary> | ||||
| 		public static GridManagerCallback thecallback; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Security keys | ||||
|         /// </summary> | ||||
| 		public static string sendkey; | ||||
| 		public static string recvkey; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Disconnects the grid server and shuts it down | ||||
|         /// </summary> | ||||
|         /// <param name="request">XmlRpc Request</param> | ||||
|         /// <returns>An XmlRpc response containing either a "msg" or an "error"</returns> | ||||
| 		public static XmlRpcResponse XmlRpcShutdownMethod(XmlRpcRequest request) | ||||
|          	{ | ||||
|            		XmlRpcResponse response = new XmlRpcResponse(); | ||||
|             		Hashtable requestData = (Hashtable)request.Params[0]; | ||||
| 	    		Hashtable responseData = new Hashtable(); | ||||
|           | ||||
| 			if(requestData.ContainsKey("session_id")) { | ||||
| 				if(GridManagementAgent.SessionExists(new LLUUID((string)requestData["session_id"]))) { | ||||
| 					responseData["msg"]="Shutdown command accepted"; | ||||
| 					(new Thread(new ThreadStart(ShutdownServer))).Start(); | ||||
| 				} else { | ||||
| 					response.IsFault=true; | ||||
| 					responseData["error"]="bad session ID"; | ||||
| 				} | ||||
| 			} else { | ||||
| 				response.IsFault=true; | ||||
| 				responseData["error"]="no session ID"; | ||||
| 			} | ||||
| 
 | ||||
| 	    		response.Value = responseData; | ||||
| 	    		return response; | ||||
| 		} | ||||
| 
 | ||||
| 		/// <summary> | ||||
|         /// Shuts down the grid server | ||||
| 		/// </summary> | ||||
| 		public static void ShutdownServer() | ||||
| 		{ | ||||
| 			Console.WriteLine("Shutting down the grid server - recieved a grid manager request"); | ||||
|             Console.WriteLine("Terminating in three seconds..."); | ||||
| 			Thread.Sleep(3000); | ||||
| 			thecallback("shutdown"); | ||||
| 		} | ||||
| 	 } | ||||
| } | ||||
| 
 | ||||
|  | @ -1,56 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| // Information about this assembly is defined by the following | ||||
| // attributes. | ||||
| // | ||||
| // change them to the information which is associated with the assembly | ||||
| // you compile. | ||||
| 
 | ||||
| [assembly: AssemblyTitle("GridConfig")] | ||||
| [assembly: AssemblyDescription("")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("")] | ||||
| [assembly: AssemblyProduct("GridConfig")] | ||||
| [assembly: AssemblyCopyright("")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")] | ||||
| 
 | ||||
| // This sets the default COM visibility of types in the assembly to invisible. | ||||
| // If you need to expose a type to COM, use [ComVisible(true)] on that type. | ||||
| [assembly: ComVisible(false)] | ||||
| 
 | ||||
| // The assembly version has following format : | ||||
| // | ||||
| // Major.Minor.Build.Revision | ||||
| // | ||||
| // You can specify all values by your own or you can build default build and revision | ||||
| // numbers with the '*' character (the default): | ||||
| 
 | ||||
| [assembly: AssemblyVersion("1.0.*")] | ||||
|  | @ -1,160 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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 Db4objects.Db4o; | ||||
| using OpenSim.Framework.Console; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| 
 | ||||
| namespace OpenGrid.Config.GridConfigDb4o | ||||
| { | ||||
|     /// <summary> | ||||
|     /// A grid configuration interface for returning the DB4o Config Provider | ||||
|     /// </summary> | ||||
| 	public class Db40ConfigPlugin: IGridConfig | ||||
| 	{ | ||||
|         /// <summary> | ||||
|         /// Loads and returns a configuration objeect | ||||
|         /// </summary> | ||||
|         /// <returns>A grid configuration object</returns> | ||||
| 		public GridConfig GetConfigObject() | ||||
| 		{ | ||||
| 			MainLog.Instance.Verbose("Loading Db40Config dll"); | ||||
| 			return ( new DbGridConfig()); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
|     /// <summary> | ||||
|     /// A DB4o based Gridserver configuration object | ||||
|     /// </summary> | ||||
| 	public class DbGridConfig : GridConfig | ||||
| 	{ | ||||
|         /// <summary> | ||||
|         /// The DB4o Database | ||||
|         /// </summary> | ||||
| 		private IObjectContainer db;	 | ||||
| 		 | ||||
|         /// <summary> | ||||
|         /// User configuration for the Grid Config interfaces | ||||
|         /// </summary> | ||||
| 		public void LoadDefaults() { | ||||
| 			MainLog.Instance.Notice("Config.cs:LoadDefaults() - Please press enter to retain default or enter new settings"); | ||||
| 			 | ||||
|             // About the grid options | ||||
| 			this.GridOwner = MainLog.Instance.CmdPrompt("Grid owner", "OGS development team"); | ||||
| 
 | ||||
|             // Asset Options | ||||
| 			this.DefaultAssetServer = MainLog.Instance.CmdPrompt("Default asset server","http://127.0.0.1:8003/"); | ||||
|             this.AssetSendKey = MainLog.Instance.CmdPrompt("Key to send to asset server","null"); | ||||
|             this.AssetRecvKey = MainLog.Instance.CmdPrompt("Key to expect from asset server","null"); | ||||
| 
 | ||||
|             // User Server Options | ||||
| 	        this.DefaultUserServer = MainLog.Instance.CmdPrompt("Default user server","http://127.0.0.1:8002/"); | ||||
|         	this.UserSendKey = MainLog.Instance.CmdPrompt("Key to send to user server","null"); | ||||
|         	this.UserRecvKey = MainLog.Instance.CmdPrompt("Key to expect from user server","null"); | ||||
| 
 | ||||
|             // Region Server Options | ||||
|             this.SimSendKey = MainLog.Instance.CmdPrompt("Key to send to sims","null"); | ||||
|             this.SimRecvKey = MainLog.Instance.CmdPrompt("Key to expect from sims","null"); | ||||
| 		} | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialises a new configuration object | ||||
|         /// </summary> | ||||
| 		public override void InitConfig() { | ||||
| 			try { | ||||
|                 // Perform Db4o initialisation | ||||
| 				db = Db4oFactory.OpenFile("opengrid.yap"); | ||||
| 
 | ||||
|                 // Locate the grid configuration object | ||||
| 				IObjectSet result = db.Get(typeof(DbGridConfig)); | ||||
|                 // Found? | ||||
| 				if(result.Count==1) { | ||||
| 					MainLog.Instance.Verbose("Config.cs:InitConfig() - Found a GridConfig object in the local database, loading"); | ||||
| 					foreach (DbGridConfig cfg in result) { | ||||
|                         // Import each setting into this class | ||||
|                         // Grid Settings | ||||
| 						this.GridOwner=cfg.GridOwner; | ||||
|                         // Asset Settings | ||||
| 						this.DefaultAssetServer=cfg.DefaultAssetServer; | ||||
| 						this.AssetSendKey=cfg.AssetSendKey; | ||||
| 						this.AssetRecvKey=cfg.AssetRecvKey; | ||||
|                         // User Settings | ||||
| 						this.DefaultUserServer=cfg.DefaultUserServer; | ||||
| 						this.UserSendKey=cfg.UserSendKey; | ||||
| 						this.UserRecvKey=cfg.UserRecvKey; | ||||
|                         // Region Settings | ||||
| 						this.SimSendKey=cfg.SimSendKey; | ||||
| 						this.SimRecvKey=cfg.SimRecvKey; | ||||
| 					} | ||||
|                 // Create a new configuration object from this class | ||||
| 				} else { | ||||
| 					MainLog.Instance.Verbose("Config.cs:InitConfig() - Could not find object in database, loading precompiled defaults"); | ||||
| 
 | ||||
|                     // Load default settings into this class | ||||
| 					LoadDefaults(); | ||||
| 
 | ||||
|                     // Saves to the database file... | ||||
|                     MainLog.Instance.Verbose( "Writing out default settings to local database"); | ||||
| 					db.Set(this); | ||||
| 
 | ||||
|                     // Closes file locks | ||||
| 					db.Close(); | ||||
| 				} | ||||
| 			} catch(Exception e) { | ||||
| 				MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured"); | ||||
|                 MainLog.Instance.Warn(e.ToString()); | ||||
| 			} | ||||
| 			 | ||||
|             // Grid Settings | ||||
| 			MainLog.Instance.Verbose("Grid settings loaded:"); | ||||
| 			MainLog.Instance.Verbose("Grid owner: " + this.GridOwner); | ||||
| 
 | ||||
|             // Asset Settings | ||||
| 			MainLog.Instance.Verbose("Default asset server: " + this.DefaultAssetServer); | ||||
| 			MainLog.Instance.Verbose("Key to send to asset server: " + this.AssetSendKey); | ||||
| 			MainLog.Instance.Verbose("Key to expect from asset server: " + this.AssetRecvKey); | ||||
| 
 | ||||
|             // User Settings | ||||
| 			MainLog.Instance.Verbose("Default user server: " + this.DefaultUserServer); | ||||
| 			MainLog.Instance.Verbose("Key to send to user server: " + this.UserSendKey); | ||||
| 			MainLog.Instance.Verbose("Key to expect from user server: " + this.UserRecvKey); | ||||
| 
 | ||||
|             // Region Settings | ||||
| 			MainLog.Instance.Verbose("Key to send to sims: " + this.SimSendKey); | ||||
| 			MainLog.Instance.Verbose("Key to expect from sims: " + this.SimRecvKey); | ||||
| 		} | ||||
| 	 | ||||
|         /// <summary> | ||||
|         /// Closes down the database and releases filesystem locks | ||||
|         /// </summary> | ||||
| 		public void Shutdown() { | ||||
| 			db.Close(); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
|  | @ -1,699 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections; | ||||
| using System.Collections.Generic; | ||||
| using System.Reflection; | ||||
| using System.Xml; | ||||
| using libsecondlife; | ||||
| using Nwc.XmlRpc; | ||||
| using OpenSim.Framework.Console; | ||||
| using OpenSim.Framework.Data; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| using OpenSim.Framework.Utilities; | ||||
| 
 | ||||
| namespace OpenSim.Grid.GridServer | ||||
| { | ||||
|     class GridManager | ||||
|     { | ||||
|         Dictionary<string, IGridData> _plugins = new Dictionary<string, IGridData>(); | ||||
|         Dictionary<string, ILogData> _logplugins = new Dictionary<string, ILogData>(); | ||||
| 
 | ||||
|         public GridConfig config; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Adds a new grid server plugin - grid servers will be requested in the order they were loaded. | ||||
|         /// </summary> | ||||
|         /// <param name="FileName">The filename to the grid server plugin DLL</param> | ||||
|         public void AddPlugin(string FileName) | ||||
| 		{ | ||||
|             MainLog.Instance.Verbose("Storage: Attempting to load " + FileName); | ||||
| 			Assembly pluginAssembly = Assembly.LoadFrom(FileName); | ||||
| 
 | ||||
|             MainLog.Instance.Verbose("Storage: Found " + pluginAssembly.GetTypes().Length + " interfaces."); | ||||
| 			foreach (Type pluginType in pluginAssembly.GetTypes()) | ||||
| 			{ | ||||
|                 if (!pluginType.IsAbstract) | ||||
|                 { | ||||
|                     // Regions go here | ||||
|                     Type typeInterface = pluginType.GetInterface("IGridData", true); | ||||
| 
 | ||||
|                     if (typeInterface != null) | ||||
|                     { | ||||
|                         IGridData plug = (IGridData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); | ||||
|                         plug.Initialise(); | ||||
|                         this._plugins.Add(plug.getName(), plug); | ||||
|                         MainLog.Instance.Verbose("Storage: Added IGridData Interface"); | ||||
|                     } | ||||
| 
 | ||||
|                     typeInterface = null; | ||||
| 
 | ||||
|                     // Logs go here | ||||
|                     typeInterface = pluginType.GetInterface("ILogData", true); | ||||
| 
 | ||||
|                     if (typeInterface != null) | ||||
|                     { | ||||
|                         ILogData plug = (ILogData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); | ||||
|                         plug.Initialise(); | ||||
|                         this._logplugins.Add(plug.getName(), plug); | ||||
|                         MainLog.Instance.Verbose( "Storage: Added ILogData Interface"); | ||||
|                     } | ||||
| 
 | ||||
|                     typeInterface = null; | ||||
|                 } | ||||
| 			} | ||||
| 			 | ||||
| 			pluginAssembly = null;  | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Logs a piece of information to the database | ||||
|         /// </summary> | ||||
|         /// <param name="target">What you were operating on (in grid server, this will likely be the region UUIDs)</param> | ||||
|         /// <param name="method">Which method is being called?</param> | ||||
|         /// <param name="args">What arguments are being passed?</param> | ||||
|         /// <param name="priority">How high priority is this? 1 = Max, 6 = Verbose</param> | ||||
|         /// <param name="message">The message to log</param> | ||||
|         private void logToDB(string target, string method, string args, int priority, string message) | ||||
|         { | ||||
|             foreach (KeyValuePair<string, ILogData> kvp in _logplugins) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     kvp.Value.saveLog("Gridserver", target, method, args, priority, message); | ||||
|                 } | ||||
|                 catch (Exception) | ||||
|                 { | ||||
|                     MainLog.Instance.Warn("Storage: unable to write log via " + kvp.Key); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a region by argument | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">A UUID key of the region to return</param> | ||||
|         /// <returns>A SimProfileData for the region</returns> | ||||
|         public SimProfileData getRegion(LLUUID uuid) | ||||
|         { | ||||
|             foreach(KeyValuePair<string,IGridData> kvp in _plugins) { | ||||
|                 try | ||||
|                 { | ||||
|                     return kvp.Value.GetProfileByLLUUID(uuid); | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|                     MainLog.Instance.Warn("Message from Storage: " + e.Message); | ||||
|                 } | ||||
|             } | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns a region by argument | ||||
|         /// </summary> | ||||
|         /// <param name="uuid">A regionHandle of the region to return</param> | ||||
|         /// <returns>A SimProfileData for the region</returns> | ||||
|         public SimProfileData getRegion(ulong handle) | ||||
|         { | ||||
|             foreach (KeyValuePair<string, IGridData> kvp in _plugins) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     return kvp.Value.GetProfileByHandle(handle); | ||||
|                 } | ||||
|                 catch | ||||
|                 { | ||||
|                     MainLog.Instance.Warn("Storage: Unable to find region " + handle.ToString() + " via " + kvp.Key); | ||||
|                 } | ||||
|             } | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         public Dictionary<ulong, SimProfileData> getRegions(uint xmin, uint ymin, uint xmax, uint ymax) | ||||
|         { | ||||
|             Dictionary<ulong, SimProfileData> regions = new Dictionary<ulong, SimProfileData>(); | ||||
| 
 | ||||
|             SimProfileData[] neighbours; | ||||
| 
 | ||||
|             foreach (KeyValuePair<string, IGridData> kvp in _plugins) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     neighbours = kvp.Value.GetProfilesInRange(xmin, ymin, xmax, ymax); | ||||
|                     foreach (SimProfileData neighbour in neighbours) | ||||
|                     { | ||||
|                         regions[neighbour.regionHandle] = neighbour; | ||||
|                     } | ||||
|                 } | ||||
|                 catch | ||||
|                 { | ||||
|                     MainLog.Instance.Warn("Storage: Unable to query regionblock via " + kvp.Key); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return regions; | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|          | ||||
|         /// <summary> | ||||
|         /// Returns a XML String containing a list of the neighbouring regions | ||||
|         /// </summary> | ||||
|         /// <param name="reqhandle">The regionhandle for the center sim</param> | ||||
|         /// <returns>An XML string containing neighbour entities</returns> | ||||
|         public string GetXMLNeighbours(ulong reqhandle) | ||||
|         { | ||||
|             string response = ""; | ||||
|             SimProfileData central_region = getRegion(reqhandle); | ||||
|             SimProfileData neighbour; | ||||
|             for (int x = -1; x < 2; x++) for (int y = -1; y < 2; y++) | ||||
|                 { | ||||
|                     if (getRegion(Util.UIntsToLong((uint)((central_region.regionLocX + x) * 256), (uint)(central_region.regionLocY + y) * 256)) != null) | ||||
|                     { | ||||
|                         neighbour = getRegion(Util.UIntsToLong((uint)((central_region.regionLocX + x) * 256), (uint)(central_region.regionLocY + y) * 256)); | ||||
|                         response += "<neighbour>"; | ||||
|                         response += "<sim_ip>" + neighbour.serverIP + "</sim_ip>"; | ||||
|                         response += "<sim_port>" + neighbour.serverPort.ToString() + "</sim_port>"; | ||||
|                         response += "<locx>" + neighbour.regionLocX.ToString() + "</locx>"; | ||||
|                         response += "<locy>" + neighbour.regionLocY.ToString() + "</locy>"; | ||||
|                         response += "<regionhandle>" + neighbour.regionHandle.ToString() + "</regionhandle>"; | ||||
|                         response += "</neighbour>"; | ||||
| 
 | ||||
|                     } | ||||
|                 } | ||||
|             return response; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Performed when a region connects to the grid server initially. | ||||
|         /// </summary> | ||||
|         /// <param name="request">The XMLRPC Request</param> | ||||
|         /// <returns>Startup parameters</returns> | ||||
|         public XmlRpcResponse XmlRpcSimulatorLoginMethod(XmlRpcRequest request) | ||||
|         { | ||||
| 
 | ||||
|             XmlRpcResponse response = new XmlRpcResponse(); | ||||
|             Hashtable responseData = new Hashtable(); | ||||
|             response.Value = responseData; | ||||
| 
 | ||||
|             SimProfileData TheSim = null; | ||||
|             Hashtable requestData = (Hashtable)request.Params[0]; | ||||
| 
 | ||||
|             if (requestData.ContainsKey("UUID")) | ||||
|             { | ||||
|                 TheSim = getRegion(new LLUUID((string)requestData["UUID"])); | ||||
|                  | ||||
|                 logToDB((new LLUUID((string)requestData["UUID"])).ToStringHyphenated(),"XmlRpcSimulatorLoginMethod","", 5,"Region attempting login with UUID."); | ||||
|             } | ||||
|             else if (requestData.ContainsKey("region_handle")) | ||||
|             { | ||||
| 
 | ||||
|                 TheSim = getRegion((ulong)Convert.ToUInt64(requestData["region_handle"])); | ||||
|                 logToDB((string)requestData["region_handle"], "XmlRpcSimulatorLoginMethod", "", 5, "Region attempting login with regionHandle."); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 responseData["error"] = "No UUID or region_handle passed to grid server - unable to connect you"; | ||||
|                 return response; | ||||
|             } | ||||
| 
 | ||||
|             if (TheSim == null) // Shouldnt this be in the REST Simulator Set method? | ||||
|             { | ||||
|                 //NEW REGION | ||||
|                 TheSim = new SimProfileData(); | ||||
| 
 | ||||
|                 TheSim.regionRecvKey = config.SimRecvKey; | ||||
|                 TheSim.regionSendKey = config.SimSendKey; | ||||
|                 TheSim.regionSecret = config.SimRecvKey; | ||||
|                 TheSim.regionDataURI = ""; | ||||
|                 TheSim.regionAssetURI = config.DefaultAssetServer; | ||||
|                 TheSim.regionAssetRecvKey = config.AssetRecvKey; | ||||
|                 TheSim.regionAssetSendKey = config.AssetSendKey; | ||||
|                 TheSim.regionUserURI = config.DefaultUserServer; | ||||
|                 TheSim.regionUserSendKey = config.UserSendKey; | ||||
|                 TheSim.regionUserRecvKey = config.UserRecvKey; | ||||
| 
 | ||||
|                 TheSim.serverIP = (string)requestData["sim_ip"]; | ||||
|                 TheSim.serverPort = Convert.ToUInt32((string)requestData["sim_port"]); | ||||
|                 TheSim.httpPort = Convert.ToUInt32((string)requestData["http_port"]); | ||||
|                 TheSim.remotingPort = Convert.ToUInt32((string)requestData["remoting_port"]); | ||||
|                 TheSim.regionLocX = Convert.ToUInt32((string)requestData["region_locx"]); | ||||
|                 TheSim.regionLocY = Convert.ToUInt32((string)requestData["region_locy"]); | ||||
|                 TheSim.regionLocZ = 0; | ||||
| 
 | ||||
|                 TheSim.regionHandle = Helpers.UIntsToLong((TheSim.regionLocX * 256), (TheSim.regionLocY * 256)); | ||||
|                 System.Console.WriteLine("adding region " + TheSim.regionLocX + " , " + TheSim.regionLocY + " , " + TheSim.regionHandle); | ||||
|                 TheSim.serverURI = "http://" + TheSim.serverIP + ":" + TheSim.serverPort + "/"; | ||||
|                 TheSim.httpServerURI = "http://" + TheSim.serverIP + ":" + TheSim.httpPort + "/"; | ||||
| 
 | ||||
|                 Console.WriteLine("NEW SIM: " + TheSim.serverURI); | ||||
|                 TheSim.regionName = (string)requestData["sim_name"]; | ||||
|                 TheSim.UUID = new LLUUID((string)requestData["UUID"]); | ||||
| 
 | ||||
|                 foreach (KeyValuePair<string, IGridData> kvp in _plugins) | ||||
|                 { | ||||
|                     try | ||||
|                     { | ||||
|                         DataResponse insertResponse = kvp.Value.AddProfile(TheSim); | ||||
|                         switch(insertResponse) | ||||
|                         { | ||||
|                             case DataResponse.RESPONSE_OK: | ||||
|                                 OpenSim.Framework.Console.MainLog.Instance.Verbose("New sim creation successful: " + TheSim.regionName); | ||||
|                                 break; | ||||
|                             case DataResponse.RESPONSE_ERROR: | ||||
|                                 OpenSim.Framework.Console.MainLog.Instance.Warn("New sim creation failed (Error): " + TheSim.regionName); | ||||
|                                 break; | ||||
|                             case DataResponse.RESPONSE_INVALIDCREDENTIALS: | ||||
|                                 OpenSim.Framework.Console.MainLog.Instance.Warn("New sim creation failed (Invalid Credentials): " + TheSim.regionName); | ||||
|                                 break; | ||||
|                             case DataResponse.RESPONSE_AUTHREQUIRED: | ||||
|                                 OpenSim.Framework.Console.MainLog.Instance.Warn("New sim creation failed (Authentication Required): " + TheSim.regionName); | ||||
|                                 break; | ||||
|                         } | ||||
|                          | ||||
|                     } | ||||
|                     catch (Exception e) | ||||
|                     { | ||||
|                         OpenSim.Framework.Console.MainLog.Instance.Warn("Storage: Unable to add region " + TheSim.UUID.ToStringHyphenated() + " via " + kvp.Key); | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
| 
 | ||||
|                 if (getRegion(TheSim.regionHandle) == null) | ||||
|                 { | ||||
|                     responseData["error"] = "Unable to add new region"; | ||||
|                     return response; | ||||
|                 } | ||||
|             } | ||||
|             | ||||
| 
 | ||||
|             ArrayList SimNeighboursData = new ArrayList(); | ||||
| 
 | ||||
|             SimProfileData neighbour; | ||||
|             Hashtable NeighbourBlock; | ||||
| 
 | ||||
|             bool fastMode = false; // Only compatible with MySQL right now | ||||
| 
 | ||||
|             if (fastMode) | ||||
|             { | ||||
|                 Dictionary<ulong, SimProfileData> neighbours = getRegions(TheSim.regionLocX - 1, TheSim.regionLocY - 1, TheSim.regionLocX + 1, TheSim.regionLocY + 1); | ||||
| 
 | ||||
|                 foreach (KeyValuePair<ulong, SimProfileData> aSim in neighbours) | ||||
|                 { | ||||
|                     NeighbourBlock = new Hashtable(); | ||||
|                     NeighbourBlock["sim_ip"] = aSim.Value.serverIP.ToString(); | ||||
|                     NeighbourBlock["sim_port"] = aSim.Value.serverPort.ToString(); | ||||
|                     NeighbourBlock["region_locx"] = aSim.Value.regionLocX.ToString(); | ||||
|                     NeighbourBlock["region_locy"] = aSim.Value.regionLocY.ToString(); | ||||
|                     NeighbourBlock["UUID"] = aSim.Value.UUID.ToString(); | ||||
| 
 | ||||
|                     if (aSim.Value.UUID != TheSim.UUID) | ||||
|                         SimNeighboursData.Add(NeighbourBlock); | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 for (int x = -1; x < 2; x++) for (int y = -1; y < 2; y++) | ||||
|                     { | ||||
|                         if (getRegion(Helpers.UIntsToLong((uint)((TheSim.regionLocX + x) * 256), (uint)(TheSim.regionLocY + y) * 256)) != null) | ||||
|                         { | ||||
|                             neighbour = getRegion(Helpers.UIntsToLong((uint)((TheSim.regionLocX + x) * 256), (uint)(TheSim.regionLocY + y) * 256)); | ||||
| 
 | ||||
|                             NeighbourBlock = new Hashtable(); | ||||
|                             NeighbourBlock["sim_ip"] = neighbour.serverIP; | ||||
|                             NeighbourBlock["sim_port"] = neighbour.serverPort.ToString(); | ||||
|                             NeighbourBlock["region_locx"] = neighbour.regionLocX.ToString(); | ||||
|                             NeighbourBlock["region_locy"] = neighbour.regionLocY.ToString(); | ||||
|                             NeighbourBlock["UUID"] = neighbour.UUID.ToString(); | ||||
| 
 | ||||
|                             if (neighbour.UUID != TheSim.UUID) SimNeighboursData.Add(NeighbourBlock); | ||||
|                         } | ||||
|                     } | ||||
|             } | ||||
| 
 | ||||
|             responseData["UUID"] = TheSim.UUID.ToString(); | ||||
|             responseData["region_locx"] = TheSim.regionLocX.ToString(); | ||||
|             responseData["region_locy"] = TheSim.regionLocY.ToString(); | ||||
|             responseData["regionname"] = TheSim.regionName; | ||||
|             responseData["estate_id"] = "1"; | ||||
|             responseData["neighbours"] = SimNeighboursData; | ||||
| 
 | ||||
|             responseData["sim_ip"] = TheSim.serverIP; | ||||
|             responseData["sim_port"] = TheSim.serverPort.ToString(); | ||||
|             responseData["asset_url"] = TheSim.regionAssetURI; | ||||
|             responseData["asset_sendkey"] = TheSim.regionAssetSendKey; | ||||
|             responseData["asset_recvkey"] = TheSim.regionAssetRecvKey; | ||||
|             responseData["user_url"] = TheSim.regionUserURI; | ||||
|             responseData["user_sendkey"] = TheSim.regionUserSendKey; | ||||
|             responseData["user_recvkey"] = TheSim.regionUserRecvKey; | ||||
|             responseData["authkey"] = TheSim.regionSecret; | ||||
| 
 | ||||
|             // New! If set, use as URL to local sim storage (ie http://remotehost/region.yap) | ||||
|             responseData["data_uri"] = TheSim.regionDataURI; | ||||
|          | ||||
| 
 | ||||
|         return response; | ||||
|         } | ||||
| 
 | ||||
|         public XmlRpcResponse XmlRpcSimulatorDataRequestMethod(XmlRpcRequest request) | ||||
|         { | ||||
|             Hashtable requestData = (Hashtable)request.Params[0]; | ||||
|             Hashtable responseData = new Hashtable(); | ||||
|             SimProfileData simData = null; | ||||
|             if (requestData.ContainsKey("region_UUID")) | ||||
|             { | ||||
|                 simData = getRegion(new LLUUID((string)requestData["region_UUID"])); | ||||
|             } | ||||
|             else if (requestData.ContainsKey("region_handle")) | ||||
|             { | ||||
|                 simData = getRegion(Convert.ToUInt64((string)requestData["region_handle"])); | ||||
|             } | ||||
| 
 | ||||
|             if (simData == null) | ||||
|             { | ||||
|                 //Sim does not exist | ||||
|                 responseData["error"] = "Sim does not exist"; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 responseData["sim_ip"] = simData.serverIP; | ||||
|                 responseData["sim_port"] = simData.serverPort.ToString(); | ||||
|                 responseData["http_port"] = simData.httpPort.ToString(); | ||||
|                 responseData["remoting_port"] = simData.remotingPort.ToString(); | ||||
|                 responseData["region_locx"] = simData.regionLocX.ToString() ; | ||||
|                 responseData["region_locy"] = simData.regionLocY.ToString(); | ||||
|                 responseData["region_UUID"] = simData.UUID.UUID.ToString(); | ||||
|                 responseData["region_name"] = simData.regionName; | ||||
|             } | ||||
| 
 | ||||
|             XmlRpcResponse response = new XmlRpcResponse(); | ||||
|             response.Value = responseData; | ||||
|             return response; | ||||
|         } | ||||
| 
 | ||||
|         public XmlRpcResponse XmlRpcMapBlockMethod(XmlRpcRequest request) | ||||
|         { | ||||
|             int xmin=980, ymin=980, xmax=1020, ymax=1020; | ||||
| 
 | ||||
|             Hashtable requestData = (Hashtable)request.Params[0]; | ||||
|             if (requestData.ContainsKey("xmin")) | ||||
|             { | ||||
|                 xmin = (Int32)requestData["xmin"]; | ||||
|             } | ||||
|             if (requestData.ContainsKey("ymin")) | ||||
|             { | ||||
|                 ymin = (Int32)requestData["ymin"]; | ||||
|             } | ||||
|             if (requestData.ContainsKey("xmax")) | ||||
|             { | ||||
|                 xmax = (Int32)requestData["xmax"]; | ||||
|             } | ||||
|             if (requestData.ContainsKey("ymax")) | ||||
|             { | ||||
|                 ymax = (Int32)requestData["ymax"]; | ||||
|             } | ||||
| 
 | ||||
|             XmlRpcResponse response = new XmlRpcResponse(); | ||||
|             Hashtable responseData = new Hashtable(); | ||||
|             response.Value = responseData; | ||||
|             IList simProfileList = new ArrayList(); | ||||
| 
 | ||||
|             bool fastMode = false; // MySQL Only | ||||
| 
 | ||||
|             if (fastMode) | ||||
|             { | ||||
|                 Dictionary<ulong, SimProfileData> neighbours = getRegions((uint)xmin, (uint)ymin, (uint)xmax, (uint)ymax); | ||||
| 
 | ||||
|                 foreach (KeyValuePair<ulong, SimProfileData> aSim in neighbours) | ||||
|                 { | ||||
|                     Hashtable simProfileBlock = new Hashtable(); | ||||
|                     simProfileBlock["x"] = aSim.Value.regionLocX.ToString(); | ||||
|                     simProfileBlock["y"] = aSim.Value.regionLocY.ToString(); | ||||
|                     System.Console.WriteLine("send neighbour info for " + aSim.Value.regionLocX.ToString() + " , " + aSim.Value.regionLocY.ToString()); | ||||
|                     simProfileBlock["name"] = aSim.Value.regionName; | ||||
|                     simProfileBlock["access"] = 21; | ||||
|                     simProfileBlock["region-flags"] = 512; | ||||
|                     simProfileBlock["water-height"] = 0; | ||||
|                     simProfileBlock["agents"] = 1; | ||||
|                     simProfileBlock["map-image-id"] = aSim.Value.regionMapTextureID.ToString(); | ||||
| 
 | ||||
|                     // For Sugilite compatibility | ||||
|                     simProfileBlock["regionhandle"] = aSim.Value.regionHandle.ToString(); | ||||
|                     simProfileBlock["sim_ip"] = aSim.Value.serverIP.ToString(); | ||||
|                     simProfileBlock["sim_port"] = aSim.Value.serverPort.ToString(); | ||||
|                     simProfileBlock["sim_uri"] = aSim.Value.serverURI.ToString(); | ||||
|                     simProfileBlock["uuid"] = aSim.Value.UUID.ToStringHyphenated(); | ||||
| 
 | ||||
|                     simProfileList.Add(simProfileBlock); | ||||
|                 } | ||||
|                 MainLog.Instance.Verbose("World map request processed, returned " + simProfileList.Count.ToString() + " region(s) in range via FastMode"); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 SimProfileData simProfile; | ||||
|                 for (int x = xmin; x < xmax+1; x++) | ||||
|                 { | ||||
|                     for (int y = ymin; y < ymax+1; y++) | ||||
|                     { | ||||
|                         ulong regHandle = Helpers.UIntsToLong((uint)(x * 256), (uint)(y * 256)); | ||||
|                         simProfile = getRegion(regHandle); | ||||
|                         if (simProfile != null) | ||||
|                         { | ||||
|                             Hashtable simProfileBlock = new Hashtable(); | ||||
|                             simProfileBlock["x"] = x; | ||||
|                             simProfileBlock["y"] = y; | ||||
|                             simProfileBlock["name"] = simProfile.regionName; | ||||
|                             simProfileBlock["access"] = 0; | ||||
|                             simProfileBlock["region-flags"] = 0; | ||||
|                             simProfileBlock["water-height"] = 20; | ||||
|                             simProfileBlock["agents"] = 1; | ||||
|                             simProfileBlock["map-image-id"] = simProfile.regionMapTextureID.ToString(); | ||||
| 
 | ||||
|                             // For Sugilite compatibility | ||||
|                             simProfileBlock["regionhandle"] = simProfile.regionHandle.ToString(); | ||||
|                             simProfileBlock["sim_ip"] = simProfile.serverIP.ToString(); | ||||
|                             simProfileBlock["sim_port"] = simProfile.serverPort.ToString(); | ||||
|                             simProfileBlock["sim_uri"] = simProfile.serverURI.ToString(); | ||||
|                             simProfileBlock["uuid"] = simProfile.UUID.ToStringHyphenated(); | ||||
| 
 | ||||
|                             simProfileList.Add(simProfileBlock); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 MainLog.Instance.Verbose("World map request processed, returned " + simProfileList.Count.ToString() + " region(s) in range via Standard Mode"); | ||||
|             } | ||||
| 
 | ||||
|             responseData["sim-profiles"] = simProfileList; | ||||
| 
 | ||||
|             return response; | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Performs a REST Get Operation | ||||
|         /// </summary> | ||||
|         /// <param name="request"></param> | ||||
|         /// <param name="path"></param> | ||||
|         /// <param name="param"></param> | ||||
|         /// <returns></returns> | ||||
|         public string RestGetRegionMethod(string request, string path, string param) | ||||
|         { | ||||
|             return RestGetSimMethod("", "/sims/", param); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Performs a REST Set Operation | ||||
|         /// </summary> | ||||
|         /// <param name="request"></param> | ||||
|         /// <param name="path"></param> | ||||
|         /// <param name="param"></param> | ||||
|         /// <returns></returns> | ||||
|         public string RestSetRegionMethod(string request, string path, string param) | ||||
|         { | ||||
|             return RestSetSimMethod("", "/sims/", param); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Returns information about a sim via a REST Request | ||||
|         /// </summary> | ||||
|         /// <param name="request"></param> | ||||
|         /// <param name="path"></param> | ||||
|         /// <param name="param"></param> | ||||
|         /// <returns>Information about the sim in XML</returns> | ||||
|         public string RestGetSimMethod(string request, string path, string param) | ||||
|         { | ||||
|             string respstring = String.Empty; | ||||
| 
 | ||||
|             SimProfileData TheSim; | ||||
|             LLUUID UUID = new LLUUID(param); | ||||
|             TheSim = getRegion(UUID); | ||||
| 
 | ||||
|             if (!(TheSim == null)) | ||||
|             { | ||||
|                 respstring = "<Root>"; | ||||
|                 respstring += "<authkey>" + TheSim.regionSendKey + "</authkey>"; | ||||
|                 respstring += "<sim>"; | ||||
|                 respstring += "<uuid>" + TheSim.UUID.ToString() + "</uuid>"; | ||||
|                 respstring += "<regionname>" + TheSim.regionName + "</regionname>"; | ||||
|                 respstring += "<sim_ip>" + TheSim.serverIP + "</sim_ip>"; | ||||
|                 respstring += "<sim_port>" + TheSim.serverPort.ToString() + "</sim_port>"; | ||||
|                 respstring += "<region_locx>" + TheSim.regionLocX.ToString() + "</region_locx>"; | ||||
|                 respstring += "<region_locy>" + TheSim.regionLocY.ToString() + "</region_locy>"; | ||||
|                 respstring += "<estate_id>1</estate_id>"; | ||||
|                 respstring += "</sim>"; | ||||
|                 respstring += "</Root>"; | ||||
|             } | ||||
| 
 | ||||
|             return respstring; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Creates or updates a sim via a REST Method Request | ||||
|         /// BROKEN with SQL Update | ||||
|         /// </summary> | ||||
|         /// <param name="request"></param> | ||||
|         /// <param name="path"></param> | ||||
|         /// <param name="param"></param> | ||||
|         /// <returns>"OK" or an error</returns> | ||||
|         public string RestSetSimMethod(string request, string path, string param) | ||||
|         { | ||||
|             Console.WriteLine("Processing region update via REST method"); | ||||
|             SimProfileData TheSim; | ||||
|             TheSim = getRegion(new LLUUID(param)); | ||||
|             if ((TheSim) == null) | ||||
|             { | ||||
|                 TheSim = new SimProfileData(); | ||||
|                 LLUUID UUID = new LLUUID(param); | ||||
|                 TheSim.UUID = UUID; | ||||
|                 TheSim.regionRecvKey = config.SimRecvKey; | ||||
|             } | ||||
| 
 | ||||
|             XmlDocument doc = new XmlDocument(); | ||||
|             doc.LoadXml(request); | ||||
|             XmlNode rootnode = doc.FirstChild; | ||||
|             XmlNode authkeynode = rootnode.ChildNodes[0]; | ||||
|             if (authkeynode.Name != "authkey") | ||||
|             { | ||||
|                 return "ERROR! bad XML - expected authkey tag"; | ||||
|             } | ||||
| 
 | ||||
|             XmlNode simnode = rootnode.ChildNodes[1]; | ||||
|             if (simnode.Name != "sim") | ||||
|             { | ||||
|                 return "ERROR! bad XML - expected sim tag"; | ||||
|             } | ||||
| 
 | ||||
|             //TheSim.regionSendKey = Cfg; | ||||
|             TheSim.regionRecvKey = config.SimRecvKey; | ||||
|             TheSim.regionSendKey = config.SimSendKey; | ||||
|             TheSim.regionSecret = config.SimRecvKey; | ||||
|             TheSim.regionDataURI = ""; | ||||
|             TheSim.regionAssetURI = config.DefaultAssetServer; | ||||
|             TheSim.regionAssetRecvKey = config.AssetRecvKey; | ||||
|             TheSim.regionAssetSendKey = config.AssetSendKey; | ||||
|             TheSim.regionUserURI = config.DefaultUserServer; | ||||
|             TheSim.regionUserSendKey = config.UserSendKey; | ||||
|             TheSim.regionUserRecvKey = config.UserRecvKey; | ||||
| 
 | ||||
| 
 | ||||
|             for (int i = 0; i < simnode.ChildNodes.Count; i++) | ||||
|             { | ||||
|                 switch (simnode.ChildNodes[i].Name) | ||||
|                 { | ||||
|                     case "regionname": | ||||
|                         TheSim.regionName = simnode.ChildNodes[i].InnerText; | ||||
|                         break; | ||||
| 
 | ||||
|                     case "sim_ip": | ||||
|                         TheSim.serverIP = simnode.ChildNodes[i].InnerText; | ||||
|                         break; | ||||
| 
 | ||||
|                     case "sim_port": | ||||
|                         TheSim.serverPort = Convert.ToUInt32(simnode.ChildNodes[i].InnerText); | ||||
|                         break; | ||||
| 
 | ||||
|                     case "region_locx": | ||||
|                         TheSim.regionLocX = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText); | ||||
|                         TheSim.regionHandle = Helpers.UIntsToLong((TheSim.regionLocX * 256), (TheSim.regionLocY * 256)); | ||||
|                         break; | ||||
| 
 | ||||
|                     case "region_locy": | ||||
|                         TheSim.regionLocY = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText); | ||||
|                         TheSim.regionHandle = Helpers.UIntsToLong((TheSim.regionLocX * 256), (TheSim.regionLocY * 256)); | ||||
|                         break; | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             TheSim.serverURI = "http://" + TheSim.serverIP + ":" + TheSim.serverPort + "/"; | ||||
| 
 | ||||
|             bool requirePublic = false; | ||||
| 
 | ||||
|             if (requirePublic && (TheSim.serverIP.StartsWith("172.16") || TheSim.serverIP.StartsWith("192.168") || TheSim.serverIP.StartsWith("10.") || TheSim.serverIP.StartsWith("0.") || TheSim.serverIP.StartsWith("255."))) | ||||
|             { | ||||
|                 return "ERROR! Servers must register with public addresses."; | ||||
|             } | ||||
| 
 | ||||
|              | ||||
|             try | ||||
|             { | ||||
|                 MainLog.Instance.Verbose("Updating / adding via " + _plugins.Count + " storage provider(s) registered."); | ||||
|                 foreach (KeyValuePair<string, IGridData> kvp in _plugins) | ||||
|                 { | ||||
|                     try | ||||
|                     { | ||||
|                         //Check reservations | ||||
|                         ReservationData reserveData = kvp.Value.GetReservationAtPoint(TheSim.regionLocX, TheSim.regionLocY); | ||||
|                         if ((reserveData != null && reserveData.gridRecvKey == TheSim.regionRecvKey) || (reserveData == null && authkeynode.InnerText != TheSim.regionRecvKey)) | ||||
|                         { | ||||
|                             kvp.Value.AddProfile(TheSim); | ||||
|                             MainLog.Instance.Verbose("New sim added to grid (" + TheSim.regionName + ")"); | ||||
|                             logToDB(TheSim.UUID.ToStringHyphenated(), "RestSetSimMethod", "", 5, "Region successfully updated and connected to grid."); | ||||
|                         } | ||||
|                         else | ||||
|                         { | ||||
|                             MainLog.Instance.Warn("Unable to update region (RestSetSimMethod): Incorrect reservation auth key.");// Wanted: " + reserveData.gridRecvKey + ", Got: " + TheSim.regionRecvKey + "."); | ||||
|                             return "Unable to update region (RestSetSimMethod): Incorrect auth key."; | ||||
|                         } | ||||
|                     } | ||||
|                     catch (Exception e) | ||||
|                     { | ||||
|                         MainLog.Instance.Verbose("getRegionPlugin Handle " + kvp.Key + " unable to add new sim: " + e.ToString()); | ||||
|                     } | ||||
|                 } | ||||
|                 return "OK"; | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 return "ERROR! Could not save to database! (" + e.ToString() + ")"; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -1,258 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Reflection; | ||||
| using System.Threading; | ||||
| using System.Timers; | ||||
| using OpenSim.Framework.Console; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| using OpenSim.Framework.Servers; | ||||
| using OpenSim.GenericConfig; | ||||
| using Timer=System.Timers.Timer; | ||||
| 
 | ||||
| namespace OpenSim.Grid.GridServer | ||||
| { | ||||
|     /// <summary> | ||||
|     /// </summary> | ||||
|     public class OpenGrid_Main : conscmd_callback | ||||
|     { | ||||
|         private string ConfigDll = "OpenSim.Grid.GridServer.Config.dll"; | ||||
|         private string GridDll = "OpenSim.Framework.Data.MySQL.dll"; | ||||
|         public GridConfig Cfg; | ||||
| 
 | ||||
|         public static OpenGrid_Main thegrid; | ||||
|         protected IGenericConfig localXMLConfig; | ||||
| 
 | ||||
|         public static bool setuponly; | ||||
| 
 | ||||
|         //public LLUUID highestUUID; | ||||
| 
 | ||||
|         //        private SimProfileManager m_simProfileManager; | ||||
| 
 | ||||
|         private GridManager m_gridManager; | ||||
| 
 | ||||
|         private LogBase m_console; | ||||
| 
 | ||||
|         [STAThread] | ||||
|         public static void Main(string[] args) | ||||
|         { | ||||
|             if (args.Length > 0) | ||||
|             { | ||||
|                 if (args[0] == "-setuponly") setuponly = true; | ||||
|             } | ||||
|             Console.WriteLine("Starting...\n"); | ||||
| 
 | ||||
|             thegrid = new OpenGrid_Main(); | ||||
|             thegrid.Startup(); | ||||
| 
 | ||||
|             thegrid.Work(); | ||||
|         } | ||||
| 
 | ||||
|         private void Work() | ||||
|         { | ||||
|             m_console.Notice("Enter help for a list of commands\n"); | ||||
| 
 | ||||
|             while (true) | ||||
|             { | ||||
|                 m_console.MainLogPrompt(); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private OpenGrid_Main() | ||||
|         { | ||||
|             m_console = new LogBase("opengrid-gridserver-console.log", "OpenGrid", this, false); | ||||
|             MainLog.Instance = m_console; | ||||
| 
 | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         public void managercallback(string cmd) | ||||
|         { | ||||
|             switch (cmd) | ||||
|             { | ||||
|                 case "shutdown": | ||||
|                     RunCmd("shutdown", new string[0]); | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         public void Startup() | ||||
|         { | ||||
|             this.localXMLConfig = new XmlConfig("GridServerConfig.xml"); | ||||
|             this.localXMLConfig.LoadData(); | ||||
|             this.ConfigDB(this.localXMLConfig); | ||||
|             this.localXMLConfig.Close(); | ||||
| 
 | ||||
|             m_console.Verbose( "Main.cs:Startup() - Loading configuration"); | ||||
|             Cfg = this.LoadConfigDll(this.ConfigDll); | ||||
|             Cfg.InitConfig(); | ||||
|             if (setuponly) Environment.Exit(0); | ||||
| 
 | ||||
|             m_console.Verbose( "Main.cs:Startup() - Connecting to Storage Server"); | ||||
|             m_gridManager = new GridManager(); | ||||
|             m_gridManager.AddPlugin(GridDll); // Made of win | ||||
|             m_gridManager.config = Cfg; | ||||
| 
 | ||||
|             m_console.Verbose( "Main.cs:Startup() - Starting HTTP process"); | ||||
|             BaseHttpServer httpServer = new BaseHttpServer(8001); | ||||
|             //GridManagementAgent GridManagerAgent = new GridManagementAgent(httpServer, "gridserver", Cfg.SimSendKey, Cfg.SimRecvKey, managercallback); | ||||
| 
 | ||||
|             httpServer.AddXmlRPCHandler("simulator_login", m_gridManager.XmlRpcSimulatorLoginMethod); | ||||
|             httpServer.AddXmlRPCHandler("simulator_data_request", m_gridManager.XmlRpcSimulatorDataRequestMethod); | ||||
|             httpServer.AddXmlRPCHandler("map_block", m_gridManager.XmlRpcMapBlockMethod); | ||||
| 
 | ||||
|             httpServer.AddStreamHandler(new RestStreamHandler("GET", "/sims/", m_gridManager.RestGetSimMethod )); | ||||
|             httpServer.AddStreamHandler(new RestStreamHandler("POST", "/sims/", m_gridManager.RestSetSimMethod )); | ||||
| 
 | ||||
|             httpServer.AddStreamHandler( new RestStreamHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod  )); | ||||
|             httpServer.AddStreamHandler( new RestStreamHandler("POST","/regions/", m_gridManager.RestSetRegionMethod  )); | ||||
| 
 | ||||
|             //httpServer.AddRestHandler("GET", "/sims/", m_gridManager.RestGetSimMethod); | ||||
|             //httpServer.AddRestHandler("POST", "/sims/", m_gridManager.RestSetSimMethod); | ||||
|             //httpServer.AddRestHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod); | ||||
|             //httpServer.AddRestHandler("POST", "/regions/", m_gridManager.RestSetRegionMethod); | ||||
| 
 | ||||
|             httpServer.Start(); | ||||
| 
 | ||||
|             m_console.Verbose( "Main.cs:Startup() - Starting sim status checker"); | ||||
| 
 | ||||
|             Timer simCheckTimer = new Timer(3600000 * 3); // 3 Hours between updates. | ||||
|             simCheckTimer.Elapsed += new ElapsedEventHandler(CheckSims); | ||||
|             simCheckTimer.Enabled = true; | ||||
|         } | ||||
| 
 | ||||
|         private GridConfig LoadConfigDll(string dllName) | ||||
|         { | ||||
|             Assembly pluginAssembly = Assembly.LoadFrom(dllName); | ||||
|             GridConfig config = null; | ||||
| 
 | ||||
|             foreach (Type pluginType in pluginAssembly.GetTypes()) | ||||
|             { | ||||
|                 if (pluginType.IsPublic) | ||||
|                 { | ||||
|                     if (!pluginType.IsAbstract) | ||||
|                     { | ||||
|                         Type typeInterface = pluginType.GetInterface("IGridConfig", true); | ||||
| 
 | ||||
|                         if (typeInterface != null) | ||||
|                         { | ||||
|                             IGridConfig plug = (IGridConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); | ||||
|                             config = plug.GetConfigObject(); | ||||
|                             break; | ||||
|                         } | ||||
| 
 | ||||
|                         typeInterface = null; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             pluginAssembly = null; | ||||
|             return config; | ||||
|         } | ||||
| 
 | ||||
|         public void CheckSims(object sender, ElapsedEventArgs e) | ||||
|         { | ||||
|             /* | ||||
|             foreach (SimProfileBase sim in m_simProfileManager.SimProfiles.Values) | ||||
|             { | ||||
|                 string SimResponse = ""; | ||||
|                 try | ||||
|                 { | ||||
|                     WebRequest CheckSim = WebRequest.Create("http://" + sim.sim_ip + ":" + sim.sim_port.ToString() + "/checkstatus/"); | ||||
|                     CheckSim.Method = "GET"; | ||||
|                     CheckSim.ContentType = "text/plaintext"; | ||||
|                     CheckSim.ContentLength = 0; | ||||
| 
 | ||||
|                     StreamWriter stOut = new StreamWriter(CheckSim.GetRequestStream(), System.Text.Encoding.ASCII); | ||||
|                     stOut.Write(""); | ||||
|                     stOut.Close(); | ||||
| 
 | ||||
|                     StreamReader stIn = new StreamReader(CheckSim.GetResponse().GetResponseStream()); | ||||
|                     SimResponse = stIn.ReadToEnd(); | ||||
|                     stIn.Close(); | ||||
|                 } | ||||
|                 catch | ||||
|                 { | ||||
|                 } | ||||
|                  | ||||
|                 if (SimResponse == "OK") | ||||
|                 { | ||||
|                     m_simProfileManager.SimProfiles[sim.UUID].online = true; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     m_simProfileManager.SimProfiles[sim.UUID].online = false; | ||||
|                 } | ||||
|             } | ||||
|             */ | ||||
|         } | ||||
| 
 | ||||
|         public void RunCmd(string cmd, string[] cmdparams) | ||||
|         { | ||||
|             switch (cmd) | ||||
|             { | ||||
|                 case "help": | ||||
|                     m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)"); | ||||
|                     break; | ||||
| 
 | ||||
|                 case "shutdown": | ||||
|                     m_console.Close(); | ||||
|                     Environment.Exit(0); | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public void Show(string ShowWhat) | ||||
|         { | ||||
|         } | ||||
| 
 | ||||
|         private void ConfigDB(IGenericConfig configData) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 string attri = ""; | ||||
|                 attri = configData.GetAttribute("DataBaseProvider"); | ||||
|                 if (attri == "") | ||||
|                 { | ||||
|                     GridDll = "OpenSim.Framework.Data.DB4o.dll"; | ||||
|                     configData.SetAttribute("DataBaseProvider", "OpenSim.Framework.Data.DB4o.dll"); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     GridDll = attri; | ||||
|                 } | ||||
|                 configData.Commit(); | ||||
|             } | ||||
|             catch | ||||
|             { | ||||
| 
 | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,58 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| [assembly: AssemblyTitle("OGS-GridServer")] | ||||
| [assembly: AssemblyDescription("")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("")] | ||||
| [assembly: AssemblyProduct("OGS-GridServer")] | ||||
| [assembly: AssemblyCopyright("Copyright ©  2007")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")] | ||||
| 
 | ||||
| // Setting ComVisible to false makes the types in this assembly not visible  | ||||
| // to COM components.  If you need to access a type in this assembly from  | ||||
| // COM, set the ComVisible attribute to true on that type. | ||||
| [assembly: ComVisible(false)] | ||||
| 
 | ||||
| // The following GUID is for the ID of the typelib if this project is exposed to COM | ||||
| [assembly: Guid("b541b244-3d1d-4625-9003-bc2a3a6a39a4")] | ||||
| 
 | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
| [assembly: AssemblyVersion("1.0.0.0")] | ||||
| [assembly: AssemblyFileVersion("1.0.0.0")] | ||||
|  | @ -1,125 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections; | ||||
| using System.Collections.Generic; | ||||
| using System.Text; | ||||
| using OpenGrid.Framework.Data; | ||||
| using libsecondlife; | ||||
| using System.Reflection; | ||||
| 
 | ||||
| using System.Xml; | ||||
| using Nwc.XmlRpc; | ||||
| using OpenSim.Framework.Sims; | ||||
| using OpenSim.Framework.Inventory; | ||||
| using OpenSim.Framework.Utilities; | ||||
| 
 | ||||
| using System.Security.Cryptography; | ||||
| 
 | ||||
| namespace OpenGridServices.InventoryServer | ||||
| { | ||||
|     class InventoryManager | ||||
|     { | ||||
|         Dictionary<string, IInventoryData> _plugins = new Dictionary<string, IInventoryData>(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Adds a new inventory server plugin - user servers will be requested in the order they were loaded. | ||||
|         /// </summary> | ||||
|         /// <param name="FileName">The filename to the inventory server plugin DLL</param> | ||||
|         public void AddPlugin(string FileName) | ||||
|         { | ||||
|             OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Attempting to load " + FileName); | ||||
|             Assembly pluginAssembly = Assembly.LoadFrom(FileName); | ||||
| 
 | ||||
|             OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces."); | ||||
|             foreach (Type pluginType in pluginAssembly.GetTypes()) | ||||
|             { | ||||
|                 if (!pluginType.IsAbstract) | ||||
|                 { | ||||
|                     Type typeInterface = pluginType.GetInterface("IInventoryData", true); | ||||
| 
 | ||||
|                     if (typeInterface != null) | ||||
|                     { | ||||
|                         IInventoryData plug = (IInventoryData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); | ||||
|                         plug.Initialise(); | ||||
|                         this._plugins.Add(plug.getName(), plug); | ||||
|                         OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Added IUserData Interface"); | ||||
|                     } | ||||
| 
 | ||||
|                     typeInterface = null; | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             pluginAssembly = null; | ||||
|         } | ||||
| 
 | ||||
|         public List<InventoryFolderBase> getRootFolders(LLUUID user) | ||||
|         { | ||||
|             foreach (KeyValuePair<string, IInventoryData> kvp in _plugins) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     return kvp.Value.getUserRootFolders(user); | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|                     OpenSim.Framework.Console.MainConsole.Instance.Notice("Unable to get root folders via " + kvp.Key + " (" + e.ToString() + ")"); | ||||
|                 } | ||||
|             } | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         public XmlRpcResponse XmlRpcInventoryRequest(XmlRpcRequest request) | ||||
|         { | ||||
|             XmlRpcResponse response = new XmlRpcResponse(); | ||||
|             Hashtable requestData = (Hashtable)request.Params[0]; | ||||
| 
 | ||||
|             Hashtable responseData = new Hashtable(); | ||||
| 
 | ||||
|             // Stuff happens here | ||||
| 
 | ||||
|             if (requestData.ContainsKey("Access-type")) | ||||
|             { | ||||
|                 if (requestData["access-type"] == "rootfolders") | ||||
|                 { | ||||
| //                    responseData["rootfolders"] = | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 responseData["error"] = "No access-type specified."; | ||||
|             } | ||||
| 
 | ||||
| 
 | ||||
|             // Stuff stops happening here | ||||
| 
 | ||||
|             response.Value = responseData; | ||||
|             return response; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,87 +0,0 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.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.Collections; | ||||
| using System.Collections.Generic; | ||||
| using System.Reflection; | ||||
| using System.IO; | ||||
| using System.Text; | ||||
| using libsecondlife; | ||||
| using OpenSim.Framework.User; | ||||
| using OpenSim.Framework.Sims; | ||||
| using OpenSim.Framework.Inventory; | ||||
| using OpenSim.Framework.Interfaces; | ||||
| using OpenSim.Framework.Console; | ||||
| using OpenSim.Servers; | ||||
| using OpenSim.Framework.Utilities; | ||||
| 
 | ||||
| namespace OpenGridServices.InventoryServer | ||||
| { | ||||
|     public class OpenInventory_Main : BaseServer, conscmd_callback | ||||
|     { | ||||
|         ConsoleBase m_console; | ||||
|         InventoryManager m_inventoryManager; | ||||
| 
 | ||||
|         public static void Main(string[] args) | ||||
|         { | ||||
|         } | ||||
| 
 | ||||
|         public OpenInventory_Main() | ||||
|         { | ||||
|             m_console = new ConsoleBase("opengrid-inventory-console.log", "OpenInventory", this, false); | ||||
|             MainConsole.Instance = m_console; | ||||
|         } | ||||
| 
 | ||||
|         public void Startup() | ||||
|         { | ||||
|             MainConsole.Instance.Notice("Initialising inventory manager..."); | ||||
|             m_inventoryManager = new InventoryManager(); | ||||
| 
 | ||||
|             MainConsole.Instance.Notice("Starting HTTP server"); | ||||
|             BaseHttpServer httpServer = new BaseHttpServer(8004); | ||||
| 
 | ||||
|             httpServer.AddXmlRPCHandler("rootfolders", m_inventoryManager.XmlRpcInventoryRequest); | ||||
|             //httpServer.AddRestHandler("GET","/rootfolders/",Rest | ||||
|         } | ||||
| 
 | ||||
|         public void RunCmd(string cmd, string[] cmdparams) | ||||
|         { | ||||
|             switch (cmd) | ||||
|             { | ||||
|                 case "shutdown": | ||||
|                     m_console.Close(); | ||||
|                     Environment.Exit(0); | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public void Show(string ShowWhat) | ||||
|         { | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,16 +0,0 @@ | |||
| <Combine name="OpenGridServices.Manager" fileversion="2.0" outputpath="../../mono-1.2.3.1/lib/monodevelop/bin" MakePkgConfig="False" MakeLibPC="True"> | ||||
|   <Configurations active="Debug"> | ||||
|     <Configuration name="Debug" ctype="CombineConfiguration"> | ||||
|       <Entry build="True" name="OpenGridServices.Manager" configuration="Debug" /> | ||||
|     </Configuration> | ||||
|     <Configuration name="Release" ctype="CombineConfiguration"> | ||||
|       <Entry build="True" name="OpenGridServices.Manager" configuration="Release" /> | ||||
|     </Configuration> | ||||
|   </Configurations> | ||||
|   <StartMode startupentry="OpenGridServices.Manager" single="True"> | ||||
|     <Execute type="None" entry="OpenGridServices.Manager" /> | ||||
|   </StartMode> | ||||
|   <Entries> | ||||
|     <Entry filename="./OpenGridServices.Manager/OpenGridServices.Manager.mdp" /> | ||||
|   </Entries> | ||||
| </Combine> | ||||
|  | @ -1,39 +0,0 @@ | |||
| <?xml version="1.0"?> | ||||
| <UserCombinePreferences filename="/home/gareth/OpenGridServices.Manager/OpenGridServices.Manager.mds"> | ||||
|   <Files> | ||||
|     <File filename="Welcome" /> | ||||
|     <File filename="./OpenGridServices.Manager/MainWindow.cs" /> | ||||
|     <File filename="./OpenGridServices.Manager/ConnectToGridServerDialog.cs" /> | ||||
|     <File filename="./OpenGridServices.Manager/Main.cs" /> | ||||
|   </Files> | ||||
|   <Views> | ||||
|     <ViewMemento Id="MonoDevelop.Ide.Gui.Pads.ProjectPad"> | ||||
|       <TreeView> | ||||
|         <Node expanded="True"> | ||||
|           <Node name="OpenGridServices.Manager" expanded="True"> | ||||
|             <Node name="References" expanded="True" /> | ||||
|             <Node name="Resources" expanded="True" /> | ||||
|             <Node name="UserInterface" expanded="True" /> | ||||
|             <Node name="ConnectToGridServerDialog.cs" expanded="False" selected="True" /> | ||||
|           </Node> | ||||
|         </Node> | ||||
|       </TreeView> | ||||
|     </ViewMemento> | ||||
|     <ViewMemento Id="MonoDevelop.Ide.Gui.Pads.ClassPad"> | ||||
|       <TreeView> | ||||
|         <Node expanded="True" /> | ||||
|       </TreeView> | ||||
|     </ViewMemento> | ||||
|     <ViewMemento Id="MonoDevelop.NUnit.TestPad"> | ||||
|       <TreeView> | ||||
|         <Node expanded="False" /> | ||||
|       </TreeView> | ||||
|     </ViewMemento> | ||||
|   </Views> | ||||
|   <Properties> | ||||
|     <Properties> | ||||
|       <Property key="ActiveConfiguration" value="Debug" /> | ||||
|       <Property key="ActiveWindow" value="/home/gareth/OpenGridServices.Manager/OpenGridServices.Manager/ConnectToGridServerDialog.cs" /> | ||||
|     </Properties> | ||||
|   </Properties> | ||||
| </UserCombinePreferences> | ||||
|  | @ -1,2 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <ArrayOfUserTask xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" /> | ||||
|  | @ -1,32 +0,0 @@ | |||
| using System.Reflection; | ||||
| using System.Runtime.CompilerServices; | ||||
| 
 | ||||
| // Information about this assembly is defined by the following | ||||
| // attributes. | ||||
| // | ||||
| // change them to the information which is associated with the assembly | ||||
| // you compile. | ||||
| 
 | ||||
| [assembly: AssemblyTitle("")] | ||||
| [assembly: AssemblyDescription("")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("")] | ||||
| [assembly: AssemblyProduct("")] | ||||
| [assembly: AssemblyCopyright("")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")] | ||||
| 
 | ||||
| // The assembly version has following format : | ||||
| // | ||||
| // Major.Minor.Build.Revision | ||||
| // | ||||
| // You can specify all values by your own or you can build default build and revision | ||||
| // numbers with the '*' character (the default): | ||||
| 
 | ||||
| [assembly: AssemblyVersion("1.0.*")] | ||||
| 
 | ||||
| // The following attributes specify the key for the sign of your assembly. See the | ||||
| // .NET Framework documentation for more information about signing. | ||||
| // This is not required, if you don't want signing let these attributes like they're. | ||||
| [assembly: AssemblyDelaySign(false)] | ||||
| [assembly: AssemblyKeyFile("")] | ||||
|  | @ -1,33 +0,0 @@ | |||
| using System; | ||||
| using System.Threading; | ||||
| using System.Collections.Generic; | ||||
| using System.Text; | ||||
| 
 | ||||
| namespace OpenGridServices.Manager | ||||
| { | ||||
|     public class BlockingQueue<T> | ||||
|     { | ||||
|         private Queue<T> _queue = new Queue<T>(); | ||||
|         private object _queueSync = new object(); | ||||
| 
 | ||||
|         public void Enqueue(T value) | ||||
|         { | ||||
|             lock (_queueSync) | ||||
|             { | ||||
|                 _queue.Enqueue(value); | ||||
|                 Monitor.Pulse(_queueSync); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public T Dequeue() | ||||
|         { | ||||
|             lock (_queueSync) | ||||
|             { | ||||
|                 if (_queue.Count < 1) | ||||
|                     Monitor.Wait(_queueSync); | ||||
| 
 | ||||
|                 return _queue.Dequeue(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1,16 +0,0 @@ | |||
| 
 | ||||
| using System; | ||||
| 
 | ||||
| namespace OpenGridServices.Manager | ||||
| { | ||||
| 	 | ||||
| 	 | ||||
| 	public partial class Connect to grid server : Gtk.Dialog | ||||
| 	{ | ||||
| 		 | ||||
| 		public Connect to grid server() | ||||
| 		{ | ||||
| 			this.Build(); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue
	
	 mingchen
						mingchen