Files
libremetaverse/Programs/Simian/Extensions/AuthFreeForAll.cs
John Hurliman 70fe1f8f2a [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
2009-03-12 23:02:42 +00:00

109 lines
5.5 KiB
C#

using System;
using ExtensionLoader;
using OpenMetaverse;
namespace Simian
{
public class AuthFreeForAll : IExtension<Simian>, IAuthenticationProvider
{
Simian server;
public AuthFreeForAll()
{
}
public bool Start(Simian server)
{
this.server = server;
return true;
}
public void Stop()
{
}
public UUID Authenticate(string firstName, string lastName, string password)
{
AgentInfo agentInfo;
ISceneProvider scene = server.Grid.GetDefaultLocalScene();
string fullName = String.Format("{0} {1}", firstName, lastName);
if (!server.Accounts.TryGetAccount(fullName, out agentInfo))
{
// Account doesn't exist, create it now
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(agentInfo.ID, rootFolder, "Inventory", agentInfo.ID);
UUID libraryRootFolder = UUID.Random();
server.Inventory.CreateRootFolder(agentInfo.ID, libraryRootFolder, "Library", agentInfo.ID);
agentInfo.InventoryRoot = rootFolder;
agentInfo.InventoryLibraryOwner = agentInfo.ID;
agentInfo.InventoryLibraryRoot = libraryRootFolder;
// Create some inventory items for appearance
UUID clothingFolder = UUID.Random();
server.Inventory.CreateFolder(agentInfo.ID, clothingFolder, "Clothing", AssetType.Clothing,
agentInfo.InventoryRoot, agentInfo.ID);
UUID defaultOutfitFolder = UUID.Random();
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(agentInfo.ID, "Default Hair", "Default Hair",
InventoryType.Wearable, AssetType.Bodypart, hairAsset, defaultOutfitFolder,
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(agentInfo.ID, "Default Pants", "Default Pants",
InventoryType.Wearable, AssetType.Clothing, pantsAsset, defaultOutfitFolder,
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(agentInfo.ID, "Default Shape", "Default Shape",
InventoryType.Wearable, AssetType.Clothing, shapeAsset, defaultOutfitFolder,
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(agentInfo.ID, "Default Shirt", "Default Shirt",
InventoryType.Wearable, AssetType.Clothing, shirtAsset, defaultOutfitFolder,
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(agentInfo.ID, "Default Skin", "Default Skin",
InventoryType.Wearable, AssetType.Clothing, skinAsset, defaultOutfitFolder,
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(agentInfo.ID, "Default Eyes", "Default Eyes",
InventoryType.Wearable, AssetType.Bodypart, eyesAsset, defaultOutfitFolder,
PermissionMask.All, PermissionMask.All, agentInfo.ID, agentInfo.ID, UUID.Random(), 0).ID;
agentInfo.HairItem = hairItem;
agentInfo.PantsItem = pantsItem;
agentInfo.ShapeItem = shapeItem;
agentInfo.ShirtItem = shirtItem;
agentInfo.SkinItem = skinItem;
agentInfo.EyesItem = eyesItem;
server.Accounts.AddAccount(agentInfo);
Logger.Log("Created new account for " + fullName, Helpers.LogLevel.Info);
}
if (password == agentInfo.PasswordHash)
return agentInfo.ID;
else
return UUID.Zero;
}
}
}