[Simian]
* Initial framework support for multiple simulators. Currently only the first region config is loaded, but the framework is there * Big reorganization of config and data files * Started renaming extensions that handle LLUDP packets to start with the LL prefix. Work in progress * Initial SSL support git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2482 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
@@ -2,7 +2,7 @@ using System;
|
||||
using ExtensionLoader;
|
||||
using OpenMetaverse;
|
||||
|
||||
namespace Simian.Extensions
|
||||
namespace Simian
|
||||
{
|
||||
public class AuthFreeForAll : IExtension<Simian>, IAuthenticationProvider
|
||||
{
|
||||
@@ -12,9 +12,10 @@ namespace Simian.Extensions
|
||||
{
|
||||
}
|
||||
|
||||
public void Start(Simian server)
|
||||
public bool Start(Simian server)
|
||||
{
|
||||
this.server = server;
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
@@ -23,87 +24,83 @@ namespace Simian.Extensions
|
||||
|
||||
public UUID Authenticate(string firstName, string lastName, string password)
|
||||
{
|
||||
AgentInfo agentInfo;
|
||||
ISceneProvider scene = server.Grid.GetDefaultLocalScene();
|
||||
string fullName = String.Format("{0} {1}", firstName, lastName);
|
||||
|
||||
Agent agent;
|
||||
if (!server.Accounts.TryGetAccount(fullName, out agent))
|
||||
if (!server.Accounts.TryGetAccount(fullName, out agentInfo))
|
||||
{
|
||||
// Account doesn't exist, create it now
|
||||
Avatar avatar = new Avatar();
|
||||
SimulationObject obj = new SimulationObject(avatar, server);
|
||||
agent = new Agent(obj);
|
||||
agent.AccessLevel = "M";
|
||||
agent.Avatar.Prim.ID = UUID.Random();
|
||||
agent.Balance = 1000;
|
||||
agent.CreationTime = Utils.DateTimeToUnixTime(DateTime.Now);
|
||||
agent.CurrentLookAt = Vector3.UnitZ;
|
||||
agent.Avatar.Prim.Position = new Vector3(128f, 128f, 25f);
|
||||
agent.CurrentRegionHandle = Utils.UIntsToLong(256 * server.Scene.RegionX, 256 * server.Scene.RegionY);
|
||||
agent.FirstName = firstName;
|
||||
agent.GodLevel = 0;
|
||||
agent.HomeLookAt = agent.CurrentLookAt;
|
||||
agent.HomePosition = agent.Avatar.Prim.Position;
|
||||
agent.HomeRegionHandle = agent.CurrentRegionHandle;
|
||||
agent.LastName = lastName;
|
||||
agent.PasswordHash = password;
|
||||
agentInfo = new AgentInfo();
|
||||
agentInfo.AccessLevel = "M";
|
||||
agentInfo.ID = UUID.Random();
|
||||
agentInfo.Balance = 1000;
|
||||
agentInfo.CreationTime = Utils.DateTimeToUnixTime(DateTime.Now);
|
||||
agentInfo.FirstName = firstName;
|
||||
agentInfo.GodLevel = 0;
|
||||
agentInfo.HomeLookAt = scene.DefaultLookAt;
|
||||
agentInfo.HomePosition = scene.DefaultPosition;
|
||||
agentInfo.HomeRegionHandle = scene.RegionHandle;
|
||||
agentInfo.LastName = lastName;
|
||||
agentInfo.PasswordHash = password;
|
||||
|
||||
// Create a very basic inventory skeleton
|
||||
UUID rootFolder = UUID.Random();
|
||||
server.Inventory.CreateRootFolder(agent.ID, rootFolder, "Inventory", agent.ID);
|
||||
server.Inventory.CreateRootFolder(agentInfo.ID, rootFolder, "Inventory", agentInfo.ID);
|
||||
UUID libraryRootFolder = UUID.Random();
|
||||
server.Inventory.CreateRootFolder(agent.ID, libraryRootFolder, "Library", agent.ID);
|
||||
server.Inventory.CreateRootFolder(agentInfo.ID, libraryRootFolder, "Library", agentInfo.ID);
|
||||
|
||||
agent.InventoryRoot = rootFolder;
|
||||
agent.InventoryLibraryOwner = agent.ID;
|
||||
agent.InventoryLibraryRoot = libraryRootFolder;
|
||||
agentInfo.InventoryRoot = rootFolder;
|
||||
agentInfo.InventoryLibraryOwner = agentInfo.ID;
|
||||
agentInfo.InventoryLibraryRoot = libraryRootFolder;
|
||||
|
||||
// Create some inventory items for appearance
|
||||
UUID clothingFolder = UUID.Random();
|
||||
server.Inventory.CreateFolder(agent.ID, clothingFolder, "Clothing", AssetType.Clothing,
|
||||
agent.InventoryRoot, agent.ID);
|
||||
server.Inventory.CreateFolder(agentInfo.ID, clothingFolder, "Clothing", AssetType.Clothing,
|
||||
agentInfo.InventoryRoot, agentInfo.ID);
|
||||
UUID defaultOutfitFolder = UUID.Random();
|
||||
server.Inventory.CreateFolder(agent.ID, defaultOutfitFolder, "Default Outfit", AssetType.Unknown,
|
||||
clothingFolder, agent.ID);
|
||||
server.Inventory.CreateFolder(agentInfo.ID, defaultOutfitFolder, "Default Outfit", AssetType.Unknown,
|
||||
clothingFolder, agentInfo.ID);
|
||||
|
||||
UUID hairAsset = new UUID("dc675529-7ba5-4976-b91d-dcb9e5e36188");
|
||||
UUID hairItem = server.Inventory.CreateItem(agent.ID, "Default Hair", "Default Hair",
|
||||
UUID hairItem = server.Inventory.CreateItem(agentInfo.ID, "Default Hair", "Default Hair",
|
||||
InventoryType.Wearable, AssetType.Bodypart, hairAsset, defaultOutfitFolder,
|
||||
PermissionMask.All, PermissionMask.All, agent.ID, agent.ID, UUID.Random(), 0, false);
|
||||
PermissionMask.All, PermissionMask.All, agentInfo.ID, agentInfo.ID, UUID.Random(), 0).ID;
|
||||
UUID pantsAsset = new UUID("3e8ee2d6-4f21-4a55-832d-77daa505edff");
|
||||
UUID pantsItem = server.Inventory.CreateItem(agent.ID, "Default Pants", "Default Pants",
|
||||
UUID pantsItem = server.Inventory.CreateItem(agentInfo.ID, "Default Pants", "Default Pants",
|
||||
InventoryType.Wearable, AssetType.Clothing, pantsAsset, defaultOutfitFolder,
|
||||
PermissionMask.All, PermissionMask.All, agent.ID, agent.ID, UUID.Random(), 0, false);
|
||||
PermissionMask.All, PermissionMask.All, agentInfo.ID, agentInfo.ID, UUID.Random(), 0).ID;
|
||||
UUID shapeAsset = new UUID("530a2614-052e-49a2-af0e-534bb3c05af0");
|
||||
UUID shapeItem = server.Inventory.CreateItem(agent.ID, "Default Shape", "Default Shape",
|
||||
UUID shapeItem = server.Inventory.CreateItem(agentInfo.ID, "Default Shape", "Default Shape",
|
||||
InventoryType.Wearable, AssetType.Clothing, shapeAsset, defaultOutfitFolder,
|
||||
PermissionMask.All, PermissionMask.All, agent.ID, agent.ID, UUID.Random(), 0, false);
|
||||
PermissionMask.All, PermissionMask.All, agentInfo.ID, agentInfo.ID, UUID.Random(), 0).ID;
|
||||
UUID shirtAsset = new UUID("6a714f37-fe53-4230-b46f-8db384465981");
|
||||
UUID shirtItem = server.Inventory.CreateItem(agent.ID, "Default Shirt", "Default Shirt",
|
||||
UUID shirtItem = server.Inventory.CreateItem(agentInfo.ID, "Default Shirt", "Default Shirt",
|
||||
InventoryType.Wearable, AssetType.Clothing, shirtAsset, defaultOutfitFolder,
|
||||
PermissionMask.All, PermissionMask.All, agent.ID, agent.ID, UUID.Random(), 0, false);
|
||||
PermissionMask.All, PermissionMask.All, agentInfo.ID, agentInfo.ID, UUID.Random(), 0).ID;
|
||||
UUID skinAsset = new UUID("5f787f25-f761-4a35-9764-6418ee4774c4");
|
||||
UUID skinItem = server.Inventory.CreateItem(agent.ID, "Default Skin", "Default Skin",
|
||||
UUID skinItem = server.Inventory.CreateItem(agentInfo.ID, "Default Skin", "Default Skin",
|
||||
InventoryType.Wearable, AssetType.Clothing, skinAsset, defaultOutfitFolder,
|
||||
PermissionMask.All, PermissionMask.All, agent.ID, agent.ID, UUID.Random(), 0, false);
|
||||
PermissionMask.All, PermissionMask.All, agentInfo.ID, agentInfo.ID, UUID.Random(), 0).ID;
|
||||
UUID eyesAsset = new UUID("78d20332-9b07-44a2-bf74-3b368605f4b5");
|
||||
UUID eyesItem = server.Inventory.CreateItem(agent.ID, "Default Eyes", "Default Eyes",
|
||||
UUID eyesItem = server.Inventory.CreateItem(agentInfo.ID, "Default Eyes", "Default Eyes",
|
||||
InventoryType.Wearable, AssetType.Bodypart, eyesAsset, defaultOutfitFolder,
|
||||
PermissionMask.All, PermissionMask.All, agent.ID, agent.ID, UUID.Random(), 0, false);
|
||||
PermissionMask.All, PermissionMask.All, agentInfo.ID, agentInfo.ID, UUID.Random(), 0).ID;
|
||||
|
||||
agent.HairItem = hairItem;
|
||||
agent.PantsItem = pantsItem;
|
||||
agent.ShapeItem = shapeItem;
|
||||
agent.ShirtItem = shirtItem;
|
||||
agent.SkinItem = skinItem;
|
||||
agent.EyesItem = eyesItem;
|
||||
agentInfo.HairItem = hairItem;
|
||||
agentInfo.PantsItem = pantsItem;
|
||||
agentInfo.ShapeItem = shapeItem;
|
||||
agentInfo.ShirtItem = shirtItem;
|
||||
agentInfo.SkinItem = skinItem;
|
||||
agentInfo.EyesItem = eyesItem;
|
||||
|
||||
server.Accounts.AddAccount(agent);
|
||||
server.Accounts.AddAccount(agentInfo);
|
||||
|
||||
Logger.Log("Created new account for " + fullName, Helpers.LogLevel.Info);
|
||||
}
|
||||
|
||||
if (password == agent.PasswordHash)
|
||||
return agent.ID;
|
||||
if (password == agentInfo.PasswordHash)
|
||||
return agentInfo.ID;
|
||||
else
|
||||
return UUID.Zero;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user