mirror of
https://github.com/opensim/opensim.git
synced 2026-08-04 16:22:50 +08:00
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:
@@ -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( );
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user