set svn:eol-style

afrisby
Jeff Ames 2007-10-31 01:21:04 +00:00
parent f5195a453c
commit 98b238cf6b
33 changed files with 4727 additions and 4727 deletions

View File

@ -1,263 +1,263 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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;
namespace OpenSim.Framework namespace OpenSim.Framework
{ {
// ACL Class // ACL Class
// Modelled after the structure of the Zend ACL Framework Library // Modelled after the structure of the Zend ACL Framework Library
// with one key difference - the tree will search for all matching // with one key difference - the tree will search for all matching
// permissions rather than just the first. Deny permissions will // permissions rather than just the first. Deny permissions will
// override all others. // override all others.
#region ACL Core Class #region ACL Core Class
/// <summary> /// <summary>
/// Access Control List Engine /// Access Control List Engine
/// </summary> /// </summary>
public class ACL public class ACL
{ {
private Dictionary<string, Role> Roles = new Dictionary<string, Role>(); private Dictionary<string, Role> Roles = new Dictionary<string, Role>();
private Dictionary<string, Resource> Resources = new Dictionary<string, Resource>(); private Dictionary<string, Resource> Resources = new Dictionary<string, Resource>();
public ACL AddRole(Role role) public ACL AddRole(Role role)
{ {
if (Roles.ContainsKey(role.Name)) if (Roles.ContainsKey(role.Name))
throw new AlreadyContainsRoleException(role); throw new AlreadyContainsRoleException(role);
Roles.Add(role.Name, role); Roles.Add(role.Name, role);
return this; return this;
} }
public ACL AddResource(Resource resource) public ACL AddResource(Resource resource)
{ {
Resources.Add(resource.Name, resource); Resources.Add(resource.Name, resource);
return this; return this;
} }
public Permission HasPermission(string role, string resource) public Permission HasPermission(string role, string resource)
{ {
if (!Roles.ContainsKey(role)) if (!Roles.ContainsKey(role))
throw new KeyNotFoundException(); throw new KeyNotFoundException();
if (!Resources.ContainsKey(resource)) if (!Resources.ContainsKey(resource))
throw new KeyNotFoundException(); throw new KeyNotFoundException();
return Roles[role].RequestPermission(resource); return Roles[role].RequestPermission(resource);
} }
public ACL GrantPermission(string role, string resource) public ACL GrantPermission(string role, string resource)
{ {
if (!Roles.ContainsKey(role)) if (!Roles.ContainsKey(role))
throw new KeyNotFoundException(); throw new KeyNotFoundException();
if (!Resources.ContainsKey(resource)) if (!Resources.ContainsKey(resource))
throw new KeyNotFoundException(); throw new KeyNotFoundException();
Roles[role].GivePermission(resource, Permission.Allow); Roles[role].GivePermission(resource, Permission.Allow);
return this; return this;
} }
public ACL DenyPermission(string role, string resource) public ACL DenyPermission(string role, string resource)
{ {
if (!Roles.ContainsKey(role)) if (!Roles.ContainsKey(role))
throw new KeyNotFoundException(); throw new KeyNotFoundException();
if (!Resources.ContainsKey(resource)) if (!Resources.ContainsKey(resource))
throw new KeyNotFoundException(); throw new KeyNotFoundException();
Roles[role].GivePermission(resource, Permission.Deny); Roles[role].GivePermission(resource, Permission.Deny);
return this; return this;
} }
public ACL ResetPermission(string role, string resource) public ACL ResetPermission(string role, string resource)
{ {
if (!Roles.ContainsKey(role)) if (!Roles.ContainsKey(role))
throw new KeyNotFoundException(); throw new KeyNotFoundException();
if (!Resources.ContainsKey(resource)) if (!Resources.ContainsKey(resource))
throw new KeyNotFoundException(); throw new KeyNotFoundException();
Roles[role].GivePermission(resource, Permission.None); Roles[role].GivePermission(resource, Permission.None);
return this; return this;
} }
} }
#endregion #endregion
#region Exceptions #region Exceptions
/// <summary> /// <summary>
/// Thrown when an ACL attempts to add a duplicate role. /// Thrown when an ACL attempts to add a duplicate role.
/// </summary> /// </summary>
public class AlreadyContainsRoleException : Exception public class AlreadyContainsRoleException : Exception
{ {
protected Role m_role; protected Role m_role;
public Role ErrorRole public Role ErrorRole
{ {
get { return m_role; } get { return m_role; }
} }
public AlreadyContainsRoleException(Role role) public AlreadyContainsRoleException(Role role)
{ {
m_role = role; m_role = role;
} }
public override string ToString() public override string ToString()
{ {
return "This ACL already contains a role called '" + m_role.Name + "'."; return "This ACL already contains a role called '" + m_role.Name + "'.";
} }
} }
#endregion #endregion
#region Roles and Resources #region Roles and Resources
/// <summary> /// <summary>
/// Does this Role have permission to access a specified Resource? /// Does this Role have permission to access a specified Resource?
/// </summary> /// </summary>
public enum Permission public enum Permission
{ {
Deny, Deny,
None, None,
Allow Allow
} ; } ;
/// <summary> /// <summary>
/// A role class, for use with Users or Groups /// A role class, for use with Users or Groups
/// </summary> /// </summary>
public class Role public class Role
{ {
private string m_name; private string m_name;
private Role[] m_parents; private Role[] m_parents;
private Dictionary<string, Permission> m_resources = new Dictionary<string, Permission>(); private Dictionary<string, Permission> m_resources = new Dictionary<string, Permission>();
public string Name public string Name
{ {
get { return m_name; } get { return m_name; }
} }
public Permission RequestPermission(string resource) public Permission RequestPermission(string resource)
{ {
return RequestPermission(resource, Permission.None); return RequestPermission(resource, Permission.None);
} }
public Permission RequestPermission(string resource, Permission current) public Permission RequestPermission(string resource, Permission current)
{ {
// Deny permissions always override any others // Deny permissions always override any others
if (current == Permission.Deny) if (current == Permission.Deny)
return current; return current;
Permission temp = Permission.None; Permission temp = Permission.None;
// Pickup non-None permissions // Pickup non-None permissions
if (m_resources.ContainsKey(resource) && m_resources[resource] != Permission.None) if (m_resources.ContainsKey(resource) && m_resources[resource] != Permission.None)
temp = m_resources[resource]; temp = m_resources[resource];
if (m_parents != null) if (m_parents != null)
{ {
foreach (Role parent in m_parents) foreach (Role parent in m_parents)
{ {
temp = parent.RequestPermission(resource, temp); temp = parent.RequestPermission(resource, temp);
} }
} }
return temp; return temp;
} }
public void GivePermission(string resource, Permission perm) public void GivePermission(string resource, Permission perm)
{ {
m_resources[resource] = perm; m_resources[resource] = perm;
} }
public Role(string name) public Role(string name)
{ {
m_name = name; m_name = name;
m_parents = null; m_parents = null;
} }
public Role(string name, Role[] parents) public Role(string name, Role[] parents)
{ {
m_name = name; m_name = name;
m_parents = parents; m_parents = parents;
} }
} }
public class Resource public class Resource
{ {
private string m_name; private string m_name;
public string Name public string Name
{ {
get { return m_name; } get { return m_name; }
} }
public Resource(string name) public Resource(string name)
{ {
m_name = name; m_name = name;
} }
} }
#endregion #endregion
#region Tests #region Tests
internal class ACLTester internal class ACLTester
{ {
public ACLTester() public ACLTester()
{ {
ACL acl = new ACL(); ACL acl = new ACL();
Role Guests = new Role("Guests"); Role Guests = new Role("Guests");
acl.AddRole(Guests); acl.AddRole(Guests);
Role[] parents = new Role[0]; Role[] parents = new Role[0];
parents[0] = Guests; parents[0] = Guests;
Role JoeGuest = new Role("JoeGuest", parents); Role JoeGuest = new Role("JoeGuest", parents);
acl.AddRole(JoeGuest); acl.AddRole(JoeGuest);
Resource CanBuild = new Resource("CanBuild"); Resource CanBuild = new Resource("CanBuild");
acl.AddResource(CanBuild); acl.AddResource(CanBuild);
acl.GrantPermission("Guests", "CanBuild"); acl.GrantPermission("Guests", "CanBuild");
acl.HasPermission("JoeGuest", "CanBuild"); acl.HasPermission("JoeGuest", "CanBuild");
} }
} }
#endregion #endregion
} }

View File

@ -1,52 +1,52 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
[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 = "";
} }
} }

View File

@ -1,71 +1,71 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
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 AvatarWearable(LLUUID itemId, LLUUID assetId) public AvatarWearable(LLUUID itemId, LLUUID assetId)
{ {
AssetID = assetId; AssetID = assetId;
ItemID = itemId; ItemID = itemId;
} }
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 = new LLUUID("66c41e39-38f9-f75a-024e-585989bfaba9"); defaultWearables[0].ItemID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfaba9");
defaultWearables[1].ItemID = new LLUUID("77c41e39-38f9-f75a-024e-585989bfabc9"); defaultWearables[1].ItemID = new LLUUID("77c41e39-38f9-f75a-024e-585989bfabc9");
defaultWearables[1].AssetID = new LLUUID("77c41e39-38f9-f75a-024e-585989bbabbb"); defaultWearables[1].AssetID = new LLUUID("77c41e39-38f9-f75a-024e-585989bbabbb");
defaultWearables[4].ItemID = new LLUUID("77c41e39-38f9-f75a-0000-585989bf0000"); defaultWearables[4].ItemID = new LLUUID("77c41e39-38f9-f75a-0000-585989bf0000");
defaultWearables[4].AssetID = new LLUUID("00000000-38f9-1111-024e-222222111110"); defaultWearables[4].AssetID = new LLUUID("00000000-38f9-1111-024e-222222111110");
defaultWearables[5].ItemID = new LLUUID("77c41e39-38f9-f75a-0000-5859892f1111"); defaultWearables[5].ItemID = new LLUUID("77c41e39-38f9-f75a-0000-5859892f1111");
defaultWearables[5].AssetID = new LLUUID("00000000-38f9-1111-024e-222222111120"); defaultWearables[5].AssetID = new LLUUID("00000000-38f9-1111-024e-222222111120");
return defaultWearables; return defaultWearables;
} }
} }
} }
} }

View File

@ -1,55 +1,55 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
[Serializable] [Serializable]
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 bool Local = false; public bool Local = false;
public bool Temporary = false; public bool Temporary = false;
public AssetBase() public AssetBase()
{ {
} }
public AssetBase(LLUUID assetId, string name) public AssetBase(LLUUID assetId, string name)
{ {
FullID = assetId; FullID = assetId;
Name = name; Name = name;
} }
} }
} }

View File

@ -1,83 +1,83 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
/// <summary> /// <summary>
/// UserConfig -- For User Server Configuration /// UserConfig -- For User Server Configuration
/// </summary> /// </summary>
public class AssetConfig public class AssetConfig
{ {
public string DefaultStartupMsg = ""; public string DefaultStartupMsg = "";
public string DatabaseProvider = ""; public string DatabaseProvider = "";
public static uint DefaultHttpPort = 8003; public static uint DefaultHttpPort = 8003;
public uint HttpPort = DefaultHttpPort; public uint HttpPort = DefaultHttpPort;
private ConfigurationMember configMember; private ConfigurationMember configMember;
public AssetConfig(string description, string filename) public AssetConfig(string description, string filename)
{ {
configMember = configMember =
new ConfigurationMember(filename, description, loadConfigurationOptions, handleIncomingConfiguration); new ConfigurationMember(filename, description, loadConfigurationOptions, handleIncomingConfiguration);
configMember.performConfigurationRetrieve(); configMember.performConfigurationRetrieve();
} }
public void loadConfigurationOptions() public void loadConfigurationOptions()
{ {
configMember.addConfigurationOption("default_startup_message", configMember.addConfigurationOption("default_startup_message",
ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
"Default Startup Message", "Welcome to OGS", false); "Default Startup Message", "Welcome to OGS", false);
configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING, configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"DLL for database provider", "OpenSim.Framework.Data.MySQL.dll", false); "DLL for database provider", "OpenSim.Framework.Data.MySQL.dll", false);
configMember.addConfigurationOption("http_port", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, configMember.addConfigurationOption("http_port", ConfigurationOption.ConfigurationTypes.TYPE_UINT32,
"Http Listener port", DefaultHttpPort.ToString(), false); "Http Listener port", DefaultHttpPort.ToString(), false);
} }
public bool handleIncomingConfiguration(string configuration_key, object configuration_result) public bool handleIncomingConfiguration(string configuration_key, object configuration_result)
{ {
switch (configuration_key) switch (configuration_key)
{ {
case "default_startup_message": case "default_startup_message":
DefaultStartupMsg = (string) configuration_result; DefaultStartupMsg = (string) configuration_result;
break; break;
case "database_provider": case "database_provider":
DatabaseProvider = (string) configuration_result; DatabaseProvider = (string) configuration_result;
break; break;
case "http_port": case "http_port":
HttpPort = (uint) configuration_result; HttpPort = (uint) configuration_result;
break; break;
} }
return true; return true;
} }
} }
} }

View File

@ -1,59 +1,59 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
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)
{ {
Data = a.Data; Data = a.Data;
FullID = a.FullID; FullID = a.FullID;
Type = a.Type; Type = a.Type;
InvType = a.InvType; InvType = a.InvType;
Name = a.Name; Name = a.Name;
Description = a.Description; 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);
} }
} }
} }

View File

@ -1,48 +1,48 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
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;
} }
} }

View File

@ -1,39 +1,39 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
public class AuthenticateResponse public class AuthenticateResponse
{ {
public bool Authorised; public bool Authorised;
public Login LoginInfo; public Login LoginInfo;
public AuthenticateResponse() public AuthenticateResponse()
{ {
} }
} }
} }

View File

@ -1,440 +1,440 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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.Globalization; using System.Globalization;
using System.Net; using System.Net;
using System.Reflection; using System.Reflection;
using libsecondlife; using libsecondlife;
using OpenSim.Framework.Console; using OpenSim.Framework.Console;
namespace OpenSim.Framework namespace OpenSim.Framework
{ {
public class ConfigurationMember public class ConfigurationMember
{ {
public delegate bool ConfigurationOptionResult(string configuration_key, object configuration_result); public delegate bool ConfigurationOptionResult(string configuration_key, object configuration_result);
public delegate void ConfigurationOptionsLoad(); public delegate void ConfigurationOptionsLoad();
private List<ConfigurationOption> configurationOptions = new List<ConfigurationOption>(); private List<ConfigurationOption> configurationOptions = new List<ConfigurationOption>();
private string configurationFilename = ""; private string configurationFilename = "";
private string configurationDescription = ""; private string configurationDescription = "";
private ConfigurationOptionsLoad loadFunction; private ConfigurationOptionsLoad loadFunction;
private ConfigurationOptionResult resultFunction; private ConfigurationOptionResult resultFunction;
private IGenericConfig configurationPlugin = null; private IGenericConfig configurationPlugin = null;
/// <summary> /// <summary>
/// This is the default configuration DLL loaded /// This is the default configuration DLL loaded
/// </summary> /// </summary>
private string configurationPluginFilename = "OpenSim.Framework.Configuration.XML.dll"; private string configurationPluginFilename = "OpenSim.Framework.Configuration.XML.dll";
public ConfigurationMember(string configuration_filename, string configuration_description, public ConfigurationMember(string configuration_filename, string configuration_description,
ConfigurationOptionsLoad load_function, ConfigurationOptionResult result_function) ConfigurationOptionsLoad load_function, ConfigurationOptionResult result_function)
{ {
configurationFilename = configuration_filename; configurationFilename = configuration_filename;
configurationDescription = configuration_description; configurationDescription = configuration_description;
loadFunction = load_function; loadFunction = load_function;
resultFunction = result_function; resultFunction = result_function;
} }
public void setConfigurationFilename(string filename) public void setConfigurationFilename(string filename)
{ {
configurationFilename = filename; configurationFilename = filename;
} }
public void setConfigurationDescription(string desc) public void setConfigurationDescription(string desc)
{ {
configurationDescription = desc; configurationDescription = desc;
} }
public void setConfigurationResultFunction(ConfigurationOptionResult result) public void setConfigurationResultFunction(ConfigurationOptionResult result)
{ {
resultFunction = result; resultFunction = result;
} }
public void forceConfigurationPluginLibrary(string dll_filename) public void forceConfigurationPluginLibrary(string dll_filename)
{ {
configurationPluginFilename = dll_filename; configurationPluginFilename = dll_filename;
} }
public void addConfigurationOption(string configuration_key, public void addConfigurationOption(string configuration_key,
ConfigurationOption.ConfigurationTypes configuration_type, ConfigurationOption.ConfigurationTypes configuration_type,
string configuration_question, string configuration_default, string configuration_question, string configuration_default,
bool use_default_no_prompt) bool use_default_no_prompt)
{ {
ConfigurationOption configOption = new ConfigurationOption(); ConfigurationOption configOption = new ConfigurationOption();
configOption.configurationKey = configuration_key; configOption.configurationKey = configuration_key;
configOption.configurationQuestion = configuration_question; configOption.configurationQuestion = configuration_question;
configOption.configurationDefault = configuration_default; configOption.configurationDefault = configuration_default;
configOption.configurationType = configuration_type; configOption.configurationType = configuration_type;
configOption.configurationUseDefaultNoPrompt = use_default_no_prompt; configOption.configurationUseDefaultNoPrompt = use_default_no_prompt;
if ((configuration_key != "" && configuration_question != "") || if ((configuration_key != "" && configuration_question != "") ||
(configuration_key != "" && use_default_no_prompt)) (configuration_key != "" && use_default_no_prompt))
{ {
if (!configurationOptions.Contains(configOption)) if (!configurationOptions.Contains(configOption))
{ {
configurationOptions.Add(configOption); configurationOptions.Add(configOption);
} }
} }
else else
{ {
MainLog.Instance.Notice( MainLog.Instance.Notice(
"Required fields for adding a configuration option is invalid. Will not add this option (" + "Required fields for adding a configuration option is invalid. Will not add this option (" +
configuration_key + ")"); configuration_key + ")");
} }
} }
public void performConfigurationRetrieve() public void performConfigurationRetrieve()
{ {
configurationPlugin = LoadConfigDll(configurationPluginFilename); configurationPlugin = LoadConfigDll(configurationPluginFilename);
configurationOptions.Clear(); configurationOptions.Clear();
if (loadFunction == null) if (loadFunction == null)
{ {
MainLog.Instance.Error("Load Function for '" + configurationDescription + MainLog.Instance.Error("Load Function for '" + configurationDescription +
"' is null. Refusing to run configuration."); "' is null. Refusing to run configuration.");
return; return;
} }
if (resultFunction == null) if (resultFunction == null)
{ {
MainLog.Instance.Error("Result Function for '" + configurationDescription + MainLog.Instance.Error("Result Function for '" + configurationDescription +
"' is null. Refusing to run configuration."); "' is null. Refusing to run configuration.");
return; return;
} }
MainLog.Instance.Verbose("Calling Configuration Load Function..."); MainLog.Instance.Verbose("Calling Configuration Load Function...");
loadFunction(); loadFunction();
if (configurationOptions.Count <= 0) if (configurationOptions.Count <= 0)
{ {
MainLog.Instance.Error("No configuration options were specified for '" + configurationOptions + MainLog.Instance.Error("No configuration options were specified for '" + configurationOptions +
"'. Refusing to continue configuration."); "'. Refusing to continue configuration.");
return; return;
} }
bool useFile = true; bool useFile = true;
if (configurationPlugin == null) if (configurationPlugin == null)
{ {
MainLog.Instance.Error("Configuration Plugin NOT LOADED!"); MainLog.Instance.Error("Configuration Plugin NOT LOADED!");
return; return;
} }
if (configurationFilename.Trim() != "") if (configurationFilename.Trim() != "")
{ {
configurationPlugin.SetFileName(configurationFilename); configurationPlugin.SetFileName(configurationFilename);
configurationPlugin.LoadData(); configurationPlugin.LoadData();
useFile = true; useFile = true;
} }
else else
{ {
MainLog.Instance.Notice("XML Configuration Filename is not valid; will not save to the file."); MainLog.Instance.Notice("XML Configuration Filename is not valid; will not save to the file.");
useFile = false; useFile = false;
} }
foreach (ConfigurationOption configOption in configurationOptions) foreach (ConfigurationOption configOption in configurationOptions)
{ {
bool convertSuccess = false; bool convertSuccess = false;
object return_result = null; object return_result = null;
string errorMessage = ""; string errorMessage = "";
bool ignoreNextFromConfig = false; bool ignoreNextFromConfig = false;
while (convertSuccess == false) while (convertSuccess == false)
{ {
string console_result = ""; string console_result = "";
string attribute = null; string attribute = null;
if (useFile) if (useFile)
{ {
if (!ignoreNextFromConfig) if (!ignoreNextFromConfig)
{ {
attribute = configurationPlugin.GetAttribute(configOption.configurationKey); attribute = configurationPlugin.GetAttribute(configOption.configurationKey);
} }
else else
{ {
ignoreNextFromConfig = false; ignoreNextFromConfig = false;
} }
} }
if (attribute == null) if (attribute == null)
{ {
if (configOption.configurationUseDefaultNoPrompt) if (configOption.configurationUseDefaultNoPrompt)
{ {
console_result = configOption.configurationDefault; console_result = configOption.configurationDefault;
} }
else else
{ {
if (configurationDescription.Trim() != "") if (configurationDescription.Trim() != "")
{ {
console_result = console_result =
MainLog.Instance.CmdPrompt( MainLog.Instance.CmdPrompt(
configurationDescription + ": " + configOption.configurationQuestion, configurationDescription + ": " + configOption.configurationQuestion,
configOption.configurationDefault); configOption.configurationDefault);
} }
else else
{ {
console_result = console_result =
MainLog.Instance.CmdPrompt(configOption.configurationQuestion, MainLog.Instance.CmdPrompt(configOption.configurationQuestion,
configOption.configurationDefault); configOption.configurationDefault);
} }
} }
} }
else else
{ {
console_result = attribute; console_result = attribute;
} }
switch (configOption.configurationType) switch (configOption.configurationType)
{ {
case ConfigurationOption.ConfigurationTypes.TYPE_STRING: case ConfigurationOption.ConfigurationTypes.TYPE_STRING:
return_result = console_result; return_result = console_result;
convertSuccess = true; convertSuccess = true;
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY: case ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY:
if (console_result.Length > 0) if (console_result.Length > 0)
{ {
return_result = console_result; return_result = console_result;
convertSuccess = true; convertSuccess = true;
} }
errorMessage = "a string that is not empty"; errorMessage = "a string that is not empty";
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN: case ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN:
bool boolResult; bool boolResult;
if (Boolean.TryParse(console_result, out boolResult)) if (Boolean.TryParse(console_result, out boolResult))
{ {
convertSuccess = true; convertSuccess = true;
return_result = boolResult; return_result = boolResult;
} }
errorMessage = "'true' or 'false' (Boolean)"; errorMessage = "'true' or 'false' (Boolean)";
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_BYTE: case ConfigurationOption.ConfigurationTypes.TYPE_BYTE:
byte byteResult; byte byteResult;
if (Byte.TryParse(console_result, out byteResult)) if (Byte.TryParse(console_result, out byteResult))
{ {
convertSuccess = true; convertSuccess = true;
return_result = byteResult; return_result = byteResult;
} }
errorMessage = "a byte (Byte)"; errorMessage = "a byte (Byte)";
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_CHARACTER: case ConfigurationOption.ConfigurationTypes.TYPE_CHARACTER:
char charResult; char charResult;
if (Char.TryParse(console_result, out charResult)) if (Char.TryParse(console_result, out charResult))
{ {
convertSuccess = true; convertSuccess = true;
return_result = charResult; return_result = charResult;
} }
errorMessage = "a character (Char)"; errorMessage = "a character (Char)";
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_INT16: case ConfigurationOption.ConfigurationTypes.TYPE_INT16:
short shortResult; short shortResult;
if (Int16.TryParse(console_result, out shortResult)) if (Int16.TryParse(console_result, out shortResult))
{ {
convertSuccess = true; convertSuccess = true;
return_result = shortResult; return_result = shortResult;
} }
errorMessage = "a signed 32 bit integer (short)"; errorMessage = "a signed 32 bit integer (short)";
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_INT32: case ConfigurationOption.ConfigurationTypes.TYPE_INT32:
int intResult; int intResult;
if (Int32.TryParse(console_result, out intResult)) if (Int32.TryParse(console_result, out intResult))
{ {
convertSuccess = true; convertSuccess = true;
return_result = intResult; return_result = intResult;
} }
errorMessage = "a signed 32 bit integer (int)"; errorMessage = "a signed 32 bit integer (int)";
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_INT64: case ConfigurationOption.ConfigurationTypes.TYPE_INT64:
long longResult; long longResult;
if (Int64.TryParse(console_result, out longResult)) if (Int64.TryParse(console_result, out longResult))
{ {
convertSuccess = true; convertSuccess = true;
return_result = longResult; return_result = longResult;
} }
errorMessage = "a signed 32 bit integer (long)"; errorMessage = "a signed 32 bit integer (long)";
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_IP_ADDRESS: case ConfigurationOption.ConfigurationTypes.TYPE_IP_ADDRESS:
IPAddress ipAddressResult; IPAddress ipAddressResult;
if (IPAddress.TryParse(console_result, out ipAddressResult)) if (IPAddress.TryParse(console_result, out ipAddressResult))
{ {
convertSuccess = true; convertSuccess = true;
return_result = ipAddressResult; return_result = ipAddressResult;
} }
errorMessage = "an IP Address (IPAddress)"; errorMessage = "an IP Address (IPAddress)";
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_LLUUID: case ConfigurationOption.ConfigurationTypes.TYPE_LLUUID:
LLUUID uuidResult; LLUUID uuidResult;
if (LLUUID.TryParse(console_result, out uuidResult)) if (LLUUID.TryParse(console_result, out uuidResult))
{ {
convertSuccess = true; convertSuccess = true;
return_result = uuidResult; return_result = uuidResult;
} }
errorMessage = "a UUID (LLUUID)"; errorMessage = "a UUID (LLUUID)";
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_LLVECTOR3: case ConfigurationOption.ConfigurationTypes.TYPE_LLVECTOR3:
LLVector3 vectorResult; LLVector3 vectorResult;
if (LLVector3.TryParse(console_result, out vectorResult)) if (LLVector3.TryParse(console_result, out vectorResult))
{ {
convertSuccess = true; convertSuccess = true;
return_result = vectorResult; return_result = vectorResult;
} }
errorMessage = "a vector (LLVector3)"; errorMessage = "a vector (LLVector3)";
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_UINT16: case ConfigurationOption.ConfigurationTypes.TYPE_UINT16:
ushort ushortResult; ushort ushortResult;
if (UInt16.TryParse(console_result, out ushortResult)) if (UInt16.TryParse(console_result, out ushortResult))
{ {
convertSuccess = true; convertSuccess = true;
return_result = ushortResult; return_result = ushortResult;
} }
errorMessage = "an unsigned 16 bit integer (ushort)"; errorMessage = "an unsigned 16 bit integer (ushort)";
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_UINT32: case ConfigurationOption.ConfigurationTypes.TYPE_UINT32:
uint uintResult; uint uintResult;
if (UInt32.TryParse(console_result, out uintResult)) if (UInt32.TryParse(console_result, out uintResult))
{ {
convertSuccess = true; convertSuccess = true;
return_result = uintResult; return_result = uintResult;
} }
errorMessage = "an unsigned 32 bit integer (uint)"; errorMessage = "an unsigned 32 bit integer (uint)";
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_UINT64: case ConfigurationOption.ConfigurationTypes.TYPE_UINT64:
ulong ulongResult; ulong ulongResult;
if (UInt64.TryParse(console_result, out ulongResult)) if (UInt64.TryParse(console_result, out ulongResult))
{ {
convertSuccess = true; convertSuccess = true;
return_result = ulongResult; return_result = ulongResult;
} }
errorMessage = "an unsigned 64 bit integer (ulong)"; errorMessage = "an unsigned 64 bit integer (ulong)";
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_FLOAT: case ConfigurationOption.ConfigurationTypes.TYPE_FLOAT:
float floatResult; float floatResult;
if ( if (
float.TryParse(console_result, NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo, float.TryParse(console_result, NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo,
out floatResult)) out floatResult))
{ {
convertSuccess = true; convertSuccess = true;
return_result = floatResult; return_result = floatResult;
} }
errorMessage = "a single-precision floating point number (float)"; errorMessage = "a single-precision floating point number (float)";
break; break;
case ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE: case ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE:
double doubleResult; double doubleResult;
if ( if (
Double.TryParse(console_result, NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo, Double.TryParse(console_result, NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo,
out doubleResult)) out doubleResult))
{ {
convertSuccess = true; convertSuccess = true;
return_result = doubleResult; return_result = doubleResult;
} }
errorMessage = "an double-precision floating point number (double)"; errorMessage = "an double-precision floating point number (double)";
break; break;
} }
if (convertSuccess) if (convertSuccess)
{ {
if (useFile) if (useFile)
{ {
configurationPlugin.SetAttribute(configOption.configurationKey, console_result); configurationPlugin.SetAttribute(configOption.configurationKey, console_result);
} }
if (!resultFunction(configOption.configurationKey, return_result)) if (!resultFunction(configOption.configurationKey, return_result))
{ {
MainLog.Instance.Notice( MainLog.Instance.Notice(
"The handler for the last configuration option denied that input, please try again."); "The handler for the last configuration option denied that input, please try again.");
convertSuccess = false; convertSuccess = false;
ignoreNextFromConfig = true; ignoreNextFromConfig = true;
} }
} }
else else
{ {
if (configOption.configurationUseDefaultNoPrompt) if (configOption.configurationUseDefaultNoPrompt)
{ {
MainLog.Instance.Error("CONFIG", MainLog.Instance.Error("CONFIG",
string.Format( string.Format(
"[{3}]:[{1}] is not valid default for parameter [{0}].\nThe configuration result must be parsable to {2}.\n", "[{3}]:[{1}] is not valid default for parameter [{0}].\nThe configuration result must be parsable to {2}.\n",
configOption.configurationKey, console_result, errorMessage, configOption.configurationKey, console_result, errorMessage,
configurationFilename)); configurationFilename));
convertSuccess = true; convertSuccess = true;
} }
else else
{ {
MainLog.Instance.Warn("CONFIG", MainLog.Instance.Warn("CONFIG",
string.Format( string.Format(
"[{3}]:[{1}] is not a valid value [{0}].\nThe configuration result must be parsable to {2}.\n", "[{3}]:[{1}] is not a valid value [{0}].\nThe configuration result must be parsable to {2}.\n",
configOption.configurationKey, console_result, errorMessage, configOption.configurationKey, console_result, errorMessage,
configurationFilename)); configurationFilename));
ignoreNextFromConfig = true; ignoreNextFromConfig = true;
} }
} }
} }
} }
if (useFile) if (useFile)
{ {
configurationPlugin.Commit(); configurationPlugin.Commit();
configurationPlugin.Close(); configurationPlugin.Close();
} }
} }
private IGenericConfig LoadConfigDll(string dllName) private IGenericConfig LoadConfigDll(string dllName)
{ {
Assembly pluginAssembly = Assembly.LoadFrom(dllName); Assembly pluginAssembly = Assembly.LoadFrom(dllName);
IGenericConfig plug = null; IGenericConfig plug = 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("IGenericConfig", true); Type typeInterface = pluginType.GetInterface("IGenericConfig", true);
if (typeInterface != null) if (typeInterface != null)
{ {
plug = plug =
(IGenericConfig) Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); (IGenericConfig) Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
} }
} }
} }
} }
pluginAssembly = null; pluginAssembly = null;
return plug; return plug;
} }
public void forceSetConfigurationOption(string configuration_key, string configuration_value) public void forceSetConfigurationOption(string configuration_key, string configuration_value)
{ {
configurationPlugin.LoadData(); configurationPlugin.LoadData();
configurationPlugin.SetAttribute(configuration_key, configuration_value); configurationPlugin.SetAttribute(configuration_key, configuration_value);
configurationPlugin.Commit(); configurationPlugin.Commit();
configurationPlugin.Close(); configurationPlugin.Close();
} }
} }
} }

View File

@ -1,60 +1,60 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
public class ConfigurationOption public class ConfigurationOption
{ {
public enum ConfigurationTypes public enum ConfigurationTypes
{ {
TYPE_STRING, TYPE_STRING,
TYPE_STRING_NOT_EMPTY, TYPE_STRING_NOT_EMPTY,
TYPE_UINT16, TYPE_UINT16,
TYPE_UINT32, TYPE_UINT32,
TYPE_UINT64, TYPE_UINT64,
TYPE_INT16, TYPE_INT16,
TYPE_INT32, TYPE_INT32,
TYPE_INT64, TYPE_INT64,
TYPE_IP_ADDRESS, TYPE_IP_ADDRESS,
TYPE_CHARACTER, TYPE_CHARACTER,
TYPE_BOOLEAN, TYPE_BOOLEAN,
TYPE_BYTE, TYPE_BYTE,
TYPE_LLUUID, TYPE_LLUUID,
TYPE_LLVECTOR3, TYPE_LLVECTOR3,
TYPE_FLOAT, TYPE_FLOAT,
TYPE_DOUBLE TYPE_DOUBLE
} ; } ;
public string configurationKey = ""; public string configurationKey = "";
public string configurationQuestion = ""; public string configurationQuestion = "";
public string configurationDefault = ""; public string configurationDefault = "";
public ConfigurationTypes configurationType = ConfigurationTypes.TYPE_STRING; public ConfigurationTypes configurationType = ConfigurationTypes.TYPE_STRING;
public bool configurationUseDefaultNoPrompt = false; public bool configurationUseDefaultNoPrompt = false;
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,136 +1,136 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
public class GridConfig public class GridConfig
{ {
public string GridOwner = ""; public string GridOwner = "";
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 string DatabaseProvider = ""; public string DatabaseProvider = "";
public static uint DefaultHttpPort = 8001; public static uint DefaultHttpPort = 8001;
public uint HttpPort = DefaultHttpPort; public uint HttpPort = DefaultHttpPort;
private ConfigurationMember configMember; private ConfigurationMember configMember;
public GridConfig(string description, string filename) public GridConfig(string description, string filename)
{ {
configMember = configMember =
new ConfigurationMember(filename, description, loadConfigurationOptions, handleIncomingConfiguration); new ConfigurationMember(filename, description, loadConfigurationOptions, handleIncomingConfiguration);
configMember.performConfigurationRetrieve(); configMember.performConfigurationRetrieve();
} }
public void loadConfigurationOptions() public void loadConfigurationOptions()
{ {
configMember.addConfigurationOption("grid_owner", configMember.addConfigurationOption("grid_owner",
ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
"OGS Grid Owner", "OGS development team", false); "OGS Grid Owner", "OGS development team", false);
configMember.addConfigurationOption("default_asset_server", configMember.addConfigurationOption("default_asset_server",
ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
"Default Asset Server URI", "Default Asset Server URI",
"http://127.0.0.1:" + AssetConfig.DefaultHttpPort.ToString() + "/", "http://127.0.0.1:" + AssetConfig.DefaultHttpPort.ToString() + "/",
false); false);
configMember.addConfigurationOption("asset_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, configMember.addConfigurationOption("asset_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"Key to send to asset server", "null", false); "Key to send to asset server", "null", false);
configMember.addConfigurationOption("asset_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, configMember.addConfigurationOption("asset_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"Key to expect from asset server", "null", false); "Key to expect from asset server", "null", false);
configMember.addConfigurationOption("default_user_server", configMember.addConfigurationOption("default_user_server",
ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
"Default User Server URI", "Default User Server URI",
"http://127.0.0.1:" + UserConfig.DefaultHttpPort.ToString() + "/", false); "http://127.0.0.1:" + UserConfig.DefaultHttpPort.ToString() + "/", false);
configMember.addConfigurationOption("user_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, configMember.addConfigurationOption("user_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"Key to send to user server", "null", false); "Key to send to user server", "null", false);
configMember.addConfigurationOption("user_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, configMember.addConfigurationOption("user_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"Key to expect from user server", "null", false); "Key to expect from user server", "null", false);
configMember.addConfigurationOption("sim_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, configMember.addConfigurationOption("sim_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"Key to send to a simulator", "null", false); "Key to send to a simulator", "null", false);
configMember.addConfigurationOption("sim_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, configMember.addConfigurationOption("sim_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"Key to expect from a simulator", "null", false); "Key to expect from a simulator", "null", false);
configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING, configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"DLL for database provider", "OpenSim.Framework.Data.MySQL.dll", false); "DLL for database provider", "OpenSim.Framework.Data.MySQL.dll", false);
configMember.addConfigurationOption("http_port", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, configMember.addConfigurationOption("http_port", ConfigurationOption.ConfigurationTypes.TYPE_UINT32,
"Http Listener port", DefaultHttpPort.ToString(), false); "Http Listener port", DefaultHttpPort.ToString(), false);
} }
public bool handleIncomingConfiguration(string configuration_key, object configuration_result) public bool handleIncomingConfiguration(string configuration_key, object configuration_result)
{ {
switch (configuration_key) switch (configuration_key)
{ {
case "grid_owner": case "grid_owner":
GridOwner = (string) configuration_result; GridOwner = (string) configuration_result;
break; break;
case "default_asset_server": case "default_asset_server":
DefaultAssetServer = (string) configuration_result; DefaultAssetServer = (string) configuration_result;
break; break;
case "asset_send_key": case "asset_send_key":
AssetSendKey = (string) configuration_result; AssetSendKey = (string) configuration_result;
break; break;
case "asset_recv_key": case "asset_recv_key":
AssetRecvKey = (string) configuration_result; AssetRecvKey = (string) configuration_result;
break; break;
case "default_user_server": case "default_user_server":
DefaultUserServer = (string) configuration_result; DefaultUserServer = (string) configuration_result;
break; break;
case "user_send_key": case "user_send_key":
UserSendKey = (string) configuration_result; UserSendKey = (string) configuration_result;
break; break;
case "user_recv_key": case "user_recv_key":
UserRecvKey = (string) configuration_result; UserRecvKey = (string) configuration_result;
break; break;
case "sim_send_key": case "sim_send_key":
SimSendKey = (string) configuration_result; SimSendKey = (string) configuration_result;
break; break;
case "sim_recv_key": case "sim_recv_key":
SimRecvKey = (string) configuration_result; SimRecvKey = (string) configuration_result;
break; break;
case "database_provider": case "database_provider":
DatabaseProvider = (string) configuration_result; DatabaseProvider = (string) configuration_result;
break; break;
case "http_port": case "http_port":
HttpPort = (uint) configuration_result; HttpPort = (uint) configuration_result;
break; break;
} }
return true; return true;
} }
} }
} }

View File

@ -1,41 +1,41 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
public interface IAssetProvider : IPlugin public interface IAssetProvider : IPlugin
{ {
AssetBase FetchAsset(LLUUID uuid); AssetBase FetchAsset(LLUUID uuid);
void CreateAsset(AssetBase asset); void CreateAsset(AssetBase asset);
void UpdateAsset(AssetBase asset); void UpdateAsset(AssetBase asset);
bool ExistsAsset(LLUUID uuid); bool ExistsAsset(LLUUID uuid);
void CommitAssets(); // force a sync to the database void CommitAssets(); // force a sync to the database
} }
} }

View File

@ -1,69 +1,69 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 libsecondlife; using libsecondlife;
namespace OpenSim.Framework namespace OpenSim.Framework
{ {
/// <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 FetchAsset(LLUUID assetID, bool isTexture); void FetchAsset(LLUUID assetID, bool isTexture);
void UpdateAsset(AssetBase asset); void UpdateAsset(AssetBase asset);
void StoreAndCommitAsset(AssetBase asset); void StoreAndCommitAsset(AssetBase asset);
void Close(); void Close();
void LoadAsset(AssetBase info, bool image, string filename); void LoadAsset(AssetBase info, bool image, string filename);
List<AssetBase> GetDefaultAssets(); List<AssetBase> GetDefaultAssets();
AssetBase CreateImageAsset(string assetIdStr, string name, string filename); AssetBase CreateImageAsset(string assetIdStr, string name, string filename);
void ForEachDefaultAsset(Action<AssetBase> action); void ForEachDefaultAsset(Action<AssetBase> action);
AssetBase CreateAsset(string assetIdStr, string name, string filename, bool isImage); AssetBase CreateAsset(string assetIdStr, string name, string filename, bool isImage);
void ForEachXmlAsset(Action<AssetBase> action); void ForEachXmlAsset(Action<AssetBase> action);
} }
// 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(LLUUID assetID); void AssetNotFound(LLUUID assetID);
} }
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;
} }
} }

View File

@ -1,447 +1,447 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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.Net; using System.Net;
using libsecondlife; using libsecondlife;
using libsecondlife.Packets; using libsecondlife.Packets;
namespace OpenSim.Framework namespace OpenSim.Framework
{ {
// Base Args Interface // Base Args Interface
public interface IEventArgs public interface IEventArgs
{ {
IScene Scene { get; set; } IScene Scene { get; set; }
IClientAPI Sender { get; set; } IClientAPI Sender { get; set; }
} }
public delegate void ViewerEffectEventHandler(IClientAPI sender, ViewerEffectPacket.EffectBlock[] effectBlock); public delegate void ViewerEffectEventHandler(IClientAPI sender, ViewerEffectPacket.EffectBlock[] effectBlock);
public delegate void ChatFromViewer(Object sender, ChatFromViewerArgs e); public delegate void ChatFromViewer(Object sender, ChatFromViewerArgs e);
public enum ChatTypeEnum public enum ChatTypeEnum
{ {
Whisper = 0, Whisper = 0,
Say = 1, Say = 1,
Shout = 2, Shout = 2,
Broadcast = 0xFF Broadcast = 0xFF
} ; } ;
/// <summary> /// <summary>
/// ChatFromViewer Arguments /// ChatFromViewer Arguments
/// </summary> /// </summary>
public class ChatFromViewerArgs : EventArgs, IEventArgs public class ChatFromViewerArgs : EventArgs, IEventArgs
{ {
protected string m_message; protected string m_message;
protected ChatTypeEnum m_type; protected ChatTypeEnum m_type;
protected int m_channel; protected int m_channel;
protected LLVector3 m_position; protected LLVector3 m_position;
protected string m_from; protected string m_from;
protected IClientAPI m_sender; protected IClientAPI m_sender;
protected IScene m_scene; protected IScene m_scene;
/// <summary> /// <summary>
/// The message sent by the user /// The message sent by the user
/// </summary> /// </summary>
public string Message public string Message
{ {
get { return m_message; } get { return m_message; }
set { m_message = value; } set { m_message = value; }
} }
/// <summary> /// <summary>
/// The type of message, eg say, shout, broadcast. /// The type of message, eg say, shout, broadcast.
/// </summary> /// </summary>
public ChatTypeEnum Type public ChatTypeEnum Type
{ {
get { return m_type; } get { return m_type; }
set { m_type = value; } set { m_type = value; }
} }
/// <summary> /// <summary>
/// Which channel was this message sent on? Different channels may have different listeners. Public chat is on channel zero. /// Which channel was this message sent on? Different channels may have different listeners. Public chat is on channel zero.
/// </summary> /// </summary>
public int Channel public int Channel
{ {
get { return m_channel; } get { return m_channel; }
set { m_channel = value; } set { m_channel = value; }
} }
/// <summary> /// <summary>
/// The position of the sender at the time of the message broadcast. /// The position of the sender at the time of the message broadcast.
/// </summary> /// </summary>
public LLVector3 Position public LLVector3 Position
{ {
get { return m_position; } get { return m_position; }
set { m_position = value; } set { m_position = value; }
} }
/// <summary> /// <summary>
/// The name of the sender (needed for scripts) /// The name of the sender (needed for scripts)
/// </summary> /// </summary>
public string From public string From
{ {
get { return m_from; } get { return m_from; }
set { m_from = value; } set { m_from = value; }
} }
/// <summary> /// <summary>
/// The client responsible for sending the message, or null. /// The client responsible for sending the message, or null.
/// </summary> /// </summary>
public IClientAPI Sender public IClientAPI Sender
{ {
get { return m_sender; } get { return m_sender; }
set { m_sender = value; } set { m_sender = value; }
} }
public IScene Scene public IScene Scene
{ {
get { return m_scene; } get { return m_scene; }
set { m_scene = value; } set { m_scene = value; }
} }
public ChatFromViewerArgs() public ChatFromViewerArgs()
{ {
m_position = new LLVector3(); m_position = new LLVector3();
} }
} }
public class TextureRequestArgs : EventArgs public class TextureRequestArgs : EventArgs
{ {
protected LLUUID m_requestedAssetID; protected LLUUID m_requestedAssetID;
private sbyte m_discardLevel; private sbyte m_discardLevel;
private uint m_packetNumber; private uint m_packetNumber;
public uint PacketNumber public uint PacketNumber
{ {
get { return m_packetNumber; } get { return m_packetNumber; }
set { m_packetNumber = value; } set { m_packetNumber = value; }
} }
public sbyte DiscardLevel public sbyte DiscardLevel
{ {
get { return m_discardLevel; } get { return m_discardLevel; }
set { m_discardLevel = value; } set { m_discardLevel = value; }
} }
public LLUUID RequestedAssetID public LLUUID RequestedAssetID
{ {
get { return m_requestedAssetID; } get { return m_requestedAssetID; }
set { m_requestedAssetID = value; } set { m_requestedAssetID = value; }
} }
} }
public delegate void TextureRequest(Object sender, TextureRequestArgs e); public delegate void TextureRequest(Object sender, TextureRequestArgs e);
public delegate void ImprovedInstantMessage( public delegate void ImprovedInstantMessage(
LLUUID fromAgentID, LLUUID fromAgentSession, LLUUID toAgentID, LLUUID imSessionID, uint timestamp, LLUUID fromAgentID, LLUUID fromAgentSession, LLUUID toAgentID, LLUUID imSessionID, uint timestamp,
string fromAgentName, string message, byte dialog); // Cut down from full list string fromAgentName, string message, byte dialog); // Cut down from full list
public delegate void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 pos); public delegate void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 pos);
public delegate void ModifyTerrain( public delegate void ModifyTerrain(
float height, float seconds, byte size, byte action, float north, float west, IClientAPI remoteClient); float height, float seconds, byte size, byte action, float north, float west, IClientAPI remoteClient);
public delegate void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam); public delegate void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam);
public delegate void StartAnim(IClientAPI remoteClient, LLUUID animID, int seq); public delegate void StartAnim(IClientAPI remoteClient, 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( public delegate void TeleportLocationRequest(
IClientAPI remoteClient, ulong regionHandle, LLVector3 position, LLVector3 lookAt, uint flags); IClientAPI remoteClient, ulong regionHandle, LLVector3 position, LLVector3 lookAt, uint flags);
public delegate void DisconnectUser(); public delegate void DisconnectUser();
public delegate void RequestAvatarProperties(IClientAPI remoteClient, LLUUID avatarID); public delegate void RequestAvatarProperties(IClientAPI remoteClient, LLUUID avatarID);
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); public delegate void GenericCall3(Packet packet);
// really don't want to be passing packets in these events, so this is very temporary. // 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 ObjectExtraParams(uint localID, ushort type, bool inUse, byte[] data); public delegate void ObjectExtraParams(uint localID, ushort type, bool inUse, byte[] data);
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 AgentRequestSit(IClientAPI remoteClient, LLUUID agentID, LLUUID targetID, LLVector3 offset); public delegate void AgentRequestSit(IClientAPI remoteClient, LLUUID agentID, LLUUID targetID, LLVector3 offset);
public delegate void AgentSit(IClientAPI remoteClient, LLUUID agentID); public delegate void AgentSit(IClientAPI remoteClient, LLUUID agentID);
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( 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); 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 land_local_id, int request_type, IClientAPI remote_client); public delegate void ParcelSelectObjects(int land_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 delegate void CreateInventoryFolder( public delegate void CreateInventoryFolder(
IClientAPI remoteClient, LLUUID folderID, ushort folderType, string folderName, LLUUID parentID); IClientAPI remoteClient, LLUUID folderID, ushort folderType, string folderName, LLUUID parentID);
public delegate void CreateNewInventoryItem( public delegate void CreateNewInventoryItem(
IClientAPI remoteClient, LLUUID transActionID, LLUUID folderID, uint callbackID, string description, string name, IClientAPI remoteClient, LLUUID transActionID, LLUUID folderID, uint callbackID, string description, string name,
sbyte invType, sbyte type, byte wearableType, uint nextOwnerMask); sbyte invType, sbyte type, byte wearableType, uint nextOwnerMask);
public delegate void FetchInventoryDescendents( public delegate void FetchInventoryDescendents(
IClientAPI remoteClient, LLUUID folderID, LLUUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder); IClientAPI remoteClient, LLUUID folderID, LLUUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder);
public delegate void FetchInventory(IClientAPI remoteClient, LLUUID itemID, LLUUID ownerID); public delegate void FetchInventory(IClientAPI remoteClient, LLUUID itemID, LLUUID ownerID);
public delegate void RequestTaskInventory(IClientAPI remoteClient, uint localID); public delegate void RequestTaskInventory(IClientAPI remoteClient, uint localID);
public delegate void UpdateInventoryItemTransaction( public delegate void UpdateInventoryItemTransaction(
IClientAPI remoteClient, LLUUID transactionID, LLUUID assetID, LLUUID itemID); IClientAPI remoteClient, LLUUID transactionID, LLUUID assetID, LLUUID itemID);
public delegate void RezScript(IClientAPI remoteClient, LLUUID itemID, uint localID); public delegate void RezScript(IClientAPI remoteClient, LLUUID itemID, uint localID);
public delegate void UpdateTaskInventory(IClientAPI remoteClient, LLUUID itemID, LLUUID folderID, uint localID); public delegate void UpdateTaskInventory(IClientAPI remoteClient, LLUUID itemID, LLUUID folderID, uint localID);
public delegate void RemoveTaskInventory(IClientAPI remoteClient, LLUUID itemID, uint localID); public delegate void RemoveTaskInventory(IClientAPI remoteClient, LLUUID itemID, uint localID);
public delegate void UDPAssetUploadRequest( public delegate void UDPAssetUploadRequest(
IClientAPI remoteClient, LLUUID assetID, LLUUID transaction, sbyte type, byte[] data, bool storeLocal); IClientAPI remoteClient, LLUUID assetID, LLUUID transaction, sbyte type, byte[] data, bool storeLocal);
public delegate void XferReceive(IClientAPI remoteClient, ulong xferID, uint packetID, byte[] data); public delegate void XferReceive(IClientAPI remoteClient, ulong xferID, uint packetID, byte[] data);
public delegate void RequestXfer(IClientAPI remoteClient, ulong xferID, string fileName); public delegate void RequestXfer(IClientAPI remoteClient, ulong xferID, string fileName);
public delegate void ConfirmXfer(IClientAPI remoteClient, ulong xferID, uint packetID); public delegate void ConfirmXfer(IClientAPI remoteClient, ulong xferID, uint packetID);
public interface IClientAPI public interface IClientAPI
{ {
event ImprovedInstantMessage OnInstantMessage; event ImprovedInstantMessage OnInstantMessage;
event ChatFromViewer OnChatFromViewer; event ChatFromViewer OnChatFromViewer;
event TextureRequest OnRequestTexture; event TextureRequest OnRequestTexture;
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 DisconnectUser OnDisconnectUser; event DisconnectUser OnDisconnectUser;
event RequestAvatarProperties OnRequestAvatarProperties; event RequestAvatarProperties OnRequestAvatarProperties;
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 AgentRequestSit OnAgentRequestSit; event AgentRequestSit OnAgentRequestSit;
event AgentSit OnAgentSit; event AgentSit OnAgentSit;
event GenericCall OnRequestAvatarsData; event GenericCall OnRequestAvatarsData;
event AddNewPrim OnAddPrim; event AddNewPrim OnAddPrim;
event ObjectDuplicate OnObjectDuplicate; event ObjectDuplicate OnObjectDuplicate;
event UpdateVector OnGrabObject; event UpdateVector OnGrabObject;
event ObjectSelect OnDeGrabObject; event ObjectSelect OnDeGrabObject;
event MoveObject OnGrabUpdate; event MoveObject OnGrabUpdate;
event UpdateShape OnUpdatePrimShape; event UpdateShape OnUpdatePrimShape;
event ObjectExtraParams OnUpdateExtraParams; event ObjectExtraParams OnUpdateExtraParams;
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 GenericCall6 OnRemoveAvatar; event GenericCall6 OnRemoveAvatar;
event CreateNewInventoryItem OnCreateNewInventoryItem; event CreateNewInventoryItem OnCreateNewInventoryItem;
event CreateInventoryFolder OnCreateNewInventoryFolder; event CreateInventoryFolder OnCreateNewInventoryFolder;
event FetchInventoryDescendents OnFetchInventoryDescendents; event FetchInventoryDescendents OnFetchInventoryDescendents;
event FetchInventory OnFetchInventory; event FetchInventory OnFetchInventory;
event RequestTaskInventory OnRequestTaskInventory; event RequestTaskInventory OnRequestTaskInventory;
event UpdateInventoryItemTransaction OnUpdateInventoryItem; event UpdateInventoryItemTransaction OnUpdateInventoryItem;
event UDPAssetUploadRequest OnAssetUploadRequest; event UDPAssetUploadRequest OnAssetUploadRequest;
event XferReceive OnXferReceive; event XferReceive OnXferReceive;
event RequestXfer OnRequestXfer; event RequestXfer OnRequestXfer;
event ConfirmXfer OnConfirmXfer; event ConfirmXfer OnConfirmXfer;
event RezScript OnRezScript; event RezScript OnRezScript;
event UpdateTaskInventory OnUpdateTaskInventory; event UpdateTaskInventory OnUpdateTaskInventory;
event RemoveTaskInventory OnRemoveTaskItem; event RemoveTaskInventory OnRemoveTaskItem;
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 { get; set; } LLVector3 StartPos { get; set; }
LLUUID AgentId { get; } LLUUID AgentId { get; }
LLUUID SessionId { get; } LLUUID SessionId { get; }
string FirstName { get; } string FirstName { get; }
string LastName { get; } string LastName { get; }
uint CircuitCode { get; set; } uint CircuitCode { get; set; }
void OutPacket(Packet newPack); void OutPacket(Packet newPack);
void SendWearables(AvatarWearable[] wearables); void SendWearables(AvatarWearable[] wearables);
void SendAppearance(LLUUID agentID, byte[] visualParams, byte[] textureEntry); void SendAppearance(LLUUID agentID, byte[] visualParams, byte[] textureEntry);
void SendStartPingCheck(byte seq); void SendStartPingCheck(byte seq);
void SendKillObject(ulong regionHandle, uint localID); void SendKillObject(ulong regionHandle, uint localID);
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(LLUUID fromAgent, LLUUID fromAgentSession, string message, LLUUID toAgent, void SendInstantMessage(LLUUID fromAgent, LLUUID fromAgentSession, string message, LLUUID toAgent,
LLUUID imSessionID, string fromName, byte dialog, uint timeStamp); LLUUID imSessionID, string fromName, byte dialog, uint timeStamp);
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,
string capsURL); string capsURL);
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, void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID,
uint flags, string capsURL); uint flags, string capsURL);
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, void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID,
LLVector3 Pos, byte[] textureEntry, uint parentID); LLVector3 Pos, byte[] textureEntry, uint parentID);
void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position,
LLVector3 velocity, LLQuaternion rotation); LLVector3 velocity, LLQuaternion rotation);
void SendCoarseLocationUpdate(List<LLVector3> CoarseLocations); void SendCoarseLocationUpdate(List<LLVector3> CoarseLocations);
void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint); void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint);
void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape,
LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text,
uint parentID, byte[] particleSystem, LLQuaternion rotation); uint parentID, byte[] particleSystem, LLQuaternion rotation);
void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position,
LLQuaternion rotation); LLQuaternion rotation);
void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items); void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items);
void SendInventoryItemDetails(LLUUID ownerID, InventoryItemBase item); void SendInventoryItemDetails(LLUUID ownerID, InventoryItemBase item);
void SendInventoryItemUpdate(InventoryItemBase Item); void SendInventoryItemUpdate(InventoryItemBase Item);
void SendRemoveInventoryItem(LLUUID itemID); void SendRemoveInventoryItem(LLUUID itemID);
void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName); void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName);
void SendXferPacket(ulong xferID, uint packet, byte[] data); void SendXferPacket(ulong xferID, uint packet, byte[] data);
void SendPreLoadSound(LLUUID objectID, LLUUID ownerID, LLUUID soundID); void SendPreLoadSound(LLUUID objectID, LLUUID ownerID, LLUUID soundID);
void SendPlayAttachedSound(LLUUID soundID, LLUUID objectID, LLUUID ownerID, float gain, byte flags); void SendPlayAttachedSound(LLUUID soundID, LLUUID objectID, LLUUID ownerID, float gain, byte flags);
void SendNameReply(LLUUID profileId, string firstname, string lastname); void SendNameReply(LLUUID profileId, string firstname, string lastname);
void SendAlertMessage(string message); void SendAlertMessage(string message);
void SendAgentAlertMessage(string message, bool modal); void SendAgentAlertMessage(string message, bool modal);
void SendLoadURL(string objectname, LLUUID objectID, LLUUID ownerID, bool groupOwned, string message, string url); void SendLoadURL(string objectname, LLUUID objectID, LLUUID ownerID, bool groupOwned, string message, string url);
bool AddMoney(int debit); bool AddMoney(int debit);
void SendViewerTime(int phase); void SendViewerTime(int phase);
void SendAvatarProperties(LLUUID avatarID, string aboutText, string bornOn, string charterMember, string flAbout, void SendAvatarProperties(LLUUID avatarID, string aboutText, string bornOn, string charterMember, string flAbout,
uint flags, LLUUID flImageID, LLUUID imageID, string profileURL, LLUUID partnerID); uint flags, LLUUID flImageID, LLUUID imageID, string profileURL, LLUUID partnerID);
void SetDebug(int newDebug); void SetDebug(int newDebug);
void InPacket(Packet NewPack); void InPacket(Packet NewPack);
void Close(); void Close();
event ViewerEffectEventHandler OnViewerEffect; event ViewerEffectEventHandler OnViewerEffect;
event Action<IClientAPI> OnLogout; event Action<IClientAPI> OnLogout;
event Action<IClientAPI> OnConnectionClosed; event Action<IClientAPI> OnConnectionClosed;
void SendLogoutPacket(); void SendLogoutPacket();
} }
} }

View File

@ -1,40 +1,40 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
public interface IGenericConfig public interface IGenericConfig
{ {
void SetFileName(string fileName); void SetFileName(string fileName);
void LoadData(); void LoadData();
void LoadDataFromString(string data); void LoadDataFromString(string data);
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();
} }
} }

View File

@ -1,53 +1,53 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
/// <summary> /// <summary>
/// This interface, describes a generic plugin /// This interface, describes a generic plugin
/// </summary> /// </summary>
public interface IPlugin public interface IPlugin
{ {
/// <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 Version { get; } string Version { get; }
/// <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 Name { get; } string Name { get; }
/// <summary> /// <summary>
/// Initialises the plugin (artificial constructor) /// Initialises the plugin (artificial constructor)
/// </summary> /// </summary>
void Initialise(); void Initialise();
} }
} }

View File

@ -1,43 +1,43 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
public interface IScene public interface IScene
{ {
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; }
ClientManager ClientManager { get; } ClientManager ClientManager { get; }
} }
} }

View File

@ -1,134 +1,134 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
/// <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>
/// Updates an existing user profile /// Updates an existing user profile
/// </summary> /// </summary>
/// <param name="user">UserProfile to update</param> /// <param name="user">UserProfile to update</param>
bool UpdateUserProfile(UserProfileData user); bool UpdateUserProfile(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();
} }
} }

View File

@ -1,48 +1,48 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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.Interfaces namespace OpenSim.Framework.Interfaces
{ {
public interface IUserService public interface IUserService
{ {
UserProfileData GetUserProfile(string firstName, string lastName); UserProfileData GetUserProfile(string firstName, string lastName);
UserProfileData GetUserProfile(string name); UserProfileData GetUserProfile(string name);
UserProfileData GetUserProfile(LLUUID userId); UserProfileData GetUserProfile(LLUUID userId);
void clearUserAgent(LLUUID avatarID); void clearUserAgent(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);
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
/// <param name="user"></param> /// <param name="user"></param>
void AddUserProfile(string firstName, string lastName, string pass, uint regX, uint regY); void AddUserProfile(string firstName, string lastName, string pass, uint regX, uint regY);
} }
} }

View File

@ -1,67 +1,67 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
namespace OpenSim.Framework namespace OpenSim.Framework
{ {
/// <summary> /// <summary>
/// UserConfig -- For User Server Configuration /// UserConfig -- For User Server Configuration
/// </summary> /// </summary>
public class InventoryConfig public class InventoryConfig
{ {
public string DefaultStartupMsg = ""; public string DefaultStartupMsg = "";
public string UserServerURL = ""; public string UserServerURL = "";
public string UserSendKey = ""; public string UserSendKey = "";
public string UserRecvKey = ""; public string UserRecvKey = "";
public string DatabaseProvider = ""; public string DatabaseProvider = "";
public static uint DefaultHttpPort = 8004; public static uint DefaultHttpPort = 8004;
public int HttpPort = 8004; public int HttpPort = 8004;
private ConfigurationMember configMember; private ConfigurationMember configMember;
public InventoryConfig(string description, string filename) public InventoryConfig(string description, string filename)
{ {
configMember = new ConfigurationMember(filename, description, this.loadConfigurationOptions, this.handleIncomingConfiguration); configMember = new ConfigurationMember(filename, description, this.loadConfigurationOptions, this.handleIncomingConfiguration);
configMember.performConfigurationRetrieve(); configMember.performConfigurationRetrieve();
} }
public void loadConfigurationOptions() public void loadConfigurationOptions()
{ {
configMember.addConfigurationOption("default_startup_message", ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, "Default Startup Message", "Welcome to OGS", false); configMember.addConfigurationOption("default_startup_message", ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, "Default Startup Message", "Welcome to OGS", false);
configMember.addConfigurationOption("default_user_server", ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, "Default User Server URI", "http://127.0.0.1:" + UserConfig.DefaultHttpPort.ToString(), false); configMember.addConfigurationOption("default_user_server", ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, "Default User Server URI", "http://127.0.0.1:" + UserConfig.DefaultHttpPort.ToString(), false);
configMember.addConfigurationOption("user_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "Key to send to user server", "null", false); configMember.addConfigurationOption("user_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "Key to send to user server", "null", false);
configMember.addConfigurationOption("user_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "Key to expect from user server", "null", false); configMember.addConfigurationOption("user_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "Key to expect from user server", "null", false);
configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "DLL for database provider", "OpenSim.Framework.Data.MySQL.dll", false); configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "DLL for database provider", "OpenSim.Framework.Data.MySQL.dll", false);
configMember.addConfigurationOption("http_port", ConfigurationOption.ConfigurationTypes.TYPE_INT32, "Http Listener port", DefaultHttpPort.ToString(), false); configMember.addConfigurationOption("http_port", ConfigurationOption.ConfigurationTypes.TYPE_INT32, "Http Listener port", DefaultHttpPort.ToString(), false);
} }
public bool handleIncomingConfiguration(string configuration_key, object configuration_result) public bool handleIncomingConfiguration(string configuration_key, object configuration_result)
{ {
switch (configuration_key) switch (configuration_key)
{ {
case "default_startup_message": case "default_startup_message":
this.DefaultStartupMsg = (string)configuration_result; this.DefaultStartupMsg = (string)configuration_result;
break; break;
case "default_user_server": case "default_user_server":
this.UserServerURL = (string)configuration_result; this.UserServerURL = (string)configuration_result;
break; break;
case "user_send_key": case "user_send_key":
this.UserSendKey = (string)configuration_result; this.UserSendKey = (string)configuration_result;
break; break;
case "user_recv_key": case "user_recv_key":
this.UserRecvKey = (string)configuration_result; this.UserRecvKey = (string)configuration_result;
break; break;
case "database_provider": case "database_provider":
this.DatabaseProvider = (string)configuration_result; this.DatabaseProvider = (string)configuration_result;
break; break;
case "http_port": case "http_port":
HttpPort = (int)configuration_result; HttpPort = (int)configuration_result;
break; break;
} }
return true; return true;
} }
} }
} }

View File

@ -1,273 +1,273 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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.Xml.Serialization; using System.Xml.Serialization;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using libsecondlife; using libsecondlife;
namespace OpenSim.Framework namespace OpenSim.Framework
{ {
/// <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 assetType; public int assetType;
/// <summary> /// <summary>
/// The type of inventory item. (Can be slightly different to the asset type /// The type of inventory item. (Can be slightly different to the asset type
/// </summary> /// </summary>
public int invType; public int invType;
/// <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>
/// ///
/// </summary> /// </summary>
public uint inventoryBasePermissions; public uint inventoryBasePermissions;
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public uint inventoryEveryOnePermissions; public uint inventoryEveryOnePermissions;
} }
/// <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 short type; public short 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 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>
List<InventoryFolderBase> getUserRootFolders(LLUUID user); List<InventoryFolderBase> getUserRootFolders(LLUUID user);
/// <summary> /// <summary>
/// Returns the users inventory root folder. /// Returns the users inventory root folder.
/// </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>Root inventory folder</returns> /// <returns>Root inventory folder</returns>
InventoryFolderBase getUserRootFolder(LLUUID user); InventoryFolderBase getUserRootFolder(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>
/// ///
/// </summary> /// </summary>
/// <param name="item"></param> /// <param name="item"></param>
void deleteInventoryItem(LLUUID item); void deleteInventoryItem(LLUUID 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);
/// <summary> /// <summary>
/// Deletes a folder based on its ID with folder /// Deletes a folder based on its ID with folder
/// </summary> /// </summary>
/// <param name="folder">The id of the folder</param> /// <param name="folder">The id of the folder</param>
void deleteInventoryFolder(LLUUID folder); void deleteInventoryFolder(LLUUID folder);
} }
/* /*
* .Net has some issues, serializing a dictionary, so we cannot reuse the InventoryFolder * .Net has some issues, serializing a dictionary, so we cannot reuse the InventoryFolder
* class defined in Communications.Framework.Communications.Caches. So we serialize/deserialize * class defined in Communications.Framework.Communications.Caches. So we serialize/deserialize
* into this simpler class, and then use that. * into this simpler class, and then use that.
*/ */
[XmlRoot(ElementName = "inventory", IsNullable = true)] [XmlRoot(ElementName = "inventory", IsNullable = true)]
public class SerializableInventory public class SerializableInventory
{ {
[XmlRoot(ElementName = "folder", IsNullable = true)] [XmlRoot(ElementName = "folder", IsNullable = true)]
public class SerializableFolder : InventoryFolderBase public class SerializableFolder : InventoryFolderBase
{ {
[XmlArray(ElementName = "folders", IsNullable = true)] [XmlArray(ElementName = "folders", IsNullable = true)]
[XmlArrayItem(ElementName = "folder", IsNullable = true, Type = typeof(SerializableFolder))] [XmlArrayItem(ElementName = "folder", IsNullable = true, Type = typeof(SerializableFolder))]
public ArrayList SubFolders; public ArrayList SubFolders;
[XmlArray(ElementName = "items", IsNullable = true)] [XmlArray(ElementName = "items", IsNullable = true)]
[XmlArrayItem(ElementName = "item", IsNullable = true, Type = typeof(InventoryItemBase))] [XmlArrayItem(ElementName = "item", IsNullable = true, Type = typeof(InventoryItemBase))]
public ArrayList Items; public ArrayList Items;
} }
[XmlElement(ElementName = "folder", IsNullable = true)] [XmlElement(ElementName = "folder", IsNullable = true)]
public SerializableFolder root; public SerializableFolder root;
} }
} }

View File

@ -1,123 +1,123 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
public class LandData public class LandData
{ {
public byte[] landBitmapByteArray = new byte[512]; public byte[] landBitmapByteArray = new byte[512];
public string landName = "Your Parcel"; public string landName = "Your Parcel";
public string landDesc = ""; public string landDesc = "";
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 landStatus = Parcel.ParcelStatus.Leased; public Parcel.ParcelStatus landStatus = Parcel.ParcelStatus.Leased;
public uint landFlags = (uint) Parcel.ParcelFlags.AllowFly | (uint) Parcel.ParcelFlags.AllowLandmark | public uint landFlags = (uint) Parcel.ParcelFlags.AllowFly | (uint) Parcel.ParcelFlags.AllowLandmark |
(uint) Parcel.ParcelFlags.AllowAllObjectEntry | (uint) Parcel.ParcelFlags.AllowAllObjectEntry |
(uint) Parcel.ParcelFlags.AllowDeedToGroup | (uint) Parcel.ParcelFlags.AllowTerraform | (uint) Parcel.ParcelFlags.AllowDeedToGroup | (uint) Parcel.ParcelFlags.AllowTerraform |
(uint) Parcel.ParcelFlags.CreateObjects | (uint) Parcel.ParcelFlags.AllowOtherScripts | (uint) Parcel.ParcelFlags.CreateObjects | (uint) Parcel.ParcelFlags.AllowOtherScripts |
(uint) Parcel.ParcelFlags.SoundLocal; (uint) Parcel.ParcelFlags.SoundLocal;
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 LandData() public LandData()
{ {
globalID = LLUUID.Random(); globalID = LLUUID.Random();
} }
public LandData Copy() public LandData Copy()
{ {
LandData landData = new LandData(); LandData landData = new LandData();
landData.AABBMax = AABBMax; landData.AABBMax = AABBMax;
landData.AABBMin = AABBMin; landData.AABBMin = AABBMin;
landData.area = area; landData.area = area;
landData.auctionID = auctionID; landData.auctionID = auctionID;
landData.authBuyerID = authBuyerID; landData.authBuyerID = authBuyerID;
landData.category = category; landData.category = category;
landData.claimDate = claimDate; landData.claimDate = claimDate;
landData.claimPrice = claimPrice; landData.claimPrice = claimPrice;
landData.globalID = globalID; landData.globalID = globalID;
landData.groupID = groupID; landData.groupID = groupID;
landData.groupPrims = groupPrims; landData.groupPrims = groupPrims;
landData.otherPrims = otherPrims; landData.otherPrims = otherPrims;
landData.ownerPrims = ownerPrims; landData.ownerPrims = ownerPrims;
landData.selectedPrims = selectedPrims; landData.selectedPrims = selectedPrims;
landData.isGroupOwned = isGroupOwned; landData.isGroupOwned = isGroupOwned;
landData.localID = localID; landData.localID = localID;
landData.landingType = landingType; landData.landingType = landingType;
landData.mediaAutoScale = mediaAutoScale; landData.mediaAutoScale = mediaAutoScale;
landData.mediaID = mediaID; landData.mediaID = mediaID;
landData.mediaURL = mediaURL; landData.mediaURL = mediaURL;
landData.musicURL = musicURL; landData.musicURL = musicURL;
landData.ownerID = ownerID; landData.ownerID = ownerID;
landData.landBitmapByteArray = (byte[]) landBitmapByteArray.Clone(); landData.landBitmapByteArray = (byte[]) landBitmapByteArray.Clone();
landData.landDesc = landDesc; landData.landDesc = landDesc;
landData.landFlags = landFlags; landData.landFlags = landFlags;
landData.landName = landName; landData.landName = landName;
landData.landStatus = landStatus; landData.landStatus = landStatus;
landData.passHours = passHours; landData.passHours = passHours;
landData.passPrice = passPrice; landData.passPrice = passPrice;
landData.salePrice = salePrice; landData.salePrice = salePrice;
landData.snapshotID = snapshotID; landData.snapshotID = snapshotID;
landData.userLocation = userLocation; landData.userLocation = userLocation;
landData.userLookAt = userLookAt; landData.userLookAt = userLookAt;
return landData; return landData;
} }
} }
} }

View File

@ -1,50 +1,50 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
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 LLVector3 StartPos; public LLVector3 StartPos;
public Login() public Login()
{ {
StartPos = new LLVector3(128, 128, 70); StartPos = new LLVector3(128, 128, 70);
} }
} }
} }

View File

@ -1,50 +1,50 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
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()
{ {
} }
} }
} }

View File

@ -1,42 +1,42 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
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;
} }
} }

View File

@ -1,100 +1,100 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 Nini.Config; using Nini.Config;
namespace OpenSim.Framework namespace OpenSim.Framework
{ {
public class NetworkServersInfo public class NetworkServersInfo
{ {
public string AssetURL = "http://127.0.0.1:" + AssetConfig.DefaultHttpPort.ToString() + "/"; public string AssetURL = "http://127.0.0.1:" + AssetConfig.DefaultHttpPort.ToString() + "/";
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 string InventoryURL = ""; public string InventoryURL = "";
public static int DefaultHttpListenerPort = 9000; public static int DefaultHttpListenerPort = 9000;
public int HttpListenerPort = DefaultHttpListenerPort; public int HttpListenerPort = DefaultHttpListenerPort;
public static int RemotingListenerPort = 8895; public static int RemotingListenerPort = 8895;
public NetworkServersInfo() public NetworkServersInfo()
{ {
} }
public NetworkServersInfo(uint defaultHomeLocX, uint defaultHomeLocY) public NetworkServersInfo(uint defaultHomeLocX, uint defaultHomeLocY)
{ {
m_defaultHomeLocX = defaultHomeLocX; m_defaultHomeLocX = defaultHomeLocX;
m_defaultHomeLocY = defaultHomeLocY; m_defaultHomeLocY = defaultHomeLocY;
} }
private uint? m_defaultHomeLocX; private uint? m_defaultHomeLocX;
public uint DefaultHomeLocX public uint DefaultHomeLocX
{ {
get { return m_defaultHomeLocX.Value; } get { return m_defaultHomeLocX.Value; }
} }
private uint? m_defaultHomeLocY; private uint? m_defaultHomeLocY;
public uint DefaultHomeLocY public uint DefaultHomeLocY
{ {
get { return m_defaultHomeLocY.Value; } get { return m_defaultHomeLocY.Value; }
} }
public void loadFromConfiguration(IConfigSource config) public void loadFromConfiguration(IConfigSource config)
{ {
m_defaultHomeLocX = (uint) config.Configs["StandAlone"].GetInt("default_location_x", 1000); m_defaultHomeLocX = (uint) config.Configs["StandAlone"].GetInt("default_location_x", 1000);
m_defaultHomeLocY = (uint) config.Configs["StandAlone"].GetInt("default_location_y", 1000); m_defaultHomeLocY = (uint) config.Configs["StandAlone"].GetInt("default_location_y", 1000);
HttpListenerPort = config.Configs["Network"].GetInt("http_listener_port", DefaultHttpListenerPort); HttpListenerPort = config.Configs["Network"].GetInt("http_listener_port", DefaultHttpListenerPort);
RemotingListenerPort = config.Configs["Network"].GetInt("remoting_listener_port", RemotingListenerPort); RemotingListenerPort = config.Configs["Network"].GetInt("remoting_listener_port", RemotingListenerPort);
GridURL = GridURL =
config.Configs["Network"].GetString("grid_server_url", config.Configs["Network"].GetString("grid_server_url",
"http://127.0.0.1:" + GridConfig.DefaultHttpPort.ToString()); "http://127.0.0.1:" + GridConfig.DefaultHttpPort.ToString());
GridSendKey = config.Configs["Network"].GetString("grid_send_key", "null"); GridSendKey = config.Configs["Network"].GetString("grid_send_key", "null");
GridRecvKey = config.Configs["Network"].GetString("grid_recv_key", "null"); GridRecvKey = config.Configs["Network"].GetString("grid_recv_key", "null");
UserURL = UserURL =
config.Configs["Network"].GetString("user_server_url", config.Configs["Network"].GetString("user_server_url",
"http://127.0.0.1:" + UserConfig.DefaultHttpPort.ToString()); "http://127.0.0.1:" + UserConfig.DefaultHttpPort.ToString());
UserSendKey = config.Configs["Network"].GetString("user_send_key", "null"); UserSendKey = config.Configs["Network"].GetString("user_send_key", "null");
UserRecvKey = config.Configs["Network"].GetString("user_recv_key", "null"); UserRecvKey = config.Configs["Network"].GetString("user_recv_key", "null");
AssetURL = config.Configs["Network"].GetString("asset_server_url", AssetURL); AssetURL = config.Configs["Network"].GetString("asset_server_url", AssetURL);
InventoryURL = config.Configs["Network"].GetString("inventory_server_url", InventoryURL = config.Configs["Network"].GetString("inventory_server_url",
"http://127.0.0.1:" + InventoryConfig.DefaultHttpPort.ToString()); "http://127.0.0.1:" + InventoryConfig.DefaultHttpPort.ToString());
} }
} }
} }

View File

@ -1,214 +1,214 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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.Xml.Serialization; using System.Xml.Serialization;
using libsecondlife; using libsecondlife;
namespace OpenSim.Framework namespace OpenSim.Framework
{ {
public enum ProfileShape : byte public enum ProfileShape : byte
{ {
Circle = 0, Circle = 0,
Square = 1, Square = 1,
IsometricTriangle = 2, IsometricTriangle = 2,
EquilateralTriangle = 3, EquilateralTriangle = 3,
RightTriangle = 4, RightTriangle = 4,
HalfCircle = 5 HalfCircle = 5
} }
public enum HollowShape : byte public enum HollowShape : byte
{ {
Same = 0, Same = 0,
Circle = 16, Circle = 16,
Square = 32, Square = 32,
Triangle = 48 Triangle = 48
} }
public enum PCodeEnum : byte public enum PCodeEnum : byte
{ {
Primitive = 9, Primitive = 9,
Avatar = 47 Avatar = 47
} }
public enum Extrusion : byte public enum Extrusion : byte
{ {
Straight = 16, Straight = 16,
Curve1 = 32, Curve1 = 32,
Curve2 = 48, Curve2 = 48,
Flexible = 128 Flexible = 128
} }
public class PrimitiveBaseShape public class PrimitiveBaseShape
{ {
private static byte[] m_defaultTextureEntry; private static byte[] m_defaultTextureEntry;
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 byte[] ExtraParams; public byte[] ExtraParams;
public ProfileShape ProfileShape public ProfileShape ProfileShape
{ {
get { return (ProfileShape) (ProfileCurve & 0xf); } get { return (ProfileShape) (ProfileCurve & 0xf); }
set set
{ {
byte oldValueMasked = (byte) (ProfileCurve & 0xf0); byte oldValueMasked = (byte) (ProfileCurve & 0xf0);
ProfileCurve = (byte) (oldValueMasked | (byte) value); ProfileCurve = (byte) (oldValueMasked | (byte) value);
} }
} }
[XmlIgnore] [XmlIgnore]
public HollowShape HollowShape public HollowShape HollowShape
{ {
get { return (HollowShape) (ProfileHollow & 0xf0); } get { return (HollowShape) (ProfileHollow & 0xf0); }
set set
{ {
byte oldValueMasked = (byte) (ProfileHollow & 0xf0); byte oldValueMasked = (byte) (ProfileHollow & 0xf0);
ProfileHollow = (byte) (oldValueMasked | (byte) value); ProfileHollow = (byte) (oldValueMasked | (byte) value);
} }
} }
public LLVector3 PrimScale public LLVector3 PrimScale
{ {
get { return Scale; } get { return Scale; }
} }
static PrimitiveBaseShape() static PrimitiveBaseShape()
{ {
m_defaultTextureEntry = m_defaultTextureEntry =
new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-9999-000000000005")).ToBytes(); new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-9999-000000000005")).ToBytes();
} }
public PrimitiveBaseShape() public PrimitiveBaseShape()
{ {
PCode = (byte) PCodeEnum.Primitive; PCode = (byte) PCodeEnum.Primitive;
ExtraParams = new byte[1]; ExtraParams = new byte[1];
TextureEntry = m_defaultTextureEntry; TextureEntry = m_defaultTextureEntry;
} }
//void returns need to change of course //void returns need to change of course
public virtual void GetMesh() public virtual void GetMesh()
{ {
} }
public PrimitiveBaseShape Copy() public PrimitiveBaseShape Copy()
{ {
return (PrimitiveBaseShape) MemberwiseClone(); return (PrimitiveBaseShape) MemberwiseClone();
} }
} }
public class GenericShape : PrimitiveBaseShape public class GenericShape : PrimitiveBaseShape
{ {
public GenericShape() public GenericShape()
: base() : base()
{ {
} }
} }
public class BoxShape : PrimitiveBaseShape public class BoxShape : PrimitiveBaseShape
{ {
public BoxShape() public BoxShape()
: base() : base()
{ {
PathCurve = (byte) Extrusion.Straight; PathCurve = (byte) Extrusion.Straight;
ProfileShape = ProfileShape.Square; ProfileShape = ProfileShape.Square;
PathScaleX = 100; PathScaleX = 100;
PathScaleY = 100; PathScaleY = 100;
} }
public BoxShape(float side) public BoxShape(float side)
: this() : this()
{ {
SetSide(side); SetSide(side);
} }
public void SetSide(float side) public void SetSide(float side)
{ {
Scale = new LLVector3(side, side, side); Scale = new LLVector3(side, side, side);
} }
public static BoxShape Default public static BoxShape Default
{ {
get get
{ {
BoxShape boxShape = new BoxShape(); BoxShape boxShape = new BoxShape();
boxShape.SetSide(0.5f); boxShape.SetSide(0.5f);
return boxShape; return boxShape;
} }
} }
} }
public class CylinderShape : PrimitiveBaseShape public class CylinderShape : PrimitiveBaseShape
{ {
public CylinderShape() public CylinderShape()
: base() : base()
{ {
PathCurve = (byte) Extrusion.Straight; PathCurve = (byte) Extrusion.Straight;
ProfileShape = ProfileShape.Circle; ProfileShape = ProfileShape.Circle;
PathScaleX = 100; PathScaleX = 100;
PathScaleY = 100; PathScaleY = 100;
} }
public CylinderShape(float radius, float heigth) public CylinderShape(float radius, float heigth)
: this() : this()
{ {
SetRadius(radius); SetRadius(radius);
SetHeigth(heigth); SetHeigth(heigth);
} }
private void SetHeigth(float heigth) private void SetHeigth(float heigth)
{ {
Scale.Z = heigth; Scale.Z = heigth;
} }
private void SetRadius(float radius) private void SetRadius(float radius)
{ {
Scale.X = Scale.Y = radius*2f; Scale.X = Scale.Y = radius*2f;
} }
} }
} }

View File

@ -1,150 +1,150 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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;
namespace OpenSim.Framework namespace OpenSim.Framework
{ {
/// <summary> /// <summary>
/// A class for manipulating RegionHandle coordinates /// A class for manipulating RegionHandle coordinates
/// </summary> /// </summary>
internal class RegionHandle internal 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 != AddressFamily.InterNetwork) if (addr.AddressFamily != 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;
} }
} }
} }

View File

@ -1,328 +1,328 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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; using libsecondlife;
using Nini.Config; using Nini.Config;
namespace OpenSim.Framework namespace OpenSim.Framework
{ {
public class SimpleRegionInfo public class SimpleRegionInfo
{ {
public SimpleRegionInfo() public SimpleRegionInfo()
{ {
} }
public SimpleRegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) public SimpleRegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri)
{ {
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 SimpleRegionInfo(uint regionLocX, uint regionLocY, string externalUri, int port) public SimpleRegionInfo(uint regionLocX, uint regionLocY, string externalUri, int port)
{ {
m_regionLocX = regionLocX; m_regionLocX = regionLocX;
m_regionLocY = regionLocY; m_regionLocY = regionLocY;
m_externalHostName = externalUri; m_externalHostName = externalUri;
m_internalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), port); m_internalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), port);
} }
public LLUUID RegionID = new LLUUID(); public LLUUID RegionID = new LLUUID();
private uint m_remotingPort; private uint m_remotingPort;
public uint RemotingPort public uint RemotingPort
{ {
get { return m_remotingPort; } get { return m_remotingPort; }
set { m_remotingPort = value; } set { m_remotingPort = value; }
} }
public string RemotingAddress; public string RemotingAddress;
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 );
IPAddress ia = null; IPAddress ia = null;
// If it is already an IP, don't resolve it - just return directly // If it is already an IP, don't resolve it - just return directly
if (IPAddress.TryParse(m_externalHostName, out ia)) if (IPAddress.TryParse(m_externalHostName, out ia))
return new IPEndPoint(ia, m_internalEndPoint.Port); return new IPEndPoint(ia, m_internalEndPoint.Port);
// Reset for next check // Reset for next check
ia = null; ia = null;
// New method favors IPv4 // New method favors IPv4
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);
} }
set { m_externalHostName = value.ToString(); } set { m_externalHostName = value.ToString(); }
} }
protected string m_externalHostName; protected string m_externalHostName;
public string ExternalHostName public string ExternalHostName
{ {
get { return m_externalHostName; } get { return m_externalHostName; }
set { m_externalHostName = value; } set { m_externalHostName = value; }
} }
protected IPEndPoint m_internalEndPoint; protected IPEndPoint m_internalEndPoint;
public IPEndPoint InternalEndPoint public IPEndPoint InternalEndPoint
{ {
get { return m_internalEndPoint; } get { return m_internalEndPoint; }
set { m_internalEndPoint = value; } set { m_internalEndPoint = value; }
} }
protected uint? m_regionLocX; protected uint? m_regionLocX;
public uint RegionLocX public uint RegionLocX
{ {
get { return m_regionLocX.Value; } get { return m_regionLocX.Value; }
set { m_regionLocX = value; } set { m_regionLocX = value; }
} }
protected uint? m_regionLocY; protected uint? m_regionLocY;
public uint RegionLocY public uint RegionLocY
{ {
get { return m_regionLocY.Value; } get { return m_regionLocY.Value; }
set { m_regionLocY = value; } set { m_regionLocY = value; }
} }
public ulong RegionHandle public ulong RegionHandle
{ {
get { return Util.UIntsToLong((RegionLocX*256), (RegionLocY*256)); } get { return Util.UIntsToLong((RegionLocX*256), (RegionLocY*256)); }
} }
} }
public class RegionInfo : SimpleRegionInfo public class RegionInfo : SimpleRegionInfo
{ {
public string RegionName = ""; public string RegionName = "";
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 = "";
// Apparently, we're applying the same estatesettings regardless of whether it's local or remote. // Apparently, we're applying the same estatesettings regardless of whether it's local or remote.
private static EstateSettings m_estateSettings; private static EstateSettings m_estateSettings;
public EstateSettings EstateSettings public EstateSettings EstateSettings
{ {
get get
{ {
if (m_estateSettings == null) if (m_estateSettings == null)
{ {
m_estateSettings = new EstateSettings(); m_estateSettings = new EstateSettings();
} }
return m_estateSettings; return m_estateSettings;
} }
} }
public ConfigurationMember configMember; public ConfigurationMember configMember;
public RegionInfo(string description, string filename) public RegionInfo(string description, string filename)
{ {
configMember = configMember =
new ConfigurationMember(filename, description, loadConfigurationOptions, handleIncomingConfiguration); new ConfigurationMember(filename, description, loadConfigurationOptions, handleIncomingConfiguration);
configMember.performConfigurationRetrieve(); configMember.performConfigurationRetrieve();
} }
public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) : public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) :
base(regionLocX, regionLocY, internalEndPoint, externalUri) base(regionLocX, regionLocY, internalEndPoint, externalUri)
{ {
} }
public RegionInfo() public RegionInfo()
{ {
} }
//not in use, should swap to nini though. //not in use, should swap to nini though.
public void LoadFromNiniSource(IConfigSource source) public void LoadFromNiniSource(IConfigSource source)
{ {
LoadFromNiniSource(source, "RegionInfo"); LoadFromNiniSource(source, "RegionInfo");
} }
//not in use, should swap to nini though. //not in use, should swap to nini though.
public void LoadFromNiniSource(IConfigSource source, string sectionName) public void LoadFromNiniSource(IConfigSource source, string sectionName)
{ {
string errorMessage = ""; string errorMessage = "";
RegionID = RegionID =
new LLUUID(source.Configs[sectionName].GetString("Region_ID", LLUUID.Random().ToStringHyphenated())); new LLUUID(source.Configs[sectionName].GetString("Region_ID", LLUUID.Random().ToStringHyphenated()));
RegionName = source.Configs[sectionName].GetString("sim_name", "OpenSim Test"); RegionName = source.Configs[sectionName].GetString("sim_name", "OpenSim Test");
m_regionLocX = Convert.ToUInt32(source.Configs[sectionName].GetString("sim_location_x", "1000")); m_regionLocX = Convert.ToUInt32(source.Configs[sectionName].GetString("sim_location_x", "1000"));
m_regionLocY = Convert.ToUInt32(source.Configs[sectionName].GetString("sim_location_y", "1000")); m_regionLocY = Convert.ToUInt32(source.Configs[sectionName].GetString("sim_location_y", "1000"));
DataStore = source.Configs[sectionName].GetString("datastore", "OpenSim.db"); DataStore = source.Configs[sectionName].GetString("datastore", "OpenSim.db");
string ipAddress = source.Configs[sectionName].GetString("internal_ip_address", "0.0.0.0"); string ipAddress = source.Configs[sectionName].GetString("internal_ip_address", "0.0.0.0");
IPAddress ipAddressResult; IPAddress ipAddressResult;
if (IPAddress.TryParse(ipAddress, out ipAddressResult)) if (IPAddress.TryParse(ipAddress, out ipAddressResult))
{ {
m_internalEndPoint = new IPEndPoint(ipAddressResult, 0); m_internalEndPoint = new IPEndPoint(ipAddressResult, 0);
} }
else else
{ {
errorMessage = "needs an IP Address (IPAddress)"; errorMessage = "needs an IP Address (IPAddress)";
} }
m_internalEndPoint.Port = m_internalEndPoint.Port =
source.Configs[sectionName].GetInt("internal_ip_port", NetworkServersInfo.DefaultHttpListenerPort); source.Configs[sectionName].GetInt("internal_ip_port", NetworkServersInfo.DefaultHttpListenerPort);
string externalHost = source.Configs[sectionName].GetString("external_host_name", "127.0.0.1"); string externalHost = source.Configs[sectionName].GetString("external_host_name", "127.0.0.1");
if (externalHost != "SYSTEMIP") if (externalHost != "SYSTEMIP")
{ {
m_externalHostName = externalHost; m_externalHostName = externalHost;
} }
else else
{ {
m_externalHostName = Util.GetLocalHost().ToString(); m_externalHostName = Util.GetLocalHost().ToString();
} }
MasterAvatarFirstName = source.Configs[sectionName].GetString("master_avatar_first", "Test"); MasterAvatarFirstName = source.Configs[sectionName].GetString("master_avatar_first", "Test");
MasterAvatarLastName = source.Configs[sectionName].GetString("master_avatar_last", "User"); MasterAvatarLastName = source.Configs[sectionName].GetString("master_avatar_last", "User");
MasterAvatarSandboxPassword = source.Configs[sectionName].GetString("master_avatar_pass", "test"); MasterAvatarSandboxPassword = source.Configs[sectionName].GetString("master_avatar_pass", "test");
if (errorMessage != "") if (errorMessage != "")
{ {
// a error // a error
} }
} }
public void loadConfigurationOptions() public void loadConfigurationOptions()
{ {
configMember.addConfigurationOption("sim_UUID", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, configMember.addConfigurationOption("sim_UUID", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
"UUID of Region (Default is recommended, random UUID)", "UUID of Region (Default is recommended, random UUID)",
LLUUID.Random().ToString(), true); LLUUID.Random().ToString(), true);
configMember.addConfigurationOption("sim_name", ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, configMember.addConfigurationOption("sim_name", ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
"Region Name", "OpenSim Test", false); "Region Name", "OpenSim Test", false);
configMember.addConfigurationOption("sim_location_x", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, configMember.addConfigurationOption("sim_location_x", ConfigurationOption.ConfigurationTypes.TYPE_UINT32,
"Grid Location (X Axis)", "1000", false); "Grid Location (X Axis)", "1000", false);
configMember.addConfigurationOption("sim_location_y", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, configMember.addConfigurationOption("sim_location_y", ConfigurationOption.ConfigurationTypes.TYPE_UINT32,
"Grid Location (Y Axis)", "1000", false); "Grid Location (Y Axis)", "1000", false);
configMember.addConfigurationOption("datastore", configMember.addConfigurationOption("datastore",
ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
"Filename for local storage", "OpenSim.db", false); "Filename for local storage", "OpenSim.db", false);
configMember.addConfigurationOption("internal_ip_address", configMember.addConfigurationOption("internal_ip_address",
ConfigurationOption.ConfigurationTypes.TYPE_IP_ADDRESS, ConfigurationOption.ConfigurationTypes.TYPE_IP_ADDRESS,
"Internal IP Address for incoming UDP client connections", "0.0.0.0", "Internal IP Address for incoming UDP client connections", "0.0.0.0",
false); false);
configMember.addConfigurationOption("internal_ip_port", ConfigurationOption.ConfigurationTypes.TYPE_INT32, configMember.addConfigurationOption("internal_ip_port", ConfigurationOption.ConfigurationTypes.TYPE_INT32,
"Internal IP Port for incoming UDP client connections", "Internal IP Port for incoming UDP client connections",
NetworkServersInfo.DefaultHttpListenerPort.ToString(), false); NetworkServersInfo.DefaultHttpListenerPort.ToString(), false);
configMember.addConfigurationOption("external_host_name", configMember.addConfigurationOption("external_host_name",
ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
"External Host Name", "127.0.0.1", false); "External Host Name", "127.0.0.1", false);
configMember.addConfigurationOption("master_avatar_first", configMember.addConfigurationOption("master_avatar_first",
ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
"First Name of Master Avatar", "Test", false); "First Name of Master Avatar", "Test", false);
configMember.addConfigurationOption("master_avatar_last", configMember.addConfigurationOption("master_avatar_last",
ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
"Last Name of Master Avatar", "User", false); "Last Name of Master Avatar", "User", false);
configMember.addConfigurationOption("master_avatar_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING, configMember.addConfigurationOption("master_avatar_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"(Sandbox Mode Only)Password for Master Avatar account", "test", false); "(Sandbox Mode Only)Password for Master Avatar account", "test", false);
} }
public bool handleIncomingConfiguration(string configuration_key, object configuration_result) public bool handleIncomingConfiguration(string configuration_key, object configuration_result)
{ {
switch (configuration_key) switch (configuration_key)
{ {
case "sim_UUID": case "sim_UUID":
RegionID = (LLUUID) configuration_result; RegionID = (LLUUID) configuration_result;
break; break;
case "sim_name": case "sim_name":
RegionName = (string) configuration_result; RegionName = (string) configuration_result;
break; break;
case "sim_location_x": case "sim_location_x":
m_regionLocX = (uint) configuration_result; m_regionLocX = (uint) configuration_result;
break; break;
case "sim_location_y": case "sim_location_y":
m_regionLocY = (uint) configuration_result; m_regionLocY = (uint) configuration_result;
break; break;
case "datastore": case "datastore":
DataStore = (string) configuration_result; DataStore = (string) configuration_result;
break; break;
case "internal_ip_address": case "internal_ip_address":
IPAddress address = (IPAddress) configuration_result; IPAddress address = (IPAddress) configuration_result;
m_internalEndPoint = new IPEndPoint(address, 0); m_internalEndPoint = new IPEndPoint(address, 0);
break; break;
case "internal_ip_port": case "internal_ip_port":
m_internalEndPoint.Port = (int) configuration_result; m_internalEndPoint.Port = (int) configuration_result;
break; break;
case "external_host_name": case "external_host_name":
if ((string) configuration_result != "SYSTEMIP") if ((string) configuration_result != "SYSTEMIP")
{ {
m_externalHostName = (string) configuration_result; m_externalHostName = (string) configuration_result;
} }
else else
{ {
m_externalHostName = Util.GetLocalHost().ToString(); m_externalHostName = Util.GetLocalHost().ToString();
} }
break; break;
case "master_avatar_first": case "master_avatar_first":
MasterAvatarFirstName = (string) configuration_result; MasterAvatarFirstName = (string) configuration_result;
break; break;
case "master_avatar_last": case "master_avatar_last":
MasterAvatarLastName = (string) configuration_result; MasterAvatarLastName = (string) configuration_result;
break; break;
case "master_avatar_pass": case "master_avatar_pass":
string tempMD5Passwd = (string) configuration_result; string tempMD5Passwd = (string) configuration_result;
MasterAvatarSandboxPassword = Util.Md5Hash(Util.Md5Hash(tempMD5Passwd) + ":" + ""); MasterAvatarSandboxPassword = Util.Md5Hash(Util.Md5Hash(tempMD5Passwd) + ":" + "");
break; break;
} }
return true; return true;
} }
} }
} }

View File

@ -1,155 +1,155 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
internal class UUID internal 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);
} }
} }
} }

View File

@ -1,103 +1,103 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
/// <summary> /// <summary>
/// UserConfig -- For User Server Configuration /// UserConfig -- For User Server Configuration
/// </summary> /// </summary>
public class UserConfig public 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 string DatabaseProvider = ""; public string DatabaseProvider = "";
public static uint DefaultHttpPort = 8002; public static uint DefaultHttpPort = 8002;
public uint HttpPort = DefaultHttpPort; public uint HttpPort = DefaultHttpPort;
private ConfigurationMember configMember; private ConfigurationMember configMember;
public UserConfig(string description, string filename) public UserConfig(string description, string filename)
{ {
configMember = configMember =
new ConfigurationMember(filename, description, loadConfigurationOptions, handleIncomingConfiguration); new ConfigurationMember(filename, description, loadConfigurationOptions, handleIncomingConfiguration);
configMember.performConfigurationRetrieve(); configMember.performConfigurationRetrieve();
} }
public void loadConfigurationOptions() public void loadConfigurationOptions()
{ {
configMember.addConfigurationOption("default_startup_message", configMember.addConfigurationOption("default_startup_message",
ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
"Default Startup Message", "Welcome to OGS", false); "Default Startup Message", "Welcome to OGS", false);
configMember.addConfigurationOption("default_grid_server", configMember.addConfigurationOption("default_grid_server",
ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
"Default Grid Server URI", "Default Grid Server URI",
"http://127.0.0.1:" + GridConfig.DefaultHttpPort.ToString() + "/", false); "http://127.0.0.1:" + GridConfig.DefaultHttpPort.ToString() + "/", false);
configMember.addConfigurationOption("grid_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, configMember.addConfigurationOption("grid_send_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"Key to send to grid server", "null", false); "Key to send to grid server", "null", false);
configMember.addConfigurationOption("grid_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING, configMember.addConfigurationOption("grid_recv_key", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"Key to expect from grid server", "null", false); "Key to expect from grid server", "null", false);
configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING, configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"DLL for database provider", "OpenSim.Framework.Data.MySQL.dll", false); "DLL for database provider", "OpenSim.Framework.Data.MySQL.dll", false);
configMember.addConfigurationOption("http_port", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, configMember.addConfigurationOption("http_port", ConfigurationOption.ConfigurationTypes.TYPE_UINT32,
"Http Listener port", DefaultHttpPort.ToString(), false); "Http Listener port", DefaultHttpPort.ToString(), false);
} }
public bool handleIncomingConfiguration(string configuration_key, object configuration_result) public bool handleIncomingConfiguration(string configuration_key, object configuration_result)
{ {
switch (configuration_key) switch (configuration_key)
{ {
case "default_startup_message": case "default_startup_message":
DefaultStartupMsg = (string) configuration_result; DefaultStartupMsg = (string) configuration_result;
break; break;
case "default_grid_server": case "default_grid_server":
GridServerURL = (string) configuration_result; GridServerURL = (string) configuration_result;
break; break;
case "grid_send_key": case "grid_send_key":
GridSendKey = (string) configuration_result; GridSendKey = (string) configuration_result;
break; break;
case "grid_recv_key": case "grid_recv_key":
GridRecvKey = (string) configuration_result; GridRecvKey = (string) configuration_result;
break; break;
case "database_provider": case "database_provider":
DatabaseProvider = (string) configuration_result; DatabaseProvider = (string) configuration_result;
break; break;
case "http_port": case "http_port":
HttpPort = (uint) configuration_result; HttpPort = (uint) configuration_result;
break; break;
} }
return true; return true;
} }
} }
} }

View File

@ -1,214 +1,214 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.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 namespace OpenSim.Framework
{ {
/// <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
{ {
get { return Helpers.UIntsToLong((homeRegionX*256), (homeRegionY*256)); } get { return Helpers.UIntsToLong((homeRegionX*256), (homeRegionY*256)); }
set set
{ {
homeRegionX = (uint) (value >> 40); homeRegionX = (uint) (value >> 40);
homeRegionY = (((uint) (value)) >> 8); homeRegionY = (((uint) (value)) >> 8);
} }
} }
public uint homeRegionX; public uint homeRegionX;
public uint homeRegionY; public uint homeRegionY;
/// <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;
public LLUUID rootInventoryFolderID; public LLUUID rootInventoryFolderID;
/// <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 = String.Empty; public string userInventoryURI = String.Empty;
/// <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 = String.Empty; public string userAssetURI = String.Empty;
/// <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 = String.Empty; public string profileAboutText = String.Empty;
/// <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 = String.Empty; public string profileFirstText = String.Empty;
/// <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;
} }
} }