* Allows standalone region users to skip the "You must wait 5 minutes to log again" message and

allow the region to kick the old user and log the new one without reporting any failure.
Default is still to show message and fail login
0.6.6-post-fixes
Arthur Valadares 2009-05-29 22:38:18 +00:00
parent 8545621d9b
commit d0084f08f2
4 changed files with 32 additions and 5 deletions

View File

@ -54,6 +54,7 @@ namespace OpenSim.Client.Linden
protected bool m_enabled = false; // Module is only enabled if running in standalone mode
protected bool authenticate;
protected bool m_warn_already_logged;
protected string welcomeMessage;
public bool RegionLoginsEnabled
@ -78,9 +79,11 @@ namespace OpenSim.Client.Linden
public void Initialise(IConfigSource source)
{
IConfig startupConfig = source.Configs["Startup"];
IConfig stdaloneConfig = source.Configs["StandAlone"];
if (startupConfig != null)
{
m_enabled = !startupConfig.GetBoolean("gridmode", false);
m_warn_already_logged = stdaloneConfig.GetBoolean("warn_user_already_logged_in", true);
}
if (m_enabled)
@ -112,6 +115,7 @@ namespace OpenSim.Client.Linden
//TODO: fix the casting of the user service, maybe by registering the userManagerBase with scenes, or refactoring so we just need a IUserService reference
m_loginService = new LLStandaloneLoginService((UserManagerBase)m_firstScene.CommsManager.UserAdminService, welcomeMessage, m_firstScene.CommsManager.InterServiceInventoryService, m_firstScene.CommsManager.NetworkServersInfo, authenticate, rootFolder, this);
m_loginService.WarnAlreadyLogged = m_warn_already_logged;
httpServer.AddXmlRPCHandler("login_to_simulator", m_loginService.XmlRpcLoginMethod);

View File

@ -1,4 +1,4 @@
/*
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
@ -52,6 +52,14 @@ namespace OpenSim.Client.Linden
protected NetworkServersInfo m_serversInfo;
protected bool m_authUsers = false;
// If true, warns the user that he is already logged, forcing another login.
// If false, skips message and logs in directly, kicking out current user.
public bool WarnAlreadyLogged
{
get { return m_warn_already_logged; }
set { m_warn_already_logged = value; }
}
/// <summary>
/// Used to make requests to the local regions.
/// </summary>

View File

@ -61,6 +61,8 @@ namespace OpenSim.Framework.Communications.Services
protected uint m_defaultHomeX;
protected uint m_defaultHomeY;
protected bool m_warn_already_logged = true;
/// <summary>
/// Used by the login service to make requests to the inventory service.
/// </summary>
@ -181,12 +183,21 @@ namespace OpenSim.Framework.Communications.Services
// Reject the login
if (m_warn_already_logged)
{
m_log.InfoFormat(
"[LOGIN END]: XMLRPC Notifying user {0} {1} that they are already logged in",
firstname, lastname);
return logResponse.CreateAlreadyLoggedInResponse();
}
else
{
m_log.InfoFormat(
"[LOGIN]: User {0} {1} is already logged in, not notifying user, kicking old presence and starting new login.",
firstname, lastname);
}
}
// Otherwise...
// Create a new agent session

View File

@ -256,6 +256,10 @@
accounts_authenticate = true
welcome_message = "Welcome to OpenSimulator"
; Shows or skips the "please wait 5 minutes" message when you crash or are already logged in.
; If false, it will silently kick the user from the scene and login.
warn_user_already_logged_in = true
; Inventory database provider
inventory_plugin = "OpenSim.Data.SQLite.dll"
; inventory_plugin = "OpenSim.Data.MySQL.dll"