SandBox mode login now shares a base class with the grid mode user server.

To allow people to login without creating accounts first in sandbox mode anytime a login request is received without a matching account already being in the database, a new account will be made. (also in sandbox mode, passwords aren't currently used).
This commit is contained in:
MW
2007-06-22 18:28:49 +00:00
parent 2028cc5896
commit a9dde515ba
25 changed files with 1134 additions and 678 deletions

View File

@@ -53,7 +53,7 @@ namespace SimpleApp
ClientView.TerrainManager = new TerrainManager(new SecondLife());
CommunicationsManager communicationsManager = new CommunicationsLocal();
CommunicationsManager communicationsManager = new CommunicationsLocal(1000, 1000);
RegionInfo regionInfo = new RegionInfo( );

View File

@@ -41,13 +41,20 @@ namespace OpenSim.LocalCommunications
public class CommunicationsLocal : CommunicationsManager
{
public LocalBackEndServices SandBoxServices = new LocalBackEndServices();
protected LocalUserServices UserServices = new LocalUserServices();
public LocalUserServices UserServices;
public CommunicationsLocal()
public CommunicationsLocal(uint defaultHomeX , uint defaultHomeY)
{
UserServices = new LocalUserServices(this , defaultHomeX, defaultHomeY);
UserServices.AddPlugin("OpenGrid.Framework.Data.DB4o.dll");
UserServer = UserServices;
GridServer = SandBoxServices;
InterRegion = SandBoxServices;
}
internal void InformRegionOfLogin(ulong regionHandle, Login login)
{
this.SandBoxServices.AddNewSession(regionHandle, login);
}
}
}

View File

@@ -4,9 +4,11 @@ using System.Collections.Generic;
using System.Text;
using OpenGrid.Framework.Communications;
using OpenSim.Framework.User;
//using OpenSim.Framework.User;
using OpenGrid.Framework.UserManagement;
using OpenGrid.Framework.Data;
using OpenSim.Framework.Types;
using OpenSim.Framework.Utilities;
using libsecondlife;
@@ -14,30 +16,102 @@ namespace OpenSim.LocalCommunications
{
public class LocalUserServices : UserManagerBase, IUserServices
{
public LocalUserServices()
{
private CommunicationsLocal m_Parent;
private uint defaultHomeX ;
private uint defaultHomeY;
public LocalUserServices(CommunicationsLocal parent, uint defHomeX, uint defHomeY)
{
m_Parent = parent;
defaultHomeX = defHomeX;
defaultHomeY = defHomeY;
}
public UserProfileData GetUserProfile(string first_name, string last_name)
public UserProfileData GetUserProfile(string firstName, string lastName)
{
return GetUserProfile(first_name + " " + last_name);
return GetUserProfile(firstName + " " + lastName);
}
public UserProfileData GetUserProfile(string name)
{
return null;
return this.getUserProfile(name);
}
public UserProfileData GetUserProfile(LLUUID avatar_id)
public UserProfileData GetUserProfile(LLUUID avatarID)
{
return null;
return this.getUserProfile(avatarID);
}
public override void CustomiseResponse(ref Hashtable response, ref UserProfileData theUser)
/// <summary>
///
/// </summary>
/// <returns></returns>
public override string GetMessage()
{
return "Welcome to OpenSim";
}
public override UserProfileData GetTheUser(string firstname, string lastname)
{
UserProfileData profile = getUserProfile(firstname, lastname);
if (profile != null)
{
return profile;
}
//no current user account so make one
Console.WriteLine("No User account found so creating a new one ");
this.AddUserProfile(firstname, lastname, "test", defaultHomeX, defaultHomeY);
profile = getUserProfile(firstname, lastname);
return profile;
}
public override bool AuthenticateUser(ref UserProfileData profile, string password)
{
//for now we will accept any password in sandbox mode
Console.WriteLine("authorising user");
return true;
}
public override void CustomiseResponse(ref LoginResponse response, ref UserProfileData theUser)
{
ulong currentRegion = theUser.currentAgent.currentHandle;
RegionInfo reg = m_Parent.GridServer.RequestNeighbourInfo(currentRegion);
if (reg != null)
{
response.Home = "{'region_handle':[r" + (reg.RegionLocX * 256).ToString() + ",r" + (reg.RegionLocY * 256).ToString() + "], " +
"'position':[r" + theUser.homeLocation.X.ToString() + ",r" + theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "], " +
"'look_at':[r" + theUser.homeLocation.X.ToString() + ",r" + theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "]}";
response.SimAddress = reg.IPListenAddr;
response.SimPort = (Int32)reg.IPListenPort;
response.RegionX = reg.RegionLocX ;
response.RegionY = reg.RegionLocY ;
theUser.currentAgent.currentRegion = reg.SimUUID;
theUser.currentAgent.currentHandle = reg.RegionHandle;
Login _login = new Login();
//copy data to login object
_login.First = response.Firstname;
_login.Last = response.Lastname;
_login.Agent = response.AgentID;
_login.Session = response.SessionID;
_login.SecureSession = response.SecureSessionID;
_login.CircuitCode = (uint)response.CircuitCode;
m_Parent.InformRegionOfLogin(currentRegion, _login);
}
else
{
Console.WriteLine("not found region " + currentRegion);
}
}
}
}

View File

@@ -425,7 +425,7 @@ namespace OpenSim.Region.Scenes
Console.WriteLine("No default terrain, procedurally generating...");
this.Terrain.hills();
// this.localStorage.SaveMap(this.Terrain.getHeights1D());
this.localStorage.SaveMap(this.Terrain.getHeights1D());
}
else
{
@@ -439,7 +439,7 @@ namespace OpenSim.Region.Scenes
Console.WriteLine("Unable to load default terrain, procedurally generating instead...");
Terrain.hills();
}
// this.localStorage.SaveMap(this.Terrain.getHeights1D());
this.localStorage.SaveMap(this.Terrain.getHeights1D());
}
}
else

View File

@@ -49,7 +49,7 @@ namespace OpenSim.Region.Scenes
{
}
public void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam)
public void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam)
{
}
@@ -69,11 +69,11 @@ namespace OpenSim.Region.Scenes
}
public void processMovement(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation)
public void processMovement(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation)
{
}
public void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam)
public void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam)
{
}

View File

@@ -189,6 +189,14 @@ namespace OpenSim
OutPacket(mov);
}
/// <summary>
///
/// </summary>
/// <param name="message"></param>
/// <param name="type"></param>
/// <param name="fromPos"></param>
/// <param name="fromName"></param>
/// <param name="fromAgentID"></param>
public void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
{
SendChatMessage(Helpers.StringToField(message), type, fromPos, fromName, fromAgentID);

View File

@@ -1,120 +0,0 @@
/*
* Copyright (c) Contributors, http://www.openmetaverse.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSim Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
using System;
using System.Collections.Generic;
using System.Text;
using OpenSim.Framework.Interfaces;
namespace OpenSim
{
public class NetworkServersInfo
{
public string AssetURL = "http://127.0.0.1:8003/";
public string AssetSendKey = "";
public string GridURL = "";
public string GridSendKey = "";
public string GridRecvKey = "";
public string UserURL = "";
public string UserSendKey = "";
public string UserRecvKey = "";
public bool isSandbox;
public void InitConfig(bool sandboxMode, IGenericConfig configData)
{
this.isSandbox = sandboxMode;
try
{
if (!isSandbox)
{
string attri = "";
//Grid Server URL
attri = "";
attri = configData.GetAttribute("GridServerURL");
if (attri == "")
{
this.GridURL = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Grid server URL", "http://127.0.0.1:8001/");
configData.SetAttribute("GridServerURL", this.GridURL);
}
else
{
this.GridURL = attri;
}
//Grid Send Key
attri = "";
attri = configData.GetAttribute("GridSendKey");
if (attri == "")
{
this.GridSendKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to send to grid server", "null");
configData.SetAttribute("GridSendKey", this.GridSendKey);
}
else
{
this.GridSendKey = attri;
}
//Grid Receive Key
attri = "";
attri = configData.GetAttribute("GridRecvKey");
if (attri == "")
{
this.GridRecvKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to expect from grid server", "null");
configData.SetAttribute("GridRecvKey", this.GridRecvKey);
}
else
{
this.GridRecvKey = attri;
}
attri = "";
attri = configData.GetAttribute("AssetServerURL");
if (attri == "")
{
this.AssetURL = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Asset server URL", "http://127.0.0.1:8003/");
configData.SetAttribute("AssetServerURL", this.GridURL);
}
else
{
this.AssetURL = attri;
}
}
configData.Commit();
}
catch (Exception e)
{
OpenSim.Framework.Console.MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString());
}
}
}
}

View File

@@ -157,9 +157,6 @@
<Compile Include="ClientViewBase.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="NetworkServersInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="PacketServer.cs">
<SubType>Code</SubType>
</Compile>

View File

@@ -18,7 +18,6 @@
<include name="ClientView.PacketHandlers.cs" />
<include name="ClientView.ProcessPackets.cs" />
<include name="ClientViewBase.cs" />
<include name="NetworkServersInfo.cs" />
<include name="PacketServer.cs" />
<include name="RegionApplicationBase.cs" />
<include name="UDPServer.cs" />

View File

@@ -86,6 +86,12 @@
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\Common\OpenGrid.Framework.UserManager\OpenGrid.Framework.UserManagement.csproj">
<Name>OpenGrid.Framework.UserManagement</Name>
<Project>{DA9A7391-0000-0000-0000-000000000000}</Project>
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\OpenSim.Caches\OpenSim.Caches.csproj">
<Name>OpenSim.Caches</Name>
<Project>{1938EB12-0000-0000-0000-000000000000}</Project>

View File

@@ -23,6 +23,7 @@
<include name="../../bin/Db4objects.Db4o.dll" />
<include name="../../bin/libsecondlife.dll" />
<include name="../../bin/OpenGrid.Framework.Communications.dll" />
<include name="../../bin/OpenGrid.Framework.UserManagement.dll" />
<include name="../../bin/OpenSim.Caches.dll" />
<include name="../../bin/OpenSim.Framework.dll" />
<include name="../../bin/OpenSim.Framework.Console.dll" />

View File

@@ -106,13 +106,13 @@ namespace OpenSim
this.SetupLocalGridServers();
this.checkServer = new CheckSumServer(12036);
this.checkServer.ServerListener();
sandboxCommunications = new CommunicationsLocal();
sandboxCommunications = new CommunicationsLocal(this.serversData.DefaultHomeLocX, this.serversData.DefaultHomeLocY);
this.commsManager = sandboxCommunications;
}
else
{
this.SetupRemoteGridServers();
this.commsManager = new CommunicationsLocal(); //shouldn't be using the local communications manager
this.commsManager = new CommunicationsLocal(this.serversData.DefaultHomeLocX, this.serversData.DefaultHomeLocY); //shouldn't be using the local communications manager
}
startuptime = DateTime.Now;
@@ -132,11 +132,15 @@ namespace OpenSim
if (m_sandbox)
{
httpServer.AddXmlRPCHandler("login_to_simulator", sandboxCommunications.UserServices.XmlRpcLoginMethod);
/*
loginServer = new LoginServer(regionData[0].IPListenAddr, regionData[0].IPListenPort, regionData[0].RegionLocX, regionData[0].RegionLocY, false);
loginServer.Startup();
loginServer.SetSessionHandler(sandboxCommunications.SandBoxServices.AddNewSession);
//sandbox mode with loginserver not using accounts
httpServer.AddXmlRPCHandler("login_to_simulator", loginServer.XmlRpcLoginMethod);
*/
}
//Start http server