Made account Authentication optional in "sandbox/standalone" mode. Just change "standalone_authenticate = false" to be true in OpenSim.ini. Then as per grid mode, you can use the "create user" command to create new accounts.

afrisby
MW 2007-08-11 11:59:51 +00:00
parent f147d8e0f0
commit 114807b9d1
6 changed files with 73 additions and 10 deletions

View File

@ -53,6 +53,7 @@ using OpenSim.Framework.Utilities;
namespace OpenSim
{
public delegate void ConsoleCommand(string comParams);
public class OpenSimMain : RegionApplicationBase, conscmd_callback
{
@ -68,7 +69,10 @@ namespace OpenSim
protected List<Scene> m_localScenes = new List<Scene>();
private bool m_silent;
private string m_logFilename = ("region-console" + ".log");
private string m_logFilename = ("region-console.log");
private bool standaloneAuthenticate = false;
public ConsoleCommand CreateAccount = null;
public OpenSimMain(IConfigSource configSource)
: base()
@ -98,6 +102,8 @@ namespace OpenSim
m_silent = configSource.Configs["Startup"].GetBoolean("noverbose", false);
m_storageDLL = configSource.Configs["Startup"].GetString("storage_plugin", "OpenSim.DataStore.NullStorage.dll");
standaloneAuthenticate = configSource.Configs["Startup"].GetBoolean("standalone_authenticate", false);
}
/// <summary>
@ -122,7 +128,12 @@ namespace OpenSim
if (m_sandbox)
{
m_commsManager = new CommunicationsLocal(m_networkServersInfo, m_httpServer, m_assetCache);
CommunicationsLocal localComms = new CommunicationsLocal(m_networkServersInfo, m_httpServer, m_assetCache, standaloneAuthenticate);
m_commsManager = localComms;
if(standaloneAuthenticate)
{
this.CreateAccount = localComms.do_create;
}
}
else
{
@ -320,6 +331,13 @@ namespace OpenSim
Shutdown();
break;
case "create":
if (CreateAccount != null)
{
CreateAccount(cmdparams[0]);
}
break;
default:
m_log.Error("Unknown command");
break;

View File

@ -25,10 +25,13 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
using System;
using OpenSim.Framework.Communications;
using OpenSim.Framework.Types;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Communications.Caches;
using OpenSim.Framework.Console;
using OpenSim.Framework.Utilities;
namespace OpenSim.Region.Communications.Local
{
@ -37,10 +40,10 @@ namespace OpenSim.Region.Communications.Local
public LocalBackEndServices SandBoxServices = new LocalBackEndServices();
public LocalUserServices UserServices;
public CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache )
public CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache, bool accountsAuthenticate )
: base(serversInfo, httpServer, assetCache)
{
UserServices = new LocalUserServices(this, serversInfo);
UserServices = new LocalUserServices(this, serversInfo, accountsAuthenticate);
UserServices.AddPlugin("OpenSim.Framework.Data.DB4o.dll");
UserServer = UserServices;
GridServer = SandBoxServices;
@ -52,5 +55,30 @@ namespace OpenSim.Region.Communications.Local
{
this.SandBoxServices.AddNewSession(regionHandle, login);
}
public void do_create(string what)
{
switch (what)
{
case "user":
string tempfirstname;
string templastname;
string tempMD5Passwd;
uint regX = 1000;
uint regY = 1000;
tempfirstname = MainLog.Instance.CmdPrompt("First name");
templastname = MainLog.Instance.CmdPrompt("Last name");
tempMD5Passwd = MainLog.Instance.PasswdPrompt("Password");
regX = Convert.ToUInt32(MainLog.Instance.CmdPrompt("Start Region X"));
regY = Convert.ToUInt32(MainLog.Instance.CmdPrompt("Start Region Y"));
tempMD5Passwd = Util.Md5Hash(Util.Md5Hash(tempMD5Passwd) + ":" + "");
this.UserServices.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY);
break;
}
}
}
}

View File

@ -15,13 +15,15 @@ namespace OpenSim.Region.Communications.Local
private NetworkServersInfo serversInfo;
private uint defaultHomeX ;
private uint defaultHomeY;
private bool authUsers = false;
public LocalUserServices(CommunicationsLocal parent, NetworkServersInfo serversInfo)
public LocalUserServices(CommunicationsLocal parent, NetworkServersInfo serversInfo, bool authenticate)
{
m_Parent = parent;
this.serversInfo = serversInfo;
defaultHomeX = this.serversInfo.DefaultHomeLocX;
defaultHomeY = this.serversInfo.DefaultHomeLocY;
this.authUsers = authenticate;
}
public UserProfileData GetUserProfile(string firstName, string lastName)
@ -68,9 +70,22 @@ namespace OpenSim.Region.Communications.Local
public override bool AuthenticateUser(UserProfileData profile, string password)
{
//for now we will accept any password in sandbox mode
Console.WriteLine("authorising user");
return true;
if (!authUsers)
{
//for now we will accept any password in sandbox mode
Console.WriteLine("authorising user");
return true;
}
else
{
Console.WriteLine( "Authenticating " + profile.username + " " + profile.surname);
password = password.Remove(0, 3); //remove $1$
string s = Util.Md5Hash(password + ":" + profile.passwordSalt);
return profile.passwordHash.Equals(s.ToString(), StringComparison.InvariantCultureIgnoreCase);
}
}
public override void CustomiseResponse(LoginResponse response, UserProfileData theUser)

View File

@ -47,7 +47,7 @@ namespace SimpleApp
{
base.StartUp();
m_commsManager = new CommunicationsLocal(m_networkServersInfo, m_httpServer, m_assetCache);
m_commsManager = new CommunicationsLocal(m_networkServersInfo, m_httpServer, m_assetCache, false);
m_log.Notice(m_log.LineInfo);

View File

@ -1,4 +1,5 @@
[Startup]
gridmode = false
physics = basicphysics
storage_plugin = "OpenSim.DataStore.NullStorage.dll"
storage_plugin = "OpenSim.DataStore.NullStorage.dll"
standalone_authenticate = false

View File

@ -511,6 +511,7 @@
<Reference name="OpenSim.Framework.UserManagement" />
<Reference name="OpenSim.Framework.Data" />
<Reference name="OpenSim.Framework.Servers"/>
<Reference name="OpenSim.Framework.Console"/>
<Reference name="libsecondlife.dll"/>
<Reference name="OpenSim.Framework"/>
<Reference name="XMLRPC.dll"/>