changed to native line ending encoding
parent
d216f5779c
commit
2a3c79df83
14482
OpenSim.FxCop
14482
OpenSim.FxCop
File diff suppressed because it is too large
Load Diff
|
@ -1,71 +1,71 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using libsecondlife.Packets;
|
using libsecondlife.Packets;
|
||||||
using OpenSim.Framework.Data;
|
using OpenSim.Framework.Data;
|
||||||
using OpenSim.Framework.Interfaces;
|
using OpenSim.Framework.Interfaces;
|
||||||
using OpenSim.Framework.Types;
|
using OpenSim.Framework.Types;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
using OpenSim.Framework.Communications.Caches;
|
using OpenSim.Framework.Communications.Caches;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications
|
namespace OpenSim.Framework.Communications
|
||||||
{
|
{
|
||||||
|
|
||||||
public class CommunicationsManager
|
public class CommunicationsManager
|
||||||
{
|
{
|
||||||
public IUserServices UserServer;
|
public IUserServices UserServer;
|
||||||
public IGridServices GridServer;
|
public IGridServices GridServer;
|
||||||
public IInventoryServices InventoryServer;
|
public IInventoryServices InventoryServer;
|
||||||
public IInterRegionCommunications InterRegion;
|
public IInterRegionCommunications InterRegion;
|
||||||
public UserProfileCache UserProfilesCache;
|
public UserProfileCache UserProfilesCache;
|
||||||
|
|
||||||
public NetworkServersInfo ServersInfo;
|
public NetworkServersInfo ServersInfo;
|
||||||
public CommunicationsManager(NetworkServersInfo serversInfo, BaseHttpServer httpServer)
|
public CommunicationsManager(NetworkServersInfo serversInfo, BaseHttpServer httpServer)
|
||||||
{
|
{
|
||||||
ServersInfo = serversInfo;
|
ServersInfo = serversInfo;
|
||||||
UserProfilesCache = new UserProfileCache(this);
|
UserProfilesCache = new UserProfileCache(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Packet Handlers
|
#region Packet Handlers
|
||||||
public void HandleUUIDNameRequest(LLUUID uuid, IClientAPI remote_client)
|
public void HandleUUIDNameRequest(LLUUID uuid, IClientAPI remote_client)
|
||||||
{
|
{
|
||||||
UserProfileData profileData = this.UserServer.GetUserProfile(uuid);
|
UserProfileData profileData = this.UserServer.GetUserProfile(uuid);
|
||||||
if (profileData != null)
|
if (profileData != null)
|
||||||
{
|
{
|
||||||
LLUUID profileId = profileData.UUID;
|
LLUUID profileId = profileData.UUID;
|
||||||
string firstname = profileData.username;
|
string firstname = profileData.username;
|
||||||
string lastname = profileData.surname;
|
string lastname = profileData.surname;
|
||||||
|
|
||||||
remote_client.SendNameReply(profileId, firstname, lastname);
|
remote_client.SendNameReply(profileId, firstname, lastname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,41 +1,41 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using OpenSim.Framework.Types;
|
using OpenSim.Framework.Types;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications
|
namespace OpenSim.Framework.Communications
|
||||||
{
|
{
|
||||||
public interface IGridServices
|
public interface IGridServices
|
||||||
{
|
{
|
||||||
RegionCommsListener RegisterRegion(RegionInfo regionInfos);
|
RegionCommsListener RegisterRegion(RegionInfo regionInfos);
|
||||||
List<RegionInfo> RequestNeighbours(RegionInfo regionInfo);
|
List<RegionInfo> RequestNeighbours(RegionInfo regionInfo);
|
||||||
RegionInfo RequestNeighbourInfo(ulong regionHandle);
|
RegionInfo RequestNeighbourInfo(ulong regionHandle);
|
||||||
List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY);
|
List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,38 +1,38 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Types;
|
using OpenSim.Framework.Types;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications
|
namespace OpenSim.Framework.Communications
|
||||||
{
|
{
|
||||||
public interface IInterRegionCommunications
|
public interface IInterRegionCommunications
|
||||||
{
|
{
|
||||||
bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData);
|
bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData);
|
||||||
bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position);
|
bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using OpenSim.Framework.Data;
|
using OpenSim.Framework.Data;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Communications.Caches;
|
using OpenSim.Framework.Communications.Caches;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications
|
namespace OpenSim.Framework.Communications
|
||||||
{
|
{
|
||||||
public delegate void InventoryFolderInfo(LLUUID userID, InventoryFolder folderInfo);
|
public delegate void InventoryFolderInfo(LLUUID userID, InventoryFolder folderInfo);
|
||||||
public delegate void InventoryItemInfo(LLUUID userID, InventoryItemBase itemInfo);
|
public delegate void InventoryItemInfo(LLUUID userID, InventoryItemBase itemInfo);
|
||||||
|
|
||||||
public interface IInventoryServices
|
public interface IInventoryServices
|
||||||
{
|
{
|
||||||
void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack);
|
void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,43 +1,43 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Data;
|
using OpenSim.Framework.Data;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications
|
namespace OpenSim.Framework.Communications
|
||||||
{
|
{
|
||||||
public interface IUserServices
|
public interface IUserServices
|
||||||
{
|
{
|
||||||
UserProfileData GetUserProfile(string firstName, string lastName);
|
UserProfileData GetUserProfile(string firstName, string lastName);
|
||||||
UserProfileData GetUserProfile(string name);
|
UserProfileData GetUserProfile(string name);
|
||||||
UserProfileData GetUserProfile(LLUUID avatarID);
|
UserProfileData GetUserProfile(LLUUID avatarID);
|
||||||
|
|
||||||
UserProfileData SetupMasterUser(string firstName, string lastName);
|
UserProfileData SetupMasterUser(string firstName, string lastName);
|
||||||
UserProfileData SetupMasterUser(string firstName, string lastName, string password);
|
UserProfileData SetupMasterUser(string firstName, string lastName, string password);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,60 +1,60 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("OpenGrid.Framework.Communications")]
|
[assembly: AssemblyTitle("OpenGrid.Framework.Communications")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("OpenGrid.Framework.Communications")]
|
[assembly: AssemblyProduct("OpenGrid.Framework.Communications")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2007")]
|
[assembly: AssemblyCopyright("Copyright © 2007")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
// 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
|
// to COM components. If you need to access a type in this assembly from
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("13e7c396-78a9-4a5c-baf2-6f980ea75d95")]
|
[assembly: Guid("13e7c396-78a9-4a5c-baf2-6f980ea75d95")]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
// Major Version
|
// Major Version
|
||||||
// Minor Version
|
// Minor Version
|
||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
// You can specify all the values or you can default the Revision and Build Numbers
|
// You can specify all the values or you can default the Revision and Build Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
|
@ -1,77 +1,77 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using OpenSim.Framework.Data;
|
using OpenSim.Framework.Data;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications.Caches
|
namespace OpenSim.Framework.Communications.Caches
|
||||||
{
|
{
|
||||||
public class CachedUserInfo
|
public class CachedUserInfo
|
||||||
{
|
{
|
||||||
public UserProfileData UserProfile;
|
public UserProfileData UserProfile;
|
||||||
//public Dictionary<LLUUID, InventoryFolder> Folders = new Dictionary<LLUUID, InventoryFolder>();
|
//public Dictionary<LLUUID, InventoryFolder> Folders = new Dictionary<LLUUID, InventoryFolder>();
|
||||||
public InventoryFolder RootFolder;
|
public InventoryFolder RootFolder;
|
||||||
|
|
||||||
public CachedUserInfo()
|
public CachedUserInfo()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userID"></param>
|
/// <param name="userID"></param>
|
||||||
/// <param name="folderInfo"></param>
|
/// <param name="folderInfo"></param>
|
||||||
public void FolderReceive(LLUUID userID, InventoryFolder folderInfo)
|
public void FolderReceive(LLUUID userID, InventoryFolder folderInfo)
|
||||||
{
|
{
|
||||||
if (userID == UserProfile.UUID)
|
if (userID == UserProfile.UUID)
|
||||||
{
|
{
|
||||||
if (this.RootFolder == null)
|
if (this.RootFolder == null)
|
||||||
{
|
{
|
||||||
if (folderInfo.parentID == LLUUID.Zero)
|
if (folderInfo.parentID == LLUUID.Zero)
|
||||||
{
|
{
|
||||||
this.RootFolder = folderInfo;
|
this.RootFolder = folderInfo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (this.RootFolder.folderID == folderInfo.parentID)
|
if (this.RootFolder.folderID == folderInfo.parentID)
|
||||||
{
|
{
|
||||||
this.RootFolder.SubFolders.Add(folderInfo.folderID, folderInfo);
|
this.RootFolder.SubFolders.Add(folderInfo.folderID, folderInfo);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
InventoryFolder pFolder = this.RootFolder.HasSubFolder(folderInfo.parentID);
|
InventoryFolder pFolder = this.RootFolder.HasSubFolder(folderInfo.parentID);
|
||||||
if (pFolder != null)
|
if (pFolder != null)
|
||||||
{
|
{
|
||||||
pFolder.SubFolders.Add(folderInfo.folderID, folderInfo);
|
pFolder.SubFolders.Add(folderInfo.folderID, folderInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ItemReceive(LLUUID userID, InventoryItemBase itemInfo)
|
public void ItemReceive(LLUUID userID, InventoryItemBase itemInfo)
|
||||||
{
|
{
|
||||||
if (userID == UserProfile.UUID)
|
if (userID == UserProfile.UUID)
|
||||||
{
|
{
|
||||||
if (this.RootFolder != null)
|
if (this.RootFolder != null)
|
||||||
{
|
{
|
||||||
if (itemInfo.parentFolderID == this.RootFolder.folderID)
|
if (itemInfo.parentFolderID == this.RootFolder.folderID)
|
||||||
{
|
{
|
||||||
this.RootFolder.Items.Add(itemInfo.inventoryID, itemInfo);
|
this.RootFolder.Items.Add(itemInfo.inventoryID, itemInfo);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
InventoryFolder pFolder = this.RootFolder.HasSubFolder(itemInfo.parentFolderID);
|
InventoryFolder pFolder = this.RootFolder.HasSubFolder(itemInfo.parentFolderID);
|
||||||
if (pFolder != null)
|
if (pFolder != null)
|
||||||
{
|
{
|
||||||
pFolder.Items.Add(itemInfo.inventoryID, itemInfo);
|
pFolder.Items.Add(itemInfo.inventoryID, itemInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,51 +1,51 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Data;
|
using OpenSim.Framework.Data;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications.Caches
|
namespace OpenSim.Framework.Communications.Caches
|
||||||
{
|
{
|
||||||
public class InventoryFolder : InventoryFolderBase
|
public class InventoryFolder : InventoryFolderBase
|
||||||
{
|
{
|
||||||
public Dictionary<LLUUID, InventoryFolder> SubFolders = new Dictionary<LLUUID, InventoryFolder>();
|
public Dictionary<LLUUID, InventoryFolder> SubFolders = new Dictionary<LLUUID, InventoryFolder>();
|
||||||
public Dictionary<LLUUID, InventoryItemBase> Items = new Dictionary<LLUUID, InventoryItemBase>();
|
public Dictionary<LLUUID, InventoryItemBase> Items = new Dictionary<LLUUID, InventoryItemBase>();
|
||||||
|
|
||||||
public InventoryFolder()
|
public InventoryFolder()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryFolder HasSubFolder(LLUUID folderID)
|
public InventoryFolder HasSubFolder(LLUUID folderID)
|
||||||
{
|
{
|
||||||
InventoryFolder returnFolder = null;
|
InventoryFolder returnFolder = null;
|
||||||
if (this.SubFolders.ContainsKey(folderID))
|
if (this.SubFolders.ContainsKey(folderID))
|
||||||
{
|
{
|
||||||
returnFolder = this.SubFolders[folderID];
|
returnFolder = this.SubFolders[folderID];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
foreach (InventoryFolder folder in this.SubFolders.Values)
|
foreach (InventoryFolder folder in this.SubFolders.Values)
|
||||||
{
|
{
|
||||||
returnFolder = folder.HasSubFolder(folderID);
|
returnFolder = folder.HasSubFolder(folderID);
|
||||||
if (returnFolder != null)
|
if (returnFolder != null)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return returnFolder;
|
return returnFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryFolder CreateNewSubFolder(LLUUID folderID, string folderName, ushort type)
|
public InventoryFolder CreateNewSubFolder(LLUUID folderID, string folderName, ushort type)
|
||||||
{
|
{
|
||||||
InventoryFolder subFold = new InventoryFolder();
|
InventoryFolder subFold = new InventoryFolder();
|
||||||
subFold.name = folderName;
|
subFold.name = folderName;
|
||||||
subFold.folderID = folderID;
|
subFold.folderID = folderID;
|
||||||
subFold.type = type;
|
subFold.type = type;
|
||||||
subFold.parentID = this.folderID;
|
subFold.parentID = this.folderID;
|
||||||
subFold.agentID = this.agentID;
|
subFold.agentID = this.agentID;
|
||||||
this.SubFolders.Add(subFold.folderID, subFold);
|
this.SubFolders.Add(subFold.folderID, subFold);
|
||||||
return subFold;
|
return subFold;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,107 +1,107 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Data;
|
using OpenSim.Framework.Data;
|
||||||
using OpenSim.Framework.Communications;
|
using OpenSim.Framework.Communications;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications.Caches
|
namespace OpenSim.Framework.Communications.Caches
|
||||||
{
|
{
|
||||||
public class UserProfileCache
|
public class UserProfileCache
|
||||||
{
|
{
|
||||||
public Dictionary<LLUUID, CachedUserInfo> UserProfiles = new Dictionary<LLUUID, CachedUserInfo>();
|
public Dictionary<LLUUID, CachedUserInfo> UserProfiles = new Dictionary<LLUUID, CachedUserInfo>();
|
||||||
|
|
||||||
private CommunicationsManager m_parent;
|
private CommunicationsManager m_parent;
|
||||||
|
|
||||||
public UserProfileCache(CommunicationsManager parent)
|
public UserProfileCache(CommunicationsManager parent)
|
||||||
{
|
{
|
||||||
m_parent = parent;
|
m_parent = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A new user has moved into a region in this instance
|
/// A new user has moved into a region in this instance
|
||||||
/// so get info from servers
|
/// so get info from servers
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userID"></param>
|
/// <param name="userID"></param>
|
||||||
public void AddNewUser(LLUUID userID)
|
public void AddNewUser(LLUUID userID)
|
||||||
{
|
{
|
||||||
if (!this.UserProfiles.ContainsKey(userID))
|
if (!this.UserProfiles.ContainsKey(userID))
|
||||||
{
|
{
|
||||||
CachedUserInfo userInfo = new CachedUserInfo();
|
CachedUserInfo userInfo = new CachedUserInfo();
|
||||||
userInfo.UserProfile = this.RequestUserProfileForUser(userID);
|
userInfo.UserProfile = this.RequestUserProfileForUser(userID);
|
||||||
this.m_parent.InventoryServer.RequestInventoryForUser(userID, userInfo.FolderReceive, userInfo.ItemReceive);
|
this.m_parent.InventoryServer.RequestInventoryForUser(userID, userInfo.FolderReceive, userInfo.ItemReceive);
|
||||||
if (userInfo.UserProfile != null)
|
if (userInfo.UserProfile != null)
|
||||||
{
|
{
|
||||||
this.UserProfiles.Add(userID, userInfo);
|
this.UserProfiles.Add(userID, userInfo);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//no profile for this user, what do we do now?
|
//no profile for this user, what do we do now?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//already have a cached profile for this user
|
//already have a cached profile for this user
|
||||||
//we should make sure its upto date with the user server version
|
//we should make sure its upto date with the user server version
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A new user has moved into a region in this instance
|
/// A new user has moved into a region in this instance
|
||||||
/// so get info from servers
|
/// so get info from servers
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="firstName"></param>
|
/// <param name="firstName"></param>
|
||||||
/// <param name="lastName"></param>
|
/// <param name="lastName"></param>
|
||||||
public void AddNewUser(string firstName, string lastName)
|
public void AddNewUser(string firstName, string lastName)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A user has left this instance
|
/// A user has left this instance
|
||||||
/// so make sure servers have been updated
|
/// so make sure servers have been updated
|
||||||
/// Then remove cached info
|
/// Then remove cached info
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userID"></param>
|
/// <param name="userID"></param>
|
||||||
public void UserLogOut(LLUUID userID)
|
public void UserLogOut(LLUUID userID)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Request the user profile from User server
|
/// Request the user profile from User server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userID"></param>
|
/// <param name="userID"></param>
|
||||||
private UserProfileData RequestUserProfileForUser(LLUUID userID)
|
private UserProfileData RequestUserProfileForUser(LLUUID userID)
|
||||||
{
|
{
|
||||||
return this.m_parent.UserServer.GetUserProfile(userID);
|
return this.m_parent.UserServer.GetUserProfile(userID);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Request Iventory Info from Inventory server
|
/// Request Iventory Info from Inventory server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userID"></param>
|
/// <param name="userID"></param>
|
||||||
private void RequestInventoryForUser(LLUUID userID)
|
private void RequestInventoryForUser(LLUUID userID)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Make sure UserProfile is updated on user server
|
/// Make sure UserProfile is updated on user server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userID"></param>
|
/// <param name="userID"></param>
|
||||||
private void UpdateUserProfileToServer(LLUUID userID)
|
private void UpdateUserProfileToServer(LLUUID userID)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Update Inventory data to Inventory server
|
/// Update Inventory data to Inventory server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userID"></param>
|
/// <param name="userID"></param>
|
||||||
private void UpdateInventoryToServer(LLUUID userID)
|
private void UpdateInventoryToServer(LLUUID userID)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,56 +1,56 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
// Information about this assembly is defined by the following
|
// Information about this assembly is defined by the following
|
||||||
// attributes.
|
// attributes.
|
||||||
//
|
//
|
||||||
// change them to the information which is associated with the assembly
|
// change them to the information which is associated with the assembly
|
||||||
// you compile.
|
// you compile.
|
||||||
|
|
||||||
[assembly: AssemblyTitle("ServerConsole")]
|
[assembly: AssemblyTitle("ServerConsole")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("ServerConsole")]
|
[assembly: AssemblyProduct("ServerConsole")]
|
||||||
[assembly: AssemblyCopyright("")]
|
[assembly: AssemblyCopyright("")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// This sets the default COM visibility of types in the assembly to invisible.
|
// 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.
|
// If you need to expose a type to COM, use [ComVisible(true)] on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The assembly version has following format :
|
// The assembly version has following format :
|
||||||
//
|
//
|
||||||
// Major.Minor.Build.Revision
|
// Major.Minor.Build.Revision
|
||||||
//
|
//
|
||||||
// You can specify all values by your own or you can build default build and revision
|
// You can specify all values by your own or you can build default build and revision
|
||||||
// numbers with the '*' character (the default):
|
// numbers with the '*' character (the default):
|
||||||
|
|
||||||
[assembly: AssemblyVersion("1.0.*")]
|
[assembly: AssemblyVersion("1.0.*")]
|
||||||
|
|
|
@ -1,35 +1,35 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
namespace OpenSim.Framework.Console
|
namespace OpenSim.Framework.Console
|
||||||
{
|
{
|
||||||
public interface conscmd_callback
|
public interface conscmd_callback
|
||||||
{
|
{
|
||||||
void RunCmd(string cmd, string[] cmdparams);
|
void RunCmd(string cmd, string[] cmdparams);
|
||||||
void Show(string ShowWhat);
|
void Show(string ShowWhat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,282 +1,282 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Console
|
namespace OpenSim.Framework.Console
|
||||||
{
|
{
|
||||||
public enum LogPriority : int
|
public enum LogPriority : int
|
||||||
{
|
{
|
||||||
CRITICAL,
|
CRITICAL,
|
||||||
HIGH,
|
HIGH,
|
||||||
MEDIUM,
|
MEDIUM,
|
||||||
NORMAL,
|
NORMAL,
|
||||||
LOW,
|
LOW,
|
||||||
VERBOSE,
|
VERBOSE,
|
||||||
EXTRAVERBOSE
|
EXTRAVERBOSE
|
||||||
}
|
}
|
||||||
|
|
||||||
public class LogBase
|
public class LogBase
|
||||||
{
|
{
|
||||||
StreamWriter Log;
|
StreamWriter Log;
|
||||||
public conscmd_callback cmdparser;
|
public conscmd_callback cmdparser;
|
||||||
public string componentname;
|
public string componentname;
|
||||||
private bool m_silent;
|
private bool m_silent;
|
||||||
|
|
||||||
public LogBase(string LogFile, string componentname, conscmd_callback cmdparser, bool silent)
|
public LogBase(string LogFile, string componentname, conscmd_callback cmdparser, bool silent)
|
||||||
{
|
{
|
||||||
this.componentname = componentname;
|
this.componentname = componentname;
|
||||||
this.cmdparser = cmdparser;
|
this.cmdparser = cmdparser;
|
||||||
this.m_silent = silent;
|
this.m_silent = silent;
|
||||||
System.Console.WriteLine("ServerConsole.cs - creating new local console");
|
System.Console.WriteLine("ServerConsole.cs - creating new local console");
|
||||||
|
|
||||||
if (String.IsNullOrEmpty(LogFile))
|
if (String.IsNullOrEmpty(LogFile))
|
||||||
{
|
{
|
||||||
LogFile = componentname + ".log";
|
LogFile = componentname + ".log";
|
||||||
}
|
}
|
||||||
|
|
||||||
System.Console.WriteLine("Logs will be saved to current directory in " + LogFile);
|
System.Console.WriteLine("Logs will be saved to current directory in " + LogFile);
|
||||||
Log = File.AppendText(LogFile);
|
Log = File.AppendText(LogFile);
|
||||||
Log.WriteLine("========================================================================");
|
Log.WriteLine("========================================================================");
|
||||||
Log.WriteLine(componentname + " Started at " + DateTime.Now.ToString());
|
Log.WriteLine(componentname + " Started at " + DateTime.Now.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
Log.WriteLine("Shutdown at " + DateTime.Now.ToString());
|
Log.WriteLine("Shutdown at " + DateTime.Now.ToString());
|
||||||
Log.Close();
|
Log.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Write(string format, params object[] args)
|
public void Write(string format, params object[] args)
|
||||||
{
|
{
|
||||||
Notice(format, args);
|
Notice(format, args);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void WriteLine(LogPriority importance, string format, params object[] args)
|
public void WriteLine(LogPriority importance, string format, params object[] args)
|
||||||
{
|
{
|
||||||
Log.WriteLine(format, args);
|
Log.WriteLine(format, args);
|
||||||
Log.Flush();
|
Log.Flush();
|
||||||
if (!m_silent)
|
if (!m_silent)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine(format, args);
|
System.Console.WriteLine(format, args);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Warn(string format, params object[] args)
|
public void Warn(string format, params object[] args)
|
||||||
{
|
{
|
||||||
WriteNewLine(ConsoleColor.Yellow, format, args);
|
WriteNewLine(ConsoleColor.Yellow, format, args);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Notice(string format, params object[] args)
|
public void Notice(string format, params object[] args)
|
||||||
{
|
{
|
||||||
WriteNewLine(ConsoleColor.White, format, args);
|
WriteNewLine(ConsoleColor.White, format, args);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Error(string format, params object[] args)
|
public void Error(string format, params object[] args)
|
||||||
{
|
{
|
||||||
WriteNewLine(ConsoleColor.Red, format, args);
|
WriteNewLine(ConsoleColor.Red, format, args);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Verbose(string format, params object[] args)
|
public void Verbose(string format, params object[] args)
|
||||||
{
|
{
|
||||||
WriteNewLine(ConsoleColor.Gray, format, args);
|
WriteNewLine(ConsoleColor.Gray, format, args);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Status(string format, params object[] args)
|
public void Status(string format, params object[] args)
|
||||||
{
|
{
|
||||||
WriteNewLine(ConsoleColor.Blue, format, args);
|
WriteNewLine(ConsoleColor.Blue, format, args);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WriteNewLine(ConsoleColor color, string format, params object[] args)
|
private void WriteNewLine(ConsoleColor color, string format, params object[] args)
|
||||||
{
|
{
|
||||||
Log.WriteLine(format, args);
|
Log.WriteLine(format, args);
|
||||||
Log.Flush();
|
Log.Flush();
|
||||||
if (!m_silent)
|
if (!m_silent)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
System.Console.ForegroundColor = color;
|
System.Console.ForegroundColor = color;
|
||||||
System.Console.WriteLine(format, args);
|
System.Console.WriteLine(format, args);
|
||||||
System.Console.ResetColor();
|
System.Console.ResetColor();
|
||||||
}
|
}
|
||||||
catch (ArgumentNullException)
|
catch (ArgumentNullException)
|
||||||
{
|
{
|
||||||
// Some older systems dont support coloured text.
|
// Some older systems dont support coloured text.
|
||||||
System.Console.WriteLine(format, args);
|
System.Console.WriteLine(format, args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ReadLine()
|
public string ReadLine()
|
||||||
{
|
{
|
||||||
string TempStr = System.Console.ReadLine();
|
string TempStr = System.Console.ReadLine();
|
||||||
Log.WriteLine(TempStr);
|
Log.WriteLine(TempStr);
|
||||||
return TempStr;
|
return TempStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Read()
|
public int Read()
|
||||||
{
|
{
|
||||||
int TempInt = System.Console.Read();
|
int TempInt = System.Console.Read();
|
||||||
Log.Write((char)TempInt);
|
Log.Write((char)TempInt);
|
||||||
return TempInt;
|
return TempInt;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IPAddress CmdPromptIPAddress(string prompt, string defaultvalue)
|
public IPAddress CmdPromptIPAddress(string prompt, string defaultvalue)
|
||||||
{
|
{
|
||||||
IPAddress address;
|
IPAddress address;
|
||||||
string addressStr;
|
string addressStr;
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
addressStr = MainLog.Instance.CmdPrompt(prompt, defaultvalue);
|
addressStr = MainLog.Instance.CmdPrompt(prompt, defaultvalue);
|
||||||
if (IPAddress.TryParse(addressStr, out address))
|
if (IPAddress.TryParse(addressStr, out address))
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MainLog.Instance.Error("Illegal address. Please re-enter.");
|
MainLog.Instance.Error("Illegal address. Please re-enter.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return address;
|
return address;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int CmdPromptIPPort(string prompt, string defaultvalue)
|
public int CmdPromptIPPort(string prompt, string defaultvalue)
|
||||||
{
|
{
|
||||||
int port;
|
int port;
|
||||||
string portStr;
|
string portStr;
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
portStr = MainLog.Instance.CmdPrompt(prompt, defaultvalue);
|
portStr = MainLog.Instance.CmdPrompt(prompt, defaultvalue);
|
||||||
if (int.TryParse(portStr, out port))
|
if (int.TryParse(portStr, out port))
|
||||||
{
|
{
|
||||||
if (port >= IPEndPoint.MinPort && port <= IPEndPoint.MaxPort)
|
if (port >= IPEndPoint.MinPort && port <= IPEndPoint.MaxPort)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MainLog.Instance.Error("Illegal address. Please re-enter.");
|
MainLog.Instance.Error("Illegal address. Please re-enter.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return port;
|
return port;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Displays a prompt and waits for the user to enter a string, then returns that string
|
// Displays a prompt and waits for the user to enter a string, then returns that string
|
||||||
// Done with no echo and suitable for passwords
|
// Done with no echo and suitable for passwords
|
||||||
public string PasswdPrompt(string prompt)
|
public string PasswdPrompt(string prompt)
|
||||||
{
|
{
|
||||||
// FIXME: Needs to be better abstracted
|
// FIXME: Needs to be better abstracted
|
||||||
Log.WriteLine(prompt);
|
Log.WriteLine(prompt);
|
||||||
this.Write(prompt);
|
this.Write(prompt);
|
||||||
ConsoleColor oldfg = System.Console.ForegroundColor;
|
ConsoleColor oldfg = System.Console.ForegroundColor;
|
||||||
System.Console.ForegroundColor = System.Console.BackgroundColor;
|
System.Console.ForegroundColor = System.Console.BackgroundColor;
|
||||||
string temp = System.Console.ReadLine();
|
string temp = System.Console.ReadLine();
|
||||||
System.Console.ForegroundColor = oldfg;
|
System.Console.ForegroundColor = oldfg;
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Displays a command prompt and waits for the user to enter a string, then returns that string
|
// Displays a command prompt and waits for the user to enter a string, then returns that string
|
||||||
public string CmdPrompt(string prompt)
|
public string CmdPrompt(string prompt)
|
||||||
{
|
{
|
||||||
this.Write(String.Format("{0}: ", prompt));
|
this.Write(String.Format("{0}: ", prompt));
|
||||||
return this.ReadLine();
|
return this.ReadLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Displays a command prompt and returns a default value if the user simply presses enter
|
// Displays a command prompt and returns a default value if the user simply presses enter
|
||||||
public string CmdPrompt(string prompt, string defaultresponse)
|
public string CmdPrompt(string prompt, string defaultresponse)
|
||||||
{
|
{
|
||||||
string temp = CmdPrompt(String.Format("{0} [{1}]", prompt, defaultresponse));
|
string temp = CmdPrompt(String.Format("{0} [{1}]", prompt, defaultresponse));
|
||||||
if (temp == "")
|
if (temp == "")
|
||||||
{
|
{
|
||||||
return defaultresponse;
|
return defaultresponse;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Displays a command prompt and returns a default value, user may only enter 1 of 2 options
|
// 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)
|
public string CmdPrompt(string prompt, string defaultresponse, string OptionA, string OptionB)
|
||||||
{
|
{
|
||||||
bool itisdone = false;
|
bool itisdone = false;
|
||||||
string temp = CmdPrompt(prompt, defaultresponse);
|
string temp = CmdPrompt(prompt, defaultresponse);
|
||||||
while (itisdone == false)
|
while (itisdone == false)
|
||||||
{
|
{
|
||||||
if ((temp == OptionA) || (temp == OptionB))
|
if ((temp == OptionA) || (temp == OptionB))
|
||||||
{
|
{
|
||||||
itisdone = true;
|
itisdone = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Notice("Valid options are " + OptionA + " or " + OptionB);
|
Notice("Valid options are " + OptionA + " or " + OptionB);
|
||||||
temp = CmdPrompt(prompt, defaultresponse);
|
temp = CmdPrompt(prompt, defaultresponse);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Runs a command with a number of parameters
|
// Runs a command with a number of parameters
|
||||||
public Object RunCmd(string Cmd, string[] cmdparams)
|
public Object RunCmd(string Cmd, string[] cmdparams)
|
||||||
{
|
{
|
||||||
cmdparser.RunCmd(Cmd, cmdparams);
|
cmdparser.RunCmd(Cmd, cmdparams);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shows data about something
|
// Shows data about something
|
||||||
public void ShowCommands(string ShowWhat)
|
public void ShowCommands(string ShowWhat)
|
||||||
{
|
{
|
||||||
cmdparser.Show(ShowWhat);
|
cmdparser.Show(ShowWhat);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MainLogPrompt()
|
public void MainLogPrompt()
|
||||||
{
|
{
|
||||||
string[] tempstrarray;
|
string[] tempstrarray;
|
||||||
string tempstr = this.CmdPrompt(this.componentname + "# ");
|
string tempstr = this.CmdPrompt(this.componentname + "# ");
|
||||||
tempstrarray = tempstr.Split(' ');
|
tempstrarray = tempstr.Split(' ');
|
||||||
string cmd = tempstrarray[0];
|
string cmd = tempstrarray[0];
|
||||||
Array.Reverse(tempstrarray);
|
Array.Reverse(tempstrarray);
|
||||||
Array.Resize<string>(ref tempstrarray, tempstrarray.Length - 1);
|
Array.Resize<string>(ref tempstrarray, tempstrarray.Length - 1);
|
||||||
Array.Reverse(tempstrarray);
|
Array.Reverse(tempstrarray);
|
||||||
string[] cmdparams = (string[])tempstrarray;
|
string[] cmdparams = (string[])tempstrarray;
|
||||||
RunCmd(cmd, cmdparams);
|
RunCmd(cmd, cmdparams);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,47 +1,47 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
namespace OpenSim.Framework.Console
|
namespace OpenSim.Framework.Console
|
||||||
{
|
{
|
||||||
public class MainLog {
|
public class MainLog {
|
||||||
|
|
||||||
private static LogBase instance;
|
private static LogBase instance;
|
||||||
|
|
||||||
public static LogBase Instance
|
public static LogBase Instance
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
instance = value;
|
instance = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,162 +1,162 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data.DB4o
|
namespace OpenSim.Framework.Data.DB4o
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A grid server storage mechanism employing the DB4o database system
|
/// A grid server storage mechanism employing the DB4o database system
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class DB4oGridData : IGridData
|
class DB4oGridData : IGridData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The database manager object
|
/// The database manager object
|
||||||
/// </summary>
|
/// </summary>
|
||||||
DB4oGridManager manager;
|
DB4oGridManager manager;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Called when the plugin is first loaded (as constructors are not called)
|
/// Called when the plugin is first loaded (as constructors are not called)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Initialise() {
|
public void Initialise() {
|
||||||
manager = new DB4oGridManager("gridserver.yap");
|
manager = new DB4oGridManager("gridserver.yap");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a list of regions within the specified ranges
|
/// Returns a list of regions within the specified ranges
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="a">minimum X coordinate</param>
|
/// <param name="a">minimum X coordinate</param>
|
||||||
/// <param name="b">minimum Y coordinate</param>
|
/// <param name="b">minimum Y coordinate</param>
|
||||||
/// <param name="c">maximum X coordinate</param>
|
/// <param name="c">maximum X coordinate</param>
|
||||||
/// <param name="d">maximum Y coordinate</param>
|
/// <param name="d">maximum Y coordinate</param>
|
||||||
/// <returns>An array of region profiles</returns>
|
/// <returns>An array of region profiles</returns>
|
||||||
public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
|
public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a region located at the specified regionHandle (warning multiple regions may occupy the one spot, first found is returned)
|
/// Returns a region located at the specified regionHandle (warning multiple regions may occupy the one spot, first found is returned)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="handle">The handle to search for</param>
|
/// <param name="handle">The handle to search for</param>
|
||||||
/// <returns>A region profile</returns>
|
/// <returns>A region profile</returns>
|
||||||
public SimProfileData GetProfileByHandle(ulong handle) {
|
public SimProfileData GetProfileByHandle(ulong handle) {
|
||||||
lock (manager.simProfiles)
|
lock (manager.simProfiles)
|
||||||
{
|
{
|
||||||
foreach (LLUUID UUID in manager.simProfiles.Keys)
|
foreach (LLUUID UUID in manager.simProfiles.Keys)
|
||||||
{
|
{
|
||||||
if (manager.simProfiles[UUID].regionHandle == handle)
|
if (manager.simProfiles[UUID].regionHandle == handle)
|
||||||
{
|
{
|
||||||
return manager.simProfiles[UUID];
|
return manager.simProfiles[UUID];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
throw new Exception("Unable to find profile with handle (" + handle.ToString() + ")");
|
throw new Exception("Unable to find profile with handle (" + handle.ToString() + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a specific region
|
/// Returns a specific region
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uuid">The region ID code</param>
|
/// <param name="uuid">The region ID code</param>
|
||||||
/// <returns>A region profile</returns>
|
/// <returns>A region profile</returns>
|
||||||
public SimProfileData GetProfileByLLUUID(LLUUID uuid)
|
public SimProfileData GetProfileByLLUUID(LLUUID uuid)
|
||||||
{
|
{
|
||||||
lock (manager.simProfiles)
|
lock (manager.simProfiles)
|
||||||
{
|
{
|
||||||
if (manager.simProfiles.ContainsKey(uuid))
|
if (manager.simProfiles.ContainsKey(uuid))
|
||||||
return manager.simProfiles[uuid];
|
return manager.simProfiles[uuid];
|
||||||
}
|
}
|
||||||
throw new Exception("Unable to find profile with UUID (" + uuid.ToStringHyphenated() + "). Total Registered Regions: " + manager.simProfiles.Count);
|
throw new Exception("Unable to find profile with UUID (" + uuid.ToStringHyphenated() + "). Total Registered Regions: " + manager.simProfiles.Count);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a new specified region to the database
|
/// Adds a new specified region to the database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="profile">The profile to add</param>
|
/// <param name="profile">The profile to add</param>
|
||||||
/// <returns>A dataresponse enum indicating success</returns>
|
/// <returns>A dataresponse enum indicating success</returns>
|
||||||
public DataResponse AddProfile(SimProfileData profile)
|
public DataResponse AddProfile(SimProfileData profile)
|
||||||
{
|
{
|
||||||
lock (manager.simProfiles)
|
lock (manager.simProfiles)
|
||||||
{
|
{
|
||||||
if (manager.AddRow(profile))
|
if (manager.AddRow(profile))
|
||||||
{
|
{
|
||||||
return DataResponse.RESPONSE_OK;
|
return DataResponse.RESPONSE_OK;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return DataResponse.RESPONSE_ERROR;
|
return DataResponse.RESPONSE_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Authenticates a new region using the shared secrets. NOT SECURE.
|
/// Authenticates a new region using the shared secrets. NOT SECURE.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uuid">The UUID the region is authenticating with</param>
|
/// <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="handle">The location the region is logging into (unused in Db4o)</param>
|
||||||
/// <param name="key">The shared secret</param>
|
/// <param name="key">The shared secret</param>
|
||||||
/// <returns>Authenticated?</returns>
|
/// <returns>Authenticated?</returns>
|
||||||
public bool AuthenticateSim(LLUUID uuid, ulong handle, string key) {
|
public bool AuthenticateSim(LLUUID uuid, ulong handle, string key) {
|
||||||
if (manager.simProfiles[uuid].regionRecvKey == key)
|
if (manager.simProfiles[uuid].regionRecvKey == key)
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Shuts down the database
|
/// Shuts down the database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
manager = null;
|
manager = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the providers name
|
/// Returns the providers name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>The name of the storage system</returns>
|
/// <returns>The name of the storage system</returns>
|
||||||
public string getName()
|
public string getName()
|
||||||
{
|
{
|
||||||
return "DB4o Grid Provider";
|
return "DB4o Grid Provider";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the providers version
|
/// Returns the providers version
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>The version of the storage system</returns>
|
/// <returns>The version of the storage system</returns>
|
||||||
public string getVersion()
|
public string getVersion()
|
||||||
{
|
{
|
||||||
return "0.1";
|
return "0.1";
|
||||||
}
|
}
|
||||||
|
|
||||||
public ReservationData GetReservationAtPoint(uint x, uint y)
|
public ReservationData GetReservationAtPoint(uint x, uint y)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,163 +1,163 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Db4objects.Db4o;
|
using Db4objects.Db4o;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data.DB4o
|
namespace OpenSim.Framework.Data.DB4o
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A Database manager for Db4o
|
/// A Database manager for Db4o
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class DB4oGridManager
|
class DB4oGridManager
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A list of the current regions connected (in-memory cache)
|
/// A list of the current regions connected (in-memory cache)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Dictionary<LLUUID, SimProfileData> simProfiles = new Dictionary<LLUUID, SimProfileData>();
|
public Dictionary<LLUUID, SimProfileData> simProfiles = new Dictionary<LLUUID, SimProfileData>();
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Database File Name
|
/// Database File Name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
string dbfl;
|
string dbfl;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new grid storage manager
|
/// Creates a new grid storage manager
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="db4odb">Filename to the database file</param>
|
/// <param name="db4odb">Filename to the database file</param>
|
||||||
public DB4oGridManager(string db4odb)
|
public DB4oGridManager(string db4odb)
|
||||||
{
|
{
|
||||||
dbfl = db4odb;
|
dbfl = db4odb;
|
||||||
IObjectContainer database;
|
IObjectContainer database;
|
||||||
database = Db4oFactory.OpenFile(dbfl);
|
database = Db4oFactory.OpenFile(dbfl);
|
||||||
IObjectSet result = database.Get(typeof(SimProfileData));
|
IObjectSet result = database.Get(typeof(SimProfileData));
|
||||||
// Loads the file into the in-memory cache
|
// Loads the file into the in-memory cache
|
||||||
foreach(SimProfileData row in result) {
|
foreach(SimProfileData row in result) {
|
||||||
simProfiles.Add(row.UUID, row);
|
simProfiles.Add(row.UUID, row);
|
||||||
}
|
}
|
||||||
database.Close();
|
database.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a new profile to the database (Warning: Probably slow.)
|
/// Adds a new profile to the database (Warning: Probably slow.)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="row">The profile to add</param>
|
/// <param name="row">The profile to add</param>
|
||||||
/// <returns>Successful?</returns>
|
/// <returns>Successful?</returns>
|
||||||
public bool AddRow(SimProfileData row)
|
public bool AddRow(SimProfileData row)
|
||||||
{
|
{
|
||||||
if (simProfiles.ContainsKey(row.UUID))
|
if (simProfiles.ContainsKey(row.UUID))
|
||||||
{
|
{
|
||||||
simProfiles[row.UUID] = row;
|
simProfiles[row.UUID] = row;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
simProfiles.Add(row.UUID, row);
|
simProfiles.Add(row.UUID, row);
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IObjectContainer database;
|
IObjectContainer database;
|
||||||
database = Db4oFactory.OpenFile(dbfl);
|
database = Db4oFactory.OpenFile(dbfl);
|
||||||
database.Set(row);
|
database.Set(row);
|
||||||
database.Close();
|
database.Close();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A manager for the DB4o database (user profiles)
|
/// A manager for the DB4o database (user profiles)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class DB4oUserManager
|
class DB4oUserManager
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A list of the user profiles (in memory cache)
|
/// A list of the user profiles (in memory cache)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Dictionary<LLUUID, UserProfileData> userProfiles = new Dictionary<LLUUID, UserProfileData>();
|
public Dictionary<LLUUID, UserProfileData> userProfiles = new Dictionary<LLUUID, UserProfileData>();
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Database filename
|
/// Database filename
|
||||||
/// </summary>
|
/// </summary>
|
||||||
string dbfl;
|
string dbfl;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises a new DB manager
|
/// Initialises a new DB manager
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="db4odb">The filename to the database</param>
|
/// <param name="db4odb">The filename to the database</param>
|
||||||
public DB4oUserManager(string db4odb)
|
public DB4oUserManager(string db4odb)
|
||||||
{
|
{
|
||||||
dbfl = db4odb;
|
dbfl = db4odb;
|
||||||
IObjectContainer database;
|
IObjectContainer database;
|
||||||
database = Db4oFactory.OpenFile(dbfl);
|
database = Db4oFactory.OpenFile(dbfl);
|
||||||
// Load to cache
|
// Load to cache
|
||||||
IObjectSet result = database.Get(typeof(UserProfileData));
|
IObjectSet result = database.Get(typeof(UserProfileData));
|
||||||
foreach (UserProfileData row in result)
|
foreach (UserProfileData row in result)
|
||||||
{
|
{
|
||||||
userProfiles.Add(row.UUID, row);
|
userProfiles.Add(row.UUID, row);
|
||||||
}
|
}
|
||||||
database.Close();
|
database.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a new profile to the database (Warning: Probably slow.)
|
/// Adds a new profile to the database (Warning: Probably slow.)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="row">The profile to add</param>
|
/// <param name="row">The profile to add</param>
|
||||||
/// <returns>Successful?</returns>
|
/// <returns>Successful?</returns>
|
||||||
public bool AddRow(UserProfileData row)
|
public bool AddRow(UserProfileData row)
|
||||||
{
|
{
|
||||||
if (userProfiles.ContainsKey(row.UUID))
|
if (userProfiles.ContainsKey(row.UUID))
|
||||||
{
|
{
|
||||||
userProfiles[row.UUID] = row;
|
userProfiles[row.UUID] = row;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
userProfiles.Add(row.UUID, row);
|
userProfiles.Add(row.UUID, row);
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IObjectContainer database;
|
IObjectContainer database;
|
||||||
database = Db4oFactory.OpenFile(dbfl);
|
database = Db4oFactory.OpenFile(dbfl);
|
||||||
database.Set(row);
|
database.Set(row);
|
||||||
database.Close();
|
database.Close();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,202 +1,202 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data.DB4o
|
namespace OpenSim.Framework.Data.DB4o
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A User storage interface for the DB4o database system
|
/// A User storage interface for the DB4o database system
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DB4oUserData : IUserData
|
public class DB4oUserData : IUserData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The database manager
|
/// The database manager
|
||||||
/// </summary>
|
/// </summary>
|
||||||
DB4oUserManager manager;
|
DB4oUserManager manager;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Artificial constructor called upon plugin load
|
/// Artificial constructor called upon plugin load
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Initialise()
|
public void Initialise()
|
||||||
{
|
{
|
||||||
manager = new DB4oUserManager("userprofiles.yap");
|
manager = new DB4oUserManager("userprofiles.yap");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Loads a specified user profile from a UUID
|
/// Loads a specified user profile from a UUID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uuid">The users UUID</param>
|
/// <param name="uuid">The users UUID</param>
|
||||||
/// <returns>A user profile</returns>
|
/// <returns>A user profile</returns>
|
||||||
public UserProfileData getUserByUUID(LLUUID uuid)
|
public UserProfileData getUserByUUID(LLUUID uuid)
|
||||||
{
|
{
|
||||||
if(manager.userProfiles.ContainsKey(uuid))
|
if(manager.userProfiles.ContainsKey(uuid))
|
||||||
return manager.userProfiles[uuid];
|
return manager.userProfiles[uuid];
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a user by searching for its name
|
/// Returns a user by searching for its name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="name">The users account name</param>
|
/// <param name="name">The users account name</param>
|
||||||
/// <returns>A matching users profile</returns>
|
/// <returns>A matching users profile</returns>
|
||||||
public UserProfileData getUserByName(string name)
|
public UserProfileData getUserByName(string name)
|
||||||
{
|
{
|
||||||
return getUserByName(name.Split(' ')[0], name.Split(' ')[1]);
|
return getUserByName(name.Split(' ')[0], name.Split(' ')[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a user by searching for its name
|
/// Returns a user by searching for its name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="fname">The first part of the users account name</param>
|
/// <param name="fname">The first part of the users account name</param>
|
||||||
/// <param name="lname">The second 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>
|
/// <returns>A matching users profile</returns>
|
||||||
public UserProfileData getUserByName(string fname, string lname)
|
public UserProfileData getUserByName(string fname, string lname)
|
||||||
{
|
{
|
||||||
foreach (UserProfileData profile in manager.userProfiles.Values)
|
foreach (UserProfileData profile in manager.userProfiles.Values)
|
||||||
{
|
{
|
||||||
if (profile.username == fname && profile.surname == lname)
|
if (profile.username == fname && profile.surname == lname)
|
||||||
return profile;
|
return profile;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a user by UUID direct
|
/// Returns a user by UUID direct
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uuid">The users account ID</param>
|
/// <param name="uuid">The users account ID</param>
|
||||||
/// <returns>A matching users profile</returns>
|
/// <returns>A matching users profile</returns>
|
||||||
public UserAgentData getAgentByUUID(LLUUID uuid)
|
public UserAgentData getAgentByUUID(LLUUID uuid)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return getUserByUUID(uuid).currentAgent;
|
return getUserByUUID(uuid).currentAgent;
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a session by account name
|
/// Returns a session by account name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="name">The account name</param>
|
/// <param name="name">The account name</param>
|
||||||
/// <returns>The users session agent</returns>
|
/// <returns>The users session agent</returns>
|
||||||
public UserAgentData getAgentByName(string name)
|
public UserAgentData getAgentByName(string name)
|
||||||
{
|
{
|
||||||
return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]);
|
return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a session by account name
|
/// Returns a session by account name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="fname">The first part of the users account name</param>
|
/// <param name="fname">The first part of the users account name</param>
|
||||||
/// <param name="lname">The second part of the users account name</param>
|
/// <param name="lname">The second part of the users account name</param>
|
||||||
/// <returns>A user agent</returns>
|
/// <returns>A user agent</returns>
|
||||||
public UserAgentData getAgentByName(string fname, string lname)
|
public UserAgentData getAgentByName(string fname, string lname)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return getUserByName(fname,lname).currentAgent;
|
return getUserByName(fname,lname).currentAgent;
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new user profile
|
/// Creates a new user profile
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user">The profile to add to the database</param>
|
/// <param name="user">The profile to add to the database</param>
|
||||||
public void addNewUserProfile(UserProfileData user)
|
public void addNewUserProfile(UserProfileData user)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
manager.AddRow(user);
|
manager.AddRow(user);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Console.WriteLine(e.ToString());
|
Console.WriteLine(e.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new user agent
|
/// Creates a new user agent
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="agent">The agent to add to the database</param>
|
/// <param name="agent">The agent to add to the database</param>
|
||||||
public void addNewUserAgent(UserAgentData agent)
|
public void addNewUserAgent(UserAgentData agent)
|
||||||
{
|
{
|
||||||
// Do nothing. yet.
|
// Do nothing. yet.
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Transfers money between two user accounts
|
/// Transfers money between two user accounts
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="from">Starting account</param>
|
/// <param name="from">Starting account</param>
|
||||||
/// <param name="to">End account</param>
|
/// <param name="to">End account</param>
|
||||||
/// <param name="amount">The amount to move</param>
|
/// <param name="amount">The amount to move</param>
|
||||||
/// <returns>Success?</returns>
|
/// <returns>Success?</returns>
|
||||||
public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount)
|
public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Transfers inventory between two accounts
|
/// Transfers inventory between two accounts
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>Move to inventory server</remarks>
|
/// <remarks>Move to inventory server</remarks>
|
||||||
/// <param name="from">Senders account</param>
|
/// <param name="from">Senders account</param>
|
||||||
/// <param name="to">Recievers account</param>
|
/// <param name="to">Recievers account</param>
|
||||||
/// <param name="item">Inventory item</param>
|
/// <param name="item">Inventory item</param>
|
||||||
/// <returns>Success?</returns>
|
/// <returns>Success?</returns>
|
||||||
public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item)
|
public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the name of the storage provider
|
/// Returns the name of the storage provider
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Storage provider name</returns>
|
/// <returns>Storage provider name</returns>
|
||||||
public string getName()
|
public string getName()
|
||||||
{
|
{
|
||||||
return "DB4o Userdata";
|
return "DB4o Userdata";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the version of the storage provider
|
/// Returns the version of the storage provider
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Storage provider version</returns>
|
/// <returns>Storage provider version</returns>
|
||||||
public string getVersion()
|
public string getVersion()
|
||||||
{
|
{
|
||||||
return "0.1";
|
return "0.1";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +1,33 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("OpenSim.Framework.Data.DB4o")]
|
[assembly: AssemblyTitle("OpenSim.Framework.Data.DB4o")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("OpenSim.Framework.Data.DB4o")]
|
[assembly: AssemblyProduct("OpenSim.Framework.Data.DB4o")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2007")]
|
[assembly: AssemblyCopyright("Copyright © 2007")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
// 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
|
// to COM components. If you need to access a type in this assembly from
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("57991e15-79da-41b7-aa06-2e6b49165a63")]
|
[assembly: Guid("57991e15-79da-41b7-aa06-2e6b49165a63")]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
// Major Version
|
// Major Version
|
||||||
// Minor Version
|
// Minor Version
|
||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
// You can specify all the values or you can default the Revision and Build Numbers
|
// You can specify all the values or you can default the Revision and Build Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
|
@ -1,194 +1,194 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data.MSSQL
|
namespace OpenSim.Framework.Data.MSSQL
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A grid data interface for Microsoft SQL Server
|
/// A grid data interface for Microsoft SQL Server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class SqlGridData : IGridData
|
public class SqlGridData : IGridData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Database manager
|
/// Database manager
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private MSSqlManager database;
|
private MSSqlManager database;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises the Grid Interface
|
/// Initialises the Grid Interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Initialise()
|
public void Initialise()
|
||||||
{
|
{
|
||||||
database = new MSSqlManager("localhost", "db", "user", "password", "false");
|
database = new MSSqlManager("localhost", "db", "user", "password", "false");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Shuts down the grid interface
|
/// Shuts down the grid interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
database.Close();
|
database.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the storage system name
|
/// Returns the storage system name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A string containing the storage system name</returns>
|
/// <returns>A string containing the storage system name</returns>
|
||||||
public string getName()
|
public string getName()
|
||||||
{
|
{
|
||||||
return "Sql OpenGridData";
|
return "Sql OpenGridData";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the storage system version
|
/// Returns the storage system version
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A string containing the storage system version</returns>
|
/// <returns>A string containing the storage system version</returns>
|
||||||
public string getVersion()
|
public string getVersion()
|
||||||
{
|
{
|
||||||
return "0.1";
|
return "0.1";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a list of regions within the specified ranges
|
/// Returns a list of regions within the specified ranges
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="a">minimum X coordinate</param>
|
/// <param name="a">minimum X coordinate</param>
|
||||||
/// <param name="b">minimum Y coordinate</param>
|
/// <param name="b">minimum Y coordinate</param>
|
||||||
/// <param name="c">maximum X coordinate</param>
|
/// <param name="c">maximum X coordinate</param>
|
||||||
/// <param name="d">maximum Y coordinate</param>
|
/// <param name="d">maximum Y coordinate</param>
|
||||||
/// <returns>An array of region profiles</returns>
|
/// <returns>An array of region profiles</returns>
|
||||||
public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
|
public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a sim profile from it's location
|
/// Returns a sim profile from it's location
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="handle">Region location handle</param>
|
/// <param name="handle">Region location handle</param>
|
||||||
/// <returns>Sim profile</returns>
|
/// <returns>Sim profile</returns>
|
||||||
public SimProfileData GetProfileByHandle(ulong handle)
|
public SimProfileData GetProfileByHandle(ulong handle)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["handle"] = handle.ToString();
|
param["handle"] = handle.ToString();
|
||||||
|
|
||||||
IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param);
|
IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
SimProfileData row = database.getRow(reader);
|
SimProfileData row = database.getRow(reader);
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a sim profile from it's UUID
|
/// Returns a sim profile from it's UUID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uuid">The region UUID</param>
|
/// <param name="uuid">The region UUID</param>
|
||||||
/// <returns>The sim profile</returns>
|
/// <returns>The sim profile</returns>
|
||||||
public SimProfileData GetProfileByLLUUID(LLUUID uuid)
|
public SimProfileData GetProfileByLLUUID(LLUUID uuid)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["uuid"] = uuid.ToStringHyphenated();
|
param["uuid"] = uuid.ToStringHyphenated();
|
||||||
|
|
||||||
IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param);
|
IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
SimProfileData row = database.getRow(reader);
|
SimProfileData row = database.getRow(reader);
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a new specified region to the database
|
/// Adds a new specified region to the database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="profile">The profile to add</param>
|
/// <param name="profile">The profile to add</param>
|
||||||
/// <returns>A dataresponse enum indicating success</returns>
|
/// <returns>A dataresponse enum indicating success</returns>
|
||||||
public DataResponse AddProfile(SimProfileData profile)
|
public DataResponse AddProfile(SimProfileData profile)
|
||||||
{
|
{
|
||||||
if (database.insertRow(profile))
|
if (database.insertRow(profile))
|
||||||
{
|
{
|
||||||
return DataResponse.RESPONSE_OK;
|
return DataResponse.RESPONSE_OK;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return DataResponse.RESPONSE_ERROR;
|
return DataResponse.RESPONSE_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
|
/// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uuid">The UUID of the challenger</param>
|
/// <param name="uuid">The UUID of the challenger</param>
|
||||||
/// <param name="handle">The attempted regionHandle of the challenger</param>
|
/// <param name="handle">The attempted regionHandle of the challenger</param>
|
||||||
/// <param name="authkey">The secret</param>
|
/// <param name="authkey">The secret</param>
|
||||||
/// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
|
/// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
|
||||||
public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey)
|
public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey)
|
||||||
{
|
{
|
||||||
bool throwHissyFit = false; // Should be true by 1.0
|
bool throwHissyFit = false; // Should be true by 1.0
|
||||||
|
|
||||||
if (throwHissyFit)
|
if (throwHissyFit)
|
||||||
throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
|
throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
|
||||||
|
|
||||||
SimProfileData data = GetProfileByLLUUID(uuid);
|
SimProfileData data = GetProfileByLLUUID(uuid);
|
||||||
|
|
||||||
return (handle == data.regionHandle && authkey == data.regionSecret);
|
return (handle == data.regionHandle && authkey == data.regionSecret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
|
/// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>This requires a security audit.</remarks>
|
/// <remarks>This requires a security audit.</remarks>
|
||||||
/// <param name="uuid"></param>
|
/// <param name="uuid"></param>
|
||||||
/// <param name="handle"></param>
|
/// <param name="handle"></param>
|
||||||
/// <param name="authhash"></param>
|
/// <param name="authhash"></param>
|
||||||
/// <param name="challenge"></param>
|
/// <param name="challenge"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge)
|
public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge)
|
||||||
{
|
{
|
||||||
SHA512Managed HashProvider = new SHA512Managed();
|
SHA512Managed HashProvider = new SHA512Managed();
|
||||||
ASCIIEncoding TextProvider = new ASCIIEncoding();
|
ASCIIEncoding TextProvider = new ASCIIEncoding();
|
||||||
|
|
||||||
byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
|
byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
|
||||||
byte[] hash = HashProvider.ComputeHash(stream);
|
byte[] hash = HashProvider.ComputeHash(stream);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
public ReservationData GetReservationAtPoint(uint x, uint y)
|
public ReservationData GetReservationAtPoint(uint x, uint y)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,211 +1,211 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.SqlClient;
|
using System.Data.SqlClient;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data.MSSQL
|
namespace OpenSim.Framework.Data.MSSQL
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A management class for the MS SQL Storage Engine
|
/// A management class for the MS SQL Storage Engine
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class MSSqlManager
|
class MSSqlManager
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The database connection object
|
/// The database connection object
|
||||||
/// </summary>
|
/// </summary>
|
||||||
IDbConnection dbcon;
|
IDbConnection dbcon;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises and creates a new Sql connection and maintains it.
|
/// Initialises and creates a new Sql connection and maintains it.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="hostname">The Sql server being connected to</param>
|
/// <param name="hostname">The Sql server being connected to</param>
|
||||||
/// <param name="database">The name of the Sql database being used</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="username">The username logging into the database</param>
|
||||||
/// <param name="password">The password for the user logging in</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>
|
/// <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)
|
public MSSqlManager(string hostname, string database, string username, string password, string cpooling)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string connectionString = "Server=" + hostname + ";Database=" + database + ";User ID=" + username + ";Password=" + password + ";Pooling=" + cpooling + ";";
|
string connectionString = "Server=" + hostname + ";Database=" + database + ";User ID=" + username + ";Password=" + password + ";Pooling=" + cpooling + ";";
|
||||||
dbcon = new SqlConnection(connectionString);
|
dbcon = new SqlConnection(connectionString);
|
||||||
|
|
||||||
dbcon.Open();
|
dbcon.Open();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
throw new Exception("Error initialising Sql Database: " + e.ToString());
|
throw new Exception("Error initialising Sql Database: " + e.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Shuts down the database connection
|
/// Shuts down the database connection
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
dbcon.Close();
|
dbcon.Close();
|
||||||
dbcon = null;
|
dbcon = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Runs a query with protection against SQL Injection by using parameterised input.
|
/// Runs a query with protection against SQL Injection by using parameterised input.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param>
|
/// <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>
|
/// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param>
|
||||||
/// <returns>A Sql DB Command</returns>
|
/// <returns>A Sql DB Command</returns>
|
||||||
public IDbCommand Query(string sql, Dictionary<string, string> parameters)
|
public IDbCommand Query(string sql, Dictionary<string, string> parameters)
|
||||||
{
|
{
|
||||||
SqlCommand dbcommand = (SqlCommand)dbcon.CreateCommand();
|
SqlCommand dbcommand = (SqlCommand)dbcon.CreateCommand();
|
||||||
dbcommand.CommandText = sql;
|
dbcommand.CommandText = sql;
|
||||||
foreach (KeyValuePair<string, string> param in parameters)
|
foreach (KeyValuePair<string, string> param in parameters)
|
||||||
{
|
{
|
||||||
dbcommand.Parameters.AddWithValue(param.Key, param.Value);
|
dbcommand.Parameters.AddWithValue(param.Key, param.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (IDbCommand)dbcommand;
|
return (IDbCommand)dbcommand;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Runs a database reader object and returns a region row
|
/// Runs a database reader object and returns a region row
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="reader">An active database reader</param>
|
/// <param name="reader">An active database reader</param>
|
||||||
/// <returns>A region row</returns>
|
/// <returns>A region row</returns>
|
||||||
public SimProfileData getRow(IDataReader reader)
|
public SimProfileData getRow(IDataReader reader)
|
||||||
{
|
{
|
||||||
SimProfileData regionprofile = new SimProfileData();
|
SimProfileData regionprofile = new SimProfileData();
|
||||||
|
|
||||||
if (reader.Read())
|
if (reader.Read())
|
||||||
{
|
{
|
||||||
// Region Main
|
// Region Main
|
||||||
regionprofile.regionHandle = (ulong)reader["regionHandle"];
|
regionprofile.regionHandle = (ulong)reader["regionHandle"];
|
||||||
regionprofile.regionName = (string)reader["regionName"];
|
regionprofile.regionName = (string)reader["regionName"];
|
||||||
regionprofile.UUID = new LLUUID((string)reader["uuid"]);
|
regionprofile.UUID = new LLUUID((string)reader["uuid"]);
|
||||||
|
|
||||||
// Secrets
|
// Secrets
|
||||||
regionprofile.regionRecvKey = (string)reader["regionRecvKey"];
|
regionprofile.regionRecvKey = (string)reader["regionRecvKey"];
|
||||||
regionprofile.regionSecret = (string)reader["regionSecret"];
|
regionprofile.regionSecret = (string)reader["regionSecret"];
|
||||||
regionprofile.regionSendKey = (string)reader["regionSendKey"];
|
regionprofile.regionSendKey = (string)reader["regionSendKey"];
|
||||||
|
|
||||||
// Region Server
|
// Region Server
|
||||||
regionprofile.regionDataURI = (string)reader["regionDataURI"];
|
regionprofile.regionDataURI = (string)reader["regionDataURI"];
|
||||||
regionprofile.regionOnline = false; // Needs to be pinged before this can be set.
|
regionprofile.regionOnline = false; // Needs to be pinged before this can be set.
|
||||||
regionprofile.serverIP = (string)reader["serverIP"];
|
regionprofile.serverIP = (string)reader["serverIP"];
|
||||||
regionprofile.serverPort = (uint)reader["serverPort"];
|
regionprofile.serverPort = (uint)reader["serverPort"];
|
||||||
regionprofile.serverURI = (string)reader["serverURI"];
|
regionprofile.serverURI = (string)reader["serverURI"];
|
||||||
|
|
||||||
// Location
|
// Location
|
||||||
regionprofile.regionLocX = (uint)((int)reader["locX"]);
|
regionprofile.regionLocX = (uint)((int)reader["locX"]);
|
||||||
regionprofile.regionLocY = (uint)((int)reader["locY"]);
|
regionprofile.regionLocY = (uint)((int)reader["locY"]);
|
||||||
regionprofile.regionLocZ = (uint)((int)reader["locZ"]);
|
regionprofile.regionLocZ = (uint)((int)reader["locZ"]);
|
||||||
|
|
||||||
// Neighbours - 0 = No Override
|
// Neighbours - 0 = No Override
|
||||||
regionprofile.regionEastOverrideHandle = (ulong)reader["eastOverrideHandle"];
|
regionprofile.regionEastOverrideHandle = (ulong)reader["eastOverrideHandle"];
|
||||||
regionprofile.regionWestOverrideHandle = (ulong)reader["westOverrideHandle"];
|
regionprofile.regionWestOverrideHandle = (ulong)reader["westOverrideHandle"];
|
||||||
regionprofile.regionSouthOverrideHandle = (ulong)reader["southOverrideHandle"];
|
regionprofile.regionSouthOverrideHandle = (ulong)reader["southOverrideHandle"];
|
||||||
regionprofile.regionNorthOverrideHandle = (ulong)reader["northOverrideHandle"];
|
regionprofile.regionNorthOverrideHandle = (ulong)reader["northOverrideHandle"];
|
||||||
|
|
||||||
// Assets
|
// Assets
|
||||||
regionprofile.regionAssetURI = (string)reader["regionAssetURI"];
|
regionprofile.regionAssetURI = (string)reader["regionAssetURI"];
|
||||||
regionprofile.regionAssetRecvKey = (string)reader["regionAssetRecvKey"];
|
regionprofile.regionAssetRecvKey = (string)reader["regionAssetRecvKey"];
|
||||||
regionprofile.regionAssetSendKey = (string)reader["regionAssetSendKey"];
|
regionprofile.regionAssetSendKey = (string)reader["regionAssetSendKey"];
|
||||||
|
|
||||||
// Userserver
|
// Userserver
|
||||||
regionprofile.regionUserURI = (string)reader["regionUserURI"];
|
regionprofile.regionUserURI = (string)reader["regionUserURI"];
|
||||||
regionprofile.regionUserRecvKey = (string)reader["regionUserRecvKey"];
|
regionprofile.regionUserRecvKey = (string)reader["regionUserRecvKey"];
|
||||||
regionprofile.regionUserSendKey = (string)reader["regionUserSendKey"];
|
regionprofile.regionUserSendKey = (string)reader["regionUserSendKey"];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new Exception("No rows to return");
|
throw new Exception("No rows to return");
|
||||||
}
|
}
|
||||||
return regionprofile;
|
return regionprofile;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new region in the database
|
/// Creates a new region in the database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="profile">The region profile to insert</param>
|
/// <param name="profile">The region profile to insert</param>
|
||||||
/// <returns>Successful?</returns>
|
/// <returns>Successful?</returns>
|
||||||
public bool insertRow(SimProfileData profile)
|
public bool insertRow(SimProfileData profile)
|
||||||
{
|
{
|
||||||
string sql = "REPLACE INTO regions VALUES (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, ";
|
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 += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, ";
|
||||||
sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey) VALUES ";
|
sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey) VALUES ";
|
||||||
|
|
||||||
sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, ";
|
sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, ";
|
||||||
sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, ";
|
sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, ";
|
||||||
sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey);";
|
sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey);";
|
||||||
|
|
||||||
Dictionary<string, string> parameters = new Dictionary<string, string>();
|
Dictionary<string, string> parameters = new Dictionary<string, string>();
|
||||||
|
|
||||||
parameters["regionHandle"] = profile.regionHandle.ToString();
|
parameters["regionHandle"] = profile.regionHandle.ToString();
|
||||||
parameters["regionName"] = profile.regionName;
|
parameters["regionName"] = profile.regionName;
|
||||||
parameters["uuid"] = profile.UUID.ToString();
|
parameters["uuid"] = profile.UUID.ToString();
|
||||||
parameters["regionRecvKey"] = profile.regionRecvKey;
|
parameters["regionRecvKey"] = profile.regionRecvKey;
|
||||||
parameters["regionSendKey"] = profile.regionSendKey;
|
parameters["regionSendKey"] = profile.regionSendKey;
|
||||||
parameters["regionDataURI"] = profile.regionDataURI;
|
parameters["regionDataURI"] = profile.regionDataURI;
|
||||||
parameters["serverIP"] = profile.serverIP;
|
parameters["serverIP"] = profile.serverIP;
|
||||||
parameters["serverPort"] = profile.serverPort.ToString();
|
parameters["serverPort"] = profile.serverPort.ToString();
|
||||||
parameters["serverURI"] = profile.serverURI;
|
parameters["serverURI"] = profile.serverURI;
|
||||||
parameters["locX"] = profile.regionLocX.ToString();
|
parameters["locX"] = profile.regionLocX.ToString();
|
||||||
parameters["locY"] = profile.regionLocY.ToString();
|
parameters["locY"] = profile.regionLocY.ToString();
|
||||||
parameters["locZ"] = profile.regionLocZ.ToString();
|
parameters["locZ"] = profile.regionLocZ.ToString();
|
||||||
parameters["eastOverrideHandle"] = profile.regionEastOverrideHandle.ToString();
|
parameters["eastOverrideHandle"] = profile.regionEastOverrideHandle.ToString();
|
||||||
parameters["westOverrideHandle"] = profile.regionWestOverrideHandle.ToString();
|
parameters["westOverrideHandle"] = profile.regionWestOverrideHandle.ToString();
|
||||||
parameters["northOverrideHandle"] = profile.regionNorthOverrideHandle.ToString();
|
parameters["northOverrideHandle"] = profile.regionNorthOverrideHandle.ToString();
|
||||||
parameters["southOverrideHandle"] = profile.regionSouthOverrideHandle.ToString();
|
parameters["southOverrideHandle"] = profile.regionSouthOverrideHandle.ToString();
|
||||||
parameters["regionAssetURI"] = profile.regionAssetURI;
|
parameters["regionAssetURI"] = profile.regionAssetURI;
|
||||||
parameters["regionAssetRecvKey"] = profile.regionAssetRecvKey;
|
parameters["regionAssetRecvKey"] = profile.regionAssetRecvKey;
|
||||||
parameters["regionAssetSendKey"] = profile.regionAssetSendKey;
|
parameters["regionAssetSendKey"] = profile.regionAssetSendKey;
|
||||||
parameters["regionUserURI"] = profile.regionUserURI;
|
parameters["regionUserURI"] = profile.regionUserURI;
|
||||||
parameters["regionUserRecvKey"] = profile.regionUserRecvKey;
|
parameters["regionUserRecvKey"] = profile.regionUserRecvKey;
|
||||||
parameters["regionUserSendKey"] = profile.regionUserSendKey;
|
parameters["regionUserSendKey"] = profile.regionUserSendKey;
|
||||||
|
|
||||||
bool returnval = false;
|
bool returnval = false;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IDbCommand result = Query(sql, parameters);
|
IDbCommand result = Query(sql, parameters);
|
||||||
|
|
||||||
if (result.ExecuteNonQuery() == 1)
|
if (result.ExecuteNonQuery() == 1)
|
||||||
returnval = true;
|
returnval = true;
|
||||||
|
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return returnval;
|
return returnval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +1,33 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("OpenSim.Framework.Data.MSSQL")]
|
[assembly: AssemblyTitle("OpenSim.Framework.Data.MSSQL")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("OpenSim.Framework.Data.MSSQL")]
|
[assembly: AssemblyProduct("OpenSim.Framework.Data.MSSQL")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2007")]
|
[assembly: AssemblyCopyright("Copyright © 2007")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
// 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
|
// to COM components. If you need to access a type in this assembly from
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("0e1c1ca4-2cf2-4315-b0e7-432c02feea8a")]
|
[assembly: Guid("0e1c1ca4-2cf2-4315-b0e7-432c02feea8a")]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
// Major Version
|
// Major Version
|
||||||
// Minor Version
|
// Minor Version
|
||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
// You can specify all the values or you can default the Revision and Build Numbers
|
// You can specify all the values or you can default the Revision and Build Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
|
@ -1,287 +1,287 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data.MySQL
|
namespace OpenSim.Framework.Data.MySQL
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A MySQL Interface for the Grid Server
|
/// A MySQL Interface for the Grid Server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class MySQLGridData : IGridData
|
public class MySQLGridData : IGridData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// MySQL Database Manager
|
/// MySQL Database Manager
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private MySQLManager database;
|
private MySQLManager database;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises the Grid Interface
|
/// Initialises the Grid Interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Initialise()
|
public void Initialise()
|
||||||
{
|
{
|
||||||
IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
|
IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
|
||||||
string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
|
string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
|
||||||
string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
|
string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
|
||||||
string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
|
string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
|
||||||
string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
|
string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
|
||||||
string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
|
string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
|
||||||
string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
|
string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
|
||||||
|
|
||||||
database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
|
database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Shuts down the grid interface
|
/// Shuts down the grid interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
database.Close();
|
database.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the plugin name
|
/// Returns the plugin name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Plugin name</returns>
|
/// <returns>Plugin name</returns>
|
||||||
public string getName()
|
public string getName()
|
||||||
{
|
{
|
||||||
return "MySql OpenGridData";
|
return "MySql OpenGridData";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the plugin version
|
/// Returns the plugin version
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Plugin version</returns>
|
/// <returns>Plugin version</returns>
|
||||||
public string getVersion()
|
public string getVersion()
|
||||||
{
|
{
|
||||||
return "0.1";
|
return "0.1";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns all the specified region profiles within coordates -- coordinates are inclusive
|
/// Returns all the specified region profiles within coordates -- coordinates are inclusive
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="xmin">Minimum X coordinate</param>
|
/// <param name="xmin">Minimum X coordinate</param>
|
||||||
/// <param name="ymin">Minimum Y coordinate</param>
|
/// <param name="ymin">Minimum Y coordinate</param>
|
||||||
/// <param name="xmax">Maximum X coordinate</param>
|
/// <param name="xmax">Maximum X coordinate</param>
|
||||||
/// <param name="ymax">Maximum Y coordinate</param>
|
/// <param name="ymax">Maximum Y coordinate</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public SimProfileData[] GetProfilesInRange(uint xmin, uint ymin, uint xmax, uint ymax)
|
public SimProfileData[] GetProfilesInRange(uint xmin, uint ymin, uint xmax, uint ymax)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["?xmin"] = xmin.ToString();
|
param["?xmin"] = xmin.ToString();
|
||||||
param["?ymin"] = ymin.ToString();
|
param["?ymin"] = ymin.ToString();
|
||||||
param["?xmax"] = xmax.ToString();
|
param["?xmax"] = xmax.ToString();
|
||||||
param["?ymax"] = ymax.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);
|
IDbCommand result = database.Query("SELECT * FROM regions WHERE locX >= ?xmin AND locX <= ?xmax AND locY >= ?ymin AND locY <= ?ymax", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
SimProfileData row;
|
SimProfileData row;
|
||||||
|
|
||||||
List<SimProfileData> rows = new List<SimProfileData>();
|
List<SimProfileData> rows = new List<SimProfileData>();
|
||||||
|
|
||||||
while ((row = database.readSimRow(reader)) != null)
|
while ((row = database.readSimRow(reader)) != null)
|
||||||
{
|
{
|
||||||
rows.Add(row);
|
rows.Add(row);
|
||||||
}
|
}
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
return rows.ToArray();
|
return rows.ToArray();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
database.Reconnect();
|
database.Reconnect();
|
||||||
Console.WriteLine(e.ToString());
|
Console.WriteLine(e.ToString());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a sim profile from it's location
|
/// Returns a sim profile from it's location
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="handle">Region location handle</param>
|
/// <param name="handle">Region location handle</param>
|
||||||
/// <returns>Sim profile</returns>
|
/// <returns>Sim profile</returns>
|
||||||
public SimProfileData GetProfileByHandle(ulong handle)
|
public SimProfileData GetProfileByHandle(ulong handle)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["?handle"] = handle.ToString();
|
param["?handle"] = handle.ToString();
|
||||||
|
|
||||||
IDbCommand result = database.Query("SELECT * FROM regions WHERE regionHandle = ?handle", param);
|
IDbCommand result = database.Query("SELECT * FROM regions WHERE regionHandle = ?handle", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
SimProfileData row = database.readSimRow(reader);
|
SimProfileData row = database.readSimRow(reader);
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
database.Reconnect();
|
database.Reconnect();
|
||||||
Console.WriteLine(e.ToString());
|
Console.WriteLine(e.ToString());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a sim profile from it's UUID
|
/// Returns a sim profile from it's UUID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uuid">The region UUID</param>
|
/// <param name="uuid">The region UUID</param>
|
||||||
/// <returns>The sim profile</returns>
|
/// <returns>The sim profile</returns>
|
||||||
public SimProfileData GetProfileByLLUUID(LLUUID uuid)
|
public SimProfileData GetProfileByLLUUID(LLUUID uuid)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["?uuid"] = uuid.ToStringHyphenated();
|
param["?uuid"] = uuid.ToStringHyphenated();
|
||||||
|
|
||||||
IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = ?uuid", param);
|
IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = ?uuid", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
SimProfileData row = database.readSimRow(reader);
|
SimProfileData row = database.readSimRow(reader);
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
database.Reconnect();
|
database.Reconnect();
|
||||||
Console.WriteLine(e.ToString());
|
Console.WriteLine(e.ToString());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a new profile to the database
|
/// Adds a new profile to the database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="profile">The profile to add</param>
|
/// <param name="profile">The profile to add</param>
|
||||||
/// <returns>Successful?</returns>
|
/// <returns>Successful?</returns>
|
||||||
public DataResponse AddProfile(SimProfileData profile)
|
public DataResponse AddProfile(SimProfileData profile)
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
if (database.insertRegion(profile))
|
if (database.insertRegion(profile))
|
||||||
{
|
{
|
||||||
return DataResponse.RESPONSE_OK;
|
return DataResponse.RESPONSE_OK;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return DataResponse.RESPONSE_ERROR;
|
return DataResponse.RESPONSE_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
|
/// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uuid">The UUID of the challenger</param>
|
/// <param name="uuid">The UUID of the challenger</param>
|
||||||
/// <param name="handle">The attempted regionHandle of the challenger</param>
|
/// <param name="handle">The attempted regionHandle of the challenger</param>
|
||||||
/// <param name="authkey">The secret</param>
|
/// <param name="authkey">The secret</param>
|
||||||
/// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
|
/// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
|
||||||
public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey)
|
public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey)
|
||||||
{
|
{
|
||||||
bool throwHissyFit = false; // Should be true by 1.0
|
bool throwHissyFit = false; // Should be true by 1.0
|
||||||
|
|
||||||
if (throwHissyFit)
|
if (throwHissyFit)
|
||||||
throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
|
throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
|
||||||
|
|
||||||
SimProfileData data = GetProfileByLLUUID(uuid);
|
SimProfileData data = GetProfileByLLUUID(uuid);
|
||||||
|
|
||||||
return (handle == data.regionHandle && authkey == data.regionSecret);
|
return (handle == data.regionHandle && authkey == data.regionSecret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
|
/// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>This requires a security audit.</remarks>
|
/// <remarks>This requires a security audit.</remarks>
|
||||||
/// <param name="uuid"></param>
|
/// <param name="uuid"></param>
|
||||||
/// <param name="handle"></param>
|
/// <param name="handle"></param>
|
||||||
/// <param name="authhash"></param>
|
/// <param name="authhash"></param>
|
||||||
/// <param name="challenge"></param>
|
/// <param name="challenge"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge)
|
public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge)
|
||||||
{
|
{
|
||||||
SHA512Managed HashProvider = new SHA512Managed();
|
SHA512Managed HashProvider = new SHA512Managed();
|
||||||
ASCIIEncoding TextProvider = new ASCIIEncoding();
|
ASCIIEncoding TextProvider = new ASCIIEncoding();
|
||||||
|
|
||||||
byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
|
byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
|
||||||
byte[] hash = HashProvider.ComputeHash(stream);
|
byte[] hash = HashProvider.ComputeHash(stream);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ReservationData GetReservationAtPoint(uint x, uint y)
|
public ReservationData GetReservationAtPoint(uint x, uint y)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["?x"] = x.ToString();
|
param["?x"] = x.ToString();
|
||||||
param["?y"] = y.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);
|
IDbCommand result = database.Query("SELECT * FROM reservations WHERE resXMin <= ?x AND resXMax >= ?x AND resYMin <= ?y AND resYMax >= ?y", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
ReservationData row = database.readReservationRow(reader);
|
ReservationData row = database.readReservationRow(reader);
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
database.Reconnect();
|
database.Reconnect();
|
||||||
Console.WriteLine(e.ToString());
|
Console.WriteLine(e.ToString());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,309 +1,309 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data.MySQL
|
namespace OpenSim.Framework.Data.MySQL
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A MySQL interface for the inventory server
|
/// A MySQL interface for the inventory server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class MySQLInventoryData : IInventoryData
|
class MySQLInventoryData : IInventoryData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The database manager
|
/// The database manager
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public MySQLManager database;
|
public MySQLManager database;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Loads and initialises this database plugin
|
/// Loads and initialises this database plugin
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Initialise()
|
public void Initialise()
|
||||||
{
|
{
|
||||||
IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
|
IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
|
||||||
string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
|
string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
|
||||||
string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
|
string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
|
||||||
string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
|
string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
|
||||||
string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
|
string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
|
||||||
string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
|
string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
|
||||||
string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
|
string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
|
||||||
|
|
||||||
database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
|
database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The name of this DB provider
|
/// The name of this DB provider
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Name of DB provider</returns>
|
/// <returns>Name of DB provider</returns>
|
||||||
public string getName()
|
public string getName()
|
||||||
{
|
{
|
||||||
return "MySQL Inventory Data Interface";
|
return "MySQL Inventory Data Interface";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Closes this DB provider
|
/// Closes this DB provider
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
// Do nothing.
|
// Do nothing.
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the version of this DB provider
|
/// Returns the version of this DB provider
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A string containing the DB provider</returns>
|
/// <returns>A string containing the DB provider</returns>
|
||||||
public string getVersion()
|
public string getVersion()
|
||||||
{
|
{
|
||||||
return "0.1";
|
return "0.1";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a list of items in a specified folder
|
/// Returns a list of items in a specified folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="folderID">The folder to search</param>
|
/// <param name="folderID">The folder to search</param>
|
||||||
/// <returns>A list containing inventory items</returns>
|
/// <returns>A list containing inventory items</returns>
|
||||||
public List<InventoryItemBase> getInventoryInFolder(LLUUID folderID)
|
public List<InventoryItemBase> getInventoryInFolder(LLUUID folderID)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["?uuid"] = folderID.ToStringHyphenated();
|
param["?uuid"] = folderID.ToStringHyphenated();
|
||||||
|
|
||||||
IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE parentFolderID = ?uuid", param);
|
IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE parentFolderID = ?uuid", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
List<InventoryItemBase> items = database.readInventoryItems(reader);
|
List<InventoryItemBase> items = database.readInventoryItems(reader);
|
||||||
|
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
database.Reconnect();
|
database.Reconnect();
|
||||||
Console.WriteLine(e.ToString());
|
Console.WriteLine(e.ToString());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a list of the root folders within a users inventory
|
/// Returns a list of the root folders within a users inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user">The user whos inventory is to be searched</param>
|
/// <param name="user">The user whos inventory is to be searched</param>
|
||||||
/// <returns>A list of folder objects</returns>
|
/// <returns>A list of folder objects</returns>
|
||||||
public List<InventoryFolderBase> getUserRootFolders(LLUUID user)
|
public List<InventoryFolderBase> getUserRootFolders(LLUUID user)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["?uuid"] = user.ToStringHyphenated();
|
param["?uuid"] = user.ToStringHyphenated();
|
||||||
param["?zero"] = LLUUID.Zero.ToStringHyphenated();
|
param["?zero"] = LLUUID.Zero.ToStringHyphenated();
|
||||||
|
|
||||||
IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?zero AND agentID = ?uuid", param);
|
IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?zero AND agentID = ?uuid", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
List<InventoryFolderBase> items = database.readInventoryFolders(reader);
|
List<InventoryFolderBase> items = database.readInventoryFolders(reader);
|
||||||
|
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
database.Reconnect();
|
database.Reconnect();
|
||||||
Console.WriteLine(e.ToString());
|
Console.WriteLine(e.ToString());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a list of folders in a users inventory contained within the specified folder
|
/// Returns a list of folders in a users inventory contained within the specified folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="parentID">The folder to search</param>
|
/// <param name="parentID">The folder to search</param>
|
||||||
/// <returns>A list of inventory folders</returns>
|
/// <returns>A list of inventory folders</returns>
|
||||||
public List<InventoryFolderBase> getInventoryFolders(LLUUID parentID)
|
public List<InventoryFolderBase> getInventoryFolders(LLUUID parentID)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["?uuid"] = parentID.ToStringHyphenated();
|
param["?uuid"] = parentID.ToStringHyphenated();
|
||||||
|
|
||||||
IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?uuid", param);
|
IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?uuid", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
List<InventoryFolderBase> items = database.readInventoryFolders(reader);
|
List<InventoryFolderBase> items = database.readInventoryFolders(reader);
|
||||||
|
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
database.Reconnect();
|
database.Reconnect();
|
||||||
Console.WriteLine(e.ToString());
|
Console.WriteLine(e.ToString());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a specified inventory item
|
/// Returns a specified inventory item
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="item">The item to return</param>
|
/// <param name="item">The item to return</param>
|
||||||
/// <returns>An inventory item</returns>
|
/// <returns>An inventory item</returns>
|
||||||
public InventoryItemBase getInventoryItem(LLUUID item)
|
public InventoryItemBase getInventoryItem(LLUUID item)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["?uuid"] = item.ToStringHyphenated();
|
param["?uuid"] = item.ToStringHyphenated();
|
||||||
|
|
||||||
IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE inventoryID = ?uuid", param);
|
IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE inventoryID = ?uuid", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
List<InventoryItemBase> items = database.readInventoryItems(reader);
|
List<InventoryItemBase> items = database.readInventoryItems(reader);
|
||||||
|
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
if (items.Count > 0)
|
if (items.Count > 0)
|
||||||
{
|
{
|
||||||
return items[0];
|
return items[0];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
database.Reconnect();
|
database.Reconnect();
|
||||||
Console.WriteLine(e.ToString());
|
Console.WriteLine(e.ToString());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a specified inventory folder
|
/// Returns a specified inventory folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="folder">The folder to return</param>
|
/// <param name="folder">The folder to return</param>
|
||||||
/// <returns>A folder class</returns>
|
/// <returns>A folder class</returns>
|
||||||
public InventoryFolderBase getInventoryFolder(LLUUID folder)
|
public InventoryFolderBase getInventoryFolder(LLUUID folder)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["?uuid"] = folder.ToStringHyphenated();
|
param["?uuid"] = folder.ToStringHyphenated();
|
||||||
|
|
||||||
IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE folderID = ?uuid", param);
|
IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE folderID = ?uuid", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
List<InventoryFolderBase> items = database.readInventoryFolders(reader);
|
List<InventoryFolderBase> items = database.readInventoryFolders(reader);
|
||||||
|
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
if (items.Count > 0)
|
if (items.Count > 0)
|
||||||
{
|
{
|
||||||
return items[0];
|
return items[0];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
database.Reconnect();
|
database.Reconnect();
|
||||||
Console.WriteLine(e.ToString());
|
Console.WriteLine(e.ToString());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a specified item to the database
|
/// Adds a specified item to the database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="item">The inventory item</param>
|
/// <param name="item">The inventory item</param>
|
||||||
public void addInventoryItem(InventoryItemBase item)
|
public void addInventoryItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
database.insertItem(item);
|
database.insertItem(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Updates the specified inventory item
|
/// Updates the specified inventory item
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="item">Inventory item to update</param>
|
/// <param name="item">Inventory item to update</param>
|
||||||
public void updateInventoryItem(InventoryItemBase item)
|
public void updateInventoryItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
addInventoryItem(item);
|
addInventoryItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new inventory folder
|
/// Creates a new inventory folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="folder">Folder to create</param>
|
/// <param name="folder">Folder to create</param>
|
||||||
public void addInventoryFolder(InventoryFolderBase folder)
|
public void addInventoryFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
database.insertFolder(folder);
|
database.insertFolder(folder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Updates an inventory folder
|
/// Updates an inventory folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="folder">Folder to update</param>
|
/// <param name="folder">Folder to update</param>
|
||||||
public void updateInventoryFolder(InventoryFolderBase folder)
|
public void updateInventoryFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
addInventoryFolder(folder);
|
addInventoryFolder(folder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,105 +1,105 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data.MySQL
|
namespace OpenSim.Framework.Data.MySQL
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// An interface to the log database for MySQL
|
/// An interface to the log database for MySQL
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class MySQLLogData : ILogData
|
class MySQLLogData : ILogData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The database manager
|
/// The database manager
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public MySQLManager database;
|
public MySQLManager database;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Artificial constructor called when the plugin is loaded
|
/// Artificial constructor called when the plugin is loaded
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Initialise()
|
public void Initialise()
|
||||||
{
|
{
|
||||||
IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
|
IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
|
||||||
string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
|
string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
|
||||||
string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
|
string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
|
||||||
string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
|
string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
|
||||||
string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
|
string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
|
||||||
string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
|
string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
|
||||||
string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
|
string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
|
||||||
|
|
||||||
database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
|
database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Saves a log item to the database
|
/// Saves a log item to the database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="serverDaemon">The daemon triggering the event</param>
|
/// <param name="serverDaemon">The daemon triggering the event</param>
|
||||||
/// <param name="target">The target of the action (region / agent UUID, etc)</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="methodCall">The method call where the problem occured</param>
|
||||||
/// <param name="arguments">The arguments passed to the method</param>
|
/// <param name="arguments">The arguments passed to the method</param>
|
||||||
/// <param name="priority">How critical is this?</param>
|
/// <param name="priority">How critical is this?</param>
|
||||||
/// <param name="logMessage">The message to log</param>
|
/// <param name="logMessage">The message to log</param>
|
||||||
public void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage)
|
public void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
database.insertLogRow(serverDaemon, target, methodCall, arguments, priority, logMessage);
|
database.insertLogRow(serverDaemon, target, methodCall, arguments, priority, logMessage);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
database.Reconnect();
|
database.Reconnect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the name of this DB provider
|
/// Returns the name of this DB provider
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A string containing the DB provider name</returns>
|
/// <returns>A string containing the DB provider name</returns>
|
||||||
public string getName()
|
public string getName()
|
||||||
{
|
{
|
||||||
return "MySQL Logdata Interface";
|
return "MySQL Logdata Interface";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Closes the database provider
|
/// Closes the database provider
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
// Do nothing.
|
// Do nothing.
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the version of this DB provider
|
/// Returns the version of this DB provider
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A string containing the provider version</returns>
|
/// <returns>A string containing the provider version</returns>
|
||||||
public string getVersion()
|
public string getVersion()
|
||||||
{
|
{
|
||||||
return "0.1";
|
return "0.1";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,256 +1,256 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data.MySQL
|
namespace OpenSim.Framework.Data.MySQL
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A database interface class to a user profile storage system
|
/// A database interface class to a user profile storage system
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class MySQLUserData : IUserData
|
class MySQLUserData : IUserData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Database manager for MySQL
|
/// Database manager for MySQL
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public MySQLManager database;
|
public MySQLManager database;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Loads and initialises the MySQL storage plugin
|
/// Loads and initialises the MySQL storage plugin
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Initialise()
|
public void Initialise()
|
||||||
{
|
{
|
||||||
// Load from an INI file connection details
|
// Load from an INI file connection details
|
||||||
// TODO: move this to XML?
|
// TODO: move this to XML?
|
||||||
IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
|
IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
|
||||||
string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
|
string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
|
||||||
string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
|
string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
|
||||||
string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
|
string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
|
||||||
string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
|
string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
|
||||||
string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
|
string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
|
||||||
string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
|
string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
|
||||||
|
|
||||||
database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
|
database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Searches the database for a specified user profile
|
/// Searches the database for a specified user profile
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="name">The account name of the user</param>
|
/// <param name="name">The account name of the user</param>
|
||||||
/// <returns>A user profile</returns>
|
/// <returns>A user profile</returns>
|
||||||
public UserProfileData getUserByName(string name)
|
public UserProfileData getUserByName(string name)
|
||||||
{
|
{
|
||||||
return getUserByName(name.Split(' ')[0], name.Split(' ')[1]);
|
return getUserByName(name.Split(' ')[0], name.Split(' ')[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Searches the database for a specified user profile by name components
|
/// Searches the database for a specified user profile by name components
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user">The first part of the account name</param>
|
/// <param name="user">The first part of the account name</param>
|
||||||
/// <param name="last">The second part of the account name</param>
|
/// <param name="last">The second part of the account name</param>
|
||||||
/// <returns>A user profile</returns>
|
/// <returns>A user profile</returns>
|
||||||
public UserProfileData getUserByName(string user, string last)
|
public UserProfileData getUserByName(string user, string last)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["?first"] = user;
|
param["?first"] = user;
|
||||||
param["?second"] = last;
|
param["?second"] = last;
|
||||||
|
|
||||||
IDbCommand result = database.Query("SELECT * FROM users WHERE username = ?first AND lastname = ?second", param);
|
IDbCommand result = database.Query("SELECT * FROM users WHERE username = ?first AND lastname = ?second", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
UserProfileData row = database.readUserRow(reader);
|
UserProfileData row = database.readUserRow(reader);
|
||||||
|
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
database.Reconnect();
|
database.Reconnect();
|
||||||
Console.WriteLine(e.ToString());
|
Console.WriteLine(e.ToString());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Searches the database for a specified user profile by UUID
|
/// Searches the database for a specified user profile by UUID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uuid">The account ID</param>
|
/// <param name="uuid">The account ID</param>
|
||||||
/// <returns>The users profile</returns>
|
/// <returns>The users profile</returns>
|
||||||
public UserProfileData getUserByUUID(LLUUID uuid)
|
public UserProfileData getUserByUUID(LLUUID uuid)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["?uuid"] = uuid.ToStringHyphenated();
|
param["?uuid"] = uuid.ToStringHyphenated();
|
||||||
|
|
||||||
IDbCommand result = database.Query("SELECT * FROM users WHERE UUID = ?uuid", param);
|
IDbCommand result = database.Query("SELECT * FROM users WHERE UUID = ?uuid", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
UserProfileData row = database.readUserRow(reader);
|
UserProfileData row = database.readUserRow(reader);
|
||||||
|
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
database.Reconnect();
|
database.Reconnect();
|
||||||
Console.WriteLine(e.ToString());
|
Console.WriteLine(e.ToString());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a user session searching by name
|
/// Returns a user session searching by name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="name">The account name</param>
|
/// <param name="name">The account name</param>
|
||||||
/// <returns>The users session</returns>
|
/// <returns>The users session</returns>
|
||||||
public UserAgentData getAgentByName(string name)
|
public UserAgentData getAgentByName(string name)
|
||||||
{
|
{
|
||||||
return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]);
|
return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a user session by account name
|
/// Returns a user session by account name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user">First part of the users account name</param>
|
/// <param name="user">First part of the users account name</param>
|
||||||
/// <param name="last">Second part of the users account name</param>
|
/// <param name="last">Second part of the users account name</param>
|
||||||
/// <returns>The users session</returns>
|
/// <returns>The users session</returns>
|
||||||
public UserAgentData getAgentByName(string user, string last)
|
public UserAgentData getAgentByName(string user, string last)
|
||||||
{
|
{
|
||||||
UserProfileData profile = getUserByName(user, last);
|
UserProfileData profile = getUserByName(user, last);
|
||||||
return getAgentByUUID(profile.UUID);
|
return getAgentByUUID(profile.UUID);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns an agent session by account UUID
|
/// Returns an agent session by account UUID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uuid">The accounts UUID</param>
|
/// <param name="uuid">The accounts UUID</param>
|
||||||
/// <returns>The users session</returns>
|
/// <returns>The users session</returns>
|
||||||
public UserAgentData getAgentByUUID(LLUUID uuid)
|
public UserAgentData getAgentByUUID(LLUUID uuid)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lock (database)
|
lock (database)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["?uuid"] = uuid.ToStringHyphenated();
|
param["?uuid"] = uuid.ToStringHyphenated();
|
||||||
|
|
||||||
IDbCommand result = database.Query("SELECT * FROM agents WHERE UUID = ?uuid", param);
|
IDbCommand result = database.Query("SELECT * FROM agents WHERE UUID = ?uuid", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
UserAgentData row = database.readAgentRow(reader);
|
UserAgentData row = database.readAgentRow(reader);
|
||||||
|
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
database.Reconnect();
|
database.Reconnect();
|
||||||
Console.WriteLine(e.ToString());
|
Console.WriteLine(e.ToString());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new users profile
|
/// Creates a new users profile
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user">The user profile to create</param>
|
/// <param name="user">The user profile to create</param>
|
||||||
public void addNewUserProfile(UserProfileData user)
|
public void addNewUserProfile(UserProfileData user)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new agent
|
/// Creates a new agent
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="agent">The agent to create</param>
|
/// <param name="agent">The agent to create</param>
|
||||||
public void addNewUserAgent(UserAgentData agent)
|
public void addNewUserAgent(UserAgentData agent)
|
||||||
{
|
{
|
||||||
// Do nothing.
|
// Do nothing.
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Performs a money transfer request between two accounts
|
/// Performs a money transfer request between two accounts
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="from">The senders account ID</param>
|
/// <param name="from">The senders account ID</param>
|
||||||
/// <param name="to">The recievers account ID</param>
|
/// <param name="to">The recievers account ID</param>
|
||||||
/// <param name="amount">The amount to transfer</param>
|
/// <param name="amount">The amount to transfer</param>
|
||||||
/// <returns>Success?</returns>
|
/// <returns>Success?</returns>
|
||||||
public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount)
|
public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Performs an inventory transfer request between two accounts
|
/// Performs an inventory transfer request between two accounts
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>TODO: Move to inventory server</remarks>
|
/// <remarks>TODO: Move to inventory server</remarks>
|
||||||
/// <param name="from">The senders account ID</param>
|
/// <param name="from">The senders account ID</param>
|
||||||
/// <param name="to">The recievers account ID</param>
|
/// <param name="to">The recievers account ID</param>
|
||||||
/// <param name="item">The item to transfer</param>
|
/// <param name="item">The item to transfer</param>
|
||||||
/// <returns>Success?</returns>
|
/// <returns>Success?</returns>
|
||||||
public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item)
|
public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Database provider name
|
/// Database provider name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Provider name</returns>
|
/// <returns>Provider name</returns>
|
||||||
public string getName()
|
public string getName()
|
||||||
{
|
{
|
||||||
return "MySQL Userdata Interface";
|
return "MySQL Userdata Interface";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Database provider version
|
/// Database provider version
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>provider version</returns>
|
/// <returns>provider version</returns>
|
||||||
public string getVersion()
|
public string getVersion()
|
||||||
{
|
{
|
||||||
return "0.1";
|
return "0.1";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +1,33 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("OpenSim.Framework.Data.MySQL")]
|
[assembly: AssemblyTitle("OpenSim.Framework.Data.MySQL")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("OpenSim.Framework.Data.MySQL")]
|
[assembly: AssemblyProduct("OpenSim.Framework.Data.MySQL")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2007")]
|
[assembly: AssemblyCopyright("Copyright © 2007")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
// 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
|
// to COM components. If you need to access a type in this assembly from
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("e49826b2-dcef-41be-a5bd-596733fa3304")]
|
[assembly: Guid("e49826b2-dcef-41be-a5bd-596733fa3304")]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
// Major Version
|
// Major Version
|
||||||
// Minor Version
|
// Minor Version
|
||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
// You can specify all the values or you can default the Revision and Build Numbers
|
// You can specify all the values or you can default the Revision and Build Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
|
@ -1,33 +1,33 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("OpenSim.Framework.Data.SQLite")]
|
[assembly: AssemblyTitle("OpenSim.Framework.Data.SQLite")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("OpenSim.Framework.Data.SQLite")]
|
[assembly: AssemblyProduct("OpenSim.Framework.Data.SQLite")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2007")]
|
[assembly: AssemblyCopyright("Copyright © 2007")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
// 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
|
// to COM components. If you need to access a type in this assembly from
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("6113d5ce-4547-49f4-9236-0dcc503457b1")]
|
[assembly: Guid("6113d5ce-4547-49f4-9236-0dcc503457b1")]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
// Major Version
|
// Major Version
|
||||||
// Minor Version
|
// Minor Version
|
||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
// You can specify all the values or you can default the Revision and Build Numbers
|
// You can specify all the values or you can default the Revision and Build Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
|
@ -1,197 +1,197 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data.SQLite
|
namespace OpenSim.Framework.Data.SQLite
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A Grid Interface to the SQLite database
|
/// A Grid Interface to the SQLite database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class SQLiteGridData : IGridData
|
public class SQLiteGridData : IGridData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A database manager
|
/// A database manager
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private SQLiteManager database;
|
private SQLiteManager database;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises the Grid Interface
|
/// Initialises the Grid Interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Initialise()
|
public void Initialise()
|
||||||
{
|
{
|
||||||
database = new SQLiteManager("localhost", "db", "user", "password", "false");
|
database = new SQLiteManager("localhost", "db", "user", "password", "false");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Shuts down the grid interface
|
/// Shuts down the grid interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
database.Close();
|
database.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the name of this grid interface
|
/// Returns the name of this grid interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A string containing the grid interface</returns>
|
/// <returns>A string containing the grid interface</returns>
|
||||||
public string getName()
|
public string getName()
|
||||||
{
|
{
|
||||||
return "SQLite OpenGridData";
|
return "SQLite OpenGridData";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the version of this grid interface
|
/// Returns the version of this grid interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A string containing the version</returns>
|
/// <returns>A string containing the version</returns>
|
||||||
public string getVersion()
|
public string getVersion()
|
||||||
{
|
{
|
||||||
return "0.1";
|
return "0.1";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a list of regions within the specified ranges
|
/// Returns a list of regions within the specified ranges
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="a">minimum X coordinate</param>
|
/// <param name="a">minimum X coordinate</param>
|
||||||
/// <param name="b">minimum Y coordinate</param>
|
/// <param name="b">minimum Y coordinate</param>
|
||||||
/// <param name="c">maximum X coordinate</param>
|
/// <param name="c">maximum X coordinate</param>
|
||||||
/// <param name="d">maximum Y coordinate</param>
|
/// <param name="d">maximum Y coordinate</param>
|
||||||
/// <returns>An array of region profiles</returns>
|
/// <returns>An array of region profiles</returns>
|
||||||
public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
|
public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a sim profile from it's location
|
/// Returns a sim profile from it's location
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="handle">Region location handle</param>
|
/// <param name="handle">Region location handle</param>
|
||||||
/// <returns>Sim profile</returns>
|
/// <returns>Sim profile</returns>
|
||||||
public SimProfileData GetProfileByHandle(ulong handle)
|
public SimProfileData GetProfileByHandle(ulong handle)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["handle"] = handle.ToString();
|
param["handle"] = handle.ToString();
|
||||||
|
|
||||||
IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param);
|
IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
SimProfileData row = database.getRow(reader);
|
SimProfileData row = database.getRow(reader);
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a sim profile from it's UUID
|
/// Returns a sim profile from it's UUID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uuid">The region UUID</param>
|
/// <param name="uuid">The region UUID</param>
|
||||||
/// <returns>The sim profile</returns>
|
/// <returns>The sim profile</returns>
|
||||||
public SimProfileData GetProfileByLLUUID(LLUUID uuid)
|
public SimProfileData GetProfileByLLUUID(LLUUID uuid)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||||
param["uuid"] = uuid.ToStringHyphenated();
|
param["uuid"] = uuid.ToStringHyphenated();
|
||||||
|
|
||||||
IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param);
|
IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param);
|
||||||
IDataReader reader = result.ExecuteReader();
|
IDataReader reader = result.ExecuteReader();
|
||||||
|
|
||||||
SimProfileData row = database.getRow(reader);
|
SimProfileData row = database.getRow(reader);
|
||||||
reader.Close();
|
reader.Close();
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
|
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a new specified region to the database
|
/// Adds a new specified region to the database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="profile">The profile to add</param>
|
/// <param name="profile">The profile to add</param>
|
||||||
/// <returns>A dataresponse enum indicating success</returns>
|
/// <returns>A dataresponse enum indicating success</returns>
|
||||||
public DataResponse AddProfile(SimProfileData profile)
|
public DataResponse AddProfile(SimProfileData profile)
|
||||||
{
|
{
|
||||||
if (database.insertRow(profile))
|
if (database.insertRow(profile))
|
||||||
{
|
{
|
||||||
return DataResponse.RESPONSE_OK;
|
return DataResponse.RESPONSE_OK;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return DataResponse.RESPONSE_ERROR;
|
return DataResponse.RESPONSE_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
|
/// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uuid">The UUID of the challenger</param>
|
/// <param name="uuid">The UUID of the challenger</param>
|
||||||
/// <param name="handle">The attempted regionHandle of the challenger</param>
|
/// <param name="handle">The attempted regionHandle of the challenger</param>
|
||||||
/// <param name="authkey">The secret</param>
|
/// <param name="authkey">The secret</param>
|
||||||
/// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
|
/// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
|
||||||
public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey)
|
public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey)
|
||||||
{
|
{
|
||||||
bool throwHissyFit = false; // Should be true by 1.0
|
bool throwHissyFit = false; // Should be true by 1.0
|
||||||
|
|
||||||
if (throwHissyFit)
|
if (throwHissyFit)
|
||||||
throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
|
throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
|
||||||
|
|
||||||
SimProfileData data = GetProfileByLLUUID(uuid);
|
SimProfileData data = GetProfileByLLUUID(uuid);
|
||||||
|
|
||||||
return (handle == data.regionHandle && authkey == data.regionSecret);
|
return (handle == data.regionHandle && authkey == data.regionSecret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
|
/// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>This requires a security audit.</remarks>
|
/// <remarks>This requires a security audit.</remarks>
|
||||||
/// <param name="uuid"></param>
|
/// <param name="uuid"></param>
|
||||||
/// <param name="handle"></param>
|
/// <param name="handle"></param>
|
||||||
/// <param name="authhash"></param>
|
/// <param name="authhash"></param>
|
||||||
/// <param name="challenge"></param>
|
/// <param name="challenge"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge)
|
public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge)
|
||||||
{
|
{
|
||||||
SHA512Managed HashProvider = new SHA512Managed();
|
SHA512Managed HashProvider = new SHA512Managed();
|
||||||
ASCIIEncoding TextProvider = new ASCIIEncoding();
|
ASCIIEncoding TextProvider = new ASCIIEncoding();
|
||||||
|
|
||||||
byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
|
byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
|
||||||
byte[] hash = HashProvider.ComputeHash(stream);
|
byte[] hash = HashProvider.ComputeHash(stream);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ReservationData GetReservationAtPoint(uint x, uint y)
|
public ReservationData GetReservationAtPoint(uint x, uint y)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,206 +1,206 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.SQLite;
|
using System.Data.SQLite;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data.SQLite
|
namespace OpenSim.Framework.Data.SQLite
|
||||||
{
|
{
|
||||||
class SQLiteManager
|
class SQLiteManager
|
||||||
{
|
{
|
||||||
IDbConnection dbcon;
|
IDbConnection dbcon;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises and creates a new SQLite connection and maintains it.
|
/// Initialises and creates a new SQLite connection and maintains it.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="hostname">The SQLite server being connected to</param>
|
/// <param name="hostname">The SQLite server being connected to</param>
|
||||||
/// <param name="database">The name of the SQLite database being used</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="username">The username logging into the database</param>
|
||||||
/// <param name="password">The password for the user logging in</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>
|
/// <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)
|
public SQLiteManager(string hostname, string database, string username, string password, string cpooling)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string connectionString = "URI=file:GridServerSqlite.db;";
|
string connectionString = "URI=file:GridServerSqlite.db;";
|
||||||
dbcon = new SQLiteConnection(connectionString);
|
dbcon = new SQLiteConnection(connectionString);
|
||||||
|
|
||||||
dbcon.Open();
|
dbcon.Open();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
throw new Exception("Error initialising SQLite Database: " + e.ToString());
|
throw new Exception("Error initialising SQLite Database: " + e.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Shuts down the database connection
|
/// Shuts down the database connection
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
dbcon.Close();
|
dbcon.Close();
|
||||||
dbcon = null;
|
dbcon = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Runs a query with protection against SQL Injection by using parameterised input.
|
/// Runs a query with protection against SQL Injection by using parameterised input.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param>
|
/// <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>
|
/// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param>
|
||||||
/// <returns>A SQLite DB Command</returns>
|
/// <returns>A SQLite DB Command</returns>
|
||||||
public IDbCommand Query(string sql, Dictionary<string, string> parameters)
|
public IDbCommand Query(string sql, Dictionary<string, string> parameters)
|
||||||
{
|
{
|
||||||
SQLiteCommand dbcommand = (SQLiteCommand)dbcon.CreateCommand();
|
SQLiteCommand dbcommand = (SQLiteCommand)dbcon.CreateCommand();
|
||||||
dbcommand.CommandText = sql;
|
dbcommand.CommandText = sql;
|
||||||
foreach (KeyValuePair<string, string> param in parameters)
|
foreach (KeyValuePair<string, string> param in parameters)
|
||||||
{
|
{
|
||||||
SQLiteParameter paramx = new SQLiteParameter(param.Key,param.Value);
|
SQLiteParameter paramx = new SQLiteParameter(param.Key,param.Value);
|
||||||
dbcommand.Parameters.Add(paramx);
|
dbcommand.Parameters.Add(paramx);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (IDbCommand)dbcommand;
|
return (IDbCommand)dbcommand;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Reads a region row from a database reader
|
/// Reads a region row from a database reader
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="reader">An active database reader</param>
|
/// <param name="reader">An active database reader</param>
|
||||||
/// <returns>A region profile</returns>
|
/// <returns>A region profile</returns>
|
||||||
public SimProfileData getRow(IDataReader reader)
|
public SimProfileData getRow(IDataReader reader)
|
||||||
{
|
{
|
||||||
SimProfileData retval = new SimProfileData();
|
SimProfileData retval = new SimProfileData();
|
||||||
|
|
||||||
if (reader.Read())
|
if (reader.Read())
|
||||||
{
|
{
|
||||||
// Region Main
|
// Region Main
|
||||||
retval.regionHandle = (ulong)reader["regionHandle"];
|
retval.regionHandle = (ulong)reader["regionHandle"];
|
||||||
retval.regionName = (string)reader["regionName"];
|
retval.regionName = (string)reader["regionName"];
|
||||||
retval.UUID = new LLUUID((string)reader["uuid"]);
|
retval.UUID = new LLUUID((string)reader["uuid"]);
|
||||||
|
|
||||||
// Secrets
|
// Secrets
|
||||||
retval.regionRecvKey = (string)reader["regionRecvKey"];
|
retval.regionRecvKey = (string)reader["regionRecvKey"];
|
||||||
retval.regionSecret = (string)reader["regionSecret"];
|
retval.regionSecret = (string)reader["regionSecret"];
|
||||||
retval.regionSendKey = (string)reader["regionSendKey"];
|
retval.regionSendKey = (string)reader["regionSendKey"];
|
||||||
|
|
||||||
// Region Server
|
// Region Server
|
||||||
retval.regionDataURI = (string)reader["regionDataURI"];
|
retval.regionDataURI = (string)reader["regionDataURI"];
|
||||||
retval.regionOnline = false; // Needs to be pinged before this can be set.
|
retval.regionOnline = false; // Needs to be pinged before this can be set.
|
||||||
retval.serverIP = (string)reader["serverIP"];
|
retval.serverIP = (string)reader["serverIP"];
|
||||||
retval.serverPort = (uint)reader["serverPort"];
|
retval.serverPort = (uint)reader["serverPort"];
|
||||||
retval.serverURI = (string)reader["serverURI"];
|
retval.serverURI = (string)reader["serverURI"];
|
||||||
|
|
||||||
// Location
|
// Location
|
||||||
retval.regionLocX = (uint)((int)reader["locX"]);
|
retval.regionLocX = (uint)((int)reader["locX"]);
|
||||||
retval.regionLocY = (uint)((int)reader["locY"]);
|
retval.regionLocY = (uint)((int)reader["locY"]);
|
||||||
retval.regionLocZ = (uint)((int)reader["locZ"]);
|
retval.regionLocZ = (uint)((int)reader["locZ"]);
|
||||||
|
|
||||||
// Neighbours - 0 = No Override
|
// Neighbours - 0 = No Override
|
||||||
retval.regionEastOverrideHandle = (ulong)reader["eastOverrideHandle"];
|
retval.regionEastOverrideHandle = (ulong)reader["eastOverrideHandle"];
|
||||||
retval.regionWestOverrideHandle = (ulong)reader["westOverrideHandle"];
|
retval.regionWestOverrideHandle = (ulong)reader["westOverrideHandle"];
|
||||||
retval.regionSouthOverrideHandle = (ulong)reader["southOverrideHandle"];
|
retval.regionSouthOverrideHandle = (ulong)reader["southOverrideHandle"];
|
||||||
retval.regionNorthOverrideHandle = (ulong)reader["northOverrideHandle"];
|
retval.regionNorthOverrideHandle = (ulong)reader["northOverrideHandle"];
|
||||||
|
|
||||||
// Assets
|
// Assets
|
||||||
retval.regionAssetURI = (string)reader["regionAssetURI"];
|
retval.regionAssetURI = (string)reader["regionAssetURI"];
|
||||||
retval.regionAssetRecvKey = (string)reader["regionAssetRecvKey"];
|
retval.regionAssetRecvKey = (string)reader["regionAssetRecvKey"];
|
||||||
retval.regionAssetSendKey = (string)reader["regionAssetSendKey"];
|
retval.regionAssetSendKey = (string)reader["regionAssetSendKey"];
|
||||||
|
|
||||||
// Userserver
|
// Userserver
|
||||||
retval.regionUserURI = (string)reader["regionUserURI"];
|
retval.regionUserURI = (string)reader["regionUserURI"];
|
||||||
retval.regionUserRecvKey = (string)reader["regionUserRecvKey"];
|
retval.regionUserRecvKey = (string)reader["regionUserRecvKey"];
|
||||||
retval.regionUserSendKey = (string)reader["regionUserSendKey"];
|
retval.regionUserSendKey = (string)reader["regionUserSendKey"];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new Exception("No rows to return");
|
throw new Exception("No rows to return");
|
||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Inserts a new region into the database
|
/// Inserts a new region into the database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="profile">The region to insert</param>
|
/// <param name="profile">The region to insert</param>
|
||||||
/// <returns>Success?</returns>
|
/// <returns>Success?</returns>
|
||||||
public bool insertRow(SimProfileData profile)
|
public bool insertRow(SimProfileData profile)
|
||||||
{
|
{
|
||||||
string sql = "REPLACE INTO regions VALUES (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, ";
|
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 += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, ";
|
||||||
sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey) VALUES ";
|
sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey) VALUES ";
|
||||||
|
|
||||||
sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, ";
|
sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, ";
|
||||||
sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, ";
|
sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, ";
|
||||||
sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey);";
|
sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey);";
|
||||||
|
|
||||||
Dictionary<string, string> parameters = new Dictionary<string, string>();
|
Dictionary<string, string> parameters = new Dictionary<string, string>();
|
||||||
|
|
||||||
parameters["regionHandle"] = profile.regionHandle.ToString();
|
parameters["regionHandle"] = profile.regionHandle.ToString();
|
||||||
parameters["regionName"] = profile.regionName;
|
parameters["regionName"] = profile.regionName;
|
||||||
parameters["uuid"] = profile.UUID.ToString();
|
parameters["uuid"] = profile.UUID.ToString();
|
||||||
parameters["regionRecvKey"] = profile.regionRecvKey;
|
parameters["regionRecvKey"] = profile.regionRecvKey;
|
||||||
parameters["regionSendKey"] = profile.regionSendKey;
|
parameters["regionSendKey"] = profile.regionSendKey;
|
||||||
parameters["regionDataURI"] = profile.regionDataURI;
|
parameters["regionDataURI"] = profile.regionDataURI;
|
||||||
parameters["serverIP"] = profile.serverIP;
|
parameters["serverIP"] = profile.serverIP;
|
||||||
parameters["serverPort"] = profile.serverPort.ToString();
|
parameters["serverPort"] = profile.serverPort.ToString();
|
||||||
parameters["serverURI"] = profile.serverURI;
|
parameters["serverURI"] = profile.serverURI;
|
||||||
parameters["locX"] = profile.regionLocX.ToString();
|
parameters["locX"] = profile.regionLocX.ToString();
|
||||||
parameters["locY"] = profile.regionLocY.ToString();
|
parameters["locY"] = profile.regionLocY.ToString();
|
||||||
parameters["locZ"] = profile.regionLocZ.ToString();
|
parameters["locZ"] = profile.regionLocZ.ToString();
|
||||||
parameters["eastOverrideHandle"] = profile.regionEastOverrideHandle.ToString();
|
parameters["eastOverrideHandle"] = profile.regionEastOverrideHandle.ToString();
|
||||||
parameters["westOverrideHandle"] = profile.regionWestOverrideHandle.ToString();
|
parameters["westOverrideHandle"] = profile.regionWestOverrideHandle.ToString();
|
||||||
parameters["northOverrideHandle"] = profile.regionNorthOverrideHandle.ToString();
|
parameters["northOverrideHandle"] = profile.regionNorthOverrideHandle.ToString();
|
||||||
parameters["southOverrideHandle"] = profile.regionSouthOverrideHandle.ToString();
|
parameters["southOverrideHandle"] = profile.regionSouthOverrideHandle.ToString();
|
||||||
parameters["regionAssetURI"] = profile.regionAssetURI;
|
parameters["regionAssetURI"] = profile.regionAssetURI;
|
||||||
parameters["regionAssetRecvKey"] = profile.regionAssetRecvKey;
|
parameters["regionAssetRecvKey"] = profile.regionAssetRecvKey;
|
||||||
parameters["regionAssetSendKey"] = profile.regionAssetSendKey;
|
parameters["regionAssetSendKey"] = profile.regionAssetSendKey;
|
||||||
parameters["regionUserURI"] = profile.regionUserURI;
|
parameters["regionUserURI"] = profile.regionUserURI;
|
||||||
parameters["regionUserRecvKey"] = profile.regionUserRecvKey;
|
parameters["regionUserRecvKey"] = profile.regionUserRecvKey;
|
||||||
parameters["regionUserSendKey"] = profile.regionUserSendKey;
|
parameters["regionUserSendKey"] = profile.regionUserSendKey;
|
||||||
|
|
||||||
bool returnval = false;
|
bool returnval = false;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IDbCommand result = Query(sql, parameters);
|
IDbCommand result = Query(sql, parameters);
|
||||||
|
|
||||||
if (result.ExecuteNonQuery() == 1)
|
if (result.ExecuteNonQuery() == 1)
|
||||||
returnval = true;
|
returnval = true;
|
||||||
|
|
||||||
result.Dispose();
|
result.Dispose();
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return returnval;
|
return returnval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,111 +1,111 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data
|
namespace OpenSim.Framework.Data
|
||||||
{
|
{
|
||||||
public enum DataResponse
|
public enum DataResponse
|
||||||
{
|
{
|
||||||
RESPONSE_OK,
|
RESPONSE_OK,
|
||||||
RESPONSE_AUTHREQUIRED,
|
RESPONSE_AUTHREQUIRED,
|
||||||
RESPONSE_INVALIDCREDENTIALS,
|
RESPONSE_INVALIDCREDENTIALS,
|
||||||
RESPONSE_ERROR
|
RESPONSE_ERROR
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A standard grid interface
|
/// A standard grid interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IGridData
|
public interface IGridData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a sim profile from a regionHandle
|
/// Returns a sim profile from a regionHandle
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="regionHandle">A 64bit Region Handle</param>
|
/// <param name="regionHandle">A 64bit Region Handle</param>
|
||||||
/// <returns>A simprofile</returns>
|
/// <returns>A simprofile</returns>
|
||||||
SimProfileData GetProfileByHandle(ulong regionHandle);
|
SimProfileData GetProfileByHandle(ulong regionHandle);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a sim profile from a UUID
|
/// Returns a sim profile from a UUID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="UUID">A 128bit UUID</param>
|
/// <param name="UUID">A 128bit UUID</param>
|
||||||
/// <returns>A sim profile</returns>
|
/// <returns>A sim profile</returns>
|
||||||
SimProfileData GetProfileByLLUUID(LLUUID UUID);
|
SimProfileData GetProfileByLLUUID(LLUUID UUID);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns all profiles within the specified range
|
/// Returns all profiles within the specified range
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="Xmin">Minimum sim coordinate (X)</param>
|
/// <param name="Xmin">Minimum sim coordinate (X)</param>
|
||||||
/// <param name="Ymin">Minimum sim coordinate (Y)</param>
|
/// <param name="Ymin">Minimum sim coordinate (Y)</param>
|
||||||
/// <param name="Xmax">Maximum sim coordinate (X)</param>
|
/// <param name="Xmax">Maximum sim coordinate (X)</param>
|
||||||
/// <param name="Ymin">Maximum sim coordinate (Y)</param>
|
/// <param name="Ymin">Maximum sim coordinate (Y)</param>
|
||||||
/// <returns>An array containing all the sim profiles in the specified range</returns>
|
/// <returns>An array containing all the sim profiles in the specified range</returns>
|
||||||
SimProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax);
|
SimProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Authenticates a sim by use of it's recv key.
|
/// Authenticates a sim by use of it's recv key.
|
||||||
/// WARNING: Insecure
|
/// WARNING: Insecure
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="UUID">The UUID sent by the sim</param>
|
/// <param name="UUID">The UUID sent by the sim</param>
|
||||||
/// <param name="regionHandle">The regionhandle 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>
|
/// <param name="simrecvkey">The recieving key sent by the sim</param>
|
||||||
/// <returns>Whether the sim has been authenticated</returns>
|
/// <returns>Whether the sim has been authenticated</returns>
|
||||||
bool AuthenticateSim(LLUUID UUID, ulong regionHandle, string simrecvkey);
|
bool AuthenticateSim(LLUUID UUID, ulong regionHandle, string simrecvkey);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises the interface
|
/// Initialises the interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void Initialise();
|
void Initialise();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Closes the interface
|
/// Closes the interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void Close();
|
void Close();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The plugin being loaded
|
/// The plugin being loaded
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A string containing the plugin name</returns>
|
/// <returns>A string containing the plugin name</returns>
|
||||||
string getName();
|
string getName();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The plugins version
|
/// The plugins version
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A string containing the plugin version</returns>
|
/// <returns>A string containing the plugin version</returns>
|
||||||
string getVersion();
|
string getVersion();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a new profile to the database
|
/// Adds a new profile to the database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="profile">The profile to add</param>
|
/// <param name="profile">The profile to add</param>
|
||||||
/// <returns>RESPONSE_OK if successful, error if not.</returns>
|
/// <returns>RESPONSE_OK if successful, error if not.</returns>
|
||||||
DataResponse AddProfile(SimProfileData profile);
|
DataResponse AddProfile(SimProfileData profile);
|
||||||
|
|
||||||
ReservationData GetReservationAtPoint(uint x, uint y);
|
ReservationData GetReservationAtPoint(uint x, uint y);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,90 +1,90 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
namespace OpenSim.Framework.Data
|
namespace OpenSim.Framework.Data
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The severity of an individual log message
|
/// The severity of an individual log message
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public enum LogSeverity : int
|
public enum LogSeverity : int
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Critical: systems failure
|
/// Critical: systems failure
|
||||||
/// </summary>
|
/// </summary>
|
||||||
CRITICAL = 1,
|
CRITICAL = 1,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Major: warning prior to systems failure
|
/// Major: warning prior to systems failure
|
||||||
/// </summary>
|
/// </summary>
|
||||||
MAJOR = 2,
|
MAJOR = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Medium: an individual non-critical task failed
|
/// Medium: an individual non-critical task failed
|
||||||
/// </summary>
|
/// </summary>
|
||||||
MEDIUM = 3,
|
MEDIUM = 3,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Low: Informational warning
|
/// Low: Informational warning
|
||||||
/// </summary>
|
/// </summary>
|
||||||
LOW = 4,
|
LOW = 4,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Info: Information
|
/// Info: Information
|
||||||
/// </summary>
|
/// </summary>
|
||||||
INFO = 5,
|
INFO = 5,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Verbose: Debug Information
|
/// Verbose: Debug Information
|
||||||
/// </summary>
|
/// </summary>
|
||||||
VERBOSE = 6
|
VERBOSE = 6
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// An interface to a LogData storage system
|
/// An interface to a LogData storage system
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface ILogData
|
public interface ILogData
|
||||||
{
|
{
|
||||||
void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority,string logMessage);
|
void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority,string logMessage);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises the interface
|
/// Initialises the interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void Initialise();
|
void Initialise();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Closes the interface
|
/// Closes the interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void Close();
|
void Close();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The plugin being loaded
|
/// The plugin being loaded
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A string containing the plugin name</returns>
|
/// <returns>A string containing the plugin name</returns>
|
||||||
string getName();
|
string getName();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The plugins version
|
/// The plugins version
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A string containing the plugin version</returns>
|
/// <returns>A string containing the plugin version</returns>
|
||||||
string getVersion();
|
string getVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,96 +1,96 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
/*
|
/*
|
||||||
Taken from public code listing at by Alex Pinsker
|
Taken from public code listing at by Alex Pinsker
|
||||||
http://alexpinsker.blogspot.com/2005/12/reading-ini-file-from-c_113432097333021549.html
|
http://alexpinsker.blogspot.com/2005/12/reading-ini-file-from-c_113432097333021549.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data
|
namespace OpenSim.Framework.Data
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Parse settings from ini-like files
|
/// Parse settings from ini-like files
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class IniFile
|
public class IniFile
|
||||||
{
|
{
|
||||||
static IniFile()
|
static IniFile()
|
||||||
{
|
{
|
||||||
_iniKeyValuePatternRegex = new Regex(
|
_iniKeyValuePatternRegex = new Regex(
|
||||||
@"((\s)*(?<Key>([^\=^\s^\n]+))[\s^\n]*
|
@"((\s)*(?<Key>([^\=^\s^\n]+))[\s^\n]*
|
||||||
# key part (surrounding whitespace stripped)
|
# key part (surrounding whitespace stripped)
|
||||||
\=
|
\=
|
||||||
(\s)*(?<Value>([^\n^\s]+(\n){0,1})))
|
(\s)*(?<Value>([^\n^\s]+(\n){0,1})))
|
||||||
# value part (surrounding whitespace stripped)
|
# value part (surrounding whitespace stripped)
|
||||||
",
|
",
|
||||||
RegexOptions.IgnorePatternWhitespace |
|
RegexOptions.IgnorePatternWhitespace |
|
||||||
RegexOptions.Compiled |
|
RegexOptions.Compiled |
|
||||||
RegexOptions.CultureInvariant);
|
RegexOptions.CultureInvariant);
|
||||||
}
|
}
|
||||||
static private Regex _iniKeyValuePatternRegex;
|
static private Regex _iniKeyValuePatternRegex;
|
||||||
|
|
||||||
public IniFile(string iniFileName)
|
public IniFile(string iniFileName)
|
||||||
{
|
{
|
||||||
_iniFileName = iniFileName;
|
_iniFileName = iniFileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ParseFileReadValue(string key)
|
public string ParseFileReadValue(string key)
|
||||||
{
|
{
|
||||||
using (StreamReader reader =
|
using (StreamReader reader =
|
||||||
new StreamReader(_iniFileName))
|
new StreamReader(_iniFileName))
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
string line = reader.ReadLine();
|
string line = reader.ReadLine();
|
||||||
Match match =
|
Match match =
|
||||||
_iniKeyValuePatternRegex.Match(line);
|
_iniKeyValuePatternRegex.Match(line);
|
||||||
if (match.Success)
|
if (match.Success)
|
||||||
{
|
{
|
||||||
string currentKey =
|
string currentKey =
|
||||||
match.Groups["Key"].Value as string;
|
match.Groups["Key"].Value as string;
|
||||||
if (currentKey != null &&
|
if (currentKey != null &&
|
||||||
currentKey.Trim().CompareTo(key) == 0)
|
currentKey.Trim().CompareTo(key) == 0)
|
||||||
{
|
{
|
||||||
string value =
|
string value =
|
||||||
match.Groups["Value"].Value as string;
|
match.Groups["Value"].Value as string;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
while (reader.Peek() != -1);
|
while (reader.Peek() != -1);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string IniFileName
|
public string IniFileName
|
||||||
{
|
{
|
||||||
get { return _iniFileName; }
|
get { return _iniFileName; }
|
||||||
} private string _iniFileName;
|
} private string _iniFileName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,197 +1,197 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data
|
namespace OpenSim.Framework.Data
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Inventory Item - contains all the properties associated with an individual inventory piece.
|
/// Inventory Item - contains all the properties associated with an individual inventory piece.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class InventoryItemBase
|
public class InventoryItemBase
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A UUID containing the ID for the inventory item itself
|
/// A UUID containing the ID for the inventory item itself
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID inventoryID;
|
public LLUUID inventoryID;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The UUID of the associated asset on the asset server
|
/// The UUID of the associated asset on the asset server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID assetID;
|
public LLUUID assetID;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc)
|
/// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int type;
|
public int type;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The folder this item is contained in
|
/// The folder this item is contained in
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID parentFolderID;
|
public LLUUID parentFolderID;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The owner of this inventory item
|
/// The owner of this inventory item
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID avatarID;
|
public LLUUID avatarID;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The creator of this item
|
/// The creator of this item
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID creatorsID;
|
public LLUUID creatorsID;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The name of the inventory item (must be less than 64 characters)
|
/// The name of the inventory item (must be less than 64 characters)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string inventoryName;
|
public string inventoryName;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The description of the inventory item (must be less than 64 characters)
|
/// The description of the inventory item (must be less than 64 characters)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string inventoryDescription;
|
public string inventoryDescription;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A mask containing the permissions for the next owner (cannot be enforced)
|
/// A mask containing the permissions for the next owner (cannot be enforced)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public uint inventoryNextPermissions;
|
public uint inventoryNextPermissions;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A mask containing permissions for the current owner (cannot be enforced)
|
/// A mask containing permissions for the current owner (cannot be enforced)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public uint inventoryCurrentPermissions;
|
public uint inventoryCurrentPermissions;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A Class for folders which contain users inventory
|
/// A Class for folders which contain users inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class InventoryFolderBase
|
public class InventoryFolderBase
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The name of the folder (64 characters or less)
|
/// The name of the folder (64 characters or less)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string name;
|
public string name;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The agent who's inventory this is contained by
|
/// The agent who's inventory this is contained by
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID agentID;
|
public LLUUID agentID;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The folder this folder is contained in
|
/// The folder this folder is contained in
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID parentID;
|
public LLUUID parentID;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The UUID for this folder
|
/// The UUID for this folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID folderID;
|
public LLUUID folderID;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tyep of Items normally stored in this folder
|
/// Tyep of Items normally stored in this folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ushort type;
|
public ushort type;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ushort version;
|
public ushort version;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// An interface for accessing inventory data from a storage server
|
/// An interface for accessing inventory data from a storage server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IInventoryData
|
public interface IInventoryData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises the interface
|
/// Initialises the interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void Initialise();
|
void Initialise();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Closes the interface
|
/// Closes the interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void Close();
|
void Close();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The plugin being loaded
|
/// The plugin being loaded
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A string containing the plugin name</returns>
|
/// <returns>A string containing the plugin name</returns>
|
||||||
string getName();
|
string getName();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The plugins version
|
/// The plugins version
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A string containing the plugin version</returns>
|
/// <returns>A string containing the plugin version</returns>
|
||||||
string getVersion();
|
string getVersion();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a list of inventory items contained within the specified folder
|
/// Returns a list of inventory items contained within the specified folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="folderID">The UUID of the target folder</param>
|
/// <param name="folderID">The UUID of the target folder</param>
|
||||||
/// <returns>A List of InventoryItemBase items</returns>
|
/// <returns>A List of InventoryItemBase items</returns>
|
||||||
List<InventoryItemBase> getInventoryInFolder(LLUUID folderID);
|
List<InventoryItemBase> getInventoryInFolder(LLUUID folderID);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a list of folders in the users inventory root.
|
/// Returns a list of folders in the users inventory root.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user">The UUID of the user who is having inventory being returned</param>
|
/// <param name="user">The UUID of the user who is having inventory being returned</param>
|
||||||
/// <returns>A list of folders</returns>
|
/// <returns>A list of folders</returns>
|
||||||
List<InventoryFolderBase> getUserRootFolders(LLUUID user);
|
List<InventoryFolderBase> getUserRootFolders(LLUUID user);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a list of inventory folders contained in the folder 'parentID'
|
/// Returns a list of inventory folders contained in the folder 'parentID'
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="parentID">The folder to get subfolders for</param>
|
/// <param name="parentID">The folder to get subfolders for</param>
|
||||||
/// <returns>A list of inventory folders</returns>
|
/// <returns>A list of inventory folders</returns>
|
||||||
List<InventoryFolderBase> getInventoryFolders(LLUUID parentID);
|
List<InventoryFolderBase> getInventoryFolders(LLUUID parentID);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns an inventory item by its UUID
|
/// Returns an inventory item by its UUID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="item">The UUID of the item to be returned</param>
|
/// <param name="item">The UUID of the item to be returned</param>
|
||||||
/// <returns>A class containing item information</returns>
|
/// <returns>A class containing item information</returns>
|
||||||
InventoryItemBase getInventoryItem(LLUUID item);
|
InventoryItemBase getInventoryItem(LLUUID item);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a specified inventory folder by its UUID
|
/// Returns a specified inventory folder by its UUID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="folder">The UUID of the folder to be returned</param>
|
/// <param name="folder">The UUID of the folder to be returned</param>
|
||||||
/// <returns>A class containing folder information</returns>
|
/// <returns>A class containing folder information</returns>
|
||||||
InventoryFolderBase getInventoryFolder(LLUUID folder);
|
InventoryFolderBase getInventoryFolder(LLUUID folder);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new inventory item based on item
|
/// Creates a new inventory item based on item
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="item">The item to be created</param>
|
/// <param name="item">The item to be created</param>
|
||||||
void addInventoryItem(InventoryItemBase item);
|
void addInventoryItem(InventoryItemBase item);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Updates an inventory item with item (updates based on ID)
|
/// Updates an inventory item with item (updates based on ID)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="item">The updated item</param>
|
/// <param name="item">The updated item</param>
|
||||||
void updateInventoryItem(InventoryItemBase item);
|
void updateInventoryItem(InventoryItemBase item);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a new folder specified by folder
|
/// Adds a new folder specified by folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="folder">The inventory folder</param>
|
/// <param name="folder">The inventory folder</param>
|
||||||
void addInventoryFolder(InventoryFolderBase folder);
|
void addInventoryFolder(InventoryFolderBase folder);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Updates a folder based on its ID with folder
|
/// Updates a folder based on its ID with folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="folder">The inventory folder</param>
|
/// <param name="folder">The inventory folder</param>
|
||||||
void updateInventoryFolder(InventoryFolderBase folder);
|
void updateInventoryFolder(InventoryFolderBase folder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +1,33 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("OpenSim.Framework.Data")]
|
[assembly: AssemblyTitle("OpenSim.Framework.Data")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("OpenSim.Framework.Data")]
|
[assembly: AssemblyProduct("OpenSim.Framework.Data")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2007")]
|
[assembly: AssemblyCopyright("Copyright © 2007")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
// 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
|
// to COM components. If you need to access a type in this assembly from
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("3a711c34-b0c0-4264-b0fe-f366eabf9d7b")]
|
[assembly: Guid("3a711c34-b0c0-4264-b0fe-f366eabf9d7b")]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
// Major Version
|
// Major Version
|
||||||
// Minor Version
|
// Minor Version
|
||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
// You can specify all the values or you can default the Revision and Build Numbers
|
// You can specify all the values or you can default the Revision and Build Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
|
@ -1,47 +1,47 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data
|
namespace OpenSim.Framework.Data
|
||||||
{
|
{
|
||||||
public class ReservationData
|
public class ReservationData
|
||||||
{
|
{
|
||||||
public LLUUID userUUID = new LLUUID();
|
public LLUUID userUUID = new LLUUID();
|
||||||
public int reservationMinX = 0;
|
public int reservationMinX = 0;
|
||||||
public int reservationMinY = 0;
|
public int reservationMinY = 0;
|
||||||
public int reservationMaxX = 65536;
|
public int reservationMaxX = 65536;
|
||||||
public int reservationMaxY = 65536;
|
public int reservationMaxY = 65536;
|
||||||
|
|
||||||
public string reservationName = "";
|
public string reservationName = "";
|
||||||
public string reservationCompany = "";
|
public string reservationCompany = "";
|
||||||
public bool status = true;
|
public bool status = true;
|
||||||
|
|
||||||
public string gridSendKey = "";
|
public string gridSendKey = "";
|
||||||
public string gridRecvKey = "";
|
public string gridRecvKey = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,192 +1,192 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using Nwc.XmlRpc;
|
using Nwc.XmlRpc;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data
|
namespace OpenSim.Framework.Data
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A class which contains information known to the grid server about a region
|
/// A class which contains information known to the grid server about a region
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class SimProfileData
|
public class SimProfileData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The name of the region
|
/// The name of the region
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string regionName = "";
|
public string regionName = "";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A 64-bit number combining map position into a (mostly) unique ID
|
/// A 64-bit number combining map position into a (mostly) unique ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ulong regionHandle;
|
public ulong regionHandle;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// OGS/OpenSim Specific ID for a region
|
/// OGS/OpenSim Specific ID for a region
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID UUID;
|
public LLUUID UUID;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Coordinates of the region
|
/// Coordinates of the region
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public uint regionLocX;
|
public uint regionLocX;
|
||||||
public uint regionLocY;
|
public uint regionLocY;
|
||||||
public uint regionLocZ; // Reserved (round-robin, layers, etc)
|
public uint regionLocZ; // Reserved (round-robin, layers, etc)
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Authentication secrets
|
/// Authentication secrets
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>Not very secure, needs improvement.</remarks>
|
/// <remarks>Not very secure, needs improvement.</remarks>
|
||||||
public string regionSendKey = "";
|
public string regionSendKey = "";
|
||||||
public string regionRecvKey = "";
|
public string regionRecvKey = "";
|
||||||
public string regionSecret = "";
|
public string regionSecret = "";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether the region is online
|
/// Whether the region is online
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool regionOnline;
|
public bool regionOnline;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Information about the server that the region is currently hosted on
|
/// Information about the server that the region is currently hosted on
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string serverIP = "";
|
public string serverIP = "";
|
||||||
public uint serverPort;
|
public uint serverPort;
|
||||||
public string serverURI = "";
|
public string serverURI = "";
|
||||||
|
|
||||||
public uint httpPort;
|
public uint httpPort;
|
||||||
public uint remotingPort;
|
public uint remotingPort;
|
||||||
public string httpServerURI = "";
|
public string httpServerURI = "";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Set of optional overrides. Can be used to create non-eulicidean spaces.
|
/// Set of optional overrides. Can be used to create non-eulicidean spaces.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ulong regionNorthOverrideHandle;
|
public ulong regionNorthOverrideHandle;
|
||||||
public ulong regionSouthOverrideHandle;
|
public ulong regionSouthOverrideHandle;
|
||||||
public ulong regionEastOverrideHandle;
|
public ulong regionEastOverrideHandle;
|
||||||
public ulong regionWestOverrideHandle;
|
public ulong regionWestOverrideHandle;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Optional: URI Location of the region database
|
/// Optional: URI Location of the region database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>Used for floating sim pools where the region data is not nessecarily coupled to a specific server</remarks>
|
/// <remarks>Used for floating sim pools where the region data is not nessecarily coupled to a specific server</remarks>
|
||||||
public string regionDataURI = "";
|
public string regionDataURI = "";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Region Asset Details
|
/// Region Asset Details
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string regionAssetURI = "";
|
public string regionAssetURI = "";
|
||||||
public string regionAssetSendKey = "";
|
public string regionAssetSendKey = "";
|
||||||
public string regionAssetRecvKey = "";
|
public string regionAssetRecvKey = "";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Region Userserver Details
|
/// Region Userserver Details
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string regionUserURI = "";
|
public string regionUserURI = "";
|
||||||
public string regionUserSendKey = "";
|
public string regionUserSendKey = "";
|
||||||
public string regionUserRecvKey = "";
|
public string regionUserRecvKey = "";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Region Map Texture Asset
|
/// Region Map Texture Asset
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID regionMapTextureID = new LLUUID("00000000-0000-0000-9999-000000000006");
|
public LLUUID regionMapTextureID = new LLUUID("00000000-0000-0000-9999-000000000006");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get Sim profile data from grid server when in grid mode
|
/// Get Sim profile data from grid server when in grid mode
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="region_uuid"></param>
|
/// <param name="region_uuid"></param>
|
||||||
/// <param name="gridserver_url"></param>
|
/// <param name="gridserver_url"></param>
|
||||||
/// <param name="?"></param>
|
/// <param name="?"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public SimProfileData RequestSimProfileData(LLUUID region_uuid, string gridserver_url, string gridserver_sendkey, string gridserver_recvkey)
|
public SimProfileData RequestSimProfileData(LLUUID region_uuid, string gridserver_url, string gridserver_sendkey, string gridserver_recvkey)
|
||||||
{
|
{
|
||||||
Hashtable requestData = new Hashtable();
|
Hashtable requestData = new Hashtable();
|
||||||
requestData["region_uuid"] = region_uuid.UUID.ToString();
|
requestData["region_uuid"] = region_uuid.UUID.ToString();
|
||||||
requestData["authkey"] = gridserver_sendkey;
|
requestData["authkey"] = gridserver_sendkey;
|
||||||
ArrayList SendParams = new ArrayList();
|
ArrayList SendParams = new ArrayList();
|
||||||
SendParams.Add(requestData);
|
SendParams.Add(requestData);
|
||||||
XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams);
|
XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams);
|
||||||
XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000);
|
XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000);
|
||||||
|
|
||||||
Hashtable responseData = (Hashtable)GridResp.Value;
|
Hashtable responseData = (Hashtable)GridResp.Value;
|
||||||
|
|
||||||
if (responseData.ContainsKey("error"))
|
if (responseData.ContainsKey("error"))
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
SimProfileData simData = new SimProfileData();
|
SimProfileData simData = new SimProfileData();
|
||||||
simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]);
|
simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]);
|
||||||
simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]);
|
simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]);
|
||||||
simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256));
|
simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256));
|
||||||
simData.serverIP = (string)responseData["sim_ip"];
|
simData.serverIP = (string)responseData["sim_ip"];
|
||||||
simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]);
|
simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]);
|
||||||
simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]);
|
simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]);
|
||||||
simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]);
|
simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]);
|
||||||
simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/";
|
simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/";
|
||||||
simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/";
|
simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/";
|
||||||
simData.UUID = new LLUUID((string)responseData["region_UUID"]);
|
simData.UUID = new LLUUID((string)responseData["region_UUID"]);
|
||||||
simData.regionName = (string)responseData["region_name"];
|
simData.regionName = (string)responseData["region_name"];
|
||||||
|
|
||||||
return simData;
|
return simData;
|
||||||
}
|
}
|
||||||
public SimProfileData RequestSimProfileData(ulong region_handle, string gridserver_url, string gridserver_sendkey, string gridserver_recvkey)
|
public SimProfileData RequestSimProfileData(ulong region_handle, string gridserver_url, string gridserver_sendkey, string gridserver_recvkey)
|
||||||
{
|
{
|
||||||
Hashtable requestData = new Hashtable();
|
Hashtable requestData = new Hashtable();
|
||||||
requestData["region_handle"] = region_handle.ToString();
|
requestData["region_handle"] = region_handle.ToString();
|
||||||
requestData["authkey"] = gridserver_sendkey;
|
requestData["authkey"] = gridserver_sendkey;
|
||||||
ArrayList SendParams = new ArrayList();
|
ArrayList SendParams = new ArrayList();
|
||||||
SendParams.Add(requestData);
|
SendParams.Add(requestData);
|
||||||
XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams);
|
XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams);
|
||||||
XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000);
|
XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000);
|
||||||
|
|
||||||
Hashtable responseData = (Hashtable)GridResp.Value;
|
Hashtable responseData = (Hashtable)GridResp.Value;
|
||||||
|
|
||||||
if (responseData.ContainsKey("error"))
|
if (responseData.ContainsKey("error"))
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
SimProfileData simData = new SimProfileData();
|
SimProfileData simData = new SimProfileData();
|
||||||
simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]);
|
simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]);
|
||||||
simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]);
|
simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]);
|
||||||
simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256));
|
simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256));
|
||||||
simData.serverIP = (string)responseData["sim_ip"];
|
simData.serverIP = (string)responseData["sim_ip"];
|
||||||
simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]);
|
simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]);
|
||||||
simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]);
|
simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]);
|
||||||
simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]);
|
simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]);
|
||||||
simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/";
|
simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/";
|
||||||
simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/";
|
simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/";
|
||||||
simData.UUID = new LLUUID((string)responseData["region_UUID"]);
|
simData.UUID = new LLUUID((string)responseData["region_UUID"]);
|
||||||
simData.regionName = (string)responseData["region_name"];
|
simData.regionName = (string)responseData["region_name"];
|
||||||
|
|
||||||
return simData;
|
return simData;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,128 +1,128 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data
|
namespace OpenSim.Framework.Data
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// An interface for connecting to user storage servers.
|
/// An interface for connecting to user storage servers.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IUserData
|
public interface IUserData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a user profile from a database via their UUID
|
/// Returns a user profile from a database via their UUID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user">The accounts UUID</param>
|
/// <param name="user">The accounts UUID</param>
|
||||||
/// <returns>The user data profile</returns>
|
/// <returns>The user data profile</returns>
|
||||||
UserProfileData getUserByUUID(LLUUID user);
|
UserProfileData getUserByUUID(LLUUID user);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a users profile by searching their username
|
/// Returns a users profile by searching their username
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="name">The users username</param>
|
/// <param name="name">The users username</param>
|
||||||
/// <returns>The user data profile</returns>
|
/// <returns>The user data profile</returns>
|
||||||
UserProfileData getUserByName(string name);
|
UserProfileData getUserByName(string name);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a users profile by searching their username parts
|
/// Returns a users profile by searching their username parts
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="fname">Account firstname</param>
|
/// <param name="fname">Account firstname</param>
|
||||||
/// <param name="lname">Account lastname</param>
|
/// <param name="lname">Account lastname</param>
|
||||||
/// <returns>The user data profile</returns>
|
/// <returns>The user data profile</returns>
|
||||||
UserProfileData getUserByName(string fname, string lname);
|
UserProfileData getUserByName(string fname, string lname);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the current agent for a user searching by it's UUID
|
/// Returns the current agent for a user searching by it's UUID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user">The users UUID</param>
|
/// <param name="user">The users UUID</param>
|
||||||
/// <returns>The current agent session</returns>
|
/// <returns>The current agent session</returns>
|
||||||
UserAgentData getAgentByUUID(LLUUID user);
|
UserAgentData getAgentByUUID(LLUUID user);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the current session agent for a user searching by username
|
/// Returns the current session agent for a user searching by username
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="name">The users account name</param>
|
/// <param name="name">The users account name</param>
|
||||||
/// <returns>The current agent session</returns>
|
/// <returns>The current agent session</returns>
|
||||||
UserAgentData getAgentByName(string name);
|
UserAgentData getAgentByName(string name);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the current session agent for a user searching by username parts
|
/// Returns the current session agent for a user searching by username parts
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="fname">The users first account name</param>
|
/// <param name="fname">The users first account name</param>
|
||||||
/// <param name="lname">The users account surname</param>
|
/// <param name="lname">The users account surname</param>
|
||||||
/// <returns>The current agent session</returns>
|
/// <returns>The current agent session</returns>
|
||||||
UserAgentData getAgentByName(string fname, string lname);
|
UserAgentData getAgentByName(string fname, string lname);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a new User profile to the database
|
/// Adds a new User profile to the database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user">UserProfile to add</param>
|
/// <param name="user">UserProfile to add</param>
|
||||||
void addNewUserProfile(UserProfileData user);
|
void addNewUserProfile(UserProfileData user);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a new agent to the database
|
/// Adds a new agent to the database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="agent">The agent to add</param>
|
/// <param name="agent">The agent to add</param>
|
||||||
void addNewUserAgent(UserAgentData agent);
|
void addNewUserAgent(UserAgentData agent);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Attempts to move currency units between accounts (NOT RELIABLE / TRUSTWORTHY. DONT TRY RUN YOUR OWN CURRENCY EXCHANGE WITH REAL VALUES)
|
/// Attempts to move currency units between accounts (NOT RELIABLE / TRUSTWORTHY. DONT TRY RUN YOUR OWN CURRENCY EXCHANGE WITH REAL VALUES)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="from">The account to transfer from</param>
|
/// <param name="from">The account to transfer from</param>
|
||||||
/// <param name="to">The account to transfer to</param>
|
/// <param name="to">The account to transfer to</param>
|
||||||
/// <param name="amount">The amount to transfer</param>
|
/// <param name="amount">The amount to transfer</param>
|
||||||
/// <returns>Successful?</returns>
|
/// <returns>Successful?</returns>
|
||||||
bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount);
|
bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Attempts to move inventory between accounts, if inventory is copyable it will be copied into the target account.
|
/// Attempts to move inventory between accounts, if inventory is copyable it will be copied into the target account.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="from">User to transfer from</param>
|
/// <param name="from">User to transfer from</param>
|
||||||
/// <param name="to">User to transfer to</param>
|
/// <param name="to">User to transfer to</param>
|
||||||
/// <param name="inventory">Specified inventory item</param>
|
/// <param name="inventory">Specified inventory item</param>
|
||||||
/// <returns>Successful?</returns>
|
/// <returns>Successful?</returns>
|
||||||
bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID inventory);
|
bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID inventory);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the plugin version
|
/// Returns the plugin version
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Plugin version in MAJOR.MINOR.REVISION.BUILD format</returns>
|
/// <returns>Plugin version in MAJOR.MINOR.REVISION.BUILD format</returns>
|
||||||
string getVersion();
|
string getVersion();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the plugin name
|
/// Returns the plugin name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Plugin name, eg MySQL User Provider</returns>
|
/// <returns>Plugin name, eg MySQL User Provider</returns>
|
||||||
string getName();
|
string getName();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises the plugin (artificial constructor)
|
/// Initialises the plugin (artificial constructor)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void Initialise();
|
void Initialise();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,180 +1,180 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data
|
namespace OpenSim.Framework.Data
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Information about a particular user known to the userserver
|
/// Information about a particular user known to the userserver
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class UserProfileData
|
public class UserProfileData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The ID value for this user
|
/// The ID value for this user
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID UUID;
|
public LLUUID UUID;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The first component of a users account name
|
/// The first component of a users account name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string username;
|
public string username;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The second component of a users account name
|
/// The second component of a users account name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string surname;
|
public string surname;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A salted hash containing the users password, in the format md5(md5(password) + ":" + salt)
|
/// A salted hash containing the users password, in the format md5(md5(password) + ":" + salt)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>This is double MD5'd because the client sends an unsalted MD5 to the loginserver</remarks>
|
/// <remarks>This is double MD5'd because the client sends an unsalted MD5 to the loginserver</remarks>
|
||||||
public string passwordHash;
|
public string passwordHash;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The salt used for the users hash, should be 32 bytes or longer
|
/// The salt used for the users hash, should be 32 bytes or longer
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string passwordSalt;
|
public string passwordSalt;
|
||||||
|
|
||||||
/// <summary>
|
/// <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
|
/// 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>
|
/// </summary>
|
||||||
public ulong homeRegion;
|
public ulong homeRegion;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The coordinates inside the region of the home location
|
/// The coordinates inside the region of the home location
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLVector3 homeLocation;
|
public LLVector3 homeLocation;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Where the user will be looking when they rez.
|
/// Where the user will be looking when they rez.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLVector3 homeLookAt;
|
public LLVector3 homeLookAt;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A UNIX Timestamp (seconds since epoch) for the users creation
|
/// A UNIX Timestamp (seconds since epoch) for the users creation
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int created;
|
public int created;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A UNIX Timestamp for the users last login date / time
|
/// A UNIX Timestamp for the users last login date / time
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int lastLogin;
|
public int lastLogin;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A URI to the users inventory server, used for foreigners and large grids
|
/// A URI to the users inventory server, used for foreigners and large grids
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string userInventoryURI;
|
public string userInventoryURI;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A URI to the users asset server, used for foreigners and large grids.
|
/// A URI to the users asset server, used for foreigners and large grids.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string userAssetURI;
|
public string userAssetURI;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A uint mask containing the "I can do" fields of the users profile
|
/// A uint mask containing the "I can do" fields of the users profile
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public uint profileCanDoMask;
|
public uint profileCanDoMask;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A uint mask containing the "I want to do" part of the users profile
|
/// A uint mask containing the "I want to do" part of the users profile
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public uint profileWantDoMask; // Profile window "I want to" mask
|
public uint profileWantDoMask; // Profile window "I want to" mask
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The about text listed in a users profile.
|
/// The about text listed in a users profile.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string profileAboutText;
|
public string profileAboutText;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The first life about text listed in a users profile
|
/// The first life about text listed in a users profile
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string profileFirstText;
|
public string profileFirstText;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The profile image for an avatar stored on the asset server
|
/// The profile image for an avatar stored on the asset server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID profileImage;
|
public LLUUID profileImage;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The profile image for the users first life tab
|
/// The profile image for the users first life tab
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID profileFirstImage;
|
public LLUUID profileFirstImage;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The users last registered agent (filled in on the user server)
|
/// The users last registered agent (filled in on the user server)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public UserAgentData currentAgent;
|
public UserAgentData currentAgent;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Information about a users session
|
/// Information about a users session
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class UserAgentData
|
public class UserAgentData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The UUID of the users avatar (not the agent!)
|
/// The UUID of the users avatar (not the agent!)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID UUID;
|
public LLUUID UUID;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The IP address of the user
|
/// The IP address of the user
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string agentIP = String.Empty;
|
public string agentIP = String.Empty;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The port of the user
|
/// The port of the user
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public uint agentPort;
|
public uint agentPort;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Is the user online?
|
/// Is the user online?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool agentOnline;
|
public bool agentOnline;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The session ID for the user (also the agent ID)
|
/// The session ID for the user (also the agent ID)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID sessionID;
|
public LLUUID sessionID;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The "secure" session ID for the user
|
/// The "secure" session ID for the user
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>Not very secure. Dont rely on it for anything more than Linden Lab does.</remarks>
|
/// <remarks>Not very secure. Dont rely on it for anything more than Linden Lab does.</remarks>
|
||||||
public LLUUID secureSessionID;
|
public LLUUID secureSessionID;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The region the user logged into initially
|
/// The region the user logged into initially
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID regionID;
|
public LLUUID regionID;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A unix timestamp from when the user logged in
|
/// A unix timestamp from when the user logged in
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int loginTime;
|
public int loginTime;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// When this agent expired and logged out, 0 if still online
|
/// When this agent expired and logged out, 0 if still online
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int logoutTime;
|
public int logoutTime;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Current region the user is logged into
|
/// Current region the user is logged into
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLUUID currentRegion;
|
public LLUUID currentRegion;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Region handle of the current region the user is in
|
/// Region handle of the current region the user is in
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ulong currentHandle;
|
public ulong currentHandle;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The position of the user within the region
|
/// The position of the user within the region
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLVector3 currentPos;
|
public LLVector3 currentPos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,265 +1,265 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using libsecondlife.Packets;
|
using libsecondlife.Packets;
|
||||||
using OpenSim.Framework.Types;
|
using OpenSim.Framework.Types;
|
||||||
using OpenSim.Framework.Utilities;
|
using OpenSim.Framework.Utilities;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Inventory
|
namespace OpenSim.Framework.Inventory
|
||||||
{
|
{
|
||||||
public class AgentInventory
|
public class AgentInventory
|
||||||
{
|
{
|
||||||
//Holds the local copy of Inventory info for a agent
|
//Holds the local copy of Inventory info for a agent
|
||||||
public Dictionary<LLUUID, InventoryFolder> InventoryFolders;
|
public Dictionary<LLUUID, InventoryFolder> InventoryFolders;
|
||||||
public Dictionary<LLUUID, InventoryItem> InventoryItems;
|
public Dictionary<LLUUID, InventoryItem> InventoryItems;
|
||||||
public InventoryFolder InventoryRoot;
|
public InventoryFolder InventoryRoot;
|
||||||
public int LastCached; //maybe used by opensim app, time this was last stored/compared to user server
|
public int LastCached; //maybe used by opensim app, time this was last stored/compared to user server
|
||||||
public LLUUID AgentID;
|
public LLUUID AgentID;
|
||||||
public AvatarWearable[] Wearables;
|
public AvatarWearable[] Wearables;
|
||||||
|
|
||||||
public AgentInventory()
|
public AgentInventory()
|
||||||
{
|
{
|
||||||
InventoryFolders = new Dictionary<LLUUID, InventoryFolder>();
|
InventoryFolders = new Dictionary<LLUUID, InventoryFolder>();
|
||||||
InventoryItems = new Dictionary<LLUUID, InventoryItem>();
|
InventoryItems = new Dictionary<LLUUID, InventoryItem>();
|
||||||
this.Initialise();
|
this.Initialise();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Initialise()
|
public virtual void Initialise()
|
||||||
{
|
{
|
||||||
Wearables = new AvatarWearable[13]; //should be 12 of these
|
Wearables = new AvatarWearable[13]; //should be 12 of these
|
||||||
for (int i = 0; i < 13; i++)
|
for (int i = 0; i < 13; i++)
|
||||||
{
|
{
|
||||||
Wearables[i] = new AvatarWearable();
|
Wearables[i] = new AvatarWearable();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CreateNewFolder(LLUUID folderID, ushort type)
|
public bool CreateNewFolder(LLUUID folderID, ushort type)
|
||||||
{
|
{
|
||||||
InventoryFolder Folder = new InventoryFolder();
|
InventoryFolder Folder = new InventoryFolder();
|
||||||
Folder.FolderID = folderID;
|
Folder.FolderID = folderID;
|
||||||
Folder.OwnerID = this.AgentID;
|
Folder.OwnerID = this.AgentID;
|
||||||
Folder.DefaultType = type;
|
Folder.DefaultType = type;
|
||||||
this.InventoryFolders.Add(Folder.FolderID, Folder);
|
this.InventoryFolders.Add(Folder.FolderID, Folder);
|
||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CreateRootFolder(LLUUID newAgentID, bool createTextures)
|
public void CreateRootFolder(LLUUID newAgentID, bool createTextures)
|
||||||
{
|
{
|
||||||
this.AgentID = newAgentID;
|
this.AgentID = newAgentID;
|
||||||
InventoryRoot = new InventoryFolder();
|
InventoryRoot = new InventoryFolder();
|
||||||
InventoryRoot.FolderID = LLUUID.Random();
|
InventoryRoot.FolderID = LLUUID.Random();
|
||||||
InventoryRoot.ParentID = new LLUUID();
|
InventoryRoot.ParentID = new LLUUID();
|
||||||
InventoryRoot.Version = 1;
|
InventoryRoot.Version = 1;
|
||||||
InventoryRoot.DefaultType = 8;
|
InventoryRoot.DefaultType = 8;
|
||||||
InventoryRoot.OwnerID = this.AgentID;
|
InventoryRoot.OwnerID = this.AgentID;
|
||||||
InventoryRoot.FolderName = "My Inventory";
|
InventoryRoot.FolderName = "My Inventory";
|
||||||
InventoryFolders.Add(InventoryRoot.FolderID, InventoryRoot);
|
InventoryFolders.Add(InventoryRoot.FolderID, InventoryRoot);
|
||||||
InventoryRoot.OwnerID = this.AgentID;
|
InventoryRoot.OwnerID = this.AgentID;
|
||||||
if (createTextures)
|
if (createTextures)
|
||||||
{
|
{
|
||||||
this.CreateNewFolder(LLUUID.Random(), 0, "Textures", InventoryRoot.FolderID);
|
this.CreateNewFolder(LLUUID.Random(), 0, "Textures", InventoryRoot.FolderID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CreateNewFolder(LLUUID folderID, ushort type, string folderName)
|
public bool CreateNewFolder(LLUUID folderID, ushort type, string folderName)
|
||||||
{
|
{
|
||||||
InventoryFolder Folder = new InventoryFolder();
|
InventoryFolder Folder = new InventoryFolder();
|
||||||
Folder.FolderID = folderID;
|
Folder.FolderID = folderID;
|
||||||
Folder.OwnerID = this.AgentID;
|
Folder.OwnerID = this.AgentID;
|
||||||
Folder.DefaultType = type;
|
Folder.DefaultType = type;
|
||||||
Folder.FolderName = folderName;
|
Folder.FolderName = folderName;
|
||||||
this.InventoryFolders.Add(Folder.FolderID, Folder);
|
this.InventoryFolders.Add(Folder.FolderID, Folder);
|
||||||
|
|
||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CreateNewFolder(LLUUID folderID, ushort type, string folderName, LLUUID parent)
|
public bool CreateNewFolder(LLUUID folderID, ushort type, string folderName, LLUUID parent)
|
||||||
{
|
{
|
||||||
if (!this.InventoryFolders.ContainsKey(folderID))
|
if (!this.InventoryFolders.ContainsKey(folderID))
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("creating new folder called " + folderName + " in agents inventory");
|
System.Console.WriteLine("creating new folder called " + folderName + " in agents inventory");
|
||||||
InventoryFolder Folder = new InventoryFolder();
|
InventoryFolder Folder = new InventoryFolder();
|
||||||
Folder.FolderID = folderID;
|
Folder.FolderID = folderID;
|
||||||
Folder.OwnerID = this.AgentID;
|
Folder.OwnerID = this.AgentID;
|
||||||
Folder.DefaultType = type;
|
Folder.DefaultType = type;
|
||||||
Folder.FolderName = folderName;
|
Folder.FolderName = folderName;
|
||||||
Folder.ParentID = parent;
|
Folder.ParentID = parent;
|
||||||
this.InventoryFolders.Add(Folder.FolderID, Folder);
|
this.InventoryFolders.Add(Folder.FolderID, Folder);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasFolder(LLUUID folderID)
|
public bool HasFolder(LLUUID folderID)
|
||||||
{
|
{
|
||||||
if (this.InventoryFolders.ContainsKey(folderID))
|
if (this.InventoryFolders.ContainsKey(folderID))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LLUUID GetFolderID(string folderName)
|
public LLUUID GetFolderID(string folderName)
|
||||||
{
|
{
|
||||||
foreach (InventoryFolder inv in this.InventoryFolders.Values)
|
foreach (InventoryFolder inv in this.InventoryFolders.Values)
|
||||||
{
|
{
|
||||||
if (inv.FolderName == folderName)
|
if (inv.FolderName == folderName)
|
||||||
{
|
{
|
||||||
return inv.FolderID;
|
return inv.FolderID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return LLUUID.Zero;
|
return LLUUID.Zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool UpdateItemAsset(LLUUID itemID, AssetBase asset)
|
public bool UpdateItemAsset(LLUUID itemID, AssetBase asset)
|
||||||
{
|
{
|
||||||
if(this.InventoryItems.ContainsKey(itemID))
|
if(this.InventoryItems.ContainsKey(itemID))
|
||||||
{
|
{
|
||||||
InventoryItem Item = this.InventoryItems[itemID];
|
InventoryItem Item = this.InventoryItems[itemID];
|
||||||
Item.AssetID = asset.FullID;
|
Item.AssetID = asset.FullID;
|
||||||
System.Console.WriteLine("updated inventory item " + itemID.ToStringHyphenated() + " so it now is set to asset " + asset.FullID.ToStringHyphenated());
|
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
|
//TODO need to update the rest of the info
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool UpdateItemDetails(LLUUID itemID, UpdateInventoryItemPacket.InventoryDataBlock packet)
|
public bool UpdateItemDetails(LLUUID itemID, UpdateInventoryItemPacket.InventoryDataBlock packet)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("updating inventory item details");
|
System.Console.WriteLine("updating inventory item details");
|
||||||
if (this.InventoryItems.ContainsKey(itemID))
|
if (this.InventoryItems.ContainsKey(itemID))
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("changing name to "+ Util.FieldToString(packet.Name));
|
System.Console.WriteLine("changing name to "+ Util.FieldToString(packet.Name));
|
||||||
InventoryItem Item = this.InventoryItems[itemID];
|
InventoryItem Item = this.InventoryItems[itemID];
|
||||||
Item.Name = Util.FieldToString(packet.Name);
|
Item.Name = Util.FieldToString(packet.Name);
|
||||||
System.Console.WriteLine("updated inventory item " + itemID.ToStringHyphenated());
|
System.Console.WriteLine("updated inventory item " + itemID.ToStringHyphenated());
|
||||||
//TODO need to update the rest of the info
|
//TODO need to update the rest of the info
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LLUUID AddToInventory(LLUUID folderID, AssetBase asset)
|
public LLUUID AddToInventory(LLUUID folderID, AssetBase asset)
|
||||||
{
|
{
|
||||||
if (this.InventoryFolders.ContainsKey(folderID))
|
if (this.InventoryFolders.ContainsKey(folderID))
|
||||||
{
|
{
|
||||||
LLUUID NewItemID = LLUUID.Random();
|
LLUUID NewItemID = LLUUID.Random();
|
||||||
|
|
||||||
InventoryItem Item = new InventoryItem();
|
InventoryItem Item = new InventoryItem();
|
||||||
Item.FolderID = folderID;
|
Item.FolderID = folderID;
|
||||||
Item.OwnerID = AgentID;
|
Item.OwnerID = AgentID;
|
||||||
Item.AssetID = asset.FullID;
|
Item.AssetID = asset.FullID;
|
||||||
Item.ItemID = NewItemID;
|
Item.ItemID = NewItemID;
|
||||||
Item.Type = asset.Type;
|
Item.Type = asset.Type;
|
||||||
Item.Name = asset.Name;
|
Item.Name = asset.Name;
|
||||||
Item.Description = asset.Description;
|
Item.Description = asset.Description;
|
||||||
Item.InvType = asset.InvType;
|
Item.InvType = asset.InvType;
|
||||||
this.InventoryItems.Add(Item.ItemID, Item);
|
this.InventoryItems.Add(Item.ItemID, Item);
|
||||||
InventoryFolder Folder = InventoryFolders[Item.FolderID];
|
InventoryFolder Folder = InventoryFolders[Item.FolderID];
|
||||||
Folder.Items.Add(Item);
|
Folder.Items.Add(Item);
|
||||||
return (Item.ItemID);
|
return (Item.ItemID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return (null);
|
return (null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool DeleteFromInventory(LLUUID itemID)
|
public bool DeleteFromInventory(LLUUID itemID)
|
||||||
{
|
{
|
||||||
bool res = false;
|
bool res = false;
|
||||||
if (this.InventoryItems.ContainsKey(itemID))
|
if (this.InventoryItems.ContainsKey(itemID))
|
||||||
{
|
{
|
||||||
InventoryItem item = this.InventoryItems[itemID];
|
InventoryItem item = this.InventoryItems[itemID];
|
||||||
this.InventoryItems.Remove(itemID);
|
this.InventoryItems.Remove(itemID);
|
||||||
foreach (InventoryFolder fold in InventoryFolders.Values)
|
foreach (InventoryFolder fold in InventoryFolders.Values)
|
||||||
{
|
{
|
||||||
if (fold.Items.Contains(item))
|
if (fold.Items.Contains(item))
|
||||||
{
|
{
|
||||||
fold.Items.Remove(item);
|
fold.Items.Remove(item);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
res = true;
|
res = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class InventoryFolder
|
public class InventoryFolder
|
||||||
{
|
{
|
||||||
public List<InventoryItem> Items;
|
public List<InventoryItem> Items;
|
||||||
//public List<InventoryFolder> Subfolders;
|
//public List<InventoryFolder> Subfolders;
|
||||||
public LLUUID FolderID;
|
public LLUUID FolderID;
|
||||||
public LLUUID OwnerID;
|
public LLUUID OwnerID;
|
||||||
public LLUUID ParentID = LLUUID.Zero;
|
public LLUUID ParentID = LLUUID.Zero;
|
||||||
public string FolderName;
|
public string FolderName;
|
||||||
public ushort DefaultType;
|
public ushort DefaultType;
|
||||||
public ushort Version;
|
public ushort Version;
|
||||||
|
|
||||||
public InventoryFolder()
|
public InventoryFolder()
|
||||||
{
|
{
|
||||||
Items = new List<InventoryItem>();
|
Items = new List<InventoryItem>();
|
||||||
//Subfolders = new List<InventoryFolder>();
|
//Subfolders = new List<InventoryFolder>();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class InventoryItem
|
public class InventoryItem
|
||||||
{
|
{
|
||||||
public LLUUID FolderID;
|
public LLUUID FolderID;
|
||||||
public LLUUID OwnerID;
|
public LLUUID OwnerID;
|
||||||
public LLUUID ItemID;
|
public LLUUID ItemID;
|
||||||
public LLUUID AssetID;
|
public LLUUID AssetID;
|
||||||
public LLUUID CreatorID;
|
public LLUUID CreatorID;
|
||||||
public sbyte InvType;
|
public sbyte InvType;
|
||||||
public sbyte Type;
|
public sbyte Type;
|
||||||
public string Name ="";
|
public string Name ="";
|
||||||
public string Description;
|
public string Description;
|
||||||
|
|
||||||
public InventoryItem()
|
public InventoryItem()
|
||||||
{
|
{
|
||||||
this.CreatorID = LLUUID.Zero;
|
this.CreatorID = LLUUID.Zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ExportString()
|
public string ExportString()
|
||||||
{
|
{
|
||||||
string typ = "notecard";
|
string typ = "notecard";
|
||||||
string result = "";
|
string result = "";
|
||||||
result += "\tinv_object\t0\n\t{\n";
|
result += "\tinv_object\t0\n\t{\n";
|
||||||
result += "\t\tobj_id\t%s\n";
|
result += "\t\tobj_id\t%s\n";
|
||||||
result += "\t\tparent_id\t"+ ItemID.ToString() +"\n";
|
result += "\t\tparent_id\t"+ ItemID.ToString() +"\n";
|
||||||
result += "\t\ttype\t"+ typ +"\n";
|
result += "\t\ttype\t"+ typ +"\n";
|
||||||
result += "\t\tname\t" + Name+"|\n";
|
result += "\t\tname\t" + Name+"|\n";
|
||||||
result += "\t}\n";
|
result += "\t}\n";
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,130 +1,130 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Interfaces;
|
using OpenSim.Framework.Interfaces;
|
||||||
using OpenSim.Framework.Types;
|
using OpenSim.Framework.Types;
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
public class AuthenticateSessionsBase
|
public class AuthenticateSessionsBase
|
||||||
{
|
{
|
||||||
public Dictionary<uint, AgentCircuitData> AgentCircuits = new Dictionary<uint, AgentCircuitData>();
|
public Dictionary<uint, AgentCircuitData> AgentCircuits = new Dictionary<uint, AgentCircuitData>();
|
||||||
|
|
||||||
public AuthenticateSessionsBase()
|
public AuthenticateSessionsBase()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitcode)
|
public virtual AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitcode)
|
||||||
{
|
{
|
||||||
AgentCircuitData validcircuit = null;
|
AgentCircuitData validcircuit = null;
|
||||||
if (this.AgentCircuits.ContainsKey(circuitcode))
|
if (this.AgentCircuits.ContainsKey(circuitcode))
|
||||||
{
|
{
|
||||||
validcircuit = this.AgentCircuits[circuitcode];
|
validcircuit = this.AgentCircuits[circuitcode];
|
||||||
}
|
}
|
||||||
AuthenticateResponse user = new AuthenticateResponse();
|
AuthenticateResponse user = new AuthenticateResponse();
|
||||||
if (validcircuit == null)
|
if (validcircuit == null)
|
||||||
{
|
{
|
||||||
//don't have this circuit code in our list
|
//don't have this circuit code in our list
|
||||||
user.Authorised = false;
|
user.Authorised = false;
|
||||||
return (user);
|
return (user);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sessionID == validcircuit.SessionID) && (agentID == validcircuit.AgentID))
|
if ((sessionID == validcircuit.SessionID) && (agentID == validcircuit.AgentID))
|
||||||
{
|
{
|
||||||
user.Authorised = true;
|
user.Authorised = true;
|
||||||
user.LoginInfo = new Login();
|
user.LoginInfo = new Login();
|
||||||
user.LoginInfo.Agent = agentID;
|
user.LoginInfo.Agent = agentID;
|
||||||
user.LoginInfo.Session = sessionID;
|
user.LoginInfo.Session = sessionID;
|
||||||
user.LoginInfo.SecureSession = validcircuit.SecureSessionID;
|
user.LoginInfo.SecureSession = validcircuit.SecureSessionID;
|
||||||
user.LoginInfo.First = validcircuit.firstname;
|
user.LoginInfo.First = validcircuit.firstname;
|
||||||
user.LoginInfo.Last = validcircuit.lastname;
|
user.LoginInfo.Last = validcircuit.lastname;
|
||||||
user.LoginInfo.InventoryFolder = validcircuit.InventoryFolder;
|
user.LoginInfo.InventoryFolder = validcircuit.InventoryFolder;
|
||||||
user.LoginInfo.BaseFolder = validcircuit.BaseFolder;
|
user.LoginInfo.BaseFolder = validcircuit.BaseFolder;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Invalid
|
// Invalid
|
||||||
user.Authorised = false;
|
user.Authorised = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (user);
|
return (user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void AddNewCircuit(uint circuitCode, AgentCircuitData agentData)
|
public virtual void AddNewCircuit(uint circuitCode, AgentCircuitData agentData)
|
||||||
{
|
{
|
||||||
if (this.AgentCircuits.ContainsKey(circuitCode))
|
if (this.AgentCircuits.ContainsKey(circuitCode))
|
||||||
{
|
{
|
||||||
this.AgentCircuits[circuitCode] = agentData;
|
this.AgentCircuits[circuitCode] = agentData;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.AgentCircuits.Add(circuitCode, agentData);
|
this.AgentCircuits.Add(circuitCode, agentData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public LLVector3 GetPosition(uint circuitCode)
|
public LLVector3 GetPosition(uint circuitCode)
|
||||||
{
|
{
|
||||||
LLVector3 vec = new LLVector3();
|
LLVector3 vec = new LLVector3();
|
||||||
if (this.AgentCircuits.ContainsKey(circuitCode))
|
if (this.AgentCircuits.ContainsKey(circuitCode))
|
||||||
{
|
{
|
||||||
vec = this.AgentCircuits[circuitCode].startpos;
|
vec = this.AgentCircuits[circuitCode].startpos;
|
||||||
}
|
}
|
||||||
return vec;
|
return vec;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateAgentData(AgentCircuitData agentData)
|
public void UpdateAgentData(AgentCircuitData agentData)
|
||||||
{
|
{
|
||||||
if (this.AgentCircuits.ContainsKey((uint)agentData.circuitcode))
|
if (this.AgentCircuits.ContainsKey((uint)agentData.circuitcode))
|
||||||
{
|
{
|
||||||
this.AgentCircuits[(uint)agentData.circuitcode].firstname = agentData.firstname;
|
this.AgentCircuits[(uint)agentData.circuitcode].firstname = agentData.firstname;
|
||||||
this.AgentCircuits[(uint)agentData.circuitcode].lastname = agentData.lastname;
|
this.AgentCircuits[(uint)agentData.circuitcode].lastname = agentData.lastname;
|
||||||
this.AgentCircuits[(uint)agentData.circuitcode].startpos = agentData.startpos;
|
this.AgentCircuits[(uint)agentData.circuitcode].startpos = agentData.startpos;
|
||||||
// Console.WriteLine("update user start pos is " + agentData.startpos.X + " , " + agentData.startpos.Y + " , " + agentData.startpos.Z);
|
// Console.WriteLine("update user start pos is " + agentData.startpos.X + " , " + agentData.startpos.Y + " , " + agentData.startpos.Z);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateAgentChildStatus(uint circuitcode, bool childstatus)
|
public void UpdateAgentChildStatus(uint circuitcode, bool childstatus)
|
||||||
{
|
{
|
||||||
if (this.AgentCircuits.ContainsKey(circuitcode))
|
if (this.AgentCircuits.ContainsKey(circuitcode))
|
||||||
{
|
{
|
||||||
this.AgentCircuits[circuitcode].child = childstatus;
|
this.AgentCircuits[circuitcode].child = childstatus;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool GetAgentChildStatus(uint circuitcode)
|
public bool GetAgentChildStatus(uint circuitcode)
|
||||||
{
|
{
|
||||||
if (this.AgentCircuits.ContainsKey(circuitcode))
|
if (this.AgentCircuits.ContainsKey(circuitcode))
|
||||||
{
|
{
|
||||||
return this.AgentCircuits[circuitcode].child;
|
return this.AgentCircuits[circuitcode].child;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,58 +1,58 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Utilities
|
namespace OpenSim.Framework.Utilities
|
||||||
{
|
{
|
||||||
public class BlockingQueue<T>
|
public class BlockingQueue<T>
|
||||||
{
|
{
|
||||||
private Queue<T> _queue = new Queue<T>();
|
private Queue<T> _queue = new Queue<T>();
|
||||||
private object _queueSync = new object();
|
private object _queueSync = new object();
|
||||||
|
|
||||||
public void Enqueue(T value)
|
public void Enqueue(T value)
|
||||||
{
|
{
|
||||||
lock (_queueSync)
|
lock (_queueSync)
|
||||||
{
|
{
|
||||||
_queue.Enqueue(value);
|
_queue.Enqueue(value);
|
||||||
Monitor.Pulse(_queueSync);
|
Monitor.Pulse(_queueSync);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public T Dequeue()
|
public T Dequeue()
|
||||||
{
|
{
|
||||||
lock (_queueSync)
|
lock (_queueSync)
|
||||||
{
|
{
|
||||||
if (_queue.Count < 1)
|
if (_queue.Count < 1)
|
||||||
Monitor.Wait(_queueSync);
|
Monitor.Wait(_queueSync);
|
||||||
|
|
||||||
return _queue.Dequeue();
|
return _queue.Dequeue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,36 +1,36 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using OpenSim.Framework.Interfaces;
|
using OpenSim.Framework.Interfaces;
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
public delegate void ForEachClientDelegate( IClientAPI client );
|
public delegate void ForEachClientDelegate( IClientAPI client );
|
||||||
public class ClientManager
|
public class ClientManager
|
||||||
{
|
{
|
||||||
private Dictionary<uint, IClientAPI> m_clients;
|
private Dictionary<uint, IClientAPI> m_clients;
|
||||||
|
|
||||||
public void ForEachClient(ForEachClientDelegate whatToDo)
|
public void ForEachClient(ForEachClientDelegate whatToDo)
|
||||||
{
|
{
|
||||||
foreach (IClientAPI client in m_clients.Values)
|
foreach (IClientAPI client in m_clients.Values)
|
||||||
{
|
{
|
||||||
whatToDo(client);
|
whatToDo(client);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ClientManager()
|
public ClientManager()
|
||||||
{
|
{
|
||||||
m_clients = new Dictionary<uint, IClientAPI>();
|
m_clients = new Dictionary<uint, IClientAPI>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Remove(uint id)
|
public void Remove(uint id)
|
||||||
{
|
{
|
||||||
m_clients.Remove(id);
|
m_clients.Remove(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Add(uint id, IClientAPI client )
|
public void Add(uint id, IClientAPI client )
|
||||||
{
|
{
|
||||||
m_clients.Add( id, client );
|
m_clients.Add( id, client );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,46 +1,46 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Interfaces;
|
using OpenSim.Framework.Interfaces;
|
||||||
using OpenSim.Framework.Types;
|
using OpenSim.Framework.Types;
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
public delegate void ExpectUserDelegate(ulong regionHandle, AgentCircuitData agent);
|
public delegate void ExpectUserDelegate(ulong regionHandle, AgentCircuitData agent);
|
||||||
public delegate void UpdateNeighbours(List<RegionInfo> neighbours);
|
public delegate void UpdateNeighbours(List<RegionInfo> neighbours);
|
||||||
public delegate void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position);
|
public delegate void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position);
|
||||||
|
|
||||||
public interface IRegionCommsListener
|
public interface IRegionCommsListener
|
||||||
{
|
{
|
||||||
event ExpectUserDelegate OnExpectUser;
|
event ExpectUserDelegate OnExpectUser;
|
||||||
event GenericCall2 OnExpectChildAgent;
|
event GenericCall2 OnExpectChildAgent;
|
||||||
event AgentCrossing OnAvatarCrossingIntoRegion;
|
event AgentCrossing OnAvatarCrossingIntoRegion;
|
||||||
event UpdateNeighbours OnNeighboursUpdate;
|
event UpdateNeighbours OnNeighboursUpdate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,43 +1,43 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using OpenSim.Framework.Types;
|
using OpenSim.Framework.Types;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Interfaces
|
namespace OpenSim.Framework.Interfaces
|
||||||
{
|
{
|
||||||
public class AuthenticateResponse
|
public class AuthenticateResponse
|
||||||
{
|
{
|
||||||
public bool Authorised;
|
public bool Authorised;
|
||||||
public Login LoginInfo;
|
public Login LoginInfo;
|
||||||
|
|
||||||
public AuthenticateResponse()
|
public AuthenticateResponse()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,38 +1,38 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
namespace OpenSim.Framework.Interfaces
|
namespace OpenSim.Framework.Interfaces
|
||||||
{
|
{
|
||||||
public interface IGenericConfig
|
public interface IGenericConfig
|
||||||
{
|
{
|
||||||
void LoadData();
|
void LoadData();
|
||||||
string GetAttribute(string attributeName);
|
string GetAttribute(string attributeName);
|
||||||
bool SetAttribute(string attributeName, string attributeValue);
|
bool SetAttribute(string attributeName, string attributeValue);
|
||||||
void Commit();
|
void Commit();
|
||||||
void Close();
|
void Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,59 +1,59 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//using OpenSim.world;
|
//using OpenSim.world;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Interfaces
|
namespace OpenSim.Framework.Interfaces
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
|
|
||||||
public abstract class GridConfig
|
public abstract class GridConfig
|
||||||
{
|
{
|
||||||
public string GridOwner;
|
public string GridOwner;
|
||||||
public string DefaultStartupMsg;
|
public string DefaultStartupMsg;
|
||||||
public string DefaultAssetServer;
|
public string DefaultAssetServer;
|
||||||
public string AssetSendKey;
|
public string AssetSendKey;
|
||||||
public string AssetRecvKey;
|
public string AssetRecvKey;
|
||||||
public string DefaultUserServer;
|
public string DefaultUserServer;
|
||||||
public string UserSendKey;
|
public string UserSendKey;
|
||||||
public string UserRecvKey;
|
public string UserRecvKey;
|
||||||
public string SimSendKey;
|
public string SimSendKey;
|
||||||
public string SimRecvKey;
|
public string SimRecvKey;
|
||||||
|
|
||||||
|
|
||||||
public abstract void InitConfig();
|
public abstract void InitConfig();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface IGridConfig
|
public interface IGridConfig
|
||||||
{
|
{
|
||||||
GridConfig GetConfigObject();
|
GridConfig GetConfigObject();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,53 +1,53 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//using OpenSim.world;
|
//using OpenSim.world;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Interfaces
|
namespace OpenSim.Framework.Interfaces
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
|
|
||||||
public abstract class UserConfig
|
public abstract class UserConfig
|
||||||
{
|
{
|
||||||
public string DefaultStartupMsg;
|
public string DefaultStartupMsg;
|
||||||
public string GridServerURL;
|
public string GridServerURL;
|
||||||
public string GridSendKey;
|
public string GridSendKey;
|
||||||
public string GridRecvKey;
|
public string GridRecvKey;
|
||||||
|
|
||||||
|
|
||||||
public abstract void InitConfig();
|
public abstract void InitConfig();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface IUserConfig
|
public interface IUserConfig
|
||||||
{
|
{
|
||||||
UserConfig GetConfigObject();
|
UserConfig GetConfigObject();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,64 +1,64 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Types;
|
using OpenSim.Framework.Types;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Interfaces
|
namespace OpenSim.Framework.Interfaces
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Description of IAssetServer.
|
/// Description of IAssetServer.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public interface IAssetServer
|
public interface IAssetServer
|
||||||
{
|
{
|
||||||
void SetReceiver(IAssetReceiver receiver);
|
void SetReceiver(IAssetReceiver receiver);
|
||||||
void RequestAsset(LLUUID assetID, bool isTexture);
|
void RequestAsset(LLUUID assetID, bool isTexture);
|
||||||
void UpdateAsset(AssetBase asset);
|
void UpdateAsset(AssetBase asset);
|
||||||
void UploadNewAsset(AssetBase asset);
|
void UploadNewAsset(AssetBase asset);
|
||||||
void SetServerInfo(string ServerUrl, string ServerKey);
|
void SetServerInfo(string ServerUrl, string ServerKey);
|
||||||
void Close();
|
void Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
// could change to delegate?
|
// could change to delegate?
|
||||||
public interface IAssetReceiver
|
public interface IAssetReceiver
|
||||||
{
|
{
|
||||||
void AssetReceived(AssetBase asset, bool IsTexture);
|
void AssetReceived(AssetBase asset, bool IsTexture);
|
||||||
void AssetNotFound(AssetBase asset);
|
void AssetNotFound(AssetBase asset);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface IAssetPlugin
|
public interface IAssetPlugin
|
||||||
{
|
{
|
||||||
IAssetServer GetAssetServer();
|
IAssetServer GetAssetServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct ARequest
|
public struct ARequest
|
||||||
{
|
{
|
||||||
public LLUUID AssetID;
|
public LLUUID AssetID;
|
||||||
public bool IsTexture;
|
public bool IsTexture;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,195 +1,195 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using libsecondlife.Packets;
|
using libsecondlife.Packets;
|
||||||
using OpenSim.Framework.Types;
|
using OpenSim.Framework.Types;
|
||||||
using OpenSim.Framework.Data;
|
using OpenSim.Framework.Data;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Interfaces
|
namespace OpenSim.Framework.Interfaces
|
||||||
{
|
{
|
||||||
public delegate void ChatFromViewer(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
|
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 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 RezObject(AssetBase primAsset, LLVector3 pos);
|
||||||
public delegate void ModifyTerrain(float height, float seconds, byte size, byte action, float north, float west);
|
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 SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam);
|
||||||
public delegate void StartAnim(LLUUID animID, int seq);
|
public delegate void StartAnim(LLUUID animID, int seq);
|
||||||
public delegate void LinkObjects(uint parent, List<uint> children);
|
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 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 TeleportLocationRequest(IClientAPI remoteClient, ulong regionHandle, LLVector3 position, LLVector3 lookAt, uint flags);
|
||||||
|
|
||||||
public delegate void GenericCall(IClientAPI remoteClient);
|
public delegate void GenericCall(IClientAPI remoteClient);
|
||||||
public delegate void GenericCall2();
|
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 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 GenericCall4(Packet packet, IClientAPI remoteClient);
|
||||||
public delegate void GenericCall5(IClientAPI remoteClient, bool status);
|
public delegate void GenericCall5(IClientAPI remoteClient, bool status);
|
||||||
public delegate void GenericCall6(LLUUID uid);
|
public delegate void GenericCall6(LLUUID uid);
|
||||||
public delegate void GenericCall7(uint localID, string message);
|
public delegate void GenericCall7(uint localID, string message);
|
||||||
|
|
||||||
public delegate void UpdateShape(uint localID, ObjectShapePacket.ObjectDataBlock shapeBlock);
|
public delegate void UpdateShape(uint localID, ObjectShapePacket.ObjectDataBlock shapeBlock);
|
||||||
public delegate void ObjectSelect(uint localID, IClientAPI remoteClient);
|
public delegate void ObjectSelect(uint localID, IClientAPI remoteClient);
|
||||||
public delegate void ObjectDeselect(uint localID, IClientAPI remoteClient);
|
public delegate void ObjectDeselect(uint localID, IClientAPI remoteClient);
|
||||||
public delegate void UpdatePrimFlags(uint localID, Packet packet, 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 UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient);
|
||||||
public delegate void UpdateVector(uint localID, LLVector3 pos, 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 UpdatePrimRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient);
|
||||||
public delegate void UpdatePrimSingleRotation(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 UpdatePrimGroupRotation(uint localID,LLVector3 pos, LLQuaternion rot, IClientAPI remoteClient);
|
||||||
public delegate void ObjectDuplicate(uint localID, LLVector3 offset, uint dupeFlags);
|
public delegate void ObjectDuplicate(uint localID, LLVector3 offset, uint dupeFlags);
|
||||||
public delegate void StatusChange(bool status);
|
public delegate void StatusChange(bool status);
|
||||||
public delegate void NewAvatar(IClientAPI remoteClient, LLUUID agentID, 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 UpdateAgent(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation);
|
||||||
public delegate void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 grapPos, IClientAPI remoteClient);
|
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 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 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 ParcelJoinRequest(int west, int south, int east, int north, IClientAPI remote_client);
|
||||||
public delegate void ParcelPropertiesUpdateRequest(ParcelPropertiesUpdatePacket packet, IClientAPI remote_client);
|
public delegate void ParcelPropertiesUpdateRequest(ParcelPropertiesUpdatePacket packet, IClientAPI remote_client);
|
||||||
public delegate void ParcelSelectObjects(int parcel_local_id, int request_type, IClientAPI remote_client);
|
public delegate void ParcelSelectObjects(int parcel_local_id, int request_type, IClientAPI remote_client);
|
||||||
public delegate void ParcelObjectOwnerRequest(int local_id, IClientAPI remote_client);
|
public delegate void ParcelObjectOwnerRequest(int local_id, IClientAPI remote_client);
|
||||||
public delegate void EstateOwnerMessageRequest(EstateOwnerMessagePacket packet, IClientAPI remote_client);
|
public delegate void EstateOwnerMessageRequest(EstateOwnerMessagePacket packet, IClientAPI remote_client);
|
||||||
|
|
||||||
public delegate void UUIDNameRequest(LLUUID id, IClientAPI remote_client);
|
public delegate void UUIDNameRequest(LLUUID id, IClientAPI remote_client);
|
||||||
|
|
||||||
public delegate void AddNewPrim(LLUUID ownerID, LLVector3 pos, PrimitiveBaseShape shape);
|
public delegate void AddNewPrim(LLUUID ownerID, LLVector3 pos, PrimitiveBaseShape shape);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public interface IClientAPI
|
public interface IClientAPI
|
||||||
{
|
{
|
||||||
event ImprovedInstantMessage OnInstantMessage;
|
event ImprovedInstantMessage OnInstantMessage;
|
||||||
event ChatFromViewer OnChatFromViewer;
|
event ChatFromViewer OnChatFromViewer;
|
||||||
event RezObject OnRezObject;
|
event RezObject OnRezObject;
|
||||||
event ModifyTerrain OnModifyTerrain;
|
event ModifyTerrain OnModifyTerrain;
|
||||||
event SetAppearance OnSetAppearance;
|
event SetAppearance OnSetAppearance;
|
||||||
event StartAnim OnStartAnim;
|
event StartAnim OnStartAnim;
|
||||||
event LinkObjects OnLinkObjects;
|
event LinkObjects OnLinkObjects;
|
||||||
event RequestMapBlocks OnRequestMapBlocks;
|
event RequestMapBlocks OnRequestMapBlocks;
|
||||||
event TeleportLocationRequest OnTeleportLocationRequest;
|
event TeleportLocationRequest OnTeleportLocationRequest;
|
||||||
|
|
||||||
event GenericCall4 OnDeRezObject;
|
event GenericCall4 OnDeRezObject;
|
||||||
event GenericCall OnRegionHandShakeReply;
|
event GenericCall OnRegionHandShakeReply;
|
||||||
event GenericCall OnRequestWearables;
|
event GenericCall OnRequestWearables;
|
||||||
event GenericCall2 OnCompleteMovementToRegion;
|
event GenericCall2 OnCompleteMovementToRegion;
|
||||||
event UpdateAgent OnAgentUpdate;
|
event UpdateAgent OnAgentUpdate;
|
||||||
event GenericCall OnRequestAvatarsData;
|
event GenericCall OnRequestAvatarsData;
|
||||||
event AddNewPrim OnAddPrim;
|
event AddNewPrim OnAddPrim;
|
||||||
event ObjectDuplicate OnObjectDuplicate;
|
event ObjectDuplicate OnObjectDuplicate;
|
||||||
event UpdateVector OnGrapObject;
|
event UpdateVector OnGrapObject;
|
||||||
event ObjectSelect OnDeGrapObject;
|
event ObjectSelect OnDeGrapObject;
|
||||||
event MoveObject OnGrapUpdate;
|
event MoveObject OnGrapUpdate;
|
||||||
|
|
||||||
event UpdateShape OnUpdatePrimShape;
|
event UpdateShape OnUpdatePrimShape;
|
||||||
event ObjectSelect OnObjectSelect;
|
event ObjectSelect OnObjectSelect;
|
||||||
event ObjectDeselect OnObjectDeselect;
|
event ObjectDeselect OnObjectDeselect;
|
||||||
event GenericCall7 OnObjectDescription;
|
event GenericCall7 OnObjectDescription;
|
||||||
event GenericCall7 OnObjectName;
|
event GenericCall7 OnObjectName;
|
||||||
event UpdatePrimFlags OnUpdatePrimFlags;
|
event UpdatePrimFlags OnUpdatePrimFlags;
|
||||||
event UpdatePrimTexture OnUpdatePrimTexture;
|
event UpdatePrimTexture OnUpdatePrimTexture;
|
||||||
event UpdateVector OnUpdatePrimGroupPosition;
|
event UpdateVector OnUpdatePrimGroupPosition;
|
||||||
event UpdateVector OnUpdatePrimSinglePosition;
|
event UpdateVector OnUpdatePrimSinglePosition;
|
||||||
event UpdatePrimRotation OnUpdatePrimGroupRotation;
|
event UpdatePrimRotation OnUpdatePrimGroupRotation;
|
||||||
event UpdatePrimSingleRotation OnUpdatePrimSingleRotation;
|
event UpdatePrimSingleRotation OnUpdatePrimSingleRotation;
|
||||||
event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation;
|
event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation;
|
||||||
event UpdateVector OnUpdatePrimScale;
|
event UpdateVector OnUpdatePrimScale;
|
||||||
event StatusChange OnChildAgentStatus;
|
event StatusChange OnChildAgentStatus;
|
||||||
event GenericCall2 OnStopMovement;
|
event GenericCall2 OnStopMovement;
|
||||||
event NewAvatar OnNewAvatar;
|
event NewAvatar OnNewAvatar;
|
||||||
event GenericCall6 OnRemoveAvatar;
|
event GenericCall6 OnRemoveAvatar;
|
||||||
|
|
||||||
event UUIDNameRequest OnNameFromUUIDRequest;
|
event UUIDNameRequest OnNameFromUUIDRequest;
|
||||||
|
|
||||||
event ParcelPropertiesRequest OnParcelPropertiesRequest;
|
event ParcelPropertiesRequest OnParcelPropertiesRequest;
|
||||||
event ParcelDivideRequest OnParcelDivideRequest;
|
event ParcelDivideRequest OnParcelDivideRequest;
|
||||||
event ParcelJoinRequest OnParcelJoinRequest;
|
event ParcelJoinRequest OnParcelJoinRequest;
|
||||||
event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
|
event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
|
||||||
event ParcelSelectObjects OnParcelSelectObjects;
|
event ParcelSelectObjects OnParcelSelectObjects;
|
||||||
event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest;
|
event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest;
|
||||||
event EstateOwnerMessageRequest OnEstateOwnerMessage;
|
event EstateOwnerMessageRequest OnEstateOwnerMessage;
|
||||||
|
|
||||||
LLVector3 StartPos
|
LLVector3 StartPos
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
}
|
}
|
||||||
|
|
||||||
LLUUID AgentId
|
LLUUID AgentId
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
}
|
}
|
||||||
|
|
||||||
string FirstName
|
string FirstName
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
}
|
}
|
||||||
|
|
||||||
string LastName
|
string LastName
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OutPacket(Packet newPack);
|
void OutPacket(Packet newPack);
|
||||||
void SendWearables(AvatarWearable[] wearables);
|
void SendWearables(AvatarWearable[] wearables);
|
||||||
void SendStartPingCheck(byte seq);
|
void SendStartPingCheck(byte seq);
|
||||||
void SendKillObject(ulong regionHandle, uint avatarLocalID);
|
void SendKillObject(ulong regionHandle, uint avatarLocalID);
|
||||||
void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId);
|
void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId);
|
||||||
void SendRegionHandshake(RegionInfo regionInfo);
|
void SendRegionHandshake(RegionInfo regionInfo);
|
||||||
void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
|
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 SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
|
||||||
void SendInstantMessage(string message, LLUUID target, string fromName);
|
void SendInstantMessage(string message, LLUUID target, string fromName);
|
||||||
void SendLayerData(float[] map);
|
void SendLayerData(float[] map);
|
||||||
void SendLayerData(int px, int py, float[] map);
|
void SendLayerData(int px, int py, float[] map);
|
||||||
void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look);
|
void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look);
|
||||||
void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint );
|
void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint );
|
||||||
AgentCircuitData RequestClientInfo();
|
AgentCircuitData RequestClientInfo();
|
||||||
void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint newRegionExternalEndPoint );
|
void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint newRegionExternalEndPoint );
|
||||||
void SendMapBlock(List<MapBlockData> mapBlocks);
|
void SendMapBlock(List<MapBlockData> mapBlocks);
|
||||||
void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags);
|
void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags);
|
||||||
void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags);
|
void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags);
|
||||||
void SendTeleportCancel();
|
void SendTeleportCancel();
|
||||||
void SendTeleportLocationStart();
|
void SendTeleportLocationStart();
|
||||||
void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance);
|
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 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 SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity);
|
||||||
|
|
||||||
void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint);
|
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, 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, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags);
|
||||||
void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLQuaternion rotation, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID);
|
void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLQuaternion rotation, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID);
|
||||||
void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID);
|
void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID);
|
||||||
void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation);
|
void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation);
|
||||||
|
|
||||||
void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items);
|
void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items);
|
||||||
void SendInventoryItemDetails(LLUUID ownerID, LLUUID folderID, InventoryItemBase item);
|
void SendInventoryItemDetails(LLUUID ownerID, LLUUID folderID, InventoryItemBase item);
|
||||||
void SendNameReply(LLUUID profileId, string firstname, string lastname);
|
void SendNameReply(LLUUID profileId, string firstname, string lastname);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,71 +1,71 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Types;
|
using OpenSim.Framework.Types;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Interfaces
|
namespace OpenSim.Framework.Interfaces
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ILocalStorage. Really hacked together right now needs cleaning up
|
/// ILocalStorage. Really hacked together right now needs cleaning up
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[System.Obsolete("Redundant, use IRegionDataStore instead")]
|
[System.Obsolete("Redundant, use IRegionDataStore instead")]
|
||||||
public interface ILocalStorage
|
public interface ILocalStorage
|
||||||
{
|
{
|
||||||
void Initialise(string datastore);
|
void Initialise(string datastore);
|
||||||
|
|
||||||
void StorePrim(PrimData prim);
|
void StorePrim(PrimData prim);
|
||||||
void RemovePrim(LLUUID primID);
|
void RemovePrim(LLUUID primID);
|
||||||
void LoadPrimitives(ILocalStorageReceiver receiver);
|
void LoadPrimitives(ILocalStorageReceiver receiver);
|
||||||
|
|
||||||
[System.Obsolete("Use DataStorage instead")]
|
[System.Obsolete("Use DataStorage instead")]
|
||||||
float[] LoadWorld();
|
float[] LoadWorld();
|
||||||
[System.Obsolete("Use DataStorage instead")]
|
[System.Obsolete("Use DataStorage instead")]
|
||||||
void SaveMap(float[] heightmap);
|
void SaveMap(float[] heightmap);
|
||||||
|
|
||||||
void SaveParcels(ParcelData[] parcels);
|
void SaveParcels(ParcelData[] parcels);
|
||||||
void SaveParcel(ParcelData parcel);
|
void SaveParcel(ParcelData parcel);
|
||||||
void RemoveParcel(ParcelData parcel);
|
void RemoveParcel(ParcelData parcel);
|
||||||
void RemoveAllParcels();
|
void RemoveAllParcels();
|
||||||
void LoadParcels(ILocalStorageParcelReceiver recv);
|
void LoadParcels(ILocalStorageParcelReceiver recv);
|
||||||
|
|
||||||
void ShutDown();
|
void ShutDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface ILocalStorageReceiver
|
public interface ILocalStorageReceiver
|
||||||
{
|
{
|
||||||
void PrimFromStorage(PrimData prim);
|
void PrimFromStorage(PrimData prim);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface ILocalStorageParcelReceiver
|
public interface ILocalStorageParcelReceiver
|
||||||
{
|
{
|
||||||
void ParcelFromStorage(ParcelData data);
|
void ParcelFromStorage(ParcelData data);
|
||||||
void NoParcelDataFromStorage();
|
void NoParcelDataFromStorage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,39 +1,39 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Inventory;
|
using OpenSim.Framework.Inventory;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Interfaces
|
namespace OpenSim.Framework.Interfaces
|
||||||
{
|
{
|
||||||
public interface IUserServer
|
public interface IUserServer
|
||||||
{
|
{
|
||||||
AgentInventory RequestAgentsInventory(LLUUID agentID);
|
AgentInventory RequestAgentsInventory(LLUUID agentID);
|
||||||
void SetServerInfo(string ServerUrl, string SendKey, string RecvKey);
|
void SetServerInfo(string ServerUrl, string SendKey, string RecvKey);
|
||||||
bool UpdateAgentsInventory(LLUUID agentID, AgentInventory inventory);
|
bool UpdateAgentsInventory(LLUUID agentID, AgentInventory inventory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,42 +1,42 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Types;
|
using OpenSim.Framework.Types;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Interfaces
|
namespace OpenSim.Framework.Interfaces
|
||||||
{
|
{
|
||||||
public interface IWorld
|
public interface IWorld
|
||||||
{
|
{
|
||||||
void AddNewClient(IClientAPI client, bool child);
|
void AddNewClient(IClientAPI client, bool child);
|
||||||
void RemoveClient(LLUUID agentID);
|
void RemoveClient(LLUUID agentID);
|
||||||
|
|
||||||
RegionInfo RegionInfo { get; }
|
RegionInfo RegionInfo { get; }
|
||||||
object SyncRoot { get; }
|
object SyncRoot { get; }
|
||||||
uint NextLocalId { get; }
|
uint NextLocalId { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,127 +1,127 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using OpenSim.Framework.Interfaces;
|
using OpenSim.Framework.Interfaces;
|
||||||
using OpenSim.Framework.Types;
|
using OpenSim.Framework.Types;
|
||||||
using OpenSim.Framework.Data;
|
using OpenSim.Framework.Data;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using libsecondlife.Packets;
|
using libsecondlife.Packets;
|
||||||
|
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
public class NpcClientBase :IClientAPI
|
public class NpcClientBase :IClientAPI
|
||||||
{
|
{
|
||||||
public event ImprovedInstantMessage OnInstantMessage;
|
public event ImprovedInstantMessage OnInstantMessage;
|
||||||
public event ChatFromViewer OnChatFromViewer;
|
public event ChatFromViewer OnChatFromViewer;
|
||||||
public event RezObject OnRezObject;
|
public event RezObject OnRezObject;
|
||||||
public event ModifyTerrain OnModifyTerrain;
|
public event ModifyTerrain OnModifyTerrain;
|
||||||
public event SetAppearance OnSetAppearance;
|
public event SetAppearance OnSetAppearance;
|
||||||
public event StartAnim OnStartAnim;
|
public event StartAnim OnStartAnim;
|
||||||
public event LinkObjects OnLinkObjects;
|
public event LinkObjects OnLinkObjects;
|
||||||
public event RequestMapBlocks OnRequestMapBlocks;
|
public event RequestMapBlocks OnRequestMapBlocks;
|
||||||
public event TeleportLocationRequest OnTeleportLocationRequest;
|
public event TeleportLocationRequest OnTeleportLocationRequest;
|
||||||
|
|
||||||
public event GenericCall4 OnDeRezObject;
|
public event GenericCall4 OnDeRezObject;
|
||||||
public event GenericCall OnRegionHandShakeReply;
|
public event GenericCall OnRegionHandShakeReply;
|
||||||
public event GenericCall OnRequestWearables;
|
public event GenericCall OnRequestWearables;
|
||||||
public event GenericCall2 OnCompleteMovementToRegion;
|
public event GenericCall2 OnCompleteMovementToRegion;
|
||||||
public event UpdateAgent OnAgentUpdate;
|
public event UpdateAgent OnAgentUpdate;
|
||||||
public event GenericCall OnRequestAvatarsData;
|
public event GenericCall OnRequestAvatarsData;
|
||||||
public event AddNewPrim OnAddPrim;
|
public event AddNewPrim OnAddPrim;
|
||||||
public event ObjectDuplicate OnObjectDuplicate;
|
public event ObjectDuplicate OnObjectDuplicate;
|
||||||
public event UpdateVector OnGrapObject;
|
public event UpdateVector OnGrapObject;
|
||||||
public event ObjectSelect OnDeGrapObject;
|
public event ObjectSelect OnDeGrapObject;
|
||||||
public event MoveObject OnGrapUpdate;
|
public event MoveObject OnGrapUpdate;
|
||||||
|
|
||||||
public event UpdateShape OnUpdatePrimShape;
|
public event UpdateShape OnUpdatePrimShape;
|
||||||
public event ObjectSelect OnObjectSelect;
|
public event ObjectSelect OnObjectSelect;
|
||||||
public event GenericCall7 OnObjectDescription;
|
public event GenericCall7 OnObjectDescription;
|
||||||
public event GenericCall7 OnObjectName;
|
public event GenericCall7 OnObjectName;
|
||||||
public event UpdatePrimFlags OnUpdatePrimFlags;
|
public event UpdatePrimFlags OnUpdatePrimFlags;
|
||||||
public event UpdatePrimTexture OnUpdatePrimTexture;
|
public event UpdatePrimTexture OnUpdatePrimTexture;
|
||||||
public event UpdateVector OnUpdatePrimGroupPosition;
|
public event UpdateVector OnUpdatePrimGroupPosition;
|
||||||
public event UpdateVector OnUpdatePrimSinglePosition;
|
public event UpdateVector OnUpdatePrimSinglePosition;
|
||||||
public event UpdatePrimRotation OnUpdatePrimGroupRotation;
|
public event UpdatePrimRotation OnUpdatePrimGroupRotation;
|
||||||
public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation;
|
public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation;
|
||||||
public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation;
|
public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation;
|
||||||
public event UpdateVector OnUpdatePrimScale;
|
public event UpdateVector OnUpdatePrimScale;
|
||||||
public event StatusChange OnChildAgentStatus;
|
public event StatusChange OnChildAgentStatus;
|
||||||
public event GenericCall2 OnStopMovement;
|
public event GenericCall2 OnStopMovement;
|
||||||
public event NewAvatar OnNewAvatar;
|
public event NewAvatar OnNewAvatar;
|
||||||
public event GenericCall6 OnRemoveAvatar;
|
public event GenericCall6 OnRemoveAvatar;
|
||||||
|
|
||||||
public event UUIDNameRequest OnNameFromUUIDRequest;
|
public event UUIDNameRequest OnNameFromUUIDRequest;
|
||||||
|
|
||||||
public event ParcelPropertiesRequest OnParcelPropertiesRequest;
|
public event ParcelPropertiesRequest OnParcelPropertiesRequest;
|
||||||
public event ParcelDivideRequest OnParcelDivideRequest;
|
public event ParcelDivideRequest OnParcelDivideRequest;
|
||||||
public event ParcelJoinRequest OnParcelJoinRequest;
|
public event ParcelJoinRequest OnParcelJoinRequest;
|
||||||
public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
|
public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
|
||||||
public event ParcelSelectObjects OnParcelSelectObjects;
|
public event ParcelSelectObjects OnParcelSelectObjects;
|
||||||
public event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest;
|
public event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest;
|
||||||
public event ObjectDeselect OnObjectDeselect;
|
public event ObjectDeselect OnObjectDeselect;
|
||||||
|
|
||||||
|
|
||||||
public event EstateOwnerMessageRequest OnEstateOwnerMessage;
|
public event EstateOwnerMessageRequest OnEstateOwnerMessage;
|
||||||
|
|
||||||
public virtual LLVector3 StartPos
|
public virtual LLVector3 StartPos
|
||||||
{
|
{
|
||||||
get { return new LLVector3(); }
|
get { return new LLVector3(); }
|
||||||
set { }
|
set { }
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual LLUUID AgentId
|
public virtual LLUUID AgentId
|
||||||
{
|
{
|
||||||
get { return LLUUID.Random(); }
|
get { return LLUUID.Random(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual string FirstName
|
public virtual string FirstName
|
||||||
{
|
{
|
||||||
get { return ""; }
|
get { return ""; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual string LastName
|
public virtual string LastName
|
||||||
{
|
{
|
||||||
get { return ""; }
|
get { return ""; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public NpcClientBase()
|
public NpcClientBase()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void OutPacket(Packet newPack){}
|
public virtual void OutPacket(Packet newPack){}
|
||||||
public virtual void SendWearables(AvatarWearable[] wearables){}
|
public virtual void SendWearables(AvatarWearable[] wearables){}
|
||||||
public virtual void SendStartPingCheck(byte seq){}
|
public virtual void SendStartPingCheck(byte seq){}
|
||||||
public virtual void SendKillObject(ulong regionHandle, uint avatarLocalID){}
|
public virtual void SendKillObject(ulong regionHandle, uint avatarLocalID){}
|
||||||
public virtual void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId){}
|
public virtual void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId){}
|
||||||
public virtual void SendRegionHandshake(RegionInfo regionInfo){}
|
public virtual void SendRegionHandshake(RegionInfo regionInfo){}
|
||||||
public virtual void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID){}
|
public virtual void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID){}
|
||||||
public virtual void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID){}
|
public virtual void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID){}
|
||||||
public virtual void SendInstantMessage(string message, LLUUID target, string fromName){}
|
public virtual void SendInstantMessage(string message, LLUUID target, string fromName){}
|
||||||
public virtual void SendLayerData(float[] map){}
|
public virtual void SendLayerData(float[] map){}
|
||||||
public virtual void SendLayerData(int px, int py, float[] map){}
|
public virtual void SendLayerData(int px, int py, float[] map){}
|
||||||
public virtual void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look){}
|
public virtual void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look){}
|
||||||
public virtual void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint){}
|
public virtual void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint){}
|
||||||
public virtual AgentCircuitData RequestClientInfo() { return new AgentCircuitData(); }
|
public virtual AgentCircuitData RequestClientInfo() { return new AgentCircuitData(); }
|
||||||
public virtual void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint newRegionExternalEndPoint){}
|
public virtual void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint newRegionExternalEndPoint){}
|
||||||
public virtual void SendMapBlock(List<MapBlockData> mapBlocks){}
|
public virtual void SendMapBlock(List<MapBlockData> mapBlocks){}
|
||||||
public virtual void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags){}
|
public virtual void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags){}
|
||||||
public virtual void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags){}
|
public virtual void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags){}
|
||||||
public virtual void SendTeleportCancel(){}
|
public virtual void SendTeleportCancel(){}
|
||||||
public virtual void SendTeleportLocationStart(){}
|
public virtual void SendTeleportLocationStart(){}
|
||||||
public virtual void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance){}
|
public virtual void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance){}
|
||||||
|
|
||||||
public virtual void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry){}
|
public virtual void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry){}
|
||||||
public virtual void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity){}
|
public virtual void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity){}
|
||||||
|
|
||||||
public virtual void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint){}
|
public virtual void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint){}
|
||||||
public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID, uint flags){}
|
public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID, uint flags){}
|
||||||
public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags){}
|
public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags){}
|
||||||
public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLQuaternion rotation, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID){}
|
public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLQuaternion rotation, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID){}
|
||||||
public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID){}
|
public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID){}
|
||||||
public virtual void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation){}
|
public virtual void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation){}
|
||||||
|
|
||||||
public virtual void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items){}
|
public virtual void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items){}
|
||||||
public virtual void SendInventoryItemDetails(LLUUID ownerID, LLUUID folderID, InventoryItemBase item){}
|
public virtual void SendInventoryItemDetails(LLUUID ownerID, LLUUID folderID, InventoryItemBase item){}
|
||||||
public virtual void SendNameReply(LLUUID profileId, string firstname, string lastname){}
|
public virtual void SendNameReply(LLUUID profileId, string firstname, string lastname){}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,31 +1,31 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("OpenSim.FrameWork")]
|
[assembly: AssemblyTitle("OpenSim.FrameWork")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("OpenSim.FrameWork")]
|
[assembly: AssemblyProduct("OpenSim.FrameWork")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2007")]
|
[assembly: AssemblyCopyright("Copyright © 2007")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
// 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
|
// to COM components. If you need to access a type in this assembly from
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("a08e20c7-f191-4137-b1f0-9291408fa521")]
|
[assembly: Guid("a08e20c7-f191-4137-b1f0-9291408fa521")]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
// Major Version
|
// Major Version
|
||||||
// Minor Version
|
// Minor Version
|
||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
|
@ -1,103 +1,103 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Interfaces;
|
using OpenSim.Framework.Interfaces;
|
||||||
using OpenSim.Framework.Types;
|
using OpenSim.Framework.Types;
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
public class RegionCommsListener :IRegionCommsListener
|
public class RegionCommsListener :IRegionCommsListener
|
||||||
{
|
{
|
||||||
public event ExpectUserDelegate OnExpectUser;
|
public event ExpectUserDelegate OnExpectUser;
|
||||||
public event GenericCall2 OnExpectChildAgent;
|
public event GenericCall2 OnExpectChildAgent;
|
||||||
public event AgentCrossing OnAvatarCrossingIntoRegion;
|
public event AgentCrossing OnAvatarCrossingIntoRegion;
|
||||||
public event UpdateNeighbours OnNeighboursUpdate;
|
public event UpdateNeighbours OnNeighboursUpdate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="agent"></param>
|
/// <param name="agent"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public virtual bool TriggerExpectUser(ulong regionHandle, AgentCircuitData agent)
|
public virtual bool TriggerExpectUser(ulong regionHandle, AgentCircuitData agent)
|
||||||
{
|
{
|
||||||
if(OnExpectUser != null)
|
if(OnExpectUser != null)
|
||||||
{
|
{
|
||||||
|
|
||||||
OnExpectUser(regionHandle, agent);
|
OnExpectUser(regionHandle, agent);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool TriggerExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position)
|
public virtual bool TriggerExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position)
|
||||||
{
|
{
|
||||||
if (OnAvatarCrossingIntoRegion != null)
|
if (OnAvatarCrossingIntoRegion != null)
|
||||||
{
|
{
|
||||||
OnAvatarCrossingIntoRegion(regionHandle, agentID, position);
|
OnAvatarCrossingIntoRegion(regionHandle, agentID, position);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>TODO: Doesnt take any args??</remarks>
|
/// <remarks>TODO: Doesnt take any args??</remarks>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public virtual bool TriggerExpectChildAgent()
|
public virtual bool TriggerExpectChildAgent()
|
||||||
{
|
{
|
||||||
if (OnExpectChildAgent != null)
|
if (OnExpectChildAgent != null)
|
||||||
{
|
{
|
||||||
OnExpectChildAgent();
|
OnExpectChildAgent();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>Added to avoid a unused compiler warning on OnNeighboursUpdate, TODO: Check me</remarks>
|
/// <remarks>Added to avoid a unused compiler warning on OnNeighboursUpdate, TODO: Check me</remarks>
|
||||||
/// <param name="neighbours"></param>
|
/// <param name="neighbours"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public virtual bool TriggerOnNeighboursUpdate(List<RegionInfo> neighbours)
|
public virtual bool TriggerOnNeighboursUpdate(List<RegionInfo> neighbours)
|
||||||
{
|
{
|
||||||
if (OnNeighboursUpdate != null)
|
if (OnNeighboursUpdate != null)
|
||||||
{
|
{
|
||||||
OnNeighboursUpdate(neighbours);
|
OnNeighboursUpdate(neighbours);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,135 +1,135 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// NEEDS AUDIT.
|
/// NEEDS AUDIT.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Suggested implementation
|
/// 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>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 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>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>
|
/// <para>Both hosts should be performing these operations for this to be effective.</para>
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
class RemoteDigest
|
class RemoteDigest
|
||||||
{
|
{
|
||||||
private byte[] currentHash;
|
private byte[] currentHash;
|
||||||
private byte[] secret;
|
private byte[] secret;
|
||||||
|
|
||||||
private SHA512Managed SHA512;
|
private SHA512Managed SHA512;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises a new RemoteDigest authentication mechanism
|
/// Initialises a new RemoteDigest authentication mechanism
|
||||||
/// </summary>
|
/// </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>
|
/// <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="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="salt">Binary salt - some common value - to be decided what</param>
|
||||||
/// <param name="challenge">The challenge key provided by the third party</param>
|
/// <param name="challenge">The challenge key provided by the third party</param>
|
||||||
public RemoteDigest(string sharedSecret, byte[] salt, string challenge)
|
public RemoteDigest(string sharedSecret, byte[] salt, string challenge)
|
||||||
{
|
{
|
||||||
SHA512 = new SHA512Managed();
|
SHA512 = new SHA512Managed();
|
||||||
Rfc2898DeriveBytes RFC2898 = new Rfc2898DeriveBytes(sharedSecret,salt);
|
Rfc2898DeriveBytes RFC2898 = new Rfc2898DeriveBytes(sharedSecret,salt);
|
||||||
secret = RFC2898.GetBytes(512);
|
secret = RFC2898.GetBytes(512);
|
||||||
ASCIIEncoding ASCII = new ASCIIEncoding();
|
ASCIIEncoding ASCII = new ASCIIEncoding();
|
||||||
|
|
||||||
currentHash = SHA512.ComputeHash(AppendArrays(secret, ASCII.GetBytes(challenge)));
|
currentHash = SHA512.ComputeHash(AppendArrays(secret, ASCII.GetBytes(challenge)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Authenticates a piece of incoming data against the local digest. Upon successful authentication, digest string is incremented.
|
/// Authenticates a piece of incoming data against the local digest. Upon successful authentication, digest string is incremented.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="data">The incoming data</param>
|
/// <param name="data">The incoming data</param>
|
||||||
/// <param name="digest">The remote digest</param>
|
/// <param name="digest">The remote digest</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool Authenticate(byte[] data, byte[] digest)
|
public bool Authenticate(byte[] data, byte[] digest)
|
||||||
{
|
{
|
||||||
byte[] newHash = SHA512.ComputeHash(AppendArrays(AppendArrays(currentHash, secret), data));
|
byte[] newHash = SHA512.ComputeHash(AppendArrays(AppendArrays(currentHash, secret), data));
|
||||||
if (digest == newHash)
|
if (digest == newHash)
|
||||||
{
|
{
|
||||||
currentHash = newHash;
|
currentHash = newHash;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new Exception("Hash comparison failed. Key resync required.");
|
throw new Exception("Hash comparison failed. Key resync required.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Signs a new bit of data with the current hash. Returns a byte array which should be affixed to the message.
|
/// 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
|
/// 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.
|
/// hashes will get out of sync and throw an exception when validation is attempted.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="data">The outgoing data</param>
|
/// <param name="data">The outgoing data</param>
|
||||||
/// <returns>The local digest</returns>
|
/// <returns>The local digest</returns>
|
||||||
public byte[] Sign(byte[] data)
|
public byte[] Sign(byte[] data)
|
||||||
{
|
{
|
||||||
currentHash = SHA512.ComputeHash(AppendArrays(AppendArrays(currentHash, secret), data));
|
currentHash = SHA512.ComputeHash(AppendArrays(AppendArrays(currentHash, secret), data));
|
||||||
return currentHash;
|
return currentHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <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.
|
/// 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>
|
/// </summary>
|
||||||
/// <returns>A 128-character hexadecimal string containing the challenge.</returns>
|
/// <returns>A 128-character hexadecimal string containing the challenge.</returns>
|
||||||
public static string GenerateChallenge()
|
public static string GenerateChallenge()
|
||||||
{
|
{
|
||||||
RNGCryptoServiceProvider RNG = new RNGCryptoServiceProvider();
|
RNGCryptoServiceProvider RNG = new RNGCryptoServiceProvider();
|
||||||
byte[] bytes = new byte[64];
|
byte[] bytes = new byte[64];
|
||||||
RNG.GetBytes(bytes);
|
RNG.GetBytes(bytes);
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder(bytes.Length * 2);
|
StringBuilder sb = new StringBuilder(bytes.Length * 2);
|
||||||
foreach (byte b in bytes)
|
foreach (byte b in bytes)
|
||||||
{
|
{
|
||||||
sb.AppendFormat("{0:x2}", b);
|
sb.AppendFormat("{0:x2}", b);
|
||||||
}
|
}
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Helper function, merges two byte arrays
|
/// Helper function, merges two byte arrays
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>Sourced from MSDN Forum</remarks>
|
/// <remarks>Sourced from MSDN Forum</remarks>
|
||||||
/// <param name="a">A</param>
|
/// <param name="a">A</param>
|
||||||
/// <param name="b">B</param>
|
/// <param name="b">B</param>
|
||||||
/// <returns>C</returns>
|
/// <returns>C</returns>
|
||||||
private byte[] AppendArrays(byte[] a, byte[] b)
|
private byte[] AppendArrays(byte[] a, byte[] b)
|
||||||
{
|
{
|
||||||
byte[] c = new byte[a.Length + b.Length];
|
byte[] c = new byte[a.Length + b.Length];
|
||||||
Buffer.BlockCopy(a, 0, c, 0, a.Length);
|
Buffer.BlockCopy(a, 0, c, 0, a.Length);
|
||||||
Buffer.BlockCopy(b, 0, c, a.Length, b.Length);
|
Buffer.BlockCopy(b, 0, c, a.Length, b.Length);
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,49 +1,49 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class AgentCircuitData
|
public class AgentCircuitData
|
||||||
{
|
{
|
||||||
public AgentCircuitData() { }
|
public AgentCircuitData() { }
|
||||||
public LLUUID AgentID;
|
public LLUUID AgentID;
|
||||||
public LLUUID SessionID;
|
public LLUUID SessionID;
|
||||||
public LLUUID SecureSessionID;
|
public LLUUID SecureSessionID;
|
||||||
public LLVector3 startpos;
|
public LLVector3 startpos;
|
||||||
public string firstname;
|
public string firstname;
|
||||||
public string lastname;
|
public string lastname;
|
||||||
public uint circuitcode;
|
public uint circuitcode;
|
||||||
public bool child;
|
public bool child;
|
||||||
public LLUUID InventoryFolder;
|
public LLUUID InventoryFolder;
|
||||||
public LLUUID BaseFolder;
|
public LLUUID BaseFolder;
|
||||||
public string CapsPath = "";
|
public string CapsPath = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,57 +1,57 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
public class AvatarWearable
|
public class AvatarWearable
|
||||||
{
|
{
|
||||||
public LLUUID AssetID = new LLUUID("00000000-0000-0000-0000-000000000000");
|
public LLUUID AssetID = new LLUUID("00000000-0000-0000-0000-000000000000");
|
||||||
public LLUUID ItemID = new LLUUID("00000000-0000-0000-0000-000000000000");
|
public LLUUID ItemID = new LLUUID("00000000-0000-0000-0000-000000000000");
|
||||||
|
|
||||||
public AvatarWearable()
|
public AvatarWearable()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AvatarWearable[] DefaultWearables
|
public static AvatarWearable[] DefaultWearables
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
AvatarWearable[] defaultWearables = new AvatarWearable[13]; //should be 13 of these
|
AvatarWearable[] defaultWearables = new AvatarWearable[13]; //should be 13 of these
|
||||||
for (int i = 0; i < 13; i++)
|
for (int i = 0; i < 13; i++)
|
||||||
{
|
{
|
||||||
defaultWearables[i] = new AvatarWearable();
|
defaultWearables[i] = new AvatarWearable();
|
||||||
}
|
}
|
||||||
defaultWearables[0].AssetID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
|
defaultWearables[0].AssetID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
|
||||||
defaultWearables[0].ItemID = LLUUID.Random();
|
defaultWearables[0].ItemID = LLUUID.Random();
|
||||||
return defaultWearables;
|
return defaultWearables;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,46 +1,46 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
public class AssetBase
|
public class AssetBase
|
||||||
{
|
{
|
||||||
public byte[] Data;
|
public byte[] Data;
|
||||||
public LLUUID FullID;
|
public LLUUID FullID;
|
||||||
public sbyte Type;
|
public sbyte Type;
|
||||||
public sbyte InvType;
|
public sbyte InvType;
|
||||||
public string Name;
|
public string Name;
|
||||||
public string Description;
|
public string Description;
|
||||||
|
|
||||||
public AssetBase()
|
public AssetBase()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,59 +1,59 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
public class AssetLandmark : AssetBase
|
public class AssetLandmark : AssetBase
|
||||||
{
|
{
|
||||||
public int Version;
|
public int Version;
|
||||||
public LLVector3 Position;
|
public LLVector3 Position;
|
||||||
public LLUUID RegionID;
|
public LLUUID RegionID;
|
||||||
|
|
||||||
public AssetLandmark(AssetBase a)
|
public AssetLandmark(AssetBase a)
|
||||||
{
|
{
|
||||||
this.Data = a.Data;
|
this.Data = a.Data;
|
||||||
this.FullID = a.FullID;
|
this.FullID = a.FullID;
|
||||||
this.Type = a.Type;
|
this.Type = a.Type;
|
||||||
this.InvType = a.InvType;
|
this.InvType = a.InvType;
|
||||||
this.Name = a.Name;
|
this.Name = a.Name;
|
||||||
this.Description = a.Description;
|
this.Description = a.Description;
|
||||||
InternData();
|
InternData();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InternData()
|
private void InternData()
|
||||||
{
|
{
|
||||||
string temp = Encoding.UTF8.GetString(Data).Trim();
|
string temp = Encoding.UTF8.GetString(Data).Trim();
|
||||||
string[] parts = temp.Split('\n');
|
string[] parts = temp.Split('\n');
|
||||||
int.TryParse(parts[0].Substring(17, 1), out Version);
|
int.TryParse(parts[0].Substring(17, 1), out Version);
|
||||||
LLUUID.TryParse(parts[1].Substring(10, 36), out RegionID);
|
LLUUID.TryParse(parts[1].Substring(10, 36), out RegionID);
|
||||||
LLVector3.TryParse(parts[2].Substring(11, parts[2].Length - 11), out Position);
|
LLVector3.TryParse(parts[2].Substring(11, parts[2].Length - 11), out Position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,47 +1,47 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
public class AssetStorage
|
public class AssetStorage
|
||||||
{
|
{
|
||||||
|
|
||||||
public AssetStorage() {
|
public AssetStorage() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public AssetStorage(LLUUID assetUUID) {
|
public AssetStorage(LLUUID assetUUID) {
|
||||||
UUID=assetUUID;
|
UUID=assetUUID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] Data;
|
public byte[] Data;
|
||||||
public sbyte Type;
|
public sbyte Type;
|
||||||
public string Name;
|
public string Name;
|
||||||
public LLUUID UUID;
|
public LLUUID UUID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,93 +1,93 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
public class EstateSettings
|
public class EstateSettings
|
||||||
{
|
{
|
||||||
//Settings to this island
|
//Settings to this island
|
||||||
public float billableFactor = (float)0.0;
|
public float billableFactor = (float)0.0;
|
||||||
public uint estateID = 0;
|
public uint estateID = 0;
|
||||||
public uint parentEstateID = 0;
|
public uint parentEstateID = 0;
|
||||||
|
|
||||||
public byte maxAgents = 40;
|
public byte maxAgents = 40;
|
||||||
public float objectBonusFactor = (float)1.0;
|
public float objectBonusFactor = (float)1.0;
|
||||||
|
|
||||||
public int redirectGridX = 0; //??
|
public int redirectGridX = 0; //??
|
||||||
public int redirectGridY = 0; //??
|
public int redirectGridY = 0; //??
|
||||||
public Simulator.RegionFlags regionFlags = Simulator.RegionFlags.None; //Booleam values of various region settings
|
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 Simulator.SimAccess simAccess = Simulator.SimAccess.Mature; //Is sim PG, Mature, etc? Mature by default.
|
||||||
public float sunHour = 0;
|
public float sunHour = 0;
|
||||||
|
|
||||||
public float terrainRaiseLimit = 0;
|
public float terrainRaiseLimit = 0;
|
||||||
public float terrainLowerLimit = 0;
|
public float terrainLowerLimit = 0;
|
||||||
|
|
||||||
public bool useFixedSun = false;
|
public bool useFixedSun = false;
|
||||||
public int pricePerMeter = 1;
|
public int pricePerMeter = 1;
|
||||||
|
|
||||||
public ushort regionWaterHeight = 20;
|
public ushort regionWaterHeight = 20;
|
||||||
public bool regionAllowTerraform = true;
|
public bool regionAllowTerraform = true;
|
||||||
|
|
||||||
// Region Information
|
// Region Information
|
||||||
// Low resolution 'base' textures. No longer used.
|
// Low resolution 'base' textures. No longer used.
|
||||||
public LLUUID terrainBase0 = new LLUUID("b8d3965a-ad78-bf43-699b-bff8eca6c975"); // Default
|
public LLUUID terrainBase0 = new LLUUID("b8d3965a-ad78-bf43-699b-bff8eca6c975"); // Default
|
||||||
public LLUUID terrainBase1 = new LLUUID("abb783e6-3e93-26c0-248a-247666855da3"); // 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 terrainBase2 = new LLUUID("179cdabd-398a-9b6b-1391-4dc333ba321f"); // Default
|
||||||
public LLUUID terrainBase3 = new LLUUID("beb169c7-11ea-fff2-efe5-0f24dc881df2"); // Default
|
public LLUUID terrainBase3 = new LLUUID("beb169c7-11ea-fff2-efe5-0f24dc881df2"); // Default
|
||||||
|
|
||||||
// Higher resolution terrain textures
|
// Higher resolution terrain textures
|
||||||
public LLUUID terrainDetail0 = new LLUUID("00000000-0000-0000-0000-000000000000");
|
public LLUUID terrainDetail0 = new LLUUID("00000000-0000-0000-0000-000000000000");
|
||||||
public LLUUID terrainDetail1 = 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 terrainDetail2 = new LLUUID("00000000-0000-0000-0000-000000000000");
|
||||||
public LLUUID terrainDetail3 = 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
|
// First quad - each point is bilinearly interpolated at each meter of terrain
|
||||||
public float terrainStartHeight0 = 10.0f;
|
public float terrainStartHeight0 = 10.0f;
|
||||||
public float terrainStartHeight1 = 10.0f;
|
public float terrainStartHeight1 = 10.0f;
|
||||||
public float terrainStartHeight2 = 10.0f;
|
public float terrainStartHeight2 = 10.0f;
|
||||||
public float terrainStartHeight3 = 10.0f;
|
public float terrainStartHeight3 = 10.0f;
|
||||||
|
|
||||||
// Second quad - also bilinearly interpolated.
|
// Second quad - also bilinearly interpolated.
|
||||||
// Terrain texturing is done that:
|
// Terrain texturing is done that:
|
||||||
// 0..3 (0 = base0, 3 = base3) = (terrain[x,y] - start[x,y]) / range[x,y]
|
// 0..3 (0 = base0, 3 = base3) = (terrain[x,y] - start[x,y]) / range[x,y]
|
||||||
public float terrainHeightRange0 = 60.0f; //00
|
public float terrainHeightRange0 = 60.0f; //00
|
||||||
public float terrainHeightRange1 = 60.0f; //01
|
public float terrainHeightRange1 = 60.0f; //01
|
||||||
public float terrainHeightRange2 = 60.0f; //10
|
public float terrainHeightRange2 = 60.0f; //10
|
||||||
public float terrainHeightRange3 = 60.0f; //11
|
public float terrainHeightRange3 = 60.0f; //11
|
||||||
|
|
||||||
// Terrain Default (Must be in F32 Format!)
|
// Terrain Default (Must be in F32 Format!)
|
||||||
public string terrainFile = "default.r32";
|
public string terrainFile = "default.r32";
|
||||||
public double terrainMultiplier = 60.0;
|
public double terrainMultiplier = 60.0;
|
||||||
public float waterHeight = (float)20.0;
|
public float waterHeight = (float)20.0;
|
||||||
|
|
||||||
public LLUUID terrainImageID = LLUUID.Zero; // the assetID that is the current Map image for this region
|
public LLUUID terrainImageID = LLUUID.Zero; // the assetID that is the current Map image for this region
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,49 +1,49 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
public class Login
|
public class Login
|
||||||
{
|
{
|
||||||
public string First = "Test";
|
public string First = "Test";
|
||||||
public string Last = "User";
|
public string Last = "User";
|
||||||
public LLUUID Agent;
|
public LLUUID Agent;
|
||||||
public LLUUID Session;
|
public LLUUID Session;
|
||||||
public LLUUID SecureSession = LLUUID.Zero;
|
public LLUUID SecureSession = LLUUID.Zero;
|
||||||
public LLUUID InventoryFolder;
|
public LLUUID InventoryFolder;
|
||||||
public LLUUID BaseFolder;
|
public LLUUID BaseFolder;
|
||||||
public uint CircuitCode;
|
public uint CircuitCode;
|
||||||
public string CapsPath ="";
|
public string CapsPath ="";
|
||||||
|
|
||||||
public Login()
|
public Login()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
using System;
|
using System;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
public class MapBlockData
|
public class MapBlockData
|
||||||
{
|
{
|
||||||
public uint Flags;
|
public uint Flags;
|
||||||
public ushort X;
|
public ushort X;
|
||||||
public ushort Y;
|
public ushort Y;
|
||||||
public byte Agents;
|
public byte Agents;
|
||||||
public byte Access;
|
public byte Access;
|
||||||
public byte WaterHeight;
|
public byte WaterHeight;
|
||||||
public LLUUID MapImageId;
|
public LLUUID MapImageId;
|
||||||
public String Name;
|
public String Name;
|
||||||
public uint RegionFlags;
|
public uint RegionFlags;
|
||||||
|
|
||||||
public MapBlockData()
|
public MapBlockData()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,42 +1,42 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
public class NeighbourInfo
|
public class NeighbourInfo
|
||||||
{
|
{
|
||||||
public NeighbourInfo()
|
public NeighbourInfo()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public ulong regionhandle;
|
public ulong regionhandle;
|
||||||
public uint RegionLocX;
|
public uint RegionLocX;
|
||||||
public uint RegionLocY;
|
public uint RegionLocY;
|
||||||
public string sim_ip;
|
public string sim_ip;
|
||||||
public uint sim_port;
|
public uint sim_port;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,219 +1,219 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using OpenSim.Framework.Console;
|
using OpenSim.Framework.Console;
|
||||||
using OpenSim.Framework.Interfaces;
|
using OpenSim.Framework.Interfaces;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
public class NetworkServersInfo
|
public class NetworkServersInfo
|
||||||
{
|
{
|
||||||
public string AssetURL = "http://127.0.0.1:8003/";
|
public string AssetURL = "http://127.0.0.1:8003/";
|
||||||
public string AssetSendKey = "";
|
public string AssetSendKey = "";
|
||||||
|
|
||||||
public string GridURL = "";
|
public string GridURL = "";
|
||||||
public string GridSendKey = "";
|
public string GridSendKey = "";
|
||||||
public string GridRecvKey = "";
|
public string GridRecvKey = "";
|
||||||
public string UserURL = "";
|
public string UserURL = "";
|
||||||
public string UserSendKey = "";
|
public string UserSendKey = "";
|
||||||
public string UserRecvKey = "";
|
public string UserRecvKey = "";
|
||||||
public bool isSandbox;
|
public bool isSandbox;
|
||||||
|
|
||||||
public uint DefaultHomeLocX = 1000;
|
public uint DefaultHomeLocX = 1000;
|
||||||
public uint DefaultHomeLocY = 1000;
|
public uint DefaultHomeLocY = 1000;
|
||||||
|
|
||||||
public int HttpListenerPort = 9000;
|
public int HttpListenerPort = 9000;
|
||||||
public int RemotingListenerPort = 8895;
|
public int RemotingListenerPort = 8895;
|
||||||
|
|
||||||
public void InitConfig(bool sandboxMode, IGenericConfig configData)
|
public void InitConfig(bool sandboxMode, IGenericConfig configData)
|
||||||
{
|
{
|
||||||
this.isSandbox = sandboxMode;
|
this.isSandbox = sandboxMode;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string attri = "";
|
string attri = "";
|
||||||
|
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("HttpListenerPort");
|
attri = configData.GetAttribute("HttpListenerPort");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
string location = MainLog.Instance.CmdPrompt("Http Listener Port", "9000");
|
string location = MainLog.Instance.CmdPrompt("Http Listener Port", "9000");
|
||||||
configData.SetAttribute("HttpListenerPort", location);
|
configData.SetAttribute("HttpListenerPort", location);
|
||||||
this.HttpListenerPort = Convert.ToInt32(location);
|
this.HttpListenerPort = Convert.ToInt32(location);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.HttpListenerPort = Convert.ToInt32(attri);
|
this.HttpListenerPort = Convert.ToInt32(attri);
|
||||||
}
|
}
|
||||||
|
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("RemotingListenerPort");
|
attri = configData.GetAttribute("RemotingListenerPort");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
string location = MainLog.Instance.CmdPrompt("Remoting Listener Port", "8895");
|
string location = MainLog.Instance.CmdPrompt("Remoting Listener Port", "8895");
|
||||||
configData.SetAttribute("RemotingListenerPort", location);
|
configData.SetAttribute("RemotingListenerPort", location);
|
||||||
this.RemotingListenerPort = Convert.ToInt32(location);
|
this.RemotingListenerPort = Convert.ToInt32(location);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.RemotingListenerPort = Convert.ToInt32(attri);
|
this.RemotingListenerPort = Convert.ToInt32(attri);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sandboxMode)
|
if (sandboxMode)
|
||||||
{
|
{
|
||||||
// default home location X
|
// default home location X
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("DefaultLocationX");
|
attri = configData.GetAttribute("DefaultLocationX");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
string location = MainLog.Instance.CmdPrompt("Default Home Location X", "1000");
|
string location = MainLog.Instance.CmdPrompt("Default Home Location X", "1000");
|
||||||
configData.SetAttribute("DefaultLocationX", location);
|
configData.SetAttribute("DefaultLocationX", location);
|
||||||
this.DefaultHomeLocX = (uint)Convert.ToUInt32(location);
|
this.DefaultHomeLocX = (uint)Convert.ToUInt32(location);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.DefaultHomeLocX = (uint)Convert.ToUInt32(attri);
|
this.DefaultHomeLocX = (uint)Convert.ToUInt32(attri);
|
||||||
}
|
}
|
||||||
|
|
||||||
// default home location Y
|
// default home location Y
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("DefaultLocationY");
|
attri = configData.GetAttribute("DefaultLocationY");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
string location = MainLog.Instance.CmdPrompt("Default Home Location Y", "1000");
|
string location = MainLog.Instance.CmdPrompt("Default Home Location Y", "1000");
|
||||||
configData.SetAttribute("DefaultLocationY", location);
|
configData.SetAttribute("DefaultLocationY", location);
|
||||||
this.DefaultHomeLocY = (uint)Convert.ToUInt32(location);
|
this.DefaultHomeLocY = (uint)Convert.ToUInt32(location);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.DefaultHomeLocY = (uint)Convert.ToUInt32(attri);
|
this.DefaultHomeLocY = (uint)Convert.ToUInt32(attri);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!isSandbox)
|
if (!isSandbox)
|
||||||
{
|
{
|
||||||
//Grid Server
|
//Grid Server
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("GridServerURL");
|
attri = configData.GetAttribute("GridServerURL");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
this.GridURL = MainLog.Instance.CmdPrompt("Grid server URL", "http://127.0.0.1:8001/");
|
this.GridURL = MainLog.Instance.CmdPrompt("Grid server URL", "http://127.0.0.1:8001/");
|
||||||
configData.SetAttribute("GridServerURL", this.GridURL);
|
configData.SetAttribute("GridServerURL", this.GridURL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.GridURL = attri;
|
this.GridURL = attri;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Grid Send Key
|
//Grid Send Key
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("GridSendKey");
|
attri = configData.GetAttribute("GridSendKey");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
this.GridSendKey = MainLog.Instance.CmdPrompt("Key to send to grid server", "null");
|
this.GridSendKey = MainLog.Instance.CmdPrompt("Key to send to grid server", "null");
|
||||||
configData.SetAttribute("GridSendKey", this.GridSendKey);
|
configData.SetAttribute("GridSendKey", this.GridSendKey);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.GridSendKey = attri;
|
this.GridSendKey = attri;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Grid Receive Key
|
//Grid Receive Key
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("GridRecvKey");
|
attri = configData.GetAttribute("GridRecvKey");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
this.GridRecvKey = MainLog.Instance.CmdPrompt("Key to expect from grid server", "null");
|
this.GridRecvKey = MainLog.Instance.CmdPrompt("Key to expect from grid server", "null");
|
||||||
configData.SetAttribute("GridRecvKey", this.GridRecvKey);
|
configData.SetAttribute("GridRecvKey", this.GridRecvKey);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.GridRecvKey = attri;
|
this.GridRecvKey = attri;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Grid Server
|
//Grid Server
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("UserServerURL");
|
attri = configData.GetAttribute("UserServerURL");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
this.UserURL= MainLog.Instance.CmdPrompt("User server URL", "http://127.0.0.1:8002/");
|
this.UserURL= MainLog.Instance.CmdPrompt("User server URL", "http://127.0.0.1:8002/");
|
||||||
configData.SetAttribute("UserServerURL", this.UserURL);
|
configData.SetAttribute("UserServerURL", this.UserURL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.UserURL = attri;
|
this.UserURL = attri;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Grid Send Key
|
//Grid Send Key
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("UserSendKey");
|
attri = configData.GetAttribute("UserSendKey");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
this.UserSendKey = MainLog.Instance.CmdPrompt("Key to send to user server", "null");
|
this.UserSendKey = MainLog.Instance.CmdPrompt("Key to send to user server", "null");
|
||||||
configData.SetAttribute("UserSendKey", this.UserSendKey);
|
configData.SetAttribute("UserSendKey", this.UserSendKey);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.UserSendKey = attri;
|
this.UserSendKey = attri;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Grid Receive Key
|
//Grid Receive Key
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("UserRecvKey");
|
attri = configData.GetAttribute("UserRecvKey");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
this.UserRecvKey = MainLog.Instance.CmdPrompt("Key to expect from user server", "null");
|
this.UserRecvKey = MainLog.Instance.CmdPrompt("Key to expect from user server", "null");
|
||||||
configData.SetAttribute("UserRecvKey", this.UserRecvKey);
|
configData.SetAttribute("UserRecvKey", this.UserRecvKey);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.UserRecvKey = attri;
|
this.UserRecvKey = attri;
|
||||||
}
|
}
|
||||||
|
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("AssetServerURL");
|
attri = configData.GetAttribute("AssetServerURL");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
this.AssetURL = MainLog.Instance.CmdPrompt("Asset server URL", "http://127.0.0.1:8003/");
|
this.AssetURL = MainLog.Instance.CmdPrompt("Asset server URL", "http://127.0.0.1:8003/");
|
||||||
configData.SetAttribute("AssetServerURL", this.GridURL);
|
configData.SetAttribute("AssetServerURL", this.GridURL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.AssetURL = attri;
|
this.AssetURL = attri;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
configData.Commit();
|
configData.Commit();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
|
MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
|
||||||
MainLog.Instance.Warn(e.ToString());
|
MainLog.Instance.Warn(e.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,120 +1,120 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
|
|
||||||
public class ParcelData
|
public class ParcelData
|
||||||
{
|
{
|
||||||
public byte[] parcelBitmapByteArray = new byte[512];
|
public byte[] parcelBitmapByteArray = new byte[512];
|
||||||
public string parcelName = "Your Parcel";
|
public string parcelName = "Your Parcel";
|
||||||
public string parcelDesc = "";
|
public string parcelDesc = "";
|
||||||
public LLUUID ownerID = new LLUUID();
|
public LLUUID ownerID = new LLUUID();
|
||||||
public bool isGroupOwned = false;
|
public bool isGroupOwned = false;
|
||||||
public LLVector3 AABBMin = new LLVector3();
|
public LLVector3 AABBMin = new LLVector3();
|
||||||
public LLVector3 AABBMax = new LLVector3();
|
public LLVector3 AABBMax = new LLVector3();
|
||||||
public int area = 0;
|
public int area = 0;
|
||||||
public uint auctionID = 0; //Unemplemented. If set to 0, not being auctioned
|
public uint auctionID = 0; //Unemplemented. If set to 0, not being auctioned
|
||||||
public LLUUID authBuyerID = new LLUUID(); //Unemplemented. Authorized Buyer's UUID
|
public LLUUID authBuyerID = new LLUUID(); //Unemplemented. Authorized Buyer's UUID
|
||||||
public Parcel.ParcelCategory category = new Parcel.ParcelCategory(); //Unemplemented. Parcel's chosen category
|
public Parcel.ParcelCategory category = new Parcel.ParcelCategory(); //Unemplemented. Parcel's chosen category
|
||||||
public int claimDate = 0; //Unemplemented
|
public int claimDate = 0; //Unemplemented
|
||||||
public int claimPrice = 0; //Unemplemented
|
public int claimPrice = 0; //Unemplemented
|
||||||
public LLUUID groupID = new LLUUID(); //Unemplemented
|
public LLUUID groupID = new LLUUID(); //Unemplemented
|
||||||
public int groupPrims = 0;
|
public int groupPrims = 0;
|
||||||
public int otherPrims = 0;
|
public int otherPrims = 0;
|
||||||
public int ownerPrims = 0;
|
public int ownerPrims = 0;
|
||||||
public int selectedPrims = 0;
|
public int selectedPrims = 0;
|
||||||
public int simwidePrims = 0;
|
public int simwidePrims = 0;
|
||||||
public int simwideArea = 0;
|
public int simwideArea = 0;
|
||||||
public int salePrice = 0; //Unemeplemented. Parcels price.
|
public int salePrice = 0; //Unemeplemented. Parcels price.
|
||||||
public Parcel.ParcelStatus parcelStatus = Parcel.ParcelStatus.Leased;
|
public Parcel.ParcelStatus parcelStatus = Parcel.ParcelStatus.Leased;
|
||||||
public uint parcelFlags = (uint)Parcel.ParcelFlags.AllowFly | (uint)Parcel.ParcelFlags.AllowLandmark | (uint)Parcel.ParcelFlags.AllowAllObjectEntry | (uint)Parcel.ParcelFlags.AllowDeedToGroup | (uint)Parcel.ParcelFlags.AllowTerraform | (uint)Parcel.ParcelFlags.CreateObjects | (uint)Parcel.ParcelFlags.AllowOtherScripts;
|
public uint parcelFlags = (uint)Parcel.ParcelFlags.AllowFly | (uint)Parcel.ParcelFlags.AllowLandmark | (uint)Parcel.ParcelFlags.AllowAllObjectEntry | (uint)Parcel.ParcelFlags.AllowDeedToGroup | (uint)Parcel.ParcelFlags.AllowTerraform | (uint)Parcel.ParcelFlags.CreateObjects | (uint)Parcel.ParcelFlags.AllowOtherScripts;
|
||||||
public byte landingType = 0;
|
public byte landingType = 0;
|
||||||
public byte mediaAutoScale = 0;
|
public byte mediaAutoScale = 0;
|
||||||
public LLUUID mediaID = LLUUID.Zero;
|
public LLUUID mediaID = LLUUID.Zero;
|
||||||
public int localID = 0;
|
public int localID = 0;
|
||||||
public LLUUID globalID = new LLUUID();
|
public LLUUID globalID = new LLUUID();
|
||||||
|
|
||||||
public string mediaURL = "";
|
public string mediaURL = "";
|
||||||
public string musicURL = "";
|
public string musicURL = "";
|
||||||
public float passHours = 0;
|
public float passHours = 0;
|
||||||
public int passPrice = 0;
|
public int passPrice = 0;
|
||||||
public LLUUID snapshotID = LLUUID.Zero;
|
public LLUUID snapshotID = LLUUID.Zero;
|
||||||
public LLVector3 userLocation = new LLVector3();
|
public LLVector3 userLocation = new LLVector3();
|
||||||
public LLVector3 userLookAt = new LLVector3();
|
public LLVector3 userLookAt = new LLVector3();
|
||||||
|
|
||||||
public ParcelData()
|
public ParcelData()
|
||||||
{
|
{
|
||||||
globalID = LLUUID.Random();
|
globalID = LLUUID.Random();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ParcelData Copy()
|
public ParcelData Copy()
|
||||||
{
|
{
|
||||||
ParcelData parcelData = new ParcelData();
|
ParcelData parcelData = new ParcelData();
|
||||||
|
|
||||||
parcelData.AABBMax = this.AABBMax;
|
parcelData.AABBMax = this.AABBMax;
|
||||||
parcelData.AABBMin = this.AABBMin;
|
parcelData.AABBMin = this.AABBMin;
|
||||||
parcelData.area = this.area;
|
parcelData.area = this.area;
|
||||||
parcelData.auctionID = this.auctionID;
|
parcelData.auctionID = this.auctionID;
|
||||||
parcelData.authBuyerID = this.authBuyerID;
|
parcelData.authBuyerID = this.authBuyerID;
|
||||||
parcelData.category = this.category;
|
parcelData.category = this.category;
|
||||||
parcelData.claimDate = this.claimDate;
|
parcelData.claimDate = this.claimDate;
|
||||||
parcelData.claimPrice = this.claimPrice;
|
parcelData.claimPrice = this.claimPrice;
|
||||||
parcelData.globalID = this.globalID;
|
parcelData.globalID = this.globalID;
|
||||||
parcelData.groupID = this.groupID;
|
parcelData.groupID = this.groupID;
|
||||||
parcelData.groupPrims = this.groupPrims;
|
parcelData.groupPrims = this.groupPrims;
|
||||||
parcelData.otherPrims = this.otherPrims;
|
parcelData.otherPrims = this.otherPrims;
|
||||||
parcelData.ownerPrims = this.ownerPrims;
|
parcelData.ownerPrims = this.ownerPrims;
|
||||||
parcelData.selectedPrims = this.selectedPrims;
|
parcelData.selectedPrims = this.selectedPrims;
|
||||||
parcelData.isGroupOwned = this.isGroupOwned;
|
parcelData.isGroupOwned = this.isGroupOwned;
|
||||||
parcelData.localID = this.localID;
|
parcelData.localID = this.localID;
|
||||||
parcelData.landingType = this.landingType;
|
parcelData.landingType = this.landingType;
|
||||||
parcelData.mediaAutoScale = this.mediaAutoScale;
|
parcelData.mediaAutoScale = this.mediaAutoScale;
|
||||||
parcelData.mediaID = this.mediaID;
|
parcelData.mediaID = this.mediaID;
|
||||||
parcelData.mediaURL = this.mediaURL;
|
parcelData.mediaURL = this.mediaURL;
|
||||||
parcelData.musicURL = this.musicURL;
|
parcelData.musicURL = this.musicURL;
|
||||||
parcelData.ownerID = this.ownerID;
|
parcelData.ownerID = this.ownerID;
|
||||||
parcelData.parcelBitmapByteArray = (byte[])this.parcelBitmapByteArray.Clone();
|
parcelData.parcelBitmapByteArray = (byte[])this.parcelBitmapByteArray.Clone();
|
||||||
parcelData.parcelDesc = this.parcelDesc;
|
parcelData.parcelDesc = this.parcelDesc;
|
||||||
parcelData.parcelFlags = this.parcelFlags;
|
parcelData.parcelFlags = this.parcelFlags;
|
||||||
parcelData.parcelName = this.parcelName;
|
parcelData.parcelName = this.parcelName;
|
||||||
parcelData.parcelStatus = this.parcelStatus;
|
parcelData.parcelStatus = this.parcelStatus;
|
||||||
parcelData.passHours = this.passHours;
|
parcelData.passHours = this.passHours;
|
||||||
parcelData.passPrice = this.passPrice;
|
parcelData.passPrice = this.passPrice;
|
||||||
parcelData.salePrice = this.salePrice;
|
parcelData.salePrice = this.salePrice;
|
||||||
parcelData.snapshotID = this.snapshotID;
|
parcelData.snapshotID = this.snapshotID;
|
||||||
parcelData.userLocation = this.userLocation;
|
parcelData.userLocation = this.userLocation;
|
||||||
parcelData.userLookAt = this.userLookAt;
|
parcelData.userLookAt = this.userLookAt;
|
||||||
|
|
||||||
return parcelData;
|
return parcelData;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,228 +1,228 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
public class PrimData
|
public class PrimData
|
||||||
{
|
{
|
||||||
private const uint FULL_MASK_PERMISSIONS = 2147483647;
|
private const uint FULL_MASK_PERMISSIONS = 2147483647;
|
||||||
|
|
||||||
public LLUUID OwnerID;
|
public LLUUID OwnerID;
|
||||||
public byte PCode;
|
public byte PCode;
|
||||||
public ushort PathBegin;
|
public ushort PathBegin;
|
||||||
public ushort PathEnd;
|
public ushort PathEnd;
|
||||||
public byte PathScaleX;
|
public byte PathScaleX;
|
||||||
public byte PathScaleY;
|
public byte PathScaleY;
|
||||||
public byte PathShearX;
|
public byte PathShearX;
|
||||||
public byte PathShearY;
|
public byte PathShearY;
|
||||||
public sbyte PathSkew;
|
public sbyte PathSkew;
|
||||||
public ushort ProfileBegin;
|
public ushort ProfileBegin;
|
||||||
public ushort ProfileEnd;
|
public ushort ProfileEnd;
|
||||||
public LLVector3 Scale;
|
public LLVector3 Scale;
|
||||||
public byte PathCurve;
|
public byte PathCurve;
|
||||||
public byte ProfileCurve;
|
public byte ProfileCurve;
|
||||||
public uint ParentID = 0;
|
public uint ParentID = 0;
|
||||||
public ushort ProfileHollow;
|
public ushort ProfileHollow;
|
||||||
public sbyte PathRadiusOffset;
|
public sbyte PathRadiusOffset;
|
||||||
public byte PathRevolutions;
|
public byte PathRevolutions;
|
||||||
public sbyte PathTaperX;
|
public sbyte PathTaperX;
|
||||||
public sbyte PathTaperY;
|
public sbyte PathTaperY;
|
||||||
public sbyte PathTwist;
|
public sbyte PathTwist;
|
||||||
public sbyte PathTwistBegin;
|
public sbyte PathTwistBegin;
|
||||||
public byte[] TextureEntry; // a LL textureEntry in byte[] format
|
public byte[] TextureEntry; // a LL textureEntry in byte[] format
|
||||||
|
|
||||||
public Int32 CreationDate;
|
public Int32 CreationDate;
|
||||||
public uint OwnerMask = FULL_MASK_PERMISSIONS;
|
public uint OwnerMask = FULL_MASK_PERMISSIONS;
|
||||||
public uint NextOwnerMask = FULL_MASK_PERMISSIONS;
|
public uint NextOwnerMask = FULL_MASK_PERMISSIONS;
|
||||||
public uint GroupMask = FULL_MASK_PERMISSIONS;
|
public uint GroupMask = FULL_MASK_PERMISSIONS;
|
||||||
public uint EveryoneMask = FULL_MASK_PERMISSIONS;
|
public uint EveryoneMask = FULL_MASK_PERMISSIONS;
|
||||||
public uint BaseMask = FULL_MASK_PERMISSIONS;
|
public uint BaseMask = FULL_MASK_PERMISSIONS;
|
||||||
|
|
||||||
//following only used during prim storage
|
//following only used during prim storage
|
||||||
public LLVector3 Position;
|
public LLVector3 Position;
|
||||||
public LLQuaternion Rotation = new LLQuaternion(0, 1, 0, 0);
|
public LLQuaternion Rotation = new LLQuaternion(0, 1, 0, 0);
|
||||||
public uint LocalID;
|
public uint LocalID;
|
||||||
public LLUUID FullID;
|
public LLUUID FullID;
|
||||||
|
|
||||||
public PrimData()
|
public PrimData()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public PrimData(byte[] data)
|
public PrimData(byte[] data)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
this.OwnerID = new LLUUID(data, i); i += 16;
|
this.OwnerID = new LLUUID(data, i); i += 16;
|
||||||
this.PCode = data[i++];
|
this.PCode = data[i++];
|
||||||
this.PathBegin = (ushort)(data[i++] + (data[i++] << 8));
|
this.PathBegin = (ushort)(data[i++] + (data[i++] << 8));
|
||||||
this.PathEnd = (ushort)(data[i++] + (data[i++] << 8));
|
this.PathEnd = (ushort)(data[i++] + (data[i++] << 8));
|
||||||
this.PathScaleX = data[i++];
|
this.PathScaleX = data[i++];
|
||||||
this.PathScaleY = data[i++];
|
this.PathScaleY = data[i++];
|
||||||
this.PathShearX = data[i++];
|
this.PathShearX = data[i++];
|
||||||
this.PathShearY = data[i++];
|
this.PathShearY = data[i++];
|
||||||
this.PathSkew = (sbyte)data[i++];
|
this.PathSkew = (sbyte)data[i++];
|
||||||
this.ProfileBegin = (ushort)(data[i++] + (data[i++] << 8));
|
this.ProfileBegin = (ushort)(data[i++] + (data[i++] << 8));
|
||||||
this.ProfileEnd = (ushort)(data[i++] + (data[i++] << 8));
|
this.ProfileEnd = (ushort)(data[i++] + (data[i++] << 8));
|
||||||
this.Scale = new LLVector3(data, i); i += 12;
|
this.Scale = new LLVector3(data, i); i += 12;
|
||||||
this.PathCurve = data[i++];
|
this.PathCurve = data[i++];
|
||||||
this.ProfileCurve = data[i++];
|
this.ProfileCurve = data[i++];
|
||||||
this.ParentID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
|
this.ParentID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
|
||||||
this.ProfileHollow = (ushort)(data[i++] + (data[i++] << 8));
|
this.ProfileHollow = (ushort)(data[i++] + (data[i++] << 8));
|
||||||
this.PathRadiusOffset = (sbyte)data[i++];
|
this.PathRadiusOffset = (sbyte)data[i++];
|
||||||
this.PathRevolutions = data[i++];
|
this.PathRevolutions = data[i++];
|
||||||
this.PathTaperX = (sbyte)data[i++];
|
this.PathTaperX = (sbyte)data[i++];
|
||||||
this.PathTaperY = (sbyte)data[i++];
|
this.PathTaperY = (sbyte)data[i++];
|
||||||
this.PathTwist = (sbyte)data[i++];
|
this.PathTwist = (sbyte)data[i++];
|
||||||
this.PathTwistBegin = (sbyte)data[i++];
|
this.PathTwistBegin = (sbyte)data[i++];
|
||||||
ushort length = (ushort)(data[i++] + (data[i++] << 8));
|
ushort length = (ushort)(data[i++] + (data[i++] << 8));
|
||||||
this.TextureEntry = new byte[length];
|
this.TextureEntry = new byte[length];
|
||||||
Array.Copy(data, i, TextureEntry, 0, length); i += 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.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.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.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.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.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.BaseMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
|
||||||
this.Position = new LLVector3(data, i); i += 12;
|
this.Position = new LLVector3(data, i); i += 12;
|
||||||
this.Rotation = new LLQuaternion(data, i, true); 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.LocalID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
|
||||||
this.FullID = new LLUUID(data, i); i += 16;
|
this.FullID = new LLUUID(data, i); i += 16;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] ToBytes()
|
public byte[] ToBytes()
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
byte[] bytes = new byte[126 + TextureEntry.Length];
|
byte[] bytes = new byte[126 + TextureEntry.Length];
|
||||||
Array.Copy(OwnerID.GetBytes(), 0, bytes, i, 16); i += 16;
|
Array.Copy(OwnerID.GetBytes(), 0, bytes, i, 16); i += 16;
|
||||||
bytes[i++] = this.PCode;
|
bytes[i++] = this.PCode;
|
||||||
bytes[i++] = (byte)(this.PathBegin % 256);
|
bytes[i++] = (byte)(this.PathBegin % 256);
|
||||||
bytes[i++] = (byte)((this.PathBegin >> 8) % 256);
|
bytes[i++] = (byte)((this.PathBegin >> 8) % 256);
|
||||||
bytes[i++] = (byte)(this.PathEnd % 256);
|
bytes[i++] = (byte)(this.PathEnd % 256);
|
||||||
bytes[i++] = (byte)((this.PathEnd >> 8) % 256);
|
bytes[i++] = (byte)((this.PathEnd >> 8) % 256);
|
||||||
bytes[i++] = this.PathScaleX;
|
bytes[i++] = this.PathScaleX;
|
||||||
bytes[i++] = this.PathScaleY;
|
bytes[i++] = this.PathScaleY;
|
||||||
bytes[i++] = this.PathShearX;
|
bytes[i++] = this.PathShearX;
|
||||||
bytes[i++] = this.PathShearY;
|
bytes[i++] = this.PathShearY;
|
||||||
bytes[i++] = (byte)this.PathSkew;
|
bytes[i++] = (byte)this.PathSkew;
|
||||||
bytes[i++] = (byte)(this.ProfileBegin % 256);
|
bytes[i++] = (byte)(this.ProfileBegin % 256);
|
||||||
bytes[i++] = (byte)((this.ProfileBegin >> 8) % 256);
|
bytes[i++] = (byte)((this.ProfileBegin >> 8) % 256);
|
||||||
bytes[i++] = (byte)(this.ProfileEnd % 256);
|
bytes[i++] = (byte)(this.ProfileEnd % 256);
|
||||||
bytes[i++] = (byte)((this.ProfileEnd >> 8) % 256);
|
bytes[i++] = (byte)((this.ProfileEnd >> 8) % 256);
|
||||||
Array.Copy(Scale.GetBytes(), 0, bytes, i, 12); i += 12;
|
Array.Copy(Scale.GetBytes(), 0, bytes, i, 12); i += 12;
|
||||||
bytes[i++] = this.PathCurve;
|
bytes[i++] = this.PathCurve;
|
||||||
bytes[i++] = this.ProfileCurve;
|
bytes[i++] = this.ProfileCurve;
|
||||||
bytes[i++] = (byte)(ParentID % 256);
|
bytes[i++] = (byte)(ParentID % 256);
|
||||||
bytes[i++] = (byte)((ParentID >> 8) % 256);
|
bytes[i++] = (byte)((ParentID >> 8) % 256);
|
||||||
bytes[i++] = (byte)((ParentID >> 16) % 256);
|
bytes[i++] = (byte)((ParentID >> 16) % 256);
|
||||||
bytes[i++] = (byte)((ParentID >> 24) % 256);
|
bytes[i++] = (byte)((ParentID >> 24) % 256);
|
||||||
bytes[i++] = (byte)(this.ProfileHollow % 256);
|
bytes[i++] = (byte)(this.ProfileHollow % 256);
|
||||||
bytes[i++] = (byte)((this.ProfileHollow >> 8) % 256);
|
bytes[i++] = (byte)((this.ProfileHollow >> 8) % 256);
|
||||||
bytes[i++] = ((byte)this.PathRadiusOffset);
|
bytes[i++] = ((byte)this.PathRadiusOffset);
|
||||||
bytes[i++] = this.PathRevolutions;
|
bytes[i++] = this.PathRevolutions;
|
||||||
bytes[i++] = ((byte)this.PathTaperX);
|
bytes[i++] = ((byte)this.PathTaperX);
|
||||||
bytes[i++] = ((byte)this.PathTaperY);
|
bytes[i++] = ((byte)this.PathTaperY);
|
||||||
bytes[i++] = ((byte)this.PathTwist);
|
bytes[i++] = ((byte)this.PathTwist);
|
||||||
bytes[i++] = ((byte)this.PathTwistBegin);
|
bytes[i++] = ((byte)this.PathTwistBegin);
|
||||||
bytes[i++] = (byte)(TextureEntry.Length % 256);
|
bytes[i++] = (byte)(TextureEntry.Length % 256);
|
||||||
bytes[i++] = (byte)((TextureEntry.Length >> 8) % 256);
|
bytes[i++] = (byte)((TextureEntry.Length >> 8) % 256);
|
||||||
Array.Copy(TextureEntry, 0, bytes, i, TextureEntry.Length); i += TextureEntry.Length;
|
Array.Copy(TextureEntry, 0, bytes, i, TextureEntry.Length); i += TextureEntry.Length;
|
||||||
bytes[i++] = (byte)(this.CreationDate % 256);
|
bytes[i++] = (byte)(this.CreationDate % 256);
|
||||||
bytes[i++] = (byte)((this.CreationDate >> 8) % 256);
|
bytes[i++] = (byte)((this.CreationDate >> 8) % 256);
|
||||||
bytes[i++] = (byte)((this.CreationDate >> 16) % 256);
|
bytes[i++] = (byte)((this.CreationDate >> 16) % 256);
|
||||||
bytes[i++] = (byte)((this.CreationDate >> 24) % 256);
|
bytes[i++] = (byte)((this.CreationDate >> 24) % 256);
|
||||||
bytes[i++] = (byte)(this.OwnerMask % 256);
|
bytes[i++] = (byte)(this.OwnerMask % 256);
|
||||||
bytes[i++] = (byte)((this.OwnerMask >> 8) % 256);
|
bytes[i++] = (byte)((this.OwnerMask >> 8) % 256);
|
||||||
bytes[i++] = (byte)((this.OwnerMask >> 16) % 256);
|
bytes[i++] = (byte)((this.OwnerMask >> 16) % 256);
|
||||||
bytes[i++] = (byte)((this.OwnerMask >> 24) % 256);
|
bytes[i++] = (byte)((this.OwnerMask >> 24) % 256);
|
||||||
bytes[i++] = (byte)(this.NextOwnerMask % 256);
|
bytes[i++] = (byte)(this.NextOwnerMask % 256);
|
||||||
bytes[i++] = (byte)((this.NextOwnerMask >> 8) % 256);
|
bytes[i++] = (byte)((this.NextOwnerMask >> 8) % 256);
|
||||||
bytes[i++] = (byte)((this.NextOwnerMask >> 16) % 256);
|
bytes[i++] = (byte)((this.NextOwnerMask >> 16) % 256);
|
||||||
bytes[i++] = (byte)((this.NextOwnerMask >> 24) % 256);
|
bytes[i++] = (byte)((this.NextOwnerMask >> 24) % 256);
|
||||||
bytes[i++] = (byte)(this.GroupMask % 256);
|
bytes[i++] = (byte)(this.GroupMask % 256);
|
||||||
bytes[i++] = (byte)((this.GroupMask >> 8) % 256);
|
bytes[i++] = (byte)((this.GroupMask >> 8) % 256);
|
||||||
bytes[i++] = (byte)((this.GroupMask >> 16) % 256);
|
bytes[i++] = (byte)((this.GroupMask >> 16) % 256);
|
||||||
bytes[i++] = (byte)((this.GroupMask >> 24) % 256);
|
bytes[i++] = (byte)((this.GroupMask >> 24) % 256);
|
||||||
bytes[i++] = (byte)(this.EveryoneMask % 256);
|
bytes[i++] = (byte)(this.EveryoneMask % 256);
|
||||||
bytes[i++] = (byte)((this.EveryoneMask >> 8) % 256);
|
bytes[i++] = (byte)((this.EveryoneMask >> 8) % 256);
|
||||||
bytes[i++] = (byte)((this.EveryoneMask >> 16) % 256);
|
bytes[i++] = (byte)((this.EveryoneMask >> 16) % 256);
|
||||||
bytes[i++] = (byte)((this.EveryoneMask >> 24) % 256);
|
bytes[i++] = (byte)((this.EveryoneMask >> 24) % 256);
|
||||||
bytes[i++] = (byte)(this.BaseMask % 256);
|
bytes[i++] = (byte)(this.BaseMask % 256);
|
||||||
bytes[i++] = (byte)((this.BaseMask >> 8) % 256);
|
bytes[i++] = (byte)((this.BaseMask >> 8) % 256);
|
||||||
bytes[i++] = (byte)((this.BaseMask >> 16) % 256);
|
bytes[i++] = (byte)((this.BaseMask >> 16) % 256);
|
||||||
bytes[i++] = (byte)((this.BaseMask >> 24) % 256);
|
bytes[i++] = (byte)((this.BaseMask >> 24) % 256);
|
||||||
Array.Copy(this.Position.GetBytes(), 0, bytes, i, 12); i += 12;
|
Array.Copy(this.Position.GetBytes(), 0, bytes, i, 12); i += 12;
|
||||||
if (this.Rotation == new LLQuaternion(0, 0, 0, 0))
|
if (this.Rotation == new LLQuaternion(0, 0, 0, 0))
|
||||||
{
|
{
|
||||||
this.Rotation = new LLQuaternion(0, 1, 0, 0);
|
this.Rotation = new LLQuaternion(0, 1, 0, 0);
|
||||||
}
|
}
|
||||||
Array.Copy(this.Rotation.GetBytes(), 0, bytes, i, 12); i += 12;
|
Array.Copy(this.Rotation.GetBytes(), 0, bytes, i, 12); i += 12;
|
||||||
bytes[i++] = (byte)(this.LocalID % 256);
|
bytes[i++] = (byte)(this.LocalID % 256);
|
||||||
bytes[i++] = (byte)((this.LocalID >> 8) % 256);
|
bytes[i++] = (byte)((this.LocalID >> 8) % 256);
|
||||||
bytes[i++] = (byte)((this.LocalID >> 16) % 256);
|
bytes[i++] = (byte)((this.LocalID >> 16) % 256);
|
||||||
bytes[i++] = (byte)((this.LocalID >> 24) % 256);
|
bytes[i++] = (byte)((this.LocalID >> 24) % 256);
|
||||||
Array.Copy(FullID.GetBytes(), 0, bytes, i, 16); i += 16;
|
Array.Copy(FullID.GetBytes(), 0, bytes, i, 16); i += 16;
|
||||||
|
|
||||||
return bytes;
|
return bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PrimData DefaultCube()
|
public static PrimData DefaultCube()
|
||||||
{
|
{
|
||||||
PrimData primData = new PrimData();
|
PrimData primData = new PrimData();
|
||||||
primData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
|
primData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
|
||||||
primData.FullID = LLUUID.Random();
|
primData.FullID = LLUUID.Random();
|
||||||
primData.Scale = new LLVector3(0.5f, 0.5f, 0.5f);
|
primData.Scale = new LLVector3(0.5f, 0.5f, 0.5f);
|
||||||
primData.Rotation = new LLQuaternion(0, 0, 0, 1);
|
primData.Rotation = new LLQuaternion(0, 0, 0, 1);
|
||||||
primData.PCode = 9;
|
primData.PCode = 9;
|
||||||
primData.ParentID = 0;
|
primData.ParentID = 0;
|
||||||
primData.PathBegin = 0;
|
primData.PathBegin = 0;
|
||||||
primData.PathEnd = 0;
|
primData.PathEnd = 0;
|
||||||
primData.PathScaleX = 0;
|
primData.PathScaleX = 0;
|
||||||
primData.PathScaleY = 0;
|
primData.PathScaleY = 0;
|
||||||
primData.PathShearX = 0;
|
primData.PathShearX = 0;
|
||||||
primData.PathShearY = 0;
|
primData.PathShearY = 0;
|
||||||
primData.PathSkew = 0;
|
primData.PathSkew = 0;
|
||||||
primData.ProfileBegin = 0;
|
primData.ProfileBegin = 0;
|
||||||
primData.ProfileEnd = 0;
|
primData.ProfileEnd = 0;
|
||||||
primData.PathCurve = 16;
|
primData.PathCurve = 16;
|
||||||
primData.ProfileCurve = 1;
|
primData.ProfileCurve = 1;
|
||||||
primData.ProfileHollow = 0;
|
primData.ProfileHollow = 0;
|
||||||
primData.PathRadiusOffset = 0;
|
primData.PathRadiusOffset = 0;
|
||||||
primData.PathRevolutions = 0;
|
primData.PathRevolutions = 0;
|
||||||
primData.PathTaperX = 0;
|
primData.PathTaperX = 0;
|
||||||
primData.PathTaperY = 0;
|
primData.PathTaperY = 0;
|
||||||
primData.PathTwist = 0;
|
primData.PathTwist = 0;
|
||||||
primData.PathTwistBegin = 0;
|
primData.PathTwistBegin = 0;
|
||||||
|
|
||||||
return primData;
|
return primData;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,109 +1,109 @@
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using libsecondlife.Packets;
|
using libsecondlife.Packets;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
public enum ShapeType
|
public enum ShapeType
|
||||||
{
|
{
|
||||||
Box,
|
Box,
|
||||||
Sphere,
|
Sphere,
|
||||||
Ring,
|
Ring,
|
||||||
Tube,
|
Tube,
|
||||||
Torus,
|
Torus,
|
||||||
Prism,
|
Prism,
|
||||||
Scuplted,
|
Scuplted,
|
||||||
Cylinder,
|
Cylinder,
|
||||||
Foliage,
|
Foliage,
|
||||||
Unknown
|
Unknown
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PrimitiveBaseShape
|
public class PrimitiveBaseShape
|
||||||
{
|
{
|
||||||
private ShapeType type = ShapeType.Unknown;
|
private ShapeType type = ShapeType.Unknown;
|
||||||
|
|
||||||
public byte PCode;
|
public byte PCode;
|
||||||
public ushort PathBegin;
|
public ushort PathBegin;
|
||||||
public ushort PathEnd;
|
public ushort PathEnd;
|
||||||
public byte PathScaleX;
|
public byte PathScaleX;
|
||||||
public byte PathScaleY;
|
public byte PathScaleY;
|
||||||
public byte PathShearX;
|
public byte PathShearX;
|
||||||
public byte PathShearY;
|
public byte PathShearY;
|
||||||
public sbyte PathSkew;
|
public sbyte PathSkew;
|
||||||
public ushort ProfileBegin;
|
public ushort ProfileBegin;
|
||||||
public ushort ProfileEnd;
|
public ushort ProfileEnd;
|
||||||
public LLVector3 Scale;
|
public LLVector3 Scale;
|
||||||
public byte PathCurve;
|
public byte PathCurve;
|
||||||
public byte ProfileCurve;
|
public byte ProfileCurve;
|
||||||
public ushort ProfileHollow;
|
public ushort ProfileHollow;
|
||||||
public sbyte PathRadiusOffset;
|
public sbyte PathRadiusOffset;
|
||||||
public byte PathRevolutions;
|
public byte PathRevolutions;
|
||||||
public sbyte PathTaperX;
|
public sbyte PathTaperX;
|
||||||
public sbyte PathTaperY;
|
public sbyte PathTaperY;
|
||||||
public sbyte PathTwist;
|
public sbyte PathTwist;
|
||||||
public sbyte PathTwistBegin;
|
public sbyte PathTwistBegin;
|
||||||
public byte[] TextureEntry; // a LL textureEntry in byte[] format
|
public byte[] TextureEntry; // a LL textureEntry in byte[] format
|
||||||
|
|
||||||
public ShapeType PrimType
|
public ShapeType PrimType
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return this.type;
|
return this.type;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public LLVector3 PrimScale
|
public LLVector3 PrimScale
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return this.Scale;
|
return this.Scale;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public PrimitiveBaseShape()
|
public PrimitiveBaseShape()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//void returns need to change of course
|
//void returns need to change of course
|
||||||
public void GetMesh()
|
public void GetMesh()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public PrimitiveBaseShape Copy()
|
public PrimitiveBaseShape Copy()
|
||||||
{
|
{
|
||||||
return (PrimitiveBaseShape) this.MemberwiseClone();
|
return (PrimitiveBaseShape) this.MemberwiseClone();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PrimitiveBaseShape DefaultBox()
|
public static PrimitiveBaseShape DefaultBox()
|
||||||
{
|
{
|
||||||
PrimitiveBaseShape primShape = new PrimitiveBaseShape();
|
PrimitiveBaseShape primShape = new PrimitiveBaseShape();
|
||||||
|
|
||||||
primShape.type = ShapeType.Box;
|
primShape.type = ShapeType.Box;
|
||||||
primShape.Scale = new LLVector3(0.5f, 0.5f, 0.5f);
|
primShape.Scale = new LLVector3(0.5f, 0.5f, 0.5f);
|
||||||
primShape.PCode = 9;
|
primShape.PCode = 9;
|
||||||
primShape.PathBegin = 0;
|
primShape.PathBegin = 0;
|
||||||
primShape.PathEnd = 0;
|
primShape.PathEnd = 0;
|
||||||
primShape.PathScaleX = 0;
|
primShape.PathScaleX = 0;
|
||||||
primShape.PathScaleY = 0;
|
primShape.PathScaleY = 0;
|
||||||
primShape.PathShearX = 0;
|
primShape.PathShearX = 0;
|
||||||
primShape.PathShearY = 0;
|
primShape.PathShearY = 0;
|
||||||
primShape.PathSkew = 0;
|
primShape.PathSkew = 0;
|
||||||
primShape.ProfileBegin = 0;
|
primShape.ProfileBegin = 0;
|
||||||
primShape.ProfileEnd = 0;
|
primShape.ProfileEnd = 0;
|
||||||
primShape.PathCurve = 16;
|
primShape.PathCurve = 16;
|
||||||
primShape.ProfileCurve = 1;
|
primShape.ProfileCurve = 1;
|
||||||
primShape.ProfileHollow = 0;
|
primShape.ProfileHollow = 0;
|
||||||
primShape.PathRadiusOffset = 0;
|
primShape.PathRadiusOffset = 0;
|
||||||
primShape.PathRevolutions = 0;
|
primShape.PathRevolutions = 0;
|
||||||
primShape.PathTaperX = 0;
|
primShape.PathTaperX = 0;
|
||||||
primShape.PathTaperY = 0;
|
primShape.PathTaperY = 0;
|
||||||
primShape.PathTwist = 0;
|
primShape.PathTwist = 0;
|
||||||
primShape.PathTwistBegin = 0;
|
primShape.PathTwistBegin = 0;
|
||||||
LLObject.TextureEntry ntex = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-9999-000000000005"));
|
LLObject.TextureEntry ntex = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-9999-000000000005"));
|
||||||
primShape.TextureEntry = ntex.ToBytes();
|
primShape.TextureEntry = ntex.ToBytes();
|
||||||
|
|
||||||
return primShape;
|
return primShape;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,121 +1,121 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A class for manipulating RegionHandle coordinates
|
/// A class for manipulating RegionHandle coordinates
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class RegionHandle
|
class RegionHandle
|
||||||
{
|
{
|
||||||
private UInt64 handle;
|
private UInt64 handle;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises a new grid-aware RegionHandle
|
/// Initialises a new grid-aware RegionHandle
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ip">IP Address of the Grid Server for this region</param>
|
/// <param name="ip">IP Address of the Grid Server for this region</param>
|
||||||
/// <param name="x">Grid X Coordinate</param>
|
/// <param name="x">Grid X Coordinate</param>
|
||||||
/// <param name="y">Grid Y Coordinate</param>
|
/// <param name="y">Grid Y Coordinate</param>
|
||||||
public RegionHandle(string ip, short x, short y)
|
public RegionHandle(string ip, short x, short y)
|
||||||
{
|
{
|
||||||
IPAddress addr = IPAddress.Parse(ip);
|
IPAddress addr = IPAddress.Parse(ip);
|
||||||
|
|
||||||
if (addr.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork)
|
if (addr.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork)
|
||||||
throw new Exception("Bad RegionHandle Parameter - must be an IPv4 address");
|
throw new Exception("Bad RegionHandle Parameter - must be an IPv4 address");
|
||||||
|
|
||||||
uint baseHandle = BitConverter.ToUInt32(addr.GetAddressBytes(), 0);
|
uint baseHandle = BitConverter.ToUInt32(addr.GetAddressBytes(), 0);
|
||||||
|
|
||||||
// Split the IP address in half
|
// Split the IP address in half
|
||||||
short a = (short)((baseHandle << 16) & 0xFFFF);
|
short a = (short)((baseHandle << 16) & 0xFFFF);
|
||||||
short b = (short)((baseHandle << 0) & 0xFFFF);
|
short b = (short)((baseHandle << 0) & 0xFFFF);
|
||||||
|
|
||||||
// Raise the bounds a little
|
// Raise the bounds a little
|
||||||
uint nx = (uint)x;
|
uint nx = (uint)x;
|
||||||
uint ny = (uint)y;
|
uint ny = (uint)y;
|
||||||
|
|
||||||
// Multiply grid coords to get region coords
|
// Multiply grid coords to get region coords
|
||||||
nx *= 256;
|
nx *= 256;
|
||||||
ny *= 256;
|
ny *= 256;
|
||||||
|
|
||||||
// Stuff the IP address in too
|
// Stuff the IP address in too
|
||||||
nx = (uint)a << 16;
|
nx = (uint)a << 16;
|
||||||
ny = (uint)b << 16;
|
ny = (uint)b << 16;
|
||||||
|
|
||||||
handle = ((UInt64)nx << 32) | (uint)ny;
|
handle = ((UInt64)nx << 32) | (uint)ny;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises a new RegionHandle that is not inter-grid aware
|
/// Initialises a new RegionHandle that is not inter-grid aware
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="x">Grid X Coordinate</param>
|
/// <param name="x">Grid X Coordinate</param>
|
||||||
/// <param name="y">Grid Y Coordinate</param>
|
/// <param name="y">Grid Y Coordinate</param>
|
||||||
public RegionHandle(uint x, uint y)
|
public RegionHandle(uint x, uint y)
|
||||||
{
|
{
|
||||||
handle = ((x * 256) << 32) | (y * 256);
|
handle = ((x * 256) << 32) | (y * 256);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises a new RegionHandle from an existing value
|
/// Initialises a new RegionHandle from an existing value
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="Region">A U64 RegionHandle</param>
|
/// <param name="Region">A U64 RegionHandle</param>
|
||||||
public RegionHandle(UInt64 Region)
|
public RegionHandle(UInt64 Region)
|
||||||
{
|
{
|
||||||
handle = Region;
|
handle = Region;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the Grid Masked RegionHandle - For use in Teleport packets and other packets where sending the grid IP address may be handy.
|
/// Returns the Grid Masked RegionHandle - For use in Teleport packets and other packets where sending the grid IP address may be handy.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>Do not use for SimulatorEnable packets. The client will choke.</remarks>
|
/// <remarks>Do not use for SimulatorEnable packets. The client will choke.</remarks>
|
||||||
/// <returns>Region Handle including IP Address encoding</returns>
|
/// <returns>Region Handle including IP Address encoding</returns>
|
||||||
public UInt64 getTeleportHandle()
|
public UInt64 getTeleportHandle()
|
||||||
{
|
{
|
||||||
return handle;
|
return handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a RegionHandle which may be used for SimulatorEnable packets. Removes the IP address encoding and returns the lower bounds.
|
/// Returns a RegionHandle which may be used for SimulatorEnable packets. Removes the IP address encoding and returns the lower bounds.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A U64 RegionHandle for use in SimulatorEnable packets.</returns>
|
/// <returns>A U64 RegionHandle for use in SimulatorEnable packets.</returns>
|
||||||
public UInt64 getNeighbourHandle()
|
public UInt64 getNeighbourHandle()
|
||||||
{
|
{
|
||||||
UInt64 mask = 0x0000FFFF0000FFFF;
|
UInt64 mask = 0x0000FFFF0000FFFF;
|
||||||
|
|
||||||
return handle | mask;
|
return handle | mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the IP Address of the GridServer from a Grid-Encoded RegionHandle
|
/// Returns the IP Address of the GridServer from a Grid-Encoded RegionHandle
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Grid Server IP Address</returns>
|
/// <returns>Grid Server IP Address</returns>
|
||||||
public IPAddress getGridIP()
|
public IPAddress getGridIP()
|
||||||
{
|
{
|
||||||
uint a = (uint)((handle >> 16) & 0xFFFF);
|
uint a = (uint)((handle >> 16) & 0xFFFF);
|
||||||
uint b = (uint)((handle >> 48) & 0xFFFF);
|
uint b = (uint)((handle >> 48) & 0xFFFF);
|
||||||
|
|
||||||
return new IPAddress((long)(a << 16) | (long)b);
|
return new IPAddress((long)(a << 16) | (long)b);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the X Coordinate from a Grid-Encoded RegionHandle
|
/// Returns the X Coordinate from a Grid-Encoded RegionHandle
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>X Coordinate</returns>
|
/// <returns>X Coordinate</returns>
|
||||||
public uint getGridX()
|
public uint getGridX()
|
||||||
{
|
{
|
||||||
uint x = (uint)((handle >> 32) & 0xFFFF);
|
uint x = (uint)((handle >> 32) & 0xFFFF);
|
||||||
|
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the Y Coordinate from a Grid-Encoded RegionHandle
|
/// Returns the Y Coordinate from a Grid-Encoded RegionHandle
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Y Coordinate</returns>
|
/// <returns>Y Coordinate</returns>
|
||||||
public uint getGridY()
|
public uint getGridY()
|
||||||
{
|
{
|
||||||
uint y = (uint)((handle >> 0) & 0xFFFF);
|
uint y = (uint)((handle >> 0) & 0xFFFF);
|
||||||
|
|
||||||
return y;
|
return y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,342 +1,342 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Console;
|
using OpenSim.Framework.Console;
|
||||||
using OpenSim.Framework.Interfaces;
|
using OpenSim.Framework.Interfaces;
|
||||||
using OpenSim.Framework.Utilities;
|
using OpenSim.Framework.Utilities;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
public class RegionInfo
|
public class RegionInfo
|
||||||
{
|
{
|
||||||
public LLUUID SimUUID = new LLUUID();
|
public LLUUID SimUUID = new LLUUID();
|
||||||
public string RegionName = "";
|
public string RegionName = "";
|
||||||
|
|
||||||
private IPEndPoint m_internalEndPoint;
|
private IPEndPoint m_internalEndPoint;
|
||||||
public IPEndPoint InternalEndPoint
|
public IPEndPoint InternalEndPoint
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return m_internalEndPoint;
|
return m_internalEndPoint;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IPEndPoint ExternalEndPoint
|
public IPEndPoint ExternalEndPoint
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
// Old one defaults to IPv6
|
// Old one defaults to IPv6
|
||||||
//return new IPEndPoint( Dns.GetHostAddresses( m_externalHostName )[0], m_internalEndPoint.Port );
|
//return new IPEndPoint( Dns.GetHostAddresses( m_externalHostName )[0], m_internalEndPoint.Port );
|
||||||
|
|
||||||
// New method favors IPv4
|
// New method favors IPv4
|
||||||
IPAddress ia = null;
|
IPAddress ia = null;
|
||||||
foreach (IPAddress Adr in Dns.GetHostAddresses(m_externalHostName))
|
foreach (IPAddress Adr in Dns.GetHostAddresses(m_externalHostName))
|
||||||
{
|
{
|
||||||
if (ia == null)
|
if (ia == null)
|
||||||
ia = Adr;
|
ia = Adr;
|
||||||
|
|
||||||
if (Adr.AddressFamily == AddressFamily.InterNetwork)
|
if (Adr.AddressFamily == AddressFamily.InterNetwork)
|
||||||
{
|
{
|
||||||
ia = Adr;
|
ia = Adr;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new IPEndPoint(ia, m_internalEndPoint.Port);
|
return new IPEndPoint(ia, m_internalEndPoint.Port);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string m_externalHostName;
|
private string m_externalHostName;
|
||||||
public string ExternalHostName
|
public string ExternalHostName
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return m_externalHostName;
|
return m_externalHostName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private uint? m_regionLocX;
|
private uint? m_regionLocX;
|
||||||
public uint RegionLocX
|
public uint RegionLocX
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return m_regionLocX.Value;
|
return m_regionLocX.Value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private uint? m_regionLocY;
|
private uint? m_regionLocY;
|
||||||
public uint RegionLocY
|
public uint RegionLocY
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return m_regionLocY.Value;
|
return m_regionLocY.Value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private ulong? m_regionHandle;
|
private ulong? m_regionHandle;
|
||||||
public ulong RegionHandle
|
public ulong RegionHandle
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (!m_regionHandle.HasValue)
|
if (!m_regionHandle.HasValue)
|
||||||
{
|
{
|
||||||
m_regionHandle = Util.UIntsToLong((RegionLocX * 256), (RegionLocY * 256));
|
m_regionHandle = Util.UIntsToLong((RegionLocX * 256), (RegionLocY * 256));
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_regionHandle.Value;
|
return m_regionHandle.Value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only used for remote regions , ie ones not in the current instance
|
// Only used for remote regions , ie ones not in the current instance
|
||||||
private uint m_remotingPort;
|
private uint m_remotingPort;
|
||||||
public uint RemotingPort
|
public uint RemotingPort
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return m_remotingPort;
|
return m_remotingPort;
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
m_remotingPort = value;
|
m_remotingPort = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public string RemotingAddress;
|
public string RemotingAddress;
|
||||||
|
|
||||||
public string DataStore = "";
|
public string DataStore = "";
|
||||||
public bool isSandbox = false;
|
public bool isSandbox = false;
|
||||||
|
|
||||||
public LLUUID MasterAvatarAssignedUUID = new LLUUID();
|
public LLUUID MasterAvatarAssignedUUID = new LLUUID();
|
||||||
public string MasterAvatarFirstName = "";
|
public string MasterAvatarFirstName = "";
|
||||||
public string MasterAvatarLastName = "";
|
public string MasterAvatarLastName = "";
|
||||||
public string MasterAvatarSandboxPassword = "";
|
public string MasterAvatarSandboxPassword = "";
|
||||||
|
|
||||||
public EstateSettings estateSettings;
|
public EstateSettings estateSettings;
|
||||||
|
|
||||||
public RegionInfo()
|
public RegionInfo()
|
||||||
{
|
{
|
||||||
estateSettings = new EstateSettings();
|
estateSettings = new EstateSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri)
|
public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri)
|
||||||
: this()
|
: this()
|
||||||
{
|
{
|
||||||
m_regionLocX = regionLocX;
|
m_regionLocX = regionLocX;
|
||||||
m_regionLocY = regionLocY;
|
m_regionLocY = regionLocY;
|
||||||
|
|
||||||
m_internalEndPoint = internalEndPoint;
|
m_internalEndPoint = internalEndPoint;
|
||||||
m_externalHostName = externalUri;
|
m_externalHostName = externalUri;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void InitConfig(bool sandboxMode, IGenericConfig configData)
|
public void InitConfig(bool sandboxMode, IGenericConfig configData)
|
||||||
{
|
{
|
||||||
this.isSandbox = sandboxMode;
|
this.isSandbox = sandboxMode;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string attri = "";
|
string attri = "";
|
||||||
|
|
||||||
// Sim UUID
|
// Sim UUID
|
||||||
string simId = configData.GetAttribute("SimUUID");
|
string simId = configData.GetAttribute("SimUUID");
|
||||||
if (String.IsNullOrEmpty( simId ))
|
if (String.IsNullOrEmpty( simId ))
|
||||||
{
|
{
|
||||||
this.SimUUID = LLUUID.Random();
|
this.SimUUID = LLUUID.Random();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.SimUUID = new LLUUID(simId);
|
this.SimUUID = new LLUUID(simId);
|
||||||
}
|
}
|
||||||
configData.SetAttribute("SimUUID", this.SimUUID.ToString());
|
configData.SetAttribute("SimUUID", this.SimUUID.ToString());
|
||||||
|
|
||||||
this.RegionName = GetString(configData, "SimName", "OpenSim test", "Region Name");
|
this.RegionName = GetString(configData, "SimName", "OpenSim test", "Region Name");
|
||||||
|
|
||||||
//m_regionLocX = (uint) GetInt(configData, "SimLocationX", 1000, "Grid Location X");
|
//m_regionLocX = (uint) GetInt(configData, "SimLocationX", 1000, "Grid Location X");
|
||||||
|
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("SimLocationX");
|
attri = configData.GetAttribute("SimLocationX");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
string location = MainLog.Instance.CmdPrompt("Grid Location X", "1000");
|
string location = MainLog.Instance.CmdPrompt("Grid Location X", "1000");
|
||||||
configData.SetAttribute("SimLocationX", location);
|
configData.SetAttribute("SimLocationX", location);
|
||||||
m_regionLocX = (uint)Convert.ToUInt32(location);
|
m_regionLocX = (uint)Convert.ToUInt32(location);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_regionLocX = (uint)Convert.ToUInt32(attri);
|
m_regionLocX = (uint)Convert.ToUInt32(attri);
|
||||||
}
|
}
|
||||||
// Sim/Grid location Y
|
// Sim/Grid location Y
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("SimLocationY");
|
attri = configData.GetAttribute("SimLocationY");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
string location = MainLog.Instance.CmdPrompt("Grid Location Y", "1000");
|
string location = MainLog.Instance.CmdPrompt("Grid Location Y", "1000");
|
||||||
configData.SetAttribute("SimLocationY", location);
|
configData.SetAttribute("SimLocationY", location);
|
||||||
m_regionLocY = (uint)Convert.ToUInt32(location);
|
m_regionLocY = (uint)Convert.ToUInt32(location);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_regionLocY = (uint)Convert.ToUInt32(attri);
|
m_regionLocY = (uint)Convert.ToUInt32(attri);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_regionHandle = null;
|
m_regionHandle = null;
|
||||||
|
|
||||||
this.DataStore = GetString(configData, "Datastore", "localworld.yap", "Filename for local storage");
|
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");
|
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");
|
int internalPort = GetIPPort(configData, "InternalIPPort", "9000", "Internal IP Port for UDP client connections");
|
||||||
m_internalEndPoint = new IPEndPoint(internalAddress, internalPort);
|
m_internalEndPoint = new IPEndPoint(internalAddress, internalPort);
|
||||||
|
|
||||||
m_externalHostName = GetString(configData, "ExternalHostName", "127.0.0.1", "External Host Name");
|
m_externalHostName = GetString(configData, "ExternalHostName", "127.0.0.1", "External Host Name");
|
||||||
|
|
||||||
estateSettings.terrainFile =
|
estateSettings.terrainFile =
|
||||||
GetString(configData, "TerrainFile", "default.r32", "GENERAL SETTING: Default Terrain File");
|
GetString(configData, "TerrainFile", "default.r32", "GENERAL SETTING: Default Terrain File");
|
||||||
|
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("TerrainMultiplier");
|
attri = configData.GetAttribute("TerrainMultiplier");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
string re = MainLog.Instance.CmdPrompt("GENERAL SETTING: Terrain Height Multiplier", "60.0");
|
string re = MainLog.Instance.CmdPrompt("GENERAL SETTING: Terrain Height Multiplier", "60.0");
|
||||||
this.estateSettings.terrainMultiplier = Convert.ToDouble(re, CultureInfo.InvariantCulture);
|
this.estateSettings.terrainMultiplier = Convert.ToDouble(re, CultureInfo.InvariantCulture);
|
||||||
configData.SetAttribute("TerrainMultiplier", this.estateSettings.terrainMultiplier.ToString());
|
configData.SetAttribute("TerrainMultiplier", this.estateSettings.terrainMultiplier.ToString());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.estateSettings.terrainMultiplier = Convert.ToDouble(attri);
|
this.estateSettings.terrainMultiplier = Convert.ToDouble(attri);
|
||||||
}
|
}
|
||||||
|
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("MasterAvatarFirstName");
|
attri = configData.GetAttribute("MasterAvatarFirstName");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
this.MasterAvatarFirstName = MainLog.Instance.CmdPrompt("First name of Master Avatar (Land and Region Owner)", "Test");
|
this.MasterAvatarFirstName = MainLog.Instance.CmdPrompt("First name of Master Avatar (Land and Region Owner)", "Test");
|
||||||
|
|
||||||
configData.SetAttribute("MasterAvatarFirstName", this.MasterAvatarFirstName);
|
configData.SetAttribute("MasterAvatarFirstName", this.MasterAvatarFirstName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.MasterAvatarFirstName = attri;
|
this.MasterAvatarFirstName = attri;
|
||||||
}
|
}
|
||||||
|
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("MasterAvatarLastName");
|
attri = configData.GetAttribute("MasterAvatarLastName");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
this.MasterAvatarLastName = MainLog.Instance.CmdPrompt("Last name of Master Avatar (Land and Region Owner)", "User");
|
this.MasterAvatarLastName = MainLog.Instance.CmdPrompt("Last name of Master Avatar (Land and Region Owner)", "User");
|
||||||
|
|
||||||
configData.SetAttribute("MasterAvatarLastName", this.MasterAvatarLastName);
|
configData.SetAttribute("MasterAvatarLastName", this.MasterAvatarLastName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.MasterAvatarLastName = attri;
|
this.MasterAvatarLastName = attri;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isSandbox) //Sandbox Mode Specific Settings
|
if (isSandbox) //Sandbox Mode Specific Settings
|
||||||
{
|
{
|
||||||
attri = "";
|
attri = "";
|
||||||
attri = configData.GetAttribute("MasterAvatarSandboxPassword");
|
attri = configData.GetAttribute("MasterAvatarSandboxPassword");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
this.MasterAvatarSandboxPassword = MainLog.Instance.CmdPrompt("Password of Master Avatar (Needed for sandbox mode account creation only)", "test");
|
this.MasterAvatarSandboxPassword = MainLog.Instance.CmdPrompt("Password of Master Avatar (Needed for sandbox mode account creation only)", "test");
|
||||||
|
|
||||||
//Should I store this?
|
//Should I store this?
|
||||||
configData.SetAttribute("MasterAvatarSandboxPassword", this.MasterAvatarSandboxPassword);
|
configData.SetAttribute("MasterAvatarSandboxPassword", this.MasterAvatarSandboxPassword);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.MasterAvatarSandboxPassword = attri;
|
this.MasterAvatarSandboxPassword = attri;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
configData.Commit();
|
configData.Commit();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
|
MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
|
||||||
MainLog.Instance.Warn(e.ToString());
|
MainLog.Instance.Warn(e.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
MainLog.Instance.Verbose("Sim settings loaded:");
|
MainLog.Instance.Verbose("Sim settings loaded:");
|
||||||
MainLog.Instance.Verbose("UUID: " + this.SimUUID.ToStringHyphenated());
|
MainLog.Instance.Verbose("UUID: " + this.SimUUID.ToStringHyphenated());
|
||||||
MainLog.Instance.Verbose("Name: " + this.RegionName);
|
MainLog.Instance.Verbose("Name: " + this.RegionName);
|
||||||
MainLog.Instance.Verbose("Region Location: [" + this.RegionLocX.ToString() + "," + this.RegionLocY + "]");
|
MainLog.Instance.Verbose("Region Location: [" + this.RegionLocX.ToString() + "," + this.RegionLocY + "]");
|
||||||
MainLog.Instance.Verbose("Region Handle: " + this.RegionHandle.ToString());
|
MainLog.Instance.Verbose("Region Handle: " + this.RegionHandle.ToString());
|
||||||
MainLog.Instance.Verbose("Listening on IP end point: " + m_internalEndPoint.ToString() );
|
MainLog.Instance.Verbose("Listening on IP end point: " + m_internalEndPoint.ToString() );
|
||||||
MainLog.Instance.Verbose("Sandbox Mode? " + isSandbox.ToString());
|
MainLog.Instance.Verbose("Sandbox Mode? " + isSandbox.ToString());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private uint GetInt(IGenericConfig configData, string p, int p_3, string p_4)
|
private uint GetInt(IGenericConfig configData, string p, int p_3, string p_4)
|
||||||
{
|
{
|
||||||
throw new Exception("The method or operation is not implemented.");
|
throw new Exception("The method or operation is not implemented.");
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetString(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
|
private string GetString(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
|
||||||
{
|
{
|
||||||
string s = configData.GetAttribute(attrName);
|
string s = configData.GetAttribute(attrName);
|
||||||
|
|
||||||
if (String.IsNullOrEmpty( s ))
|
if (String.IsNullOrEmpty( s ))
|
||||||
{
|
{
|
||||||
s = MainLog.Instance.CmdPrompt(prompt, defaultvalue);
|
s = MainLog.Instance.CmdPrompt(prompt, defaultvalue);
|
||||||
configData.SetAttribute(attrName, s );
|
configData.SetAttribute(attrName, s );
|
||||||
}
|
}
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IPAddress GetIPAddress(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
|
private IPAddress GetIPAddress(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
|
||||||
{
|
{
|
||||||
string addressStr = configData.GetAttribute(attrName);
|
string addressStr = configData.GetAttribute(attrName);
|
||||||
|
|
||||||
IPAddress address;
|
IPAddress address;
|
||||||
|
|
||||||
if (!IPAddress.TryParse(addressStr, out address))
|
if (!IPAddress.TryParse(addressStr, out address))
|
||||||
{
|
{
|
||||||
address = MainLog.Instance.CmdPromptIPAddress(prompt, defaultvalue);
|
address = MainLog.Instance.CmdPromptIPAddress(prompt, defaultvalue);
|
||||||
configData.SetAttribute(attrName, address.ToString());
|
configData.SetAttribute(attrName, address.ToString());
|
||||||
}
|
}
|
||||||
return address;
|
return address;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int GetIPPort(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
|
private int GetIPPort(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
|
||||||
{
|
{
|
||||||
string portStr = configData.GetAttribute(attrName);
|
string portStr = configData.GetAttribute(attrName);
|
||||||
|
|
||||||
int port;
|
int port;
|
||||||
|
|
||||||
if (!int.TryParse(portStr, out port))
|
if (!int.TryParse(portStr, out port))
|
||||||
{
|
{
|
||||||
port = MainLog.Instance.CmdPromptIPPort(prompt, defaultvalue);
|
port = MainLog.Instance.CmdPromptIPPort(prompt, defaultvalue);
|
||||||
configData.SetAttribute(attrName, port.ToString());
|
configData.SetAttribute(attrName, port.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
return port;
|
return port;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,127 +1,127 @@
|
||||||
using System;
|
using System;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Types
|
namespace OpenSim.Framework.Types
|
||||||
{
|
{
|
||||||
class UUID
|
class UUID
|
||||||
{
|
{
|
||||||
public LLUUID llUUID;
|
public LLUUID llUUID;
|
||||||
|
|
||||||
public UUID(string uuid)
|
public UUID(string uuid)
|
||||||
{
|
{
|
||||||
llUUID = new LLUUID(uuid);
|
llUUID = new LLUUID(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID(byte[] uuid)
|
public UUID(byte[] uuid)
|
||||||
{
|
{
|
||||||
llUUID = new LLUUID(uuid, 0);
|
llUUID = new LLUUID(uuid, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID(byte[] uuid, int offset)
|
public UUID(byte[] uuid, int offset)
|
||||||
{
|
{
|
||||||
llUUID = new LLUUID(uuid, offset);
|
llUUID = new LLUUID(uuid, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID()
|
public UUID()
|
||||||
{
|
{
|
||||||
llUUID = LLUUID.Zero;
|
llUUID = LLUUID.Zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID(ulong uuid)
|
public UUID(ulong uuid)
|
||||||
{
|
{
|
||||||
llUUID = new LLUUID(uuid);
|
llUUID = new LLUUID(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID(UInt32 first, UInt32 second, UInt32 third, UInt32 fourth)
|
public UUID(UInt32 first, UInt32 second, UInt32 third, UInt32 fourth)
|
||||||
{
|
{
|
||||||
byte[] uuid = new byte[16];
|
byte[] uuid = new byte[16];
|
||||||
|
|
||||||
byte[] n = BitConverter.GetBytes(first);
|
byte[] n = BitConverter.GetBytes(first);
|
||||||
n.CopyTo(uuid, 0);
|
n.CopyTo(uuid, 0);
|
||||||
n = BitConverter.GetBytes(second);
|
n = BitConverter.GetBytes(second);
|
||||||
n.CopyTo(uuid, 4);
|
n.CopyTo(uuid, 4);
|
||||||
n = BitConverter.GetBytes(third);
|
n = BitConverter.GetBytes(third);
|
||||||
n.CopyTo(uuid, 8);
|
n.CopyTo(uuid, 8);
|
||||||
n = BitConverter.GetBytes(fourth);
|
n = BitConverter.GetBytes(fourth);
|
||||||
n.CopyTo(uuid, 12);
|
n.CopyTo(uuid, 12);
|
||||||
|
|
||||||
llUUID = new LLUUID(uuid,0);
|
llUUID = new LLUUID(uuid,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
return llUUID.ToString();
|
return llUUID.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ToStringHyphenated()
|
public string ToStringHyphenated()
|
||||||
{
|
{
|
||||||
return llUUID.ToStringHyphenated();
|
return llUUID.ToStringHyphenated();
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] GetBytes()
|
public byte[] GetBytes()
|
||||||
{
|
{
|
||||||
return llUUID.GetBytes();
|
return llUUID.GetBytes();
|
||||||
}
|
}
|
||||||
|
|
||||||
public UInt32[] GetInts()
|
public UInt32[] GetInts()
|
||||||
{
|
{
|
||||||
UInt32[] ints = new UInt32[4];
|
UInt32[] ints = new UInt32[4];
|
||||||
ints[0] = BitConverter.ToUInt32(llUUID.Data, 0);
|
ints[0] = BitConverter.ToUInt32(llUUID.Data, 0);
|
||||||
ints[1] = BitConverter.ToUInt32(llUUID.Data, 4);
|
ints[1] = BitConverter.ToUInt32(llUUID.Data, 4);
|
||||||
ints[2] = BitConverter.ToUInt32(llUUID.Data, 8);
|
ints[2] = BitConverter.ToUInt32(llUUID.Data, 8);
|
||||||
ints[3] = BitConverter.ToUInt32(llUUID.Data, 12);
|
ints[3] = BitConverter.ToUInt32(llUUID.Data, 12);
|
||||||
|
|
||||||
return ints;
|
return ints;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LLUUID GetLLUUID()
|
public LLUUID GetLLUUID()
|
||||||
{
|
{
|
||||||
return llUUID;
|
return llUUID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint CRC()
|
public uint CRC()
|
||||||
{
|
{
|
||||||
return llUUID.CRC();
|
return llUUID.CRC();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override int GetHashCode()
|
public override int GetHashCode()
|
||||||
{
|
{
|
||||||
return llUUID.GetHashCode();
|
return llUUID.GetHashCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Combine(UUID other)
|
public void Combine(UUID other)
|
||||||
{
|
{
|
||||||
llUUID.Combine(other.GetLLUUID());
|
llUUID.Combine(other.GetLLUUID());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Combine(LLUUID other)
|
public void Combine(LLUUID other)
|
||||||
{
|
{
|
||||||
llUUID.Combine(other);
|
llUUID.Combine(other);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool Equals(Object other)
|
public override bool Equals(Object other)
|
||||||
{
|
{
|
||||||
return llUUID.Equals(other);
|
return llUUID.Equals(other);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool operator ==(UUID a, UUID b)
|
public static bool operator ==(UUID a, UUID b)
|
||||||
{
|
{
|
||||||
return a.llUUID.Equals(b.GetLLUUID());
|
return a.llUUID.Equals(b.GetLLUUID());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool operator !=(UUID a, UUID b)
|
public static bool operator !=(UUID a, UUID b)
|
||||||
{
|
{
|
||||||
return !a.llUUID.Equals(b.GetLLUUID());
|
return !a.llUUID.Equals(b.GetLLUUID());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool operator ==(UUID a, LLUUID b)
|
public static bool operator ==(UUID a, LLUUID b)
|
||||||
{
|
{
|
||||||
return a.Equals(b);
|
return a.Equals(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool operator !=(UUID a, LLUUID b)
|
public static bool operator !=(UUID a, LLUUID b)
|
||||||
{
|
{
|
||||||
return !a.Equals(b);
|
return !a.Equals(b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,87 +1,87 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Inventory;
|
using OpenSim.Framework.Inventory;
|
||||||
|
|
||||||
namespace OpenSim.Framework.User
|
namespace OpenSim.Framework.User
|
||||||
{
|
{
|
||||||
public class UserProfile
|
public class UserProfile
|
||||||
{
|
{
|
||||||
|
|
||||||
public string firstname;
|
public string firstname;
|
||||||
public string lastname;
|
public string lastname;
|
||||||
public ulong homeregionhandle;
|
public ulong homeregionhandle;
|
||||||
public LLVector3 homepos;
|
public LLVector3 homepos;
|
||||||
public LLVector3 homelookat;
|
public LLVector3 homelookat;
|
||||||
|
|
||||||
public bool IsGridGod = false;
|
public bool IsGridGod = false;
|
||||||
public bool IsLocal = true; // will be used in future for visitors from foreign grids
|
public bool IsLocal = true; // will be used in future for visitors from foreign grids
|
||||||
public string AssetURL;
|
public string AssetURL;
|
||||||
public string MD5passwd;
|
public string MD5passwd;
|
||||||
|
|
||||||
public LLUUID CurrentSessionID;
|
public LLUUID CurrentSessionID;
|
||||||
public LLUUID CurrentSecureSessionID;
|
public LLUUID CurrentSecureSessionID;
|
||||||
public LLUUID UUID;
|
public LLUUID UUID;
|
||||||
public Dictionary<LLUUID, uint> Circuits = new Dictionary<LLUUID, uint>(); // tracks circuit codes
|
public Dictionary<LLUUID, uint> Circuits = new Dictionary<LLUUID, uint>(); // tracks circuit codes
|
||||||
|
|
||||||
public AgentInventory Inventory;
|
public AgentInventory Inventory;
|
||||||
|
|
||||||
public UserProfile()
|
public UserProfile()
|
||||||
{
|
{
|
||||||
Circuits = new Dictionary<LLUUID, uint>();
|
Circuits = new Dictionary<LLUUID, uint>();
|
||||||
Inventory = new AgentInventory();
|
Inventory = new AgentInventory();
|
||||||
homeregionhandle = Helpers.UIntsToLong((1000 * 256), (1000 * 256));
|
homeregionhandle = Helpers.UIntsToLong((1000 * 256), (1000 * 256));
|
||||||
homepos = new LLVector3();
|
homepos = new LLVector3();
|
||||||
homelookat = new LLVector3();
|
homelookat = new LLVector3();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void InitSessionData()
|
public void InitSessionData()
|
||||||
{
|
{
|
||||||
RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider();
|
RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider();
|
||||||
|
|
||||||
byte[] randDataS = new byte[16];
|
byte[] randDataS = new byte[16];
|
||||||
byte[] randDataSS = new byte[16];
|
byte[] randDataSS = new byte[16];
|
||||||
|
|
||||||
rand.GetBytes(randDataS);
|
rand.GetBytes(randDataS);
|
||||||
rand.GetBytes(randDataSS);
|
rand.GetBytes(randDataSS);
|
||||||
|
|
||||||
CurrentSecureSessionID = new LLUUID(randDataSS,0);
|
CurrentSecureSessionID = new LLUUID(randDataSS,0);
|
||||||
CurrentSessionID = new LLUUID(randDataS,0);
|
CurrentSessionID = new LLUUID(randDataS,0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddSimCircuit(uint circuitCode, LLUUID regionUUID)
|
public void AddSimCircuit(uint circuitCode, LLUUID regionUUID)
|
||||||
{
|
{
|
||||||
if (this.Circuits.ContainsKey(regionUUID) == false)
|
if (this.Circuits.ContainsKey(regionUUID) == false)
|
||||||
this.Circuits.Add(regionUUID, circuitCode);
|
this.Circuits.Add(regionUUID, circuitCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,184 +1,184 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Utilities
|
namespace OpenSim.Framework.Utilities
|
||||||
{
|
{
|
||||||
public class Util
|
public class Util
|
||||||
{
|
{
|
||||||
private static Random randomClass = new Random();
|
private static Random randomClass = new Random();
|
||||||
private static uint nextXferID = 5000;
|
private static uint nextXferID = 5000;
|
||||||
private static object XferLock = new object();
|
private static object XferLock = new object();
|
||||||
|
|
||||||
public static ulong UIntsToLong(uint X, uint Y)
|
public static ulong UIntsToLong(uint X, uint Y)
|
||||||
{
|
{
|
||||||
return Helpers.UIntsToLong(X, Y);
|
return Helpers.UIntsToLong(X, Y);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Random RandomClass
|
public static Random RandomClass
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return randomClass;
|
return randomClass;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static uint GetNextXferID()
|
public static uint GetNextXferID()
|
||||||
{
|
{
|
||||||
uint id = 0;
|
uint id = 0;
|
||||||
lock(XferLock)
|
lock(XferLock)
|
||||||
{
|
{
|
||||||
id = nextXferID;
|
id = nextXferID;
|
||||||
nextXferID++;
|
nextXferID++;
|
||||||
}
|
}
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int UnixTimeSinceEpoch()
|
public static int UnixTimeSinceEpoch()
|
||||||
{
|
{
|
||||||
TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1));
|
TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1));
|
||||||
int timestamp = (int)t.TotalSeconds;
|
int timestamp = (int)t.TotalSeconds;
|
||||||
return timestamp;
|
return timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string Md5Hash(string pass)
|
public static string Md5Hash(string pass)
|
||||||
{
|
{
|
||||||
MD5 md5 = MD5CryptoServiceProvider.Create();
|
MD5 md5 = MD5CryptoServiceProvider.Create();
|
||||||
byte[] dataMd5 = md5.ComputeHash(Encoding.Default.GetBytes(pass));
|
byte[] dataMd5 = md5.ComputeHash(Encoding.Default.GetBytes(pass));
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
for (int i = 0; i < dataMd5.Length; i++)
|
for (int i = 0; i < dataMd5.Length; i++)
|
||||||
sb.AppendFormat("{0:x2}", dataMd5[i]);
|
sb.AppendFormat("{0:x2}", dataMd5[i]);
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetRandomCapsPath()
|
public static string GetRandomCapsPath()
|
||||||
{
|
{
|
||||||
LLUUID caps = LLUUID.Random();
|
LLUUID caps = LLUUID.Random();
|
||||||
string capsPath = caps.ToStringHyphenated();
|
string capsPath = caps.ToStringHyphenated();
|
||||||
capsPath = capsPath.Remove(capsPath.Length - 4, 4);
|
capsPath = capsPath.Remove(capsPath.Length - 4, 4);
|
||||||
return capsPath;
|
return capsPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
//public static int fast_distance2d(int x, int y)
|
//public static int fast_distance2d(int x, int y)
|
||||||
//{
|
//{
|
||||||
// x = System.Math.Abs(x);
|
// x = System.Math.Abs(x);
|
||||||
// y = System.Math.Abs(y);
|
// y = System.Math.Abs(y);
|
||||||
|
|
||||||
// int min = System.Math.Min(x, y);
|
// int min = System.Math.Min(x, y);
|
||||||
|
|
||||||
// return (x + y - (min >> 1) - (min >> 2) + (min >> 4));
|
// return (x + y - (min >> 1) - (min >> 2) + (min >> 4));
|
||||||
//}
|
//}
|
||||||
|
|
||||||
public static string FieldToString(byte[] bytes)
|
public static string FieldToString(byte[] bytes)
|
||||||
{
|
{
|
||||||
return FieldToString(bytes, String.Empty);
|
return FieldToString(bytes, String.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert a variable length field (byte array) to a string, with a
|
/// Convert a variable length field (byte array) to a string, with a
|
||||||
/// field name prepended to each line of the output
|
/// field name prepended to each line of the output
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>If the byte array has unprintable characters in it, a
|
/// <remarks>If the byte array has unprintable characters in it, a
|
||||||
/// hex dump will be put in the string instead</remarks>
|
/// hex dump will be put in the string instead</remarks>
|
||||||
/// <param name="bytes">The byte array to convert to a string</param>
|
/// <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>
|
/// <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
|
/// <returns>An ASCII string or a string containing a hex dump, minus
|
||||||
/// the null terminator</returns>
|
/// the null terminator</returns>
|
||||||
public static string FieldToString(byte[] bytes, string fieldName)
|
public static string FieldToString(byte[] bytes, string fieldName)
|
||||||
{
|
{
|
||||||
// Check for a common case
|
// Check for a common case
|
||||||
if (bytes.Length == 0) return String.Empty;
|
if (bytes.Length == 0) return String.Empty;
|
||||||
|
|
||||||
StringBuilder output = new StringBuilder();
|
StringBuilder output = new StringBuilder();
|
||||||
bool printable = true;
|
bool printable = true;
|
||||||
|
|
||||||
for (int i = 0; i < bytes.Length; ++i)
|
for (int i = 0; i < bytes.Length; ++i)
|
||||||
{
|
{
|
||||||
// Check if there are any unprintable characters in the array
|
// Check if there are any unprintable characters in the array
|
||||||
if ((bytes[i] < 0x20 || bytes[i] > 0x7E) && bytes[i] != 0x09
|
if ((bytes[i] < 0x20 || bytes[i] > 0x7E) && bytes[i] != 0x09
|
||||||
&& bytes[i] != 0x0D && bytes[i] != 0x0A && bytes[i] != 0x00)
|
&& bytes[i] != 0x0D && bytes[i] != 0x0A && bytes[i] != 0x00)
|
||||||
{
|
{
|
||||||
printable = false;
|
printable = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (printable)
|
if (printable)
|
||||||
{
|
{
|
||||||
if (fieldName.Length > 0)
|
if (fieldName.Length > 0)
|
||||||
{
|
{
|
||||||
output.Append(fieldName);
|
output.Append(fieldName);
|
||||||
output.Append(": ");
|
output.Append(": ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bytes[bytes.Length - 1] == 0x00)
|
if (bytes[bytes.Length - 1] == 0x00)
|
||||||
output.Append(UTF8Encoding.UTF8.GetString(bytes, 0, bytes.Length - 1));
|
output.Append(UTF8Encoding.UTF8.GetString(bytes, 0, bytes.Length - 1));
|
||||||
else
|
else
|
||||||
output.Append(UTF8Encoding.UTF8.GetString(bytes));
|
output.Append(UTF8Encoding.UTF8.GetString(bytes));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (int i = 0; i < bytes.Length; i += 16)
|
for (int i = 0; i < bytes.Length; i += 16)
|
||||||
{
|
{
|
||||||
if (i != 0)
|
if (i != 0)
|
||||||
output.Append(Environment.NewLine);
|
output.Append(Environment.NewLine);
|
||||||
if (fieldName.Length > 0)
|
if (fieldName.Length > 0)
|
||||||
{
|
{
|
||||||
output.Append(fieldName);
|
output.Append(fieldName);
|
||||||
output.Append(": ");
|
output.Append(": ");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int j = 0; j < 16; j++)
|
for (int j = 0; j < 16; j++)
|
||||||
{
|
{
|
||||||
if ((i + j) < bytes.Length)
|
if ((i + j) < bytes.Length)
|
||||||
output.Append(String.Format("{0:X2} ", bytes[i + j]));
|
output.Append(String.Format("{0:X2} ", bytes[i + j]));
|
||||||
else
|
else
|
||||||
output.Append(" ");
|
output.Append(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int j = 0; j < 16 && (i + j) < bytes.Length; j++)
|
for (int j = 0; j < 16 && (i + j) < bytes.Length; j++)
|
||||||
{
|
{
|
||||||
if (bytes[i + j] >= 0x20 && bytes[i + j] < 0x7E)
|
if (bytes[i + j] >= 0x20 && bytes[i + j] < 0x7E)
|
||||||
output.Append((char)bytes[i + j]);
|
output.Append((char)bytes[i + j]);
|
||||||
else
|
else
|
||||||
output.Append(".");
|
output.Append(".");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return output.ToString();
|
return output.ToString();
|
||||||
}
|
}
|
||||||
public Util()
|
public Util()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +1,33 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("OpenSim.GenericConfig")]
|
[assembly: AssemblyTitle("OpenSim.GenericConfig")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("OpenSim.GenericConfig")]
|
[assembly: AssemblyProduct("OpenSim.GenericConfig")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2007")]
|
[assembly: AssemblyCopyright("Copyright © 2007")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
// 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
|
// to COM components. If you need to access a type in this assembly from
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("285a3047-f165-46c8-8767-b51428738a09")]
|
[assembly: Guid("285a3047-f165-46c8-8767-b51428738a09")]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
// Major Version
|
// Major Version
|
||||||
// Minor Version
|
// Minor Version
|
||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
// You can specify all the values or you can default the Revision and Build Numbers
|
// You can specify all the values or you can default the Revision and Build Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
|
@ -1,122 +1,122 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using OpenSim.Framework.Interfaces;
|
using OpenSim.Framework.Interfaces;
|
||||||
|
|
||||||
namespace OpenSim.GenericConfig
|
namespace OpenSim.GenericConfig
|
||||||
{
|
{
|
||||||
public class XmlConfig : IGenericConfig
|
public class XmlConfig : IGenericConfig
|
||||||
{
|
{
|
||||||
private XmlDocument doc;
|
private XmlDocument doc;
|
||||||
private XmlNode rootNode;
|
private XmlNode rootNode;
|
||||||
private XmlNode configNode;
|
private XmlNode configNode;
|
||||||
private string fileName;
|
private string fileName;
|
||||||
private bool createdFile = false;
|
private bool createdFile = false;
|
||||||
|
|
||||||
public XmlConfig(string filename)
|
public XmlConfig(string filename)
|
||||||
{
|
{
|
||||||
fileName = filename;
|
fileName = filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadData()
|
public void LoadData()
|
||||||
{
|
{
|
||||||
doc = new XmlDocument();
|
doc = new XmlDocument();
|
||||||
|
|
||||||
if (File.Exists(fileName))
|
if (File.Exists(fileName))
|
||||||
{
|
{
|
||||||
XmlTextReader reader = new XmlTextReader(fileName);
|
XmlTextReader reader = new XmlTextReader(fileName);
|
||||||
reader.WhitespaceHandling = WhitespaceHandling.None;
|
reader.WhitespaceHandling = WhitespaceHandling.None;
|
||||||
doc.Load(reader);
|
doc.Load(reader);
|
||||||
reader.Close();
|
reader.Close();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
createdFile = true;
|
createdFile = true;
|
||||||
rootNode = doc.CreateNode(XmlNodeType.Element, "Root", "");
|
rootNode = doc.CreateNode(XmlNodeType.Element, "Root", "");
|
||||||
doc.AppendChild(rootNode);
|
doc.AppendChild(rootNode);
|
||||||
configNode = doc.CreateNode(XmlNodeType.Element, "Config", "");
|
configNode = doc.CreateNode(XmlNodeType.Element, "Config", "");
|
||||||
rootNode.AppendChild(configNode);
|
rootNode.AppendChild(configNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
rootNode = doc.FirstChild;
|
rootNode = doc.FirstChild;
|
||||||
if (rootNode.Name != "Root")
|
if (rootNode.Name != "Root")
|
||||||
throw new Exception("Error: Invalid .xml File. Missing <Root>");
|
throw new Exception("Error: Invalid .xml File. Missing <Root>");
|
||||||
|
|
||||||
configNode = rootNode.FirstChild;
|
configNode = rootNode.FirstChild;
|
||||||
if (configNode.Name != "Config")
|
if (configNode.Name != "Config")
|
||||||
throw new Exception("Error: Invalid .xml File. <Root> first child should be <Config>");
|
throw new Exception("Error: Invalid .xml File. <Root> first child should be <Config>");
|
||||||
|
|
||||||
if (createdFile)
|
if (createdFile)
|
||||||
{
|
{
|
||||||
this.Commit();
|
this.Commit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetAttribute(string attributeName)
|
public string GetAttribute(string attributeName)
|
||||||
{
|
{
|
||||||
string result = "";
|
string result = "";
|
||||||
if (configNode.Attributes[attributeName] != null)
|
if (configNode.Attributes[attributeName] != null)
|
||||||
{
|
{
|
||||||
result = ((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value;
|
result = ((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool SetAttribute(string attributeName, string attributeValue)
|
public bool SetAttribute(string attributeName, string attributeValue)
|
||||||
{
|
{
|
||||||
if (configNode.Attributes[attributeName] != null)
|
if (configNode.Attributes[attributeName] != null)
|
||||||
{
|
{
|
||||||
((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value = attributeValue;
|
((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value = attributeValue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
XmlAttribute attri;
|
XmlAttribute attri;
|
||||||
attri = doc.CreateAttribute(attributeName);
|
attri = doc.CreateAttribute(attributeName);
|
||||||
attri.Value = attributeValue;
|
attri.Value = attributeValue;
|
||||||
configNode.Attributes.Append(attri);
|
configNode.Attributes.Append(attri);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Commit()
|
public void Commit()
|
||||||
{
|
{
|
||||||
doc.Save(fileName);
|
doc.Save(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
configNode = null;
|
configNode = null;
|
||||||
rootNode = null;
|
rootNode = null;
|
||||||
doc = null;
|
doc = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,224 +1,224 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using Nwc.XmlRpc;
|
using Nwc.XmlRpc;
|
||||||
using OpenSim.Framework.Console;
|
using OpenSim.Framework.Console;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Servers
|
namespace OpenSim.Framework.Servers
|
||||||
{
|
{
|
||||||
public class BaseHttpServer
|
public class BaseHttpServer
|
||||||
{
|
{
|
||||||
protected Thread m_workerThread;
|
protected Thread m_workerThread;
|
||||||
protected HttpListener m_httpListener;
|
protected HttpListener m_httpListener;
|
||||||
protected Dictionary<string, XmlRpcMethod> m_rpcHandlers = new Dictionary<string, XmlRpcMethod>();
|
protected Dictionary<string, XmlRpcMethod> m_rpcHandlers = new Dictionary<string, XmlRpcMethod>();
|
||||||
protected Dictionary<string, IStreamHandler> m_streamHandlers = new Dictionary<string, IStreamHandler>();
|
protected Dictionary<string, IStreamHandler> m_streamHandlers = new Dictionary<string, IStreamHandler>();
|
||||||
protected int m_port;
|
protected int m_port;
|
||||||
protected bool m_firstcaps = true;
|
protected bool m_firstcaps = true;
|
||||||
|
|
||||||
public BaseHttpServer(int port)
|
public BaseHttpServer(int port)
|
||||||
{
|
{
|
||||||
m_port = port;
|
m_port = port;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddStreamHandler( IStreamHandler handler)
|
public void AddStreamHandler( IStreamHandler handler)
|
||||||
{
|
{
|
||||||
string httpMethod = handler.HttpMethod;
|
string httpMethod = handler.HttpMethod;
|
||||||
string path = handler.Path;
|
string path = handler.Path;
|
||||||
|
|
||||||
string handlerKey = GetHandlerKey(httpMethod, path);
|
string handlerKey = GetHandlerKey(httpMethod, path);
|
||||||
m_streamHandlers.Add(handlerKey, handler);
|
m_streamHandlers.Add(handlerKey, handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string GetHandlerKey(string httpMethod, string path)
|
private static string GetHandlerKey(string httpMethod, string path)
|
||||||
{
|
{
|
||||||
return httpMethod + ":" + path;
|
return httpMethod + ":" + path;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool AddXmlRPCHandler(string method, XmlRpcMethod handler)
|
public bool AddXmlRPCHandler(string method, XmlRpcMethod handler)
|
||||||
{
|
{
|
||||||
if (!this.m_rpcHandlers.ContainsKey(method))
|
if (!this.m_rpcHandlers.ContainsKey(method))
|
||||||
{
|
{
|
||||||
this.m_rpcHandlers.Add(method, handler);
|
this.m_rpcHandlers.Add(method, handler);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//must already have a handler for that path so return false
|
//must already have a handler for that path so return false
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public virtual void HandleRequest(Object stateinfo)
|
public virtual void HandleRequest(Object stateinfo)
|
||||||
{
|
{
|
||||||
HttpListenerContext context = (HttpListenerContext)stateinfo;
|
HttpListenerContext context = (HttpListenerContext)stateinfo;
|
||||||
|
|
||||||
HttpListenerRequest request = context.Request;
|
HttpListenerRequest request = context.Request;
|
||||||
HttpListenerResponse response = context.Response;
|
HttpListenerResponse response = context.Response;
|
||||||
|
|
||||||
response.KeepAlive = false;
|
response.KeepAlive = false;
|
||||||
response.SendChunked = false;
|
response.SendChunked = false;
|
||||||
|
|
||||||
string path = request.RawUrl;
|
string path = request.RawUrl;
|
||||||
string handlerKey = GetHandlerKey( request.HttpMethod, path );
|
string handlerKey = GetHandlerKey( request.HttpMethod, path );
|
||||||
|
|
||||||
IStreamHandler streamHandler;
|
IStreamHandler streamHandler;
|
||||||
|
|
||||||
if (TryGetStreamHandler( handlerKey, out streamHandler))
|
if (TryGetStreamHandler( handlerKey, out streamHandler))
|
||||||
{
|
{
|
||||||
byte[] buffer = streamHandler.Handle(path, request.InputStream);
|
byte[] buffer = streamHandler.Handle(path, request.InputStream);
|
||||||
request.InputStream.Close();
|
request.InputStream.Close();
|
||||||
|
|
||||||
response.ContentType = streamHandler.ContentType;
|
response.ContentType = streamHandler.ContentType;
|
||||||
response.ContentLength64 = buffer.LongLength;
|
response.ContentLength64 = buffer.LongLength;
|
||||||
response.OutputStream.Write(buffer, 0, buffer.Length);
|
response.OutputStream.Write(buffer, 0, buffer.Length);
|
||||||
response.OutputStream.Close();
|
response.OutputStream.Close();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
HandleXmlRpcRequests(request, response);
|
HandleXmlRpcRequests(request, response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool TryGetStreamHandler(string handlerKey, out IStreamHandler streamHandler)
|
private bool TryGetStreamHandler(string handlerKey, out IStreamHandler streamHandler)
|
||||||
{
|
{
|
||||||
string bestMatch = null;
|
string bestMatch = null;
|
||||||
|
|
||||||
foreach (string pattern in m_streamHandlers.Keys)
|
foreach (string pattern in m_streamHandlers.Keys)
|
||||||
{
|
{
|
||||||
if (handlerKey.StartsWith(pattern))
|
if (handlerKey.StartsWith(pattern))
|
||||||
{
|
{
|
||||||
if (String.IsNullOrEmpty(bestMatch) || pattern.Length > bestMatch.Length)
|
if (String.IsNullOrEmpty(bestMatch) || pattern.Length > bestMatch.Length)
|
||||||
{
|
{
|
||||||
bestMatch = pattern;
|
bestMatch = pattern;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (String.IsNullOrEmpty(bestMatch))
|
if (String.IsNullOrEmpty(bestMatch))
|
||||||
{
|
{
|
||||||
streamHandler = null;
|
streamHandler = null;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
streamHandler = m_streamHandlers[bestMatch];
|
streamHandler = m_streamHandlers[bestMatch];
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleXmlRpcRequests(HttpListenerRequest request, HttpListenerResponse response)
|
private void HandleXmlRpcRequests(HttpListenerRequest request, HttpListenerResponse response)
|
||||||
{
|
{
|
||||||
Stream requestStream = request.InputStream;
|
Stream requestStream = request.InputStream;
|
||||||
|
|
||||||
Encoding encoding = Encoding.UTF8;
|
Encoding encoding = Encoding.UTF8;
|
||||||
StreamReader reader = new StreamReader(requestStream, encoding);
|
StreamReader reader = new StreamReader(requestStream, encoding);
|
||||||
|
|
||||||
string requestBody = reader.ReadToEnd();
|
string requestBody = reader.ReadToEnd();
|
||||||
reader.Close();
|
reader.Close();
|
||||||
requestStream.Close();
|
requestStream.Close();
|
||||||
|
|
||||||
XmlRpcRequest xmlRprcRequest = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody);
|
XmlRpcRequest xmlRprcRequest = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody);
|
||||||
|
|
||||||
string methodName = xmlRprcRequest.MethodName;
|
string methodName = xmlRprcRequest.MethodName;
|
||||||
|
|
||||||
XmlRpcResponse xmlRpcResponse;
|
XmlRpcResponse xmlRpcResponse;
|
||||||
|
|
||||||
XmlRpcMethod method;
|
XmlRpcMethod method;
|
||||||
if (this.m_rpcHandlers.TryGetValue(methodName, out method))
|
if (this.m_rpcHandlers.TryGetValue(methodName, out method))
|
||||||
{
|
{
|
||||||
xmlRpcResponse = method(xmlRprcRequest);
|
xmlRpcResponse = method(xmlRprcRequest);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
xmlRpcResponse = new XmlRpcResponse();
|
xmlRpcResponse = new XmlRpcResponse();
|
||||||
Hashtable unknownMethodError = new Hashtable();
|
Hashtable unknownMethodError = new Hashtable();
|
||||||
unknownMethodError["reason"] = "XmlRequest"; ;
|
unknownMethodError["reason"] = "XmlRequest"; ;
|
||||||
unknownMethodError["message"] = "Unknown Rpc Request ["+methodName+"]";
|
unknownMethodError["message"] = "Unknown Rpc Request ["+methodName+"]";
|
||||||
unknownMethodError["login"] = "false";
|
unknownMethodError["login"] = "false";
|
||||||
xmlRpcResponse.Value = unknownMethodError;
|
xmlRpcResponse.Value = unknownMethodError;
|
||||||
}
|
}
|
||||||
|
|
||||||
response.AddHeader("Content-type", "text/xml");
|
response.AddHeader("Content-type", "text/xml");
|
||||||
|
|
||||||
string responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse);
|
string responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse);
|
||||||
|
|
||||||
byte[] buffer = Encoding.UTF8.GetBytes(responseString);
|
byte[] buffer = Encoding.UTF8.GetBytes(responseString);
|
||||||
|
|
||||||
response.SendChunked = false;
|
response.SendChunked = false;
|
||||||
response.ContentLength64 = buffer.Length;
|
response.ContentLength64 = buffer.Length;
|
||||||
response.ContentEncoding = Encoding.UTF8;
|
response.ContentEncoding = Encoding.UTF8;
|
||||||
|
|
||||||
response.OutputStream.Write(buffer, 0, buffer.Length);
|
response.OutputStream.Write(buffer, 0, buffer.Length);
|
||||||
response.OutputStream.Close();
|
response.OutputStream.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Start()
|
public void Start()
|
||||||
{
|
{
|
||||||
MainLog.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: Starting up HTTP Server");
|
MainLog.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: Starting up HTTP Server");
|
||||||
|
|
||||||
m_workerThread = new Thread(new ThreadStart(StartHTTP));
|
m_workerThread = new Thread(new ThreadStart(StartHTTP));
|
||||||
m_workerThread.IsBackground = true;
|
m_workerThread.IsBackground = true;
|
||||||
m_workerThread.Start();
|
m_workerThread.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void StartHTTP()
|
private void StartHTTP()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
MainLog.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: StartHTTP() - Spawned main thread OK");
|
MainLog.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: StartHTTP() - Spawned main thread OK");
|
||||||
m_httpListener = new HttpListener();
|
m_httpListener = new HttpListener();
|
||||||
|
|
||||||
m_httpListener.Prefixes.Add("http://+:" + m_port + "/");
|
m_httpListener.Prefixes.Add("http://+:" + m_port + "/");
|
||||||
m_httpListener.Start();
|
m_httpListener.Start();
|
||||||
|
|
||||||
HttpListenerContext context;
|
HttpListenerContext context;
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
context = m_httpListener.GetContext();
|
context = m_httpListener.GetContext();
|
||||||
ThreadPool.QueueUserWorkItem(new WaitCallback(HandleRequest), context);
|
ThreadPool.QueueUserWorkItem(new WaitCallback(HandleRequest), context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
MainLog.Instance.WriteLine(LogPriority.MEDIUM, e.Message);
|
MainLog.Instance.WriteLine(LogPriority.MEDIUM, e.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void RemoveStreamHandler(string httpMethod, string path)
|
public void RemoveStreamHandler(string httpMethod, string path)
|
||||||
{
|
{
|
||||||
m_streamHandlers.Remove(GetHandlerKey(httpMethod, path));
|
m_streamHandlers.Remove(GetHandlerKey(httpMethod, path));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,40 +1,40 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Servers
|
namespace OpenSim.Framework.Servers
|
||||||
{
|
{
|
||||||
public abstract class BaseStreamHandler : IStreamHandler
|
public abstract class BaseStreamHandler : IStreamHandler
|
||||||
{
|
{
|
||||||
virtual public string ContentType
|
virtual public string ContentType
|
||||||
{
|
{
|
||||||
get { return "application/xml"; }
|
get { return "application/xml"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
private string m_httpMethod;
|
private string m_httpMethod;
|
||||||
virtual public string HttpMethod
|
virtual public string HttpMethod
|
||||||
{
|
{
|
||||||
get { return m_httpMethod; }
|
get { return m_httpMethod; }
|
||||||
}
|
}
|
||||||
|
|
||||||
private string m_path;
|
private string m_path;
|
||||||
virtual public string Path
|
virtual public string Path
|
||||||
{
|
{
|
||||||
get { return m_path; }
|
get { return m_path; }
|
||||||
}
|
}
|
||||||
|
|
||||||
protected string GetParam( string path )
|
protected string GetParam( string path )
|
||||||
{
|
{
|
||||||
return path.Substring( m_path.Length );
|
return path.Substring( m_path.Length );
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract byte[] Handle(string path, Stream request);
|
public abstract byte[] Handle(string path, Stream request);
|
||||||
|
|
||||||
protected BaseStreamHandler(string httpMethod, string path)
|
protected BaseStreamHandler(string httpMethod, string path)
|
||||||
{
|
{
|
||||||
m_httpMethod = httpMethod;
|
m_httpMethod = httpMethod;
|
||||||
m_path = path;
|
m_path = path;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,49 +1,49 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Servers
|
namespace OpenSim.Framework.Servers
|
||||||
{
|
{
|
||||||
public delegate string BinaryMethod(byte[] data, string path, string param);
|
public delegate string BinaryMethod(byte[] data, string path, string param);
|
||||||
|
|
||||||
public class BinaryStreamHandler : BaseStreamHandler
|
public class BinaryStreamHandler : BaseStreamHandler
|
||||||
{
|
{
|
||||||
BinaryMethod m_method;
|
BinaryMethod m_method;
|
||||||
|
|
||||||
override public byte[] Handle(string path, Stream request)
|
override public byte[] Handle(string path, Stream request)
|
||||||
{
|
{
|
||||||
byte[] data = ReadFully(request);
|
byte[] data = ReadFully(request);
|
||||||
string param = GetParam(path);
|
string param = GetParam(path);
|
||||||
string responseString = m_method(data, path, param);
|
string responseString = m_method(data, path, param);
|
||||||
|
|
||||||
return Encoding.UTF8.GetBytes(responseString);
|
return Encoding.UTF8.GetBytes(responseString);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BinaryStreamHandler(string httpMethod, string path, BinaryMethod binaryMethod)
|
public BinaryStreamHandler(string httpMethod, string path, BinaryMethod binaryMethod)
|
||||||
: base(httpMethod, path)
|
: base(httpMethod, path)
|
||||||
{
|
{
|
||||||
m_method = binaryMethod;
|
m_method = binaryMethod;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] ReadFully(Stream stream)
|
private byte[] ReadFully(Stream stream)
|
||||||
{
|
{
|
||||||
byte[] buffer = new byte[32768];
|
byte[] buffer = new byte[32768];
|
||||||
using (MemoryStream ms = new MemoryStream())
|
using (MemoryStream ms = new MemoryStream())
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
int read = stream.Read(buffer, 0, buffer.Length);
|
int read = stream.Read(buffer, 0, buffer.Length);
|
||||||
|
|
||||||
if (read <= 0)
|
if (read <= 0)
|
||||||
{
|
{
|
||||||
return ms.ToArray();
|
return ms.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
ms.Write(buffer, 0, read);
|
ms.Write(buffer, 0, read);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,127 +1,127 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
namespace OpenSim.Framework.Servers
|
namespace OpenSim.Framework.Servers
|
||||||
{/*
|
{/*
|
||||||
public class CheckSumServer : UDPServerBase
|
public class CheckSumServer : UDPServerBase
|
||||||
{
|
{
|
||||||
//protected ConsoleBase m_log;
|
//protected ConsoleBase m_log;
|
||||||
|
|
||||||
public CheckSumServer(int port)
|
public CheckSumServer(int port)
|
||||||
: base(port)
|
: base(port)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnReceivedData(IAsyncResult result)
|
protected override void OnReceivedData(IAsyncResult result)
|
||||||
{
|
{
|
||||||
ipeSender = new IPEndPoint(IPAddress.Any, 0);
|
ipeSender = new IPEndPoint(IPAddress.Any, 0);
|
||||||
epSender = (EndPoint)ipeSender;
|
epSender = (EndPoint)ipeSender;
|
||||||
Packet packet = null;
|
Packet packet = null;
|
||||||
int numBytes = Server.EndReceiveFrom(result, ref epSender);
|
int numBytes = Server.EndReceiveFrom(result, ref epSender);
|
||||||
int packetEnd = numBytes - 1;
|
int packetEnd = numBytes - 1;
|
||||||
|
|
||||||
packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer);
|
packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer);
|
||||||
|
|
||||||
if (packet.Type == PacketType.SecuredTemplateChecksumRequest)
|
if (packet.Type == PacketType.SecuredTemplateChecksumRequest)
|
||||||
{
|
{
|
||||||
SecuredTemplateChecksumRequestPacket checksum = (SecuredTemplateChecksumRequestPacket)packet;
|
SecuredTemplateChecksumRequestPacket checksum = (SecuredTemplateChecksumRequestPacket)packet;
|
||||||
TemplateChecksumReplyPacket checkreply = new TemplateChecksumReplyPacket();
|
TemplateChecksumReplyPacket checkreply = new TemplateChecksumReplyPacket();
|
||||||
checkreply.DataBlock.Checksum = 3220703154;//180572585;
|
checkreply.DataBlock.Checksum = 3220703154;//180572585;
|
||||||
checkreply.DataBlock.Flags = 0;
|
checkreply.DataBlock.Flags = 0;
|
||||||
checkreply.DataBlock.MajorVersion = 1;
|
checkreply.DataBlock.MajorVersion = 1;
|
||||||
checkreply.DataBlock.MinorVersion = 15;
|
checkreply.DataBlock.MinorVersion = 15;
|
||||||
checkreply.DataBlock.PatchVersion = 0;
|
checkreply.DataBlock.PatchVersion = 0;
|
||||||
checkreply.DataBlock.ServerVersion = 0;
|
checkreply.DataBlock.ServerVersion = 0;
|
||||||
checkreply.TokenBlock.Token = checksum.TokenBlock.Token;
|
checkreply.TokenBlock.Token = checksum.TokenBlock.Token;
|
||||||
this.SendPacket(checkreply, epSender);
|
this.SendPacket(checkreply, epSender);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
//if we wanted to echo the the checksum/ version from the client (so that any client worked)
|
//if we wanted to echo the the checksum/ version from the client (so that any client worked)
|
||||||
SecuredTemplateChecksumRequestPacket checkrequest = new SecuredTemplateChecksumRequestPacket();
|
SecuredTemplateChecksumRequestPacket checkrequest = new SecuredTemplateChecksumRequestPacket();
|
||||||
checkrequest.TokenBlock.Token = checksum.TokenBlock.Token;
|
checkrequest.TokenBlock.Token = checksum.TokenBlock.Token;
|
||||||
this.SendPacket(checkrequest, epSender);
|
this.SendPacket(checkrequest, epSender);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (packet.Type == PacketType.TemplateChecksumReply)
|
else if (packet.Type == PacketType.TemplateChecksumReply)
|
||||||
{
|
{
|
||||||
//echo back the client checksum reply (Hegemon's method)
|
//echo back the client checksum reply (Hegemon's method)
|
||||||
TemplateChecksumReplyPacket checksum2 = (TemplateChecksumReplyPacket)packet;
|
TemplateChecksumReplyPacket checksum2 = (TemplateChecksumReplyPacket)packet;
|
||||||
TemplateChecksumReplyPacket checkreply2 = new TemplateChecksumReplyPacket();
|
TemplateChecksumReplyPacket checkreply2 = new TemplateChecksumReplyPacket();
|
||||||
checkreply2.DataBlock.Checksum = checksum2.DataBlock.Checksum;
|
checkreply2.DataBlock.Checksum = checksum2.DataBlock.Checksum;
|
||||||
checkreply2.DataBlock.Flags = checksum2.DataBlock.Flags;
|
checkreply2.DataBlock.Flags = checksum2.DataBlock.Flags;
|
||||||
checkreply2.DataBlock.MajorVersion = checksum2.DataBlock.MajorVersion;
|
checkreply2.DataBlock.MajorVersion = checksum2.DataBlock.MajorVersion;
|
||||||
checkreply2.DataBlock.MinorVersion = checksum2.DataBlock.MinorVersion;
|
checkreply2.DataBlock.MinorVersion = checksum2.DataBlock.MinorVersion;
|
||||||
checkreply2.DataBlock.PatchVersion = checksum2.DataBlock.PatchVersion;
|
checkreply2.DataBlock.PatchVersion = checksum2.DataBlock.PatchVersion;
|
||||||
checkreply2.DataBlock.ServerVersion = checksum2.DataBlock.ServerVersion;
|
checkreply2.DataBlock.ServerVersion = checksum2.DataBlock.ServerVersion;
|
||||||
checkreply2.TokenBlock.Token = checksum2.TokenBlock.Token;
|
checkreply2.TokenBlock.Token = checksum2.TokenBlock.Token;
|
||||||
this.SendPacket(checkreply2, epSender);
|
this.SendPacket(checkreply2, epSender);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
|
Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SendPacket(Packet Pack, EndPoint endp)
|
private void SendPacket(Packet Pack, EndPoint endp)
|
||||||
{
|
{
|
||||||
if (!Pack.Header.Resent)
|
if (!Pack.Header.Resent)
|
||||||
{
|
{
|
||||||
Pack.Header.Sequence = 1;
|
Pack.Header.Sequence = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte[] ZeroOutBuffer = new byte[4096];
|
byte[] ZeroOutBuffer = new byte[4096];
|
||||||
byte[] sendbuffer;
|
byte[] sendbuffer;
|
||||||
sendbuffer = Pack.ToBytes();
|
sendbuffer = Pack.ToBytes();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (Pack.Header.Zerocoded)
|
if (Pack.Header.Zerocoded)
|
||||||
{
|
{
|
||||||
int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer);
|
int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer);
|
||||||
this.SendPackTo(ZeroOutBuffer, packetsize, SocketFlags.None, endp);
|
this.SendPackTo(ZeroOutBuffer, packetsize, SocketFlags.None, endp);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.SendPackTo(sendbuffer, sendbuffer.Length, SocketFlags.None, endp);
|
this.SendPackTo(sendbuffer, sendbuffer.Length, SocketFlags.None, endp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
OpenSim.Framework.Console.MainLog.Instance.Warn("OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection ");
|
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)
|
private void SendPackTo(byte[] buffer, int size, SocketFlags flags, EndPoint endp)
|
||||||
{
|
{
|
||||||
this.Server.SendTo(buffer, size, flags, endp);
|
this.Server.SendTo(buffer, size, flags, endp);
|
||||||
}
|
}
|
||||||
* }
|
* }
|
||||||
*/
|
*/
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,22 +1,22 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Servers
|
namespace OpenSim.Framework.Servers
|
||||||
{
|
{
|
||||||
public interface IStreamHandler
|
public interface IStreamHandler
|
||||||
{
|
{
|
||||||
// Handle request stream, return byte array
|
// Handle request stream, return byte array
|
||||||
byte[] Handle(string path, Stream request );
|
byte[] Handle(string path, Stream request );
|
||||||
|
|
||||||
// Return response content type
|
// Return response content type
|
||||||
string ContentType { get; }
|
string ContentType { get; }
|
||||||
|
|
||||||
// Return required http method
|
// Return required http method
|
||||||
string HttpMethod { get;}
|
string HttpMethod { get;}
|
||||||
|
|
||||||
// Return path
|
// Return path
|
||||||
string Path { get; }
|
string Path { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,31 +1,31 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
namespace OpenSim.Framework.Servers
|
namespace OpenSim.Framework.Servers
|
||||||
{
|
{
|
||||||
public delegate string RestMethod( string request, string path, string param );
|
public delegate string RestMethod( string request, string path, string param );
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,31 +1,31 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Servers
|
namespace OpenSim.Framework.Servers
|
||||||
{
|
{
|
||||||
public class RestStreamHandler : BaseStreamHandler
|
public class RestStreamHandler : BaseStreamHandler
|
||||||
{
|
{
|
||||||
RestMethod m_restMethod;
|
RestMethod m_restMethod;
|
||||||
|
|
||||||
override public byte[] Handle(string path, Stream request )
|
override public byte[] Handle(string path, Stream request )
|
||||||
{
|
{
|
||||||
Encoding encoding = Encoding.UTF8;
|
Encoding encoding = Encoding.UTF8;
|
||||||
StreamReader streamReader = new StreamReader(request, encoding);
|
StreamReader streamReader = new StreamReader(request, encoding);
|
||||||
|
|
||||||
string requestBody = streamReader.ReadToEnd();
|
string requestBody = streamReader.ReadToEnd();
|
||||||
streamReader.Close();
|
streamReader.Close();
|
||||||
|
|
||||||
string param = GetParam(path);
|
string param = GetParam(path);
|
||||||
string responseString = m_restMethod(requestBody, path, param );
|
string responseString = m_restMethod(requestBody, path, param );
|
||||||
|
|
||||||
return Encoding.UTF8.GetBytes(responseString);
|
return Encoding.UTF8.GetBytes(responseString);
|
||||||
}
|
}
|
||||||
|
|
||||||
public RestStreamHandler(string httpMethod, string path, RestMethod restMethod) : base( httpMethod, path )
|
public RestStreamHandler(string httpMethod, string path, RestMethod restMethod) : base( httpMethod, path )
|
||||||
{
|
{
|
||||||
m_restMethod = restMethod;
|
m_restMethod = restMethod;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,87 +1,87 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using libsecondlife.Packets;
|
using libsecondlife.Packets;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Servers
|
namespace OpenSim.Framework.Servers
|
||||||
{
|
{
|
||||||
public class UDPServerBase
|
public class UDPServerBase
|
||||||
{
|
{
|
||||||
public Socket Server;
|
public Socket Server;
|
||||||
protected IPEndPoint ServerIncoming;
|
protected IPEndPoint ServerIncoming;
|
||||||
protected byte[] RecvBuffer = new byte[4096];
|
protected byte[] RecvBuffer = new byte[4096];
|
||||||
protected byte[] ZeroBuffer = new byte[8192];
|
protected byte[] ZeroBuffer = new byte[8192];
|
||||||
protected IPEndPoint ipeSender;
|
protected IPEndPoint ipeSender;
|
||||||
protected EndPoint epSender;
|
protected EndPoint epSender;
|
||||||
protected AsyncCallback ReceivedData;
|
protected AsyncCallback ReceivedData;
|
||||||
protected int listenPort;
|
protected int listenPort;
|
||||||
|
|
||||||
public UDPServerBase(int port)
|
public UDPServerBase(int port)
|
||||||
{
|
{
|
||||||
listenPort = port;
|
listenPort = port;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OnReceivedData(IAsyncResult result)
|
protected virtual void OnReceivedData(IAsyncResult result)
|
||||||
{
|
{
|
||||||
ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
|
ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
|
||||||
epSender = (EndPoint)ipeSender;
|
epSender = (EndPoint)ipeSender;
|
||||||
Packet packet = null;
|
Packet packet = null;
|
||||||
int numBytes = Server.EndReceiveFrom(result, ref epSender);
|
int numBytes = Server.EndReceiveFrom(result, ref epSender);
|
||||||
int packetEnd = numBytes - 1;
|
int packetEnd = numBytes - 1;
|
||||||
|
|
||||||
packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer);
|
packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer);
|
||||||
|
|
||||||
Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
|
Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void AddNewClient(Packet packet)
|
protected virtual void AddNewClient(Packet packet)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void ServerListener()
|
public virtual void ServerListener()
|
||||||
{
|
{
|
||||||
|
|
||||||
ServerIncoming = new IPEndPoint(IPAddress.Parse("0.0.0.0"), listenPort);
|
ServerIncoming = new IPEndPoint(IPAddress.Parse("0.0.0.0"), listenPort);
|
||||||
Server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
Server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
||||||
Server.Bind(ServerIncoming);
|
Server.Bind(ServerIncoming);
|
||||||
|
|
||||||
ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
|
ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
|
||||||
epSender = (EndPoint)ipeSender;
|
epSender = (EndPoint)ipeSender;
|
||||||
ReceivedData = new AsyncCallback(this.OnReceivedData);
|
ReceivedData = new AsyncCallback(this.OnReceivedData);
|
||||||
Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
|
Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)
|
public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,33 +1,33 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using Nwc.XmlRpc;
|
using Nwc.XmlRpc;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Servers
|
namespace OpenSim.Framework.Servers
|
||||||
{
|
{
|
||||||
public delegate XmlRpcResponse XmlRpcMethod( XmlRpcRequest request );
|
public delegate XmlRpcResponse XmlRpcMethod( XmlRpcRequest request );
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,406 +1,406 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Db4objects.Db4o;
|
using Db4objects.Db4o;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.Console;
|
using OpenSim.Framework.Console;
|
||||||
using OpenSim.Framework.Types;
|
using OpenSim.Framework.Types;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
|
|
||||||
namespace OpenSim.Grid.AssetServer
|
namespace OpenSim.Grid.AssetServer
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// An asset server
|
/// An asset server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class OpenAsset_Main : conscmd_callback
|
public class OpenAsset_Main : conscmd_callback
|
||||||
{
|
{
|
||||||
private IObjectContainer db;
|
private IObjectContainer db;
|
||||||
|
|
||||||
public static OpenAsset_Main assetserver;
|
public static OpenAsset_Main assetserver;
|
||||||
|
|
||||||
private LogBase m_console;
|
private LogBase m_console;
|
||||||
|
|
||||||
[STAThread]
|
[STAThread]
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Starting...\n");
|
Console.WriteLine("Starting...\n");
|
||||||
|
|
||||||
assetserver = new OpenAsset_Main();
|
assetserver = new OpenAsset_Main();
|
||||||
assetserver.Startup();
|
assetserver.Startup();
|
||||||
|
|
||||||
assetserver.Work();
|
assetserver.Work();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Work()
|
private void Work()
|
||||||
{
|
{
|
||||||
m_console.Notice("Enter help for a list of commands");
|
m_console.Notice("Enter help for a list of commands");
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
m_console.MainLogPrompt();
|
m_console.MainLogPrompt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private OpenAsset_Main()
|
private OpenAsset_Main()
|
||||||
{
|
{
|
||||||
m_console = new LogBase("opengrid-AssetServer-console.log", "OpenAsset", this, false);
|
m_console = new LogBase("opengrid-AssetServer-console.log", "OpenAsset", this, false);
|
||||||
MainLog.Instance = m_console;
|
MainLog.Instance = m_console;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Startup()
|
public void Startup()
|
||||||
{
|
{
|
||||||
m_console.Verbose("Main.cs:Startup() - Setting up asset DB");
|
m_console.Verbose("Main.cs:Startup() - Setting up asset DB");
|
||||||
setupDB();
|
setupDB();
|
||||||
|
|
||||||
m_console.Verbose("Main.cs:Startup() - Starting HTTP process");
|
m_console.Verbose("Main.cs:Startup() - Starting HTTP process");
|
||||||
BaseHttpServer httpServer = new BaseHttpServer(8003);
|
BaseHttpServer httpServer = new BaseHttpServer(8003);
|
||||||
|
|
||||||
httpServer.AddStreamHandler( new GetAssetStreamHandler(this));
|
httpServer.AddStreamHandler( new GetAssetStreamHandler(this));
|
||||||
httpServer.AddStreamHandler(new PostAssetStreamHandler( this ));
|
httpServer.AddStreamHandler(new PostAssetStreamHandler( this ));
|
||||||
|
|
||||||
//httpServer.AddRestHandler("GET", "/assets/", this.assetGetMethod);
|
//httpServer.AddRestHandler("GET", "/assets/", this.assetGetMethod);
|
||||||
//httpServer.AddRestHandler("POST", "/assets/", this.assetPostMethod);
|
//httpServer.AddRestHandler("POST", "/assets/", this.assetPostMethod);
|
||||||
|
|
||||||
httpServer.Start();
|
httpServer.Start();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//public string AssetPostMethod(string requestBody, string path, string param)
|
//public string AssetPostMethod(string requestBody, string path, string param)
|
||||||
//{
|
//{
|
||||||
// AssetBase asset = new AssetBase();
|
// AssetBase asset = new AssetBase();
|
||||||
// asset.Name = "";
|
// asset.Name = "";
|
||||||
// asset.FullID = new LLUUID(param);
|
// asset.FullID = new LLUUID(param);
|
||||||
// Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
|
// Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
|
||||||
// byte[] buffer = Windows1252Encoding.GetBytes(requestBody);
|
// byte[] buffer = Windows1252Encoding.GetBytes(requestBody);
|
||||||
// asset.Data = buffer;
|
// asset.Data = buffer;
|
||||||
// AssetStorage store = new AssetStorage();
|
// AssetStorage store = new AssetStorage();
|
||||||
// store.Data = asset.Data;
|
// store.Data = asset.Data;
|
||||||
// store.Name = asset.Name;
|
// store.Name = asset.Name;
|
||||||
// store.UUID = asset.FullID;
|
// store.UUID = asset.FullID;
|
||||||
// db.Set(store);
|
// db.Set(store);
|
||||||
// db.Commit();
|
// db.Commit();
|
||||||
// return "";
|
// return "";
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//public string AssetGetMethod(string request, string path, string param)
|
//public string AssetGetMethod(string request, string path, string param)
|
||||||
//{
|
//{
|
||||||
// Console.WriteLine("got a request " + param);
|
// Console.WriteLine("got a request " + param);
|
||||||
// byte[] assetdata = GetAssetData(new LLUUID(param), false);
|
// byte[] assetdata = GetAssetData(new LLUUID(param), false);
|
||||||
// if (assetdata != null)
|
// if (assetdata != null)
|
||||||
// {
|
// {
|
||||||
// Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
|
// Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
|
||||||
// string ret = Windows1252Encoding.GetString(assetdata);
|
// string ret = Windows1252Encoding.GetString(assetdata);
|
||||||
// //string ret = System.Text.Encoding.Unicode.GetString(assetdata);
|
// //string ret = System.Text.Encoding.Unicode.GetString(assetdata);
|
||||||
|
|
||||||
// return ret;
|
// return ret;
|
||||||
|
|
||||||
// }
|
// }
|
||||||
// else
|
// else
|
||||||
// {
|
// {
|
||||||
// return "";
|
// return "";
|
||||||
// }
|
// }
|
||||||
|
|
||||||
//}
|
//}
|
||||||
|
|
||||||
public byte[] GetAssetData(LLUUID assetID, bool isTexture)
|
public byte[] GetAssetData(LLUUID assetID, bool isTexture)
|
||||||
{
|
{
|
||||||
bool found = false;
|
bool found = false;
|
||||||
AssetStorage foundAsset = null;
|
AssetStorage foundAsset = null;
|
||||||
|
|
||||||
IObjectSet result = db.Get(new AssetStorage(assetID));
|
IObjectSet result = db.Get(new AssetStorage(assetID));
|
||||||
if (result.Count > 0)
|
if (result.Count > 0)
|
||||||
{
|
{
|
||||||
foundAsset = (AssetStorage)result.Next();
|
foundAsset = (AssetStorage)result.Next();
|
||||||
found = true;
|
found = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (found)
|
if (found)
|
||||||
{
|
{
|
||||||
return foundAsset.Data;
|
return foundAsset.Data;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setupDB()
|
public void setupDB()
|
||||||
{
|
{
|
||||||
bool yapfile = File.Exists("gridassets.yap");
|
bool yapfile = File.Exists("gridassets.yap");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
db = Db4oFactory.OpenFile("gridassets.yap");
|
db = Db4oFactory.OpenFile("gridassets.yap");
|
||||||
MainLog.Instance.Verbose("Main.cs:setupDB() - creation");
|
MainLog.Instance.Verbose("Main.cs:setupDB() - creation");
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
db.Close();
|
db.Close();
|
||||||
MainLog.Instance.Warn("Main.cs:setupDB() - Exception occured");
|
MainLog.Instance.Warn("Main.cs:setupDB() - Exception occured");
|
||||||
MainLog.Instance.Warn(e.ToString());
|
MainLog.Instance.Warn(e.ToString());
|
||||||
}
|
}
|
||||||
if (!yapfile)
|
if (!yapfile)
|
||||||
{
|
{
|
||||||
this.LoadDB();
|
this.LoadDB();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadDB()
|
public void LoadDB()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
Console.WriteLine("setting up Asset database");
|
Console.WriteLine("setting up Asset database");
|
||||||
|
|
||||||
AssetBase Image = new AssetBase();
|
AssetBase Image = new AssetBase();
|
||||||
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001");
|
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001");
|
||||||
Image.Name = "Bricks";
|
Image.Name = "Bricks";
|
||||||
this.LoadAsset(Image, true, "bricks.jp2");
|
this.LoadAsset(Image, true, "bricks.jp2");
|
||||||
AssetStorage store = new AssetStorage();
|
AssetStorage store = new AssetStorage();
|
||||||
store.Data = Image.Data;
|
store.Data = Image.Data;
|
||||||
store.Name = Image.Name;
|
store.Name = Image.Name;
|
||||||
store.UUID = Image.FullID;
|
store.UUID = Image.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
|
|
||||||
Image = new AssetBase();
|
Image = new AssetBase();
|
||||||
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002");
|
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002");
|
||||||
Image.Name = "Plywood";
|
Image.Name = "Plywood";
|
||||||
this.LoadAsset(Image, true, "plywood.jp2");
|
this.LoadAsset(Image, true, "plywood.jp2");
|
||||||
store = new AssetStorage();
|
store = new AssetStorage();
|
||||||
store.Data = Image.Data;
|
store.Data = Image.Data;
|
||||||
store.Name = Image.Name;
|
store.Name = Image.Name;
|
||||||
store.UUID = Image.FullID;
|
store.UUID = Image.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
|
|
||||||
Image = new AssetBase();
|
Image = new AssetBase();
|
||||||
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003");
|
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003");
|
||||||
Image.Name = "Rocks";
|
Image.Name = "Rocks";
|
||||||
this.LoadAsset(Image, true, "rocks.jp2");
|
this.LoadAsset(Image, true, "rocks.jp2");
|
||||||
store = new AssetStorage();
|
store = new AssetStorage();
|
||||||
store.Data = Image.Data;
|
store.Data = Image.Data;
|
||||||
store.Name = Image.Name;
|
store.Name = Image.Name;
|
||||||
store.UUID = Image.FullID;
|
store.UUID = Image.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
|
|
||||||
Image = new AssetBase();
|
Image = new AssetBase();
|
||||||
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004");
|
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004");
|
||||||
Image.Name = "Granite";
|
Image.Name = "Granite";
|
||||||
this.LoadAsset(Image, true, "granite.jp2");
|
this.LoadAsset(Image, true, "granite.jp2");
|
||||||
store = new AssetStorage();
|
store = new AssetStorage();
|
||||||
store.Data = Image.Data;
|
store.Data = Image.Data;
|
||||||
store.Name = Image.Name;
|
store.Name = Image.Name;
|
||||||
store.UUID = Image.FullID;
|
store.UUID = Image.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
|
|
||||||
Image = new AssetBase();
|
Image = new AssetBase();
|
||||||
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005");
|
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005");
|
||||||
Image.Name = "Hardwood";
|
Image.Name = "Hardwood";
|
||||||
this.LoadAsset(Image, true, "hardwood.jp2");
|
this.LoadAsset(Image, true, "hardwood.jp2");
|
||||||
store = new AssetStorage();
|
store = new AssetStorage();
|
||||||
store.Data = Image.Data;
|
store.Data = Image.Data;
|
||||||
store.Name = Image.Name;
|
store.Name = Image.Name;
|
||||||
store.UUID = Image.FullID;
|
store.UUID = Image.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
|
|
||||||
Image = new AssetBase();
|
Image = new AssetBase();
|
||||||
Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005");
|
Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005");
|
||||||
Image.Name = "Prim Base Texture";
|
Image.Name = "Prim Base Texture";
|
||||||
this.LoadAsset(Image, true, "plywood.jp2");
|
this.LoadAsset(Image, true, "plywood.jp2");
|
||||||
store = new AssetStorage();
|
store = new AssetStorage();
|
||||||
store.Data = Image.Data;
|
store.Data = Image.Data;
|
||||||
store.Name = Image.Name;
|
store.Name = Image.Name;
|
||||||
store.UUID = Image.FullID;
|
store.UUID = Image.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
|
|
||||||
Image = new AssetBase();
|
Image = new AssetBase();
|
||||||
Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
|
Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
|
||||||
Image.Name = "Shape";
|
Image.Name = "Shape";
|
||||||
this.LoadAsset(Image, false, "base_shape.dat");
|
this.LoadAsset(Image, false, "base_shape.dat");
|
||||||
store = new AssetStorage();
|
store = new AssetStorage();
|
||||||
store.Data = Image.Data;
|
store.Data = Image.Data;
|
||||||
store.Name = Image.Name;
|
store.Name = Image.Name;
|
||||||
store.UUID = Image.FullID;
|
store.UUID = Image.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Console.WriteLine(e.Message);
|
Console.WriteLine(e.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoadAsset(AssetBase info, bool image, string filename)
|
private void LoadAsset(AssetBase info, bool image, string filename)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
string dataPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "assets"); //+ folder;
|
string dataPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "assets"); //+ folder;
|
||||||
string fileName = Path.Combine(dataPath, filename);
|
string fileName = Path.Combine(dataPath, filename);
|
||||||
FileInfo fInfo = new FileInfo(fileName);
|
FileInfo fInfo = new FileInfo(fileName);
|
||||||
long numBytes = fInfo.Length;
|
long numBytes = fInfo.Length;
|
||||||
FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
|
FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
|
||||||
byte[] idata = new byte[numBytes];
|
byte[] idata = new byte[numBytes];
|
||||||
BinaryReader br = new BinaryReader(fStream);
|
BinaryReader br = new BinaryReader(fStream);
|
||||||
idata = br.ReadBytes((int)numBytes);
|
idata = br.ReadBytes((int)numBytes);
|
||||||
br.Close();
|
br.Close();
|
||||||
fStream.Close();
|
fStream.Close();
|
||||||
info.Data = idata;
|
info.Data = idata;
|
||||||
//info.loaded=true;
|
//info.loaded=true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*private GridConfig LoadConfigDll(string dllName)
|
/*private GridConfig LoadConfigDll(string dllName)
|
||||||
{
|
{
|
||||||
Assembly pluginAssembly = Assembly.LoadFrom(dllName);
|
Assembly pluginAssembly = Assembly.LoadFrom(dllName);
|
||||||
GridConfig config = null;
|
GridConfig config = null;
|
||||||
|
|
||||||
foreach (Type pluginType in pluginAssembly.GetTypes())
|
foreach (Type pluginType in pluginAssembly.GetTypes())
|
||||||
{
|
{
|
||||||
if (pluginType.IsPublic)
|
if (pluginType.IsPublic)
|
||||||
{
|
{
|
||||||
if (!pluginType.IsAbstract)
|
if (!pluginType.IsAbstract)
|
||||||
{
|
{
|
||||||
Type typeInterface = pluginType.GetInterface("IGridConfig", true);
|
Type typeInterface = pluginType.GetInterface("IGridConfig", true);
|
||||||
|
|
||||||
if (typeInterface != null)
|
if (typeInterface != null)
|
||||||
{
|
{
|
||||||
IGridConfig plug = (IGridConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
|
IGridConfig plug = (IGridConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
|
||||||
config = plug.GetConfigObject();
|
config = plug.GetConfigObject();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
typeInterface = null;
|
typeInterface = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pluginAssembly = null;
|
pluginAssembly = null;
|
||||||
return config;
|
return config;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
public void CreateAsset(LLUUID assetId, byte[] assetData)
|
public void CreateAsset(LLUUID assetId, byte[] assetData)
|
||||||
{
|
{
|
||||||
AssetBase asset = new AssetBase();
|
AssetBase asset = new AssetBase();
|
||||||
asset.Name = "";
|
asset.Name = "";
|
||||||
asset.FullID = assetId;
|
asset.FullID = assetId;
|
||||||
asset.Data = assetData;
|
asset.Data = assetData;
|
||||||
|
|
||||||
AssetStorage store = new AssetStorage();
|
AssetStorage store = new AssetStorage();
|
||||||
store.Data = asset.Data;
|
store.Data = asset.Data;
|
||||||
store.Name = asset.Name;
|
store.Name = asset.Name;
|
||||||
store.UUID = asset.FullID;
|
store.UUID = asset.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RunCmd(string cmd, string[] cmdparams)
|
public void RunCmd(string cmd, string[] cmdparams)
|
||||||
{
|
{
|
||||||
switch (cmd)
|
switch (cmd)
|
||||||
{
|
{
|
||||||
case "help":
|
case "help":
|
||||||
m_console.Notice("shutdown - shutdown this asset server (USE CAUTION!)");
|
m_console.Notice("shutdown - shutdown this asset server (USE CAUTION!)");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "shutdown":
|
case "shutdown":
|
||||||
m_console.Close();
|
m_console.Close();
|
||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Show(string ShowWhat)
|
public void Show(string ShowWhat)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class GetAssetStreamHandler : BaseStreamHandler
|
public class GetAssetStreamHandler : BaseStreamHandler
|
||||||
{
|
{
|
||||||
OpenAsset_Main m_assetManager;
|
OpenAsset_Main m_assetManager;
|
||||||
|
|
||||||
override public byte[] Handle(string path, Stream request)
|
override public byte[] Handle(string path, Stream request)
|
||||||
{
|
{
|
||||||
string param = GetParam(path);
|
string param = GetParam(path);
|
||||||
|
|
||||||
byte[] assetdata = m_assetManager.GetAssetData(new LLUUID(param), false);
|
byte[] assetdata = m_assetManager.GetAssetData(new LLUUID(param), false);
|
||||||
if (assetdata != null)
|
if (assetdata != null)
|
||||||
{
|
{
|
||||||
return assetdata;
|
return assetdata;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return new byte[]{};
|
return new byte[]{};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public GetAssetStreamHandler(OpenAsset_Main assetManager):base( "/assets/", "GET")
|
public GetAssetStreamHandler(OpenAsset_Main assetManager):base( "/assets/", "GET")
|
||||||
{
|
{
|
||||||
m_assetManager = assetManager;
|
m_assetManager = assetManager;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PostAssetStreamHandler : BaseStreamHandler
|
public class PostAssetStreamHandler : BaseStreamHandler
|
||||||
{
|
{
|
||||||
OpenAsset_Main m_assetManager;
|
OpenAsset_Main m_assetManager;
|
||||||
|
|
||||||
override public byte[] Handle(string path, Stream request)
|
override public byte[] Handle(string path, Stream request)
|
||||||
{
|
{
|
||||||
string param = GetParam(path);
|
string param = GetParam(path);
|
||||||
LLUUID assetId = new LLUUID(param);
|
LLUUID assetId = new LLUUID(param);
|
||||||
byte[] txBuffer = new byte[4096];
|
byte[] txBuffer = new byte[4096];
|
||||||
|
|
||||||
using( BinaryReader binReader = new BinaryReader( request ) )
|
using( BinaryReader binReader = new BinaryReader( request ) )
|
||||||
{
|
{
|
||||||
using (MemoryStream memoryStream = new MemoryStream(4096))
|
using (MemoryStream memoryStream = new MemoryStream(4096))
|
||||||
{
|
{
|
||||||
int count;
|
int count;
|
||||||
while ((count = binReader.Read(txBuffer, 0, 4096)) > 0)
|
while ((count = binReader.Read(txBuffer, 0, 4096)) > 0)
|
||||||
{
|
{
|
||||||
memoryStream.Write(txBuffer, 0, count);
|
memoryStream.Write(txBuffer, 0, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
byte[] assetData = memoryStream.ToArray();
|
byte[] assetData = memoryStream.ToArray();
|
||||||
|
|
||||||
m_assetManager.CreateAsset(assetId, assetData);
|
m_assetManager.CreateAsset(assetId, assetData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new byte[]{};
|
return new byte[]{};
|
||||||
}
|
}
|
||||||
|
|
||||||
public PostAssetStreamHandler( OpenAsset_Main assetManager )
|
public PostAssetStreamHandler( OpenAsset_Main assetManager )
|
||||||
: base("/assets/", "POST")
|
: base("/assets/", "POST")
|
||||||
{
|
{
|
||||||
m_assetManager = assetManager;
|
m_assetManager = assetManager;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,58 +1,58 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("OGS-AssetServer")]
|
[assembly: AssemblyTitle("OGS-AssetServer")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("OGS-AssetServer")]
|
[assembly: AssemblyProduct("OGS-AssetServer")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2007")]
|
[assembly: AssemblyCopyright("Copyright © 2007")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
// 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
|
// to COM components. If you need to access a type in this assembly from
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("b541b244-3d1d-4625-9003-bc2a3a6a39a4")]
|
[assembly: Guid("b541b244-3d1d-4625-9003-bc2a3a6a39a4")]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
// Major Version
|
// Major Version
|
||||||
// Minor Version
|
// Minor Version
|
||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
|
@ -1,138 +1,138 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using Nwc.XmlRpc;
|
using Nwc.XmlRpc;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Manager
|
namespace OpenSim.Framework.Manager
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Used to pass messages to the gridserver
|
/// Used to pass messages to the gridserver
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="param">Pass this argument</param>
|
/// <param name="param">Pass this argument</param>
|
||||||
public delegate void GridManagerCallback(string param);
|
public delegate void GridManagerCallback(string param);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Serverside listener for grid commands
|
/// Serverside listener for grid commands
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class GridManagementAgent
|
public class GridManagementAgent
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Passes grid server messages
|
/// Passes grid server messages
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private GridManagerCallback thecallback;
|
private GridManagerCallback thecallback;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Security keys
|
/// Security keys
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private string sendkey;
|
private string sendkey;
|
||||||
private string recvkey;
|
private string recvkey;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Our component type
|
/// Our component type
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private string component_type;
|
private string component_type;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// List of active sessions
|
/// List of active sessions
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static ArrayList Sessions;
|
private static ArrayList Sessions;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises a new GridManagementAgent
|
/// Initialises a new GridManagementAgent
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="app_httpd">HTTP Daemon for this server</param>
|
/// <param name="app_httpd">HTTP Daemon for this server</param>
|
||||||
/// <param name="component_type">What component type are we?</param>
|
/// <param name="component_type">What component type are we?</param>
|
||||||
/// <param name="sendkey">Security send key</param>
|
/// <param name="sendkey">Security send key</param>
|
||||||
/// <param name="recvkey">Security recieve key</param>
|
/// <param name="recvkey">Security recieve key</param>
|
||||||
/// <param name="thecallback">Message callback</param>
|
/// <param name="thecallback">Message callback</param>
|
||||||
public GridManagementAgent(BaseHttpServer app_httpd, string component_type, string sendkey, string recvkey, GridManagerCallback thecallback)
|
public GridManagementAgent(BaseHttpServer app_httpd, string component_type, string sendkey, string recvkey, GridManagerCallback thecallback)
|
||||||
{
|
{
|
||||||
this.sendkey = sendkey;
|
this.sendkey = sendkey;
|
||||||
this.recvkey = recvkey;
|
this.recvkey = recvkey;
|
||||||
this.component_type = component_type;
|
this.component_type = component_type;
|
||||||
this.thecallback = thecallback;
|
this.thecallback = thecallback;
|
||||||
Sessions = new ArrayList();
|
Sessions = new ArrayList();
|
||||||
|
|
||||||
app_httpd.AddXmlRPCHandler("manager_login", XmlRpcLoginMethod);
|
app_httpd.AddXmlRPCHandler("manager_login", XmlRpcLoginMethod);
|
||||||
|
|
||||||
switch (component_type)
|
switch (component_type)
|
||||||
{
|
{
|
||||||
case "gridserver":
|
case "gridserver":
|
||||||
GridServerManager.sendkey = this.sendkey;
|
GridServerManager.sendkey = this.sendkey;
|
||||||
GridServerManager.recvkey = this.recvkey;
|
GridServerManager.recvkey = this.recvkey;
|
||||||
GridServerManager.thecallback = thecallback;
|
GridServerManager.thecallback = thecallback;
|
||||||
app_httpd.AddXmlRPCHandler("shutdown", GridServerManager.XmlRpcShutdownMethod);
|
app_httpd.AddXmlRPCHandler("shutdown", GridServerManager.XmlRpcShutdownMethod);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Checks if a session exists
|
/// Checks if a session exists
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sessionID">The session ID</param>
|
/// <param name="sessionID">The session ID</param>
|
||||||
/// <returns>Exists?</returns>
|
/// <returns>Exists?</returns>
|
||||||
public static bool SessionExists(LLUUID sessionID)
|
public static bool SessionExists(LLUUID sessionID)
|
||||||
{
|
{
|
||||||
return Sessions.Contains(sessionID);
|
return Sessions.Contains(sessionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Logs a new session to the grid manager
|
/// Logs a new session to the grid manager
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="request">the XMLRPC request</param>
|
/// <param name="request">the XMLRPC request</param>
|
||||||
/// <returns>An XMLRPC reply</returns>
|
/// <returns>An XMLRPC reply</returns>
|
||||||
public static XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request)
|
public static XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request)
|
||||||
{
|
{
|
||||||
XmlRpcResponse response = new XmlRpcResponse();
|
XmlRpcResponse response = new XmlRpcResponse();
|
||||||
Hashtable requestData = (Hashtable)request.Params[0];
|
Hashtable requestData = (Hashtable)request.Params[0];
|
||||||
Hashtable responseData = new Hashtable();
|
Hashtable responseData = new Hashtable();
|
||||||
|
|
||||||
// TODO: Switch this over to using OpenSim.Framework.Data
|
// TODO: Switch this over to using OpenSim.Framework.Data
|
||||||
if (requestData["username"].Equals("admin") && requestData["password"].Equals("supersecret"))
|
if (requestData["username"].Equals("admin") && requestData["password"].Equals("supersecret"))
|
||||||
{
|
{
|
||||||
response.IsFault = false;
|
response.IsFault = false;
|
||||||
LLUUID new_session = LLUUID.Random();
|
LLUUID new_session = LLUUID.Random();
|
||||||
Sessions.Add(new_session);
|
Sessions.Add(new_session);
|
||||||
responseData["session_id"] = new_session.ToString();
|
responseData["session_id"] = new_session.ToString();
|
||||||
responseData["msg"] = "Login OK";
|
responseData["msg"] = "Login OK";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
response.IsFault = true;
|
response.IsFault = true;
|
||||||
responseData["error"] = "Invalid username or password";
|
responseData["error"] = "Invalid username or password";
|
||||||
}
|
}
|
||||||
|
|
||||||
response.Value = responseData;
|
response.Value = responseData;
|
||||||
return response;
|
return response;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,93 +1,93 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using Nwc.XmlRpc;
|
using Nwc.XmlRpc;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Manager {
|
namespace OpenSim.Framework.Manager {
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A remote management system for the grid server
|
/// A remote management system for the grid server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class GridServerManager
|
public class GridServerManager
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Triggers events from the grid manager
|
/// Triggers events from the grid manager
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static GridManagerCallback thecallback;
|
public static GridManagerCallback thecallback;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Security keys
|
/// Security keys
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string sendkey;
|
public static string sendkey;
|
||||||
public static string recvkey;
|
public static string recvkey;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Disconnects the grid server and shuts it down
|
/// Disconnects the grid server and shuts it down
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="request">XmlRpc Request</param>
|
/// <param name="request">XmlRpc Request</param>
|
||||||
/// <returns>An XmlRpc response containing either a "msg" or an "error"</returns>
|
/// <returns>An XmlRpc response containing either a "msg" or an "error"</returns>
|
||||||
public static XmlRpcResponse XmlRpcShutdownMethod(XmlRpcRequest request)
|
public static XmlRpcResponse XmlRpcShutdownMethod(XmlRpcRequest request)
|
||||||
{
|
{
|
||||||
XmlRpcResponse response = new XmlRpcResponse();
|
XmlRpcResponse response = new XmlRpcResponse();
|
||||||
Hashtable requestData = (Hashtable)request.Params[0];
|
Hashtable requestData = (Hashtable)request.Params[0];
|
||||||
Hashtable responseData = new Hashtable();
|
Hashtable responseData = new Hashtable();
|
||||||
|
|
||||||
if(requestData.ContainsKey("session_id")) {
|
if(requestData.ContainsKey("session_id")) {
|
||||||
if(GridManagementAgent.SessionExists(new LLUUID((string)requestData["session_id"]))) {
|
if(GridManagementAgent.SessionExists(new LLUUID((string)requestData["session_id"]))) {
|
||||||
responseData["msg"]="Shutdown command accepted";
|
responseData["msg"]="Shutdown command accepted";
|
||||||
(new Thread(new ThreadStart(ShutdownServer))).Start();
|
(new Thread(new ThreadStart(ShutdownServer))).Start();
|
||||||
} else {
|
} else {
|
||||||
response.IsFault=true;
|
response.IsFault=true;
|
||||||
responseData["error"]="bad session ID";
|
responseData["error"]="bad session ID";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
response.IsFault=true;
|
response.IsFault=true;
|
||||||
responseData["error"]="no session ID";
|
responseData["error"]="no session ID";
|
||||||
}
|
}
|
||||||
|
|
||||||
response.Value = responseData;
|
response.Value = responseData;
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Shuts down the grid server
|
/// Shuts down the grid server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static void ShutdownServer()
|
public static void ShutdownServer()
|
||||||
{
|
{
|
||||||
Console.WriteLine("Shutting down the grid server - recieved a grid manager request");
|
Console.WriteLine("Shutting down the grid server - recieved a grid manager request");
|
||||||
Console.WriteLine("Terminating in three seconds...");
|
Console.WriteLine("Terminating in three seconds...");
|
||||||
Thread.Sleep(3000);
|
Thread.Sleep(3000);
|
||||||
thecallback("shutdown");
|
thecallback("shutdown");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,56 +1,56 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
// Information about this assembly is defined by the following
|
// Information about this assembly is defined by the following
|
||||||
// attributes.
|
// attributes.
|
||||||
//
|
//
|
||||||
// change them to the information which is associated with the assembly
|
// change them to the information which is associated with the assembly
|
||||||
// you compile.
|
// you compile.
|
||||||
|
|
||||||
[assembly: AssemblyTitle("GridConfig")]
|
[assembly: AssemblyTitle("GridConfig")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("GridConfig")]
|
[assembly: AssemblyProduct("GridConfig")]
|
||||||
[assembly: AssemblyCopyright("")]
|
[assembly: AssemblyCopyright("")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// This sets the default COM visibility of types in the assembly to invisible.
|
// 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.
|
// If you need to expose a type to COM, use [ComVisible(true)] on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The assembly version has following format :
|
// The assembly version has following format :
|
||||||
//
|
//
|
||||||
// Major.Minor.Build.Revision
|
// Major.Minor.Build.Revision
|
||||||
//
|
//
|
||||||
// You can specify all values by your own or you can build default build and revision
|
// You can specify all values by your own or you can build default build and revision
|
||||||
// numbers with the '*' character (the default):
|
// numbers with the '*' character (the default):
|
||||||
|
|
||||||
[assembly: AssemblyVersion("1.0.*")]
|
[assembly: AssemblyVersion("1.0.*")]
|
||||||
|
|
|
@ -1,160 +1,160 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using Db4objects.Db4o;
|
using Db4objects.Db4o;
|
||||||
using OpenSim.Framework.Console;
|
using OpenSim.Framework.Console;
|
||||||
using OpenSim.Framework.Interfaces;
|
using OpenSim.Framework.Interfaces;
|
||||||
|
|
||||||
namespace OpenGrid.Config.GridConfigDb4o
|
namespace OpenGrid.Config.GridConfigDb4o
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A grid configuration interface for returning the DB4o Config Provider
|
/// A grid configuration interface for returning the DB4o Config Provider
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Db40ConfigPlugin: IGridConfig
|
public class Db40ConfigPlugin: IGridConfig
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Loads and returns a configuration objeect
|
/// Loads and returns a configuration objeect
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A grid configuration object</returns>
|
/// <returns>A grid configuration object</returns>
|
||||||
public GridConfig GetConfigObject()
|
public GridConfig GetConfigObject()
|
||||||
{
|
{
|
||||||
MainLog.Instance.Verbose("Loading Db40Config dll");
|
MainLog.Instance.Verbose("Loading Db40Config dll");
|
||||||
return ( new DbGridConfig());
|
return ( new DbGridConfig());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A DB4o based Gridserver configuration object
|
/// A DB4o based Gridserver configuration object
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DbGridConfig : GridConfig
|
public class DbGridConfig : GridConfig
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The DB4o Database
|
/// The DB4o Database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private IObjectContainer db;
|
private IObjectContainer db;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// User configuration for the Grid Config interfaces
|
/// User configuration for the Grid Config interfaces
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void LoadDefaults() {
|
public void LoadDefaults() {
|
||||||
MainLog.Instance.Notice("Config.cs:LoadDefaults() - Please press enter to retain default or enter new settings");
|
MainLog.Instance.Notice("Config.cs:LoadDefaults() - Please press enter to retain default or enter new settings");
|
||||||
|
|
||||||
// About the grid options
|
// About the grid options
|
||||||
this.GridOwner = MainLog.Instance.CmdPrompt("Grid owner", "OGS development team");
|
this.GridOwner = MainLog.Instance.CmdPrompt("Grid owner", "OGS development team");
|
||||||
|
|
||||||
// Asset Options
|
// Asset Options
|
||||||
this.DefaultAssetServer = MainLog.Instance.CmdPrompt("Default asset server","http://127.0.0.1:8003/");
|
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.AssetSendKey = MainLog.Instance.CmdPrompt("Key to send to asset server","null");
|
||||||
this.AssetRecvKey = MainLog.Instance.CmdPrompt("Key to expect from asset server","null");
|
this.AssetRecvKey = MainLog.Instance.CmdPrompt("Key to expect from asset server","null");
|
||||||
|
|
||||||
// User Server Options
|
// User Server Options
|
||||||
this.DefaultUserServer = MainLog.Instance.CmdPrompt("Default user server","http://127.0.0.1:8002/");
|
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.UserSendKey = MainLog.Instance.CmdPrompt("Key to send to user server","null");
|
||||||
this.UserRecvKey = MainLog.Instance.CmdPrompt("Key to expect from user server","null");
|
this.UserRecvKey = MainLog.Instance.CmdPrompt("Key to expect from user server","null");
|
||||||
|
|
||||||
// Region Server Options
|
// Region Server Options
|
||||||
this.SimSendKey = MainLog.Instance.CmdPrompt("Key to send to sims","null");
|
this.SimSendKey = MainLog.Instance.CmdPrompt("Key to send to sims","null");
|
||||||
this.SimRecvKey = MainLog.Instance.CmdPrompt("Key to expect from sims","null");
|
this.SimRecvKey = MainLog.Instance.CmdPrompt("Key to expect from sims","null");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initialises a new configuration object
|
/// Initialises a new configuration object
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public override void InitConfig() {
|
public override void InitConfig() {
|
||||||
try {
|
try {
|
||||||
// Perform Db4o initialisation
|
// Perform Db4o initialisation
|
||||||
db = Db4oFactory.OpenFile("opengrid.yap");
|
db = Db4oFactory.OpenFile("opengrid.yap");
|
||||||
|
|
||||||
// Locate the grid configuration object
|
// Locate the grid configuration object
|
||||||
IObjectSet result = db.Get(typeof(DbGridConfig));
|
IObjectSet result = db.Get(typeof(DbGridConfig));
|
||||||
// Found?
|
// Found?
|
||||||
if(result.Count==1) {
|
if(result.Count==1) {
|
||||||
MainLog.Instance.Verbose("Config.cs:InitConfig() - Found a GridConfig object in the local database, loading");
|
MainLog.Instance.Verbose("Config.cs:InitConfig() - Found a GridConfig object in the local database, loading");
|
||||||
foreach (DbGridConfig cfg in result) {
|
foreach (DbGridConfig cfg in result) {
|
||||||
// Import each setting into this class
|
// Import each setting into this class
|
||||||
// Grid Settings
|
// Grid Settings
|
||||||
this.GridOwner=cfg.GridOwner;
|
this.GridOwner=cfg.GridOwner;
|
||||||
// Asset Settings
|
// Asset Settings
|
||||||
this.DefaultAssetServer=cfg.DefaultAssetServer;
|
this.DefaultAssetServer=cfg.DefaultAssetServer;
|
||||||
this.AssetSendKey=cfg.AssetSendKey;
|
this.AssetSendKey=cfg.AssetSendKey;
|
||||||
this.AssetRecvKey=cfg.AssetRecvKey;
|
this.AssetRecvKey=cfg.AssetRecvKey;
|
||||||
// User Settings
|
// User Settings
|
||||||
this.DefaultUserServer=cfg.DefaultUserServer;
|
this.DefaultUserServer=cfg.DefaultUserServer;
|
||||||
this.UserSendKey=cfg.UserSendKey;
|
this.UserSendKey=cfg.UserSendKey;
|
||||||
this.UserRecvKey=cfg.UserRecvKey;
|
this.UserRecvKey=cfg.UserRecvKey;
|
||||||
// Region Settings
|
// Region Settings
|
||||||
this.SimSendKey=cfg.SimSendKey;
|
this.SimSendKey=cfg.SimSendKey;
|
||||||
this.SimRecvKey=cfg.SimRecvKey;
|
this.SimRecvKey=cfg.SimRecvKey;
|
||||||
}
|
}
|
||||||
// Create a new configuration object from this class
|
// Create a new configuration object from this class
|
||||||
} else {
|
} else {
|
||||||
MainLog.Instance.Verbose("Config.cs:InitConfig() - Could not find object in database, loading precompiled defaults");
|
MainLog.Instance.Verbose("Config.cs:InitConfig() - Could not find object in database, loading precompiled defaults");
|
||||||
|
|
||||||
// Load default settings into this class
|
// Load default settings into this class
|
||||||
LoadDefaults();
|
LoadDefaults();
|
||||||
|
|
||||||
// Saves to the database file...
|
// Saves to the database file...
|
||||||
MainLog.Instance.Verbose( "Writing out default settings to local database");
|
MainLog.Instance.Verbose( "Writing out default settings to local database");
|
||||||
db.Set(this);
|
db.Set(this);
|
||||||
|
|
||||||
// Closes file locks
|
// Closes file locks
|
||||||
db.Close();
|
db.Close();
|
||||||
}
|
}
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
|
MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
|
||||||
MainLog.Instance.Warn(e.ToString());
|
MainLog.Instance.Warn(e.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Grid Settings
|
// Grid Settings
|
||||||
MainLog.Instance.Verbose("Grid settings loaded:");
|
MainLog.Instance.Verbose("Grid settings loaded:");
|
||||||
MainLog.Instance.Verbose("Grid owner: " + this.GridOwner);
|
MainLog.Instance.Verbose("Grid owner: " + this.GridOwner);
|
||||||
|
|
||||||
// Asset Settings
|
// Asset Settings
|
||||||
MainLog.Instance.Verbose("Default asset server: " + this.DefaultAssetServer);
|
MainLog.Instance.Verbose("Default asset server: " + this.DefaultAssetServer);
|
||||||
MainLog.Instance.Verbose("Key to send to asset server: " + this.AssetSendKey);
|
MainLog.Instance.Verbose("Key to send to asset server: " + this.AssetSendKey);
|
||||||
MainLog.Instance.Verbose("Key to expect from asset server: " + this.AssetRecvKey);
|
MainLog.Instance.Verbose("Key to expect from asset server: " + this.AssetRecvKey);
|
||||||
|
|
||||||
// User Settings
|
// User Settings
|
||||||
MainLog.Instance.Verbose("Default user server: " + this.DefaultUserServer);
|
MainLog.Instance.Verbose("Default user server: " + this.DefaultUserServer);
|
||||||
MainLog.Instance.Verbose("Key to send to user server: " + this.UserSendKey);
|
MainLog.Instance.Verbose("Key to send to user server: " + this.UserSendKey);
|
||||||
MainLog.Instance.Verbose("Key to expect from user server: " + this.UserRecvKey);
|
MainLog.Instance.Verbose("Key to expect from user server: " + this.UserRecvKey);
|
||||||
|
|
||||||
// Region Settings
|
// Region Settings
|
||||||
MainLog.Instance.Verbose("Key to send to sims: " + this.SimSendKey);
|
MainLog.Instance.Verbose("Key to send to sims: " + this.SimSendKey);
|
||||||
MainLog.Instance.Verbose("Key to expect from sims: " + this.SimRecvKey);
|
MainLog.Instance.Verbose("Key to expect from sims: " + this.SimRecvKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Closes down the database and releases filesystem locks
|
/// Closes down the database and releases filesystem locks
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Shutdown() {
|
public void Shutdown() {
|
||||||
db.Close();
|
db.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,258 +1,258 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
using OpenSim.Framework.Console;
|
using OpenSim.Framework.Console;
|
||||||
using OpenSim.Framework.Interfaces;
|
using OpenSim.Framework.Interfaces;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
using OpenSim.GenericConfig;
|
using OpenSim.GenericConfig;
|
||||||
using Timer=System.Timers.Timer;
|
using Timer=System.Timers.Timer;
|
||||||
|
|
||||||
namespace OpenSim.Grid.GridServer
|
namespace OpenSim.Grid.GridServer
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class OpenGrid_Main : conscmd_callback
|
public class OpenGrid_Main : conscmd_callback
|
||||||
{
|
{
|
||||||
private string ConfigDll = "OpenSim.Grid.GridServer.Config.dll";
|
private string ConfigDll = "OpenSim.Grid.GridServer.Config.dll";
|
||||||
private string GridDll = "OpenSim.Framework.Data.MySQL.dll";
|
private string GridDll = "OpenSim.Framework.Data.MySQL.dll";
|
||||||
public GridConfig Cfg;
|
public GridConfig Cfg;
|
||||||
|
|
||||||
public static OpenGrid_Main thegrid;
|
public static OpenGrid_Main thegrid;
|
||||||
protected IGenericConfig localXMLConfig;
|
protected IGenericConfig localXMLConfig;
|
||||||
|
|
||||||
public static bool setuponly;
|
public static bool setuponly;
|
||||||
|
|
||||||
//public LLUUID highestUUID;
|
//public LLUUID highestUUID;
|
||||||
|
|
||||||
// private SimProfileManager m_simProfileManager;
|
// private SimProfileManager m_simProfileManager;
|
||||||
|
|
||||||
private GridManager m_gridManager;
|
private GridManager m_gridManager;
|
||||||
|
|
||||||
private LogBase m_console;
|
private LogBase m_console;
|
||||||
|
|
||||||
[STAThread]
|
[STAThread]
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
if (args.Length > 0)
|
if (args.Length > 0)
|
||||||
{
|
{
|
||||||
if (args[0] == "-setuponly") setuponly = true;
|
if (args[0] == "-setuponly") setuponly = true;
|
||||||
}
|
}
|
||||||
Console.WriteLine("Starting...\n");
|
Console.WriteLine("Starting...\n");
|
||||||
|
|
||||||
thegrid = new OpenGrid_Main();
|
thegrid = new OpenGrid_Main();
|
||||||
thegrid.Startup();
|
thegrid.Startup();
|
||||||
|
|
||||||
thegrid.Work();
|
thegrid.Work();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Work()
|
private void Work()
|
||||||
{
|
{
|
||||||
m_console.Notice("Enter help for a list of commands\n");
|
m_console.Notice("Enter help for a list of commands\n");
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
m_console.MainLogPrompt();
|
m_console.MainLogPrompt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private OpenGrid_Main()
|
private OpenGrid_Main()
|
||||||
{
|
{
|
||||||
m_console = new LogBase("opengrid-gridserver-console.log", "OpenGrid", this, false);
|
m_console = new LogBase("opengrid-gridserver-console.log", "OpenGrid", this, false);
|
||||||
MainLog.Instance = m_console;
|
MainLog.Instance = m_console;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void managercallback(string cmd)
|
public void managercallback(string cmd)
|
||||||
{
|
{
|
||||||
switch (cmd)
|
switch (cmd)
|
||||||
{
|
{
|
||||||
case "shutdown":
|
case "shutdown":
|
||||||
RunCmd("shutdown", new string[0]);
|
RunCmd("shutdown", new string[0]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void Startup()
|
public void Startup()
|
||||||
{
|
{
|
||||||
this.localXMLConfig = new XmlConfig("GridServerConfig.xml");
|
this.localXMLConfig = new XmlConfig("GridServerConfig.xml");
|
||||||
this.localXMLConfig.LoadData();
|
this.localXMLConfig.LoadData();
|
||||||
this.ConfigDB(this.localXMLConfig);
|
this.ConfigDB(this.localXMLConfig);
|
||||||
this.localXMLConfig.Close();
|
this.localXMLConfig.Close();
|
||||||
|
|
||||||
m_console.Verbose( "Main.cs:Startup() - Loading configuration");
|
m_console.Verbose( "Main.cs:Startup() - Loading configuration");
|
||||||
Cfg = this.LoadConfigDll(this.ConfigDll);
|
Cfg = this.LoadConfigDll(this.ConfigDll);
|
||||||
Cfg.InitConfig();
|
Cfg.InitConfig();
|
||||||
if (setuponly) Environment.Exit(0);
|
if (setuponly) Environment.Exit(0);
|
||||||
|
|
||||||
m_console.Verbose( "Main.cs:Startup() - Connecting to Storage Server");
|
m_console.Verbose( "Main.cs:Startup() - Connecting to Storage Server");
|
||||||
m_gridManager = new GridManager();
|
m_gridManager = new GridManager();
|
||||||
m_gridManager.AddPlugin(GridDll); // Made of win
|
m_gridManager.AddPlugin(GridDll); // Made of win
|
||||||
m_gridManager.config = Cfg;
|
m_gridManager.config = Cfg;
|
||||||
|
|
||||||
m_console.Verbose( "Main.cs:Startup() - Starting HTTP process");
|
m_console.Verbose( "Main.cs:Startup() - Starting HTTP process");
|
||||||
BaseHttpServer httpServer = new BaseHttpServer(8001);
|
BaseHttpServer httpServer = new BaseHttpServer(8001);
|
||||||
//GridManagementAgent GridManagerAgent = new GridManagementAgent(httpServer, "gridserver", Cfg.SimSendKey, Cfg.SimRecvKey, managercallback);
|
//GridManagementAgent GridManagerAgent = new GridManagementAgent(httpServer, "gridserver", Cfg.SimSendKey, Cfg.SimRecvKey, managercallback);
|
||||||
|
|
||||||
httpServer.AddXmlRPCHandler("simulator_login", m_gridManager.XmlRpcSimulatorLoginMethod);
|
httpServer.AddXmlRPCHandler("simulator_login", m_gridManager.XmlRpcSimulatorLoginMethod);
|
||||||
httpServer.AddXmlRPCHandler("simulator_data_request", m_gridManager.XmlRpcSimulatorDataRequestMethod);
|
httpServer.AddXmlRPCHandler("simulator_data_request", m_gridManager.XmlRpcSimulatorDataRequestMethod);
|
||||||
httpServer.AddXmlRPCHandler("map_block", m_gridManager.XmlRpcMapBlockMethod);
|
httpServer.AddXmlRPCHandler("map_block", m_gridManager.XmlRpcMapBlockMethod);
|
||||||
|
|
||||||
httpServer.AddStreamHandler(new RestStreamHandler("GET", "/sims/", m_gridManager.RestGetSimMethod ));
|
httpServer.AddStreamHandler(new RestStreamHandler("GET", "/sims/", m_gridManager.RestGetSimMethod ));
|
||||||
httpServer.AddStreamHandler(new RestStreamHandler("POST", "/sims/", m_gridManager.RestSetSimMethod ));
|
httpServer.AddStreamHandler(new RestStreamHandler("POST", "/sims/", m_gridManager.RestSetSimMethod ));
|
||||||
|
|
||||||
httpServer.AddStreamHandler( new RestStreamHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod ));
|
httpServer.AddStreamHandler( new RestStreamHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod ));
|
||||||
httpServer.AddStreamHandler( new RestStreamHandler("POST","/regions/", m_gridManager.RestSetRegionMethod ));
|
httpServer.AddStreamHandler( new RestStreamHandler("POST","/regions/", m_gridManager.RestSetRegionMethod ));
|
||||||
|
|
||||||
//httpServer.AddRestHandler("GET", "/sims/", m_gridManager.RestGetSimMethod);
|
//httpServer.AddRestHandler("GET", "/sims/", m_gridManager.RestGetSimMethod);
|
||||||
//httpServer.AddRestHandler("POST", "/sims/", m_gridManager.RestSetSimMethod);
|
//httpServer.AddRestHandler("POST", "/sims/", m_gridManager.RestSetSimMethod);
|
||||||
//httpServer.AddRestHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod);
|
//httpServer.AddRestHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod);
|
||||||
//httpServer.AddRestHandler("POST", "/regions/", m_gridManager.RestSetRegionMethod);
|
//httpServer.AddRestHandler("POST", "/regions/", m_gridManager.RestSetRegionMethod);
|
||||||
|
|
||||||
httpServer.Start();
|
httpServer.Start();
|
||||||
|
|
||||||
m_console.Verbose( "Main.cs:Startup() - Starting sim status checker");
|
m_console.Verbose( "Main.cs:Startup() - Starting sim status checker");
|
||||||
|
|
||||||
Timer simCheckTimer = new Timer(3600000 * 3); // 3 Hours between updates.
|
Timer simCheckTimer = new Timer(3600000 * 3); // 3 Hours between updates.
|
||||||
simCheckTimer.Elapsed += new ElapsedEventHandler(CheckSims);
|
simCheckTimer.Elapsed += new ElapsedEventHandler(CheckSims);
|
||||||
simCheckTimer.Enabled = true;
|
simCheckTimer.Enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private GridConfig LoadConfigDll(string dllName)
|
private GridConfig LoadConfigDll(string dllName)
|
||||||
{
|
{
|
||||||
Assembly pluginAssembly = Assembly.LoadFrom(dllName);
|
Assembly pluginAssembly = Assembly.LoadFrom(dllName);
|
||||||
GridConfig config = null;
|
GridConfig config = null;
|
||||||
|
|
||||||
foreach (Type pluginType in pluginAssembly.GetTypes())
|
foreach (Type pluginType in pluginAssembly.GetTypes())
|
||||||
{
|
{
|
||||||
if (pluginType.IsPublic)
|
if (pluginType.IsPublic)
|
||||||
{
|
{
|
||||||
if (!pluginType.IsAbstract)
|
if (!pluginType.IsAbstract)
|
||||||
{
|
{
|
||||||
Type typeInterface = pluginType.GetInterface("IGridConfig", true);
|
Type typeInterface = pluginType.GetInterface("IGridConfig", true);
|
||||||
|
|
||||||
if (typeInterface != null)
|
if (typeInterface != null)
|
||||||
{
|
{
|
||||||
IGridConfig plug = (IGridConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
|
IGridConfig plug = (IGridConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
|
||||||
config = plug.GetConfigObject();
|
config = plug.GetConfigObject();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
typeInterface = null;
|
typeInterface = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pluginAssembly = null;
|
pluginAssembly = null;
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CheckSims(object sender, ElapsedEventArgs e)
|
public void CheckSims(object sender, ElapsedEventArgs e)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
foreach (SimProfileBase sim in m_simProfileManager.SimProfiles.Values)
|
foreach (SimProfileBase sim in m_simProfileManager.SimProfiles.Values)
|
||||||
{
|
{
|
||||||
string SimResponse = "";
|
string SimResponse = "";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
WebRequest CheckSim = WebRequest.Create("http://" + sim.sim_ip + ":" + sim.sim_port.ToString() + "/checkstatus/");
|
WebRequest CheckSim = WebRequest.Create("http://" + sim.sim_ip + ":" + sim.sim_port.ToString() + "/checkstatus/");
|
||||||
CheckSim.Method = "GET";
|
CheckSim.Method = "GET";
|
||||||
CheckSim.ContentType = "text/plaintext";
|
CheckSim.ContentType = "text/plaintext";
|
||||||
CheckSim.ContentLength = 0;
|
CheckSim.ContentLength = 0;
|
||||||
|
|
||||||
StreamWriter stOut = new StreamWriter(CheckSim.GetRequestStream(), System.Text.Encoding.ASCII);
|
StreamWriter stOut = new StreamWriter(CheckSim.GetRequestStream(), System.Text.Encoding.ASCII);
|
||||||
stOut.Write("");
|
stOut.Write("");
|
||||||
stOut.Close();
|
stOut.Close();
|
||||||
|
|
||||||
StreamReader stIn = new StreamReader(CheckSim.GetResponse().GetResponseStream());
|
StreamReader stIn = new StreamReader(CheckSim.GetResponse().GetResponseStream());
|
||||||
SimResponse = stIn.ReadToEnd();
|
SimResponse = stIn.ReadToEnd();
|
||||||
stIn.Close();
|
stIn.Close();
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SimResponse == "OK")
|
if (SimResponse == "OK")
|
||||||
{
|
{
|
||||||
m_simProfileManager.SimProfiles[sim.UUID].online = true;
|
m_simProfileManager.SimProfiles[sim.UUID].online = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_simProfileManager.SimProfiles[sim.UUID].online = false;
|
m_simProfileManager.SimProfiles[sim.UUID].online = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RunCmd(string cmd, string[] cmdparams)
|
public void RunCmd(string cmd, string[] cmdparams)
|
||||||
{
|
{
|
||||||
switch (cmd)
|
switch (cmd)
|
||||||
{
|
{
|
||||||
case "help":
|
case "help":
|
||||||
m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
|
m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "shutdown":
|
case "shutdown":
|
||||||
m_console.Close();
|
m_console.Close();
|
||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Show(string ShowWhat)
|
public void Show(string ShowWhat)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ConfigDB(IGenericConfig configData)
|
private void ConfigDB(IGenericConfig configData)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string attri = "";
|
string attri = "";
|
||||||
attri = configData.GetAttribute("DataBaseProvider");
|
attri = configData.GetAttribute("DataBaseProvider");
|
||||||
if (attri == "")
|
if (attri == "")
|
||||||
{
|
{
|
||||||
GridDll = "OpenSim.Framework.Data.DB4o.dll";
|
GridDll = "OpenSim.Framework.Data.DB4o.dll";
|
||||||
configData.SetAttribute("DataBaseProvider", "OpenSim.Framework.Data.DB4o.dll");
|
configData.SetAttribute("DataBaseProvider", "OpenSim.Framework.Data.DB4o.dll");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GridDll = attri;
|
GridDll = attri;
|
||||||
}
|
}
|
||||||
configData.Commit();
|
configData.Commit();
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,58 +1,58 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("OGS-GridServer")]
|
[assembly: AssemblyTitle("OGS-GridServer")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("OGS-GridServer")]
|
[assembly: AssemblyProduct("OGS-GridServer")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2007")]
|
[assembly: AssemblyCopyright("Copyright © 2007")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
// 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
|
// to COM components. If you need to access a type in this assembly from
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("b541b244-3d1d-4625-9003-bc2a3a6a39a4")]
|
[assembly: Guid("b541b244-3d1d-4625-9003-bc2a3a6a39a4")]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
// Major Version
|
// Major Version
|
||||||
// Minor Version
|
// Minor Version
|
||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
|
@ -1,125 +1,125 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using OpenGrid.Framework.Data;
|
using OpenGrid.Framework.Data;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using Nwc.XmlRpc;
|
using Nwc.XmlRpc;
|
||||||
using OpenSim.Framework.Sims;
|
using OpenSim.Framework.Sims;
|
||||||
using OpenSim.Framework.Inventory;
|
using OpenSim.Framework.Inventory;
|
||||||
using OpenSim.Framework.Utilities;
|
using OpenSim.Framework.Utilities;
|
||||||
|
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
namespace OpenGridServices.InventoryServer
|
namespace OpenGridServices.InventoryServer
|
||||||
{
|
{
|
||||||
class InventoryManager
|
class InventoryManager
|
||||||
{
|
{
|
||||||
Dictionary<string, IInventoryData> _plugins = new Dictionary<string, IInventoryData>();
|
Dictionary<string, IInventoryData> _plugins = new Dictionary<string, IInventoryData>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a new inventory server plugin - user servers will be requested in the order they were loaded.
|
/// Adds a new inventory server plugin - user servers will be requested in the order they were loaded.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="FileName">The filename to the inventory server plugin DLL</param>
|
/// <param name="FileName">The filename to the inventory server plugin DLL</param>
|
||||||
public void AddPlugin(string FileName)
|
public void AddPlugin(string FileName)
|
||||||
{
|
{
|
||||||
OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Attempting to load " + FileName);
|
OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Attempting to load " + FileName);
|
||||||
Assembly pluginAssembly = Assembly.LoadFrom(FileName);
|
Assembly pluginAssembly = Assembly.LoadFrom(FileName);
|
||||||
|
|
||||||
OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
|
OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
|
||||||
foreach (Type pluginType in pluginAssembly.GetTypes())
|
foreach (Type pluginType in pluginAssembly.GetTypes())
|
||||||
{
|
{
|
||||||
if (!pluginType.IsAbstract)
|
if (!pluginType.IsAbstract)
|
||||||
{
|
{
|
||||||
Type typeInterface = pluginType.GetInterface("IInventoryData", true);
|
Type typeInterface = pluginType.GetInterface("IInventoryData", true);
|
||||||
|
|
||||||
if (typeInterface != null)
|
if (typeInterface != null)
|
||||||
{
|
{
|
||||||
IInventoryData plug = (IInventoryData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
|
IInventoryData plug = (IInventoryData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
|
||||||
plug.Initialise();
|
plug.Initialise();
|
||||||
this._plugins.Add(plug.getName(), plug);
|
this._plugins.Add(plug.getName(), plug);
|
||||||
OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Added IUserData Interface");
|
OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Added IUserData Interface");
|
||||||
}
|
}
|
||||||
|
|
||||||
typeInterface = null;
|
typeInterface = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pluginAssembly = null;
|
pluginAssembly = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<InventoryFolderBase> getRootFolders(LLUUID user)
|
public List<InventoryFolderBase> getRootFolders(LLUUID user)
|
||||||
{
|
{
|
||||||
foreach (KeyValuePair<string, IInventoryData> kvp in _plugins)
|
foreach (KeyValuePair<string, IInventoryData> kvp in _plugins)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return kvp.Value.getUserRootFolders(user);
|
return kvp.Value.getUserRootFolders(user);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
OpenSim.Framework.Console.MainConsole.Instance.Notice("Unable to get root folders via " + kvp.Key + " (" + e.ToString() + ")");
|
OpenSim.Framework.Console.MainConsole.Instance.Notice("Unable to get root folders via " + kvp.Key + " (" + e.ToString() + ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public XmlRpcResponse XmlRpcInventoryRequest(XmlRpcRequest request)
|
public XmlRpcResponse XmlRpcInventoryRequest(XmlRpcRequest request)
|
||||||
{
|
{
|
||||||
XmlRpcResponse response = new XmlRpcResponse();
|
XmlRpcResponse response = new XmlRpcResponse();
|
||||||
Hashtable requestData = (Hashtable)request.Params[0];
|
Hashtable requestData = (Hashtable)request.Params[0];
|
||||||
|
|
||||||
Hashtable responseData = new Hashtable();
|
Hashtable responseData = new Hashtable();
|
||||||
|
|
||||||
// Stuff happens here
|
// Stuff happens here
|
||||||
|
|
||||||
if (requestData.ContainsKey("Access-type"))
|
if (requestData.ContainsKey("Access-type"))
|
||||||
{
|
{
|
||||||
if (requestData["access-type"] == "rootfolders")
|
if (requestData["access-type"] == "rootfolders")
|
||||||
{
|
{
|
||||||
// responseData["rootfolders"] =
|
// responseData["rootfolders"] =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
responseData["error"] = "No access-type specified.";
|
responseData["error"] = "No access-type specified.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Stuff stops happening here
|
// Stuff stops happening here
|
||||||
|
|
||||||
response.Value = responseData;
|
response.Value = responseData;
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,87 +1,87 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
* Copyright (c) Contributors, http://www.openmetaverse.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
* * Redistributions of source code must retain the above copyright
|
* * Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* * Neither the name of the OpenSim Project nor the
|
* * Neither the name of the OpenSim Project nor the
|
||||||
* names of its contributors may be used to endorse or promote products
|
* names of its contributors may be used to endorse or promote products
|
||||||
* derived from this software without specific prior written permission.
|
* derived from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using OpenSim.Framework.User;
|
using OpenSim.Framework.User;
|
||||||
using OpenSim.Framework.Sims;
|
using OpenSim.Framework.Sims;
|
||||||
using OpenSim.Framework.Inventory;
|
using OpenSim.Framework.Inventory;
|
||||||
using OpenSim.Framework.Interfaces;
|
using OpenSim.Framework.Interfaces;
|
||||||
using OpenSim.Framework.Console;
|
using OpenSim.Framework.Console;
|
||||||
using OpenSim.Servers;
|
using OpenSim.Servers;
|
||||||
using OpenSim.Framework.Utilities;
|
using OpenSim.Framework.Utilities;
|
||||||
|
|
||||||
namespace OpenGridServices.InventoryServer
|
namespace OpenGridServices.InventoryServer
|
||||||
{
|
{
|
||||||
public class OpenInventory_Main : BaseServer, conscmd_callback
|
public class OpenInventory_Main : BaseServer, conscmd_callback
|
||||||
{
|
{
|
||||||
ConsoleBase m_console;
|
ConsoleBase m_console;
|
||||||
InventoryManager m_inventoryManager;
|
InventoryManager m_inventoryManager;
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public OpenInventory_Main()
|
public OpenInventory_Main()
|
||||||
{
|
{
|
||||||
m_console = new ConsoleBase("opengrid-inventory-console.log", "OpenInventory", this, false);
|
m_console = new ConsoleBase("opengrid-inventory-console.log", "OpenInventory", this, false);
|
||||||
MainConsole.Instance = m_console;
|
MainConsole.Instance = m_console;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Startup()
|
public void Startup()
|
||||||
{
|
{
|
||||||
MainConsole.Instance.Notice("Initialising inventory manager...");
|
MainConsole.Instance.Notice("Initialising inventory manager...");
|
||||||
m_inventoryManager = new InventoryManager();
|
m_inventoryManager = new InventoryManager();
|
||||||
|
|
||||||
MainConsole.Instance.Notice("Starting HTTP server");
|
MainConsole.Instance.Notice("Starting HTTP server");
|
||||||
BaseHttpServer httpServer = new BaseHttpServer(8004);
|
BaseHttpServer httpServer = new BaseHttpServer(8004);
|
||||||
|
|
||||||
httpServer.AddXmlRPCHandler("rootfolders", m_inventoryManager.XmlRpcInventoryRequest);
|
httpServer.AddXmlRPCHandler("rootfolders", m_inventoryManager.XmlRpcInventoryRequest);
|
||||||
//httpServer.AddRestHandler("GET","/rootfolders/",Rest
|
//httpServer.AddRestHandler("GET","/rootfolders/",Rest
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RunCmd(string cmd, string[] cmdparams)
|
public void RunCmd(string cmd, string[] cmdparams)
|
||||||
{
|
{
|
||||||
switch (cmd)
|
switch (cmd)
|
||||||
{
|
{
|
||||||
case "shutdown":
|
case "shutdown":
|
||||||
m_console.Close();
|
m_console.Close();
|
||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Show(string ShowWhat)
|
public void Show(string ShowWhat)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +1,33 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace OpenGridServices.Manager
|
namespace OpenGridServices.Manager
|
||||||
{
|
{
|
||||||
public class BlockingQueue<T>
|
public class BlockingQueue<T>
|
||||||
{
|
{
|
||||||
private Queue<T> _queue = new Queue<T>();
|
private Queue<T> _queue = new Queue<T>();
|
||||||
private object _queueSync = new object();
|
private object _queueSync = new object();
|
||||||
|
|
||||||
public void Enqueue(T value)
|
public void Enqueue(T value)
|
||||||
{
|
{
|
||||||
lock (_queueSync)
|
lock (_queueSync)
|
||||||
{
|
{
|
||||||
_queue.Enqueue(value);
|
_queue.Enqueue(value);
|
||||||
Monitor.Pulse(_queueSync);
|
Monitor.Pulse(_queueSync);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public T Dequeue()
|
public T Dequeue()
|
||||||
{
|
{
|
||||||
lock (_queueSync)
|
lock (_queueSync)
|
||||||
{
|
{
|
||||||
if (_queue.Count < 1)
|
if (_queue.Count < 1)
|
||||||
Monitor.Wait(_queueSync);
|
Monitor.Wait(_queueSync);
|
||||||
|
|
||||||
return _queue.Dequeue();
|
return _queue.Dequeue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue