Mantis#1849. Thank you kindly, Kinoc for a patch that:
- LLSDLoginMethod should error out in similar way to XMLRPC login for already logged in condition - Have LLSDLoginMethod mirror the sequence of the XMLRPC for easier side by side compare - Log messages report which process XML or LLSD generated them for easier debugging0.6.0-stable
parent
0512895eea
commit
bfa1fd768b
|
@ -475,7 +475,7 @@ namespace OpenSim.Framework.Communications
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
m_log.Warn("[CLIENT]: LoginResponse: Error creating XML-RPC Response: " + e.Message);
|
m_log.Warn("[CLIENT]: LoginResponse: Error creating LLSD Response: " + e.Message);
|
||||||
|
|
||||||
return GenerateFailureResponseLLSD("Internal Error", "Error generating Login Response", "false");
|
return GenerateFailureResponseLLSD("Internal Error", "Error generating Login Response", "false");
|
||||||
}
|
}
|
||||||
|
@ -777,4 +777,4 @@ namespace OpenSim.Framework.Communications
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -130,7 +130,7 @@ namespace OpenSim.Framework.Communications
|
||||||
lastname = (string) requestData["last"];
|
lastname = (string) requestData["last"];
|
||||||
|
|
||||||
m_log.InfoFormat(
|
m_log.InfoFormat(
|
||||||
"[LOGIN BEGIN]: Received login request message from user {0} {1}",
|
"[LOGIN BEGIN]: XMLRPC Received login request message from user '{0}' '{1}'",
|
||||||
firstname, lastname);
|
firstname, lastname);
|
||||||
|
|
||||||
string clientVersion = "Unknown";
|
string clientVersion = "Unknown";
|
||||||
|
@ -146,12 +146,12 @@ namespace OpenSim.Framework.Communications
|
||||||
}
|
}
|
||||||
|
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[LOGIN]: Client is {0}, start location is {1}", clientVersion, startLocationRequest);
|
"[LOGIN]: XMLRPC Client is {0}, start location is {1}", clientVersion, startLocationRequest);
|
||||||
|
|
||||||
userProfile = GetTheUser(firstname, lastname);
|
userProfile = GetTheUser(firstname, lastname);
|
||||||
if (userProfile == null)
|
if (userProfile == null)
|
||||||
{
|
{
|
||||||
m_log.Info("[LOGIN END]: Could not find a profile for " + firstname + " " + lastname);
|
m_log.Info("[LOGIN END]: XMLRPC Could not find a profile for " + firstname + " " + lastname);
|
||||||
|
|
||||||
return logResponse.CreateLoginFailedResponse();
|
return logResponse.CreateLoginFailedResponse();
|
||||||
}
|
}
|
||||||
|
@ -171,7 +171,7 @@ namespace OpenSim.Framework.Communications
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
m_log.InfoFormat(
|
m_log.InfoFormat(
|
||||||
"[LOGIN END]: Bad web_login_key: {0} for user {1} {2}, exception {3}",
|
"[LOGIN END]: XMLRPC Bad web_login_key: {0} for user {1} {2}, exception {3}",
|
||||||
requestData["web_login_key"], firstname, lastname, e);
|
requestData["web_login_key"], firstname, lastname, e);
|
||||||
|
|
||||||
return logResponse.CreateFailedResponse();
|
return logResponse.CreateFailedResponse();
|
||||||
|
@ -183,14 +183,14 @@ namespace OpenSim.Framework.Communications
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Info(
|
m_log.Info(
|
||||||
"[LOGIN END]: login_to_simulator login message did not contain all the required data");
|
"[LOGIN END]: XMLRPC login_to_simulator login message did not contain all the required data");
|
||||||
|
|
||||||
return logResponse.CreateGridErrorResponse();
|
return logResponse.CreateGridErrorResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!GoodLogin)
|
if (!GoodLogin)
|
||||||
{
|
{
|
||||||
m_log.InfoFormat("[LOGIN END]: User {0} {1} failed authentication", firstname, lastname);
|
m_log.InfoFormat("[LOGIN END]: XMLRPC User {0} {1} failed authentication", firstname, lastname);
|
||||||
|
|
||||||
return logResponse.CreateLoginFailedResponse();
|
return logResponse.CreateLoginFailedResponse();
|
||||||
}
|
}
|
||||||
|
@ -208,13 +208,13 @@ namespace OpenSim.Framework.Communications
|
||||||
m_userManager.CommitAgent(ref userProfile);
|
m_userManager.CommitAgent(ref userProfile);
|
||||||
|
|
||||||
// try to tell the region that their user is dead.
|
// try to tell the region that their user is dead.
|
||||||
LogOffUser(userProfile, "You were logged off because you logged in from another location");
|
LogOffUser(userProfile, " XMLRPC You were logged off because you logged in from another location");
|
||||||
|
|
||||||
// Reject the login
|
// Reject the login
|
||||||
|
|
||||||
|
|
||||||
m_log.InfoFormat(
|
m_log.InfoFormat(
|
||||||
"[LOGIN END]: Notifying user {0} {1} that they are already logged in",
|
"[LOGIN END]: XMLRPC Notifying user {0} {1} that they are already logged in",
|
||||||
firstname, lastname);
|
firstname, lastname);
|
||||||
|
|
||||||
return logResponse.CreateAlreadyLoggedInResponse();
|
return logResponse.CreateAlreadyLoggedInResponse();
|
||||||
|
@ -235,7 +235,7 @@ namespace OpenSim.Framework.Communications
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
m_log.ErrorFormat(
|
m_log.ErrorFormat(
|
||||||
"[LOGIN END]: Error retrieving inventory skeleton of agent {0}, {1} - {2}",
|
"[LOGIN END]: XMLRPC Error retrieving inventory skeleton of agent {0}, {1} - {2}",
|
||||||
agentID, e.GetType(), e.Message);
|
agentID, e.GetType(), e.Message);
|
||||||
|
|
||||||
return logResponse.CreateLoginInventoryFailedResponse();
|
return logResponse.CreateLoginInventoryFailedResponse();
|
||||||
|
@ -288,7 +288,7 @@ namespace OpenSim.Framework.Communications
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
m_log.Info("[LOGIN END]: " + e.ToString());
|
m_log.Info("[LOGIN END]: XMLRPC " + e.ToString());
|
||||||
return logResponse.CreateDeadRegionResponse();
|
return logResponse.CreateDeadRegionResponse();
|
||||||
//return logResponse.ToXmlRpcResponse();
|
//return logResponse.ToXmlRpcResponse();
|
||||||
}
|
}
|
||||||
|
@ -299,18 +299,18 @@ namespace OpenSim.Framework.Communications
|
||||||
StatsManager.UserStats.AddSuccessfulLogin();
|
StatsManager.UserStats.AddSuccessfulLogin();
|
||||||
|
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[LOGIN END]: Authentication of user {0} {1} successful. Sending response to client.",
|
"[LOGIN END]: XMLRPC Authentication of user {0} {1} successful. Sending response to client.",
|
||||||
firstname, lastname);
|
firstname, lastname);
|
||||||
|
|
||||||
return logResponse.ToXmlRpcResponse();
|
return logResponse.ToXmlRpcResponse();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
m_log.Info("[LOGIN END]: Login failed, " + e.ToString());
|
m_log.Info("[LOGIN END]: XMLRPC Login failed, " + e.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_log.Info("[LOGIN END]: Login failed. Sending back blank XMLRPC response");
|
m_log.Info("[LOGIN END]: XMLRPC Login failed. Sending back blank XMLRPC response");
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
@ -345,14 +345,15 @@ namespace OpenSim.Framework.Communications
|
||||||
|
|
||||||
if (map.ContainsKey("start"))
|
if (map.ContainsKey("start"))
|
||||||
{
|
{
|
||||||
m_log.Info("[LOGIN]: StartLocation Requested: " + map["start"].AsString());
|
m_log.Info("[LOGIN]: LLSD StartLocation Requested: " + map["start"].AsString());
|
||||||
startLocationRequest = map["start"].AsString();
|
startLocationRequest = map["start"].AsString();
|
||||||
}
|
}
|
||||||
|
m_log.Info("[LOGIN]: LLSD Login Requested for: '" + firstname+"' '"+lastname+"' / "+passwd);
|
||||||
|
|
||||||
userProfile = GetTheUser(firstname, lastname);
|
userProfile = GetTheUser(firstname, lastname);
|
||||||
if (userProfile == null)
|
if (userProfile == null)
|
||||||
{
|
{
|
||||||
m_log.Info("[LOGIN]: Could not find a profile for " + firstname + " " + lastname);
|
m_log.Info("[LOGIN]: LLSD Could not find a profile for " + firstname + " " + lastname);
|
||||||
|
|
||||||
return logResponse.CreateLoginFailedResponseLLSD();
|
return logResponse.CreateLoginFailedResponseLLSD();
|
||||||
}
|
}
|
||||||
|
@ -370,10 +371,19 @@ namespace OpenSim.Framework.Communications
|
||||||
// If we already have a session...
|
// If we already have a session...
|
||||||
if (userProfile.CurrentAgent != null && userProfile.CurrentAgent.AgentOnline)
|
if (userProfile.CurrentAgent != null && userProfile.CurrentAgent.AgentOnline)
|
||||||
{
|
{
|
||||||
userProfile.CurrentAgent = null;
|
userProfile.CurrentAgent.AgentOnline = false;
|
||||||
|
|
||||||
m_userManager.CommitAgent(ref userProfile);
|
m_userManager.CommitAgent(ref userProfile);
|
||||||
|
// try to tell the region that their user is dead.
|
||||||
|
LogOffUser(userProfile, " LLSD You were logged off because you logged in from another location");
|
||||||
|
|
||||||
// Reject the login
|
// Reject the login
|
||||||
|
|
||||||
|
m_log.InfoFormat(
|
||||||
|
"[LOGIN END]: LLSD Notifying user {0} {1} that they are already logged in",
|
||||||
|
userProfile.FirstName, userProfile.SurName);
|
||||||
|
|
||||||
|
userProfile.CurrentAgent = null;
|
||||||
return logResponse.CreateAlreadyLoggedInResponseLLSD();
|
return logResponse.CreateAlreadyLoggedInResponseLLSD();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -385,7 +395,23 @@ namespace OpenSim.Framework.Communications
|
||||||
{
|
{
|
||||||
LLUUID agentID = userProfile.ID;
|
LLUUID agentID = userProfile.ID;
|
||||||
|
|
||||||
InventoryData inventData = GetInventorySkeleton(agentID);
|
//InventoryData inventData = GetInventorySkeleton(agentID);
|
||||||
|
InventoryData inventData = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
inventData = GetInventorySkeleton(agentID);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat(
|
||||||
|
"[LOGIN END]: LLSD Error retrieving inventory skeleton of agent {0}, {1} - {2}",
|
||||||
|
agentID, e.GetType(), e.Message);
|
||||||
|
|
||||||
|
return logResponse.CreateLoginFailedResponseLLSD();// .CreateLoginInventoryFailedResponseLLSD ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ArrayList AgentInventoryArray = inventData.InventoryArray;
|
ArrayList AgentInventoryArray = inventData.InventoryArray;
|
||||||
|
|
||||||
Hashtable InventoryRootHash = new Hashtable();
|
Hashtable InventoryRootHash = new Hashtable();
|
||||||
|
@ -394,6 +420,20 @@ namespace OpenSim.Framework.Communications
|
||||||
InventoryRoot.Add(InventoryRootHash);
|
InventoryRoot.Add(InventoryRootHash);
|
||||||
userProfile.RootInventoryFolderID = inventData.RootFolderID;
|
userProfile.RootInventoryFolderID = inventData.RootFolderID;
|
||||||
|
|
||||||
|
|
||||||
|
// Inventory Library Section
|
||||||
|
Hashtable InventoryLibRootHash = new Hashtable();
|
||||||
|
InventoryLibRootHash["folder_id"] = "00000112-000f-0000-0000-000100bba000";
|
||||||
|
ArrayList InventoryLibRoot = new ArrayList();
|
||||||
|
InventoryLibRoot.Add(InventoryLibRootHash);
|
||||||
|
logResponse.InventoryLibRoot = InventoryLibRoot;
|
||||||
|
|
||||||
|
logResponse.InventoryLibraryOwner = GetLibraryOwner();
|
||||||
|
|
||||||
|
logResponse.InventoryRoot = InventoryRoot;
|
||||||
|
logResponse.InventorySkeleton = AgentInventoryArray;
|
||||||
|
logResponse.InventoryLibrary = GetInventoryLibrary();
|
||||||
|
|
||||||
// Circuit Code
|
// Circuit Code
|
||||||
uint circode = (uint)(Util.RandomClass.Next());
|
uint circode = (uint)(Util.RandomClass.Next());
|
||||||
|
|
||||||
|
@ -402,17 +442,7 @@ namespace OpenSim.Framework.Communications
|
||||||
logResponse.AgentID = agentID.ToString();
|
logResponse.AgentID = agentID.ToString();
|
||||||
logResponse.SessionID = userProfile.CurrentAgent.SessionID.ToString();
|
logResponse.SessionID = userProfile.CurrentAgent.SessionID.ToString();
|
||||||
logResponse.SecureSessionID = userProfile.CurrentAgent.SecureSessionID.ToString();
|
logResponse.SecureSessionID = userProfile.CurrentAgent.SecureSessionID.ToString();
|
||||||
logResponse.InventoryRoot = InventoryRoot;
|
|
||||||
logResponse.InventorySkeleton = AgentInventoryArray;
|
|
||||||
logResponse.InventoryLibrary = GetInventoryLibrary();
|
|
||||||
|
|
||||||
Hashtable InventoryLibRootHash = new Hashtable();
|
|
||||||
InventoryLibRootHash["folder_id"] = "00000112-000f-0000-0000-000100bba000";
|
|
||||||
ArrayList InventoryLibRoot = new ArrayList();
|
|
||||||
InventoryLibRoot.Add(InventoryLibRootHash);
|
|
||||||
logResponse.InventoryLibRoot = InventoryLibRoot;
|
|
||||||
|
|
||||||
logResponse.InventoryLibraryOwner = GetLibraryOwner();
|
|
||||||
logResponse.CircuitCode = (Int32)circode;
|
logResponse.CircuitCode = (Int32)circode;
|
||||||
//logResponse.RegionX = 0; //overwritten
|
//logResponse.RegionX = 0; //overwritten
|
||||||
//logResponse.RegionY = 0; //overwritten
|
//logResponse.RegionY = 0; //overwritten
|
||||||
|
@ -422,6 +452,7 @@ namespace OpenSim.Framework.Communications
|
||||||
//logResponse.SimPort = 0; //overwritten
|
//logResponse.SimPort = 0; //overwritten
|
||||||
logResponse.Message = GetMessage();
|
logResponse.Message = GetMessage();
|
||||||
logResponse.BuddList = ConvertFriendListItem(m_userManager.GetUserFriendList(agentID));
|
logResponse.BuddList = ConvertFriendListItem(m_userManager.GetUserFriendList(agentID));
|
||||||
|
logResponse.StartLocation = startLocationRequest;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -429,7 +460,7 @@ namespace OpenSim.Framework.Communications
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
m_log.Info("[LOGIN]: " + ex.ToString());
|
m_log.Info("[LOGIN]: LLSD " + ex.ToString());
|
||||||
return logResponse.CreateDeadRegionResponseLLSD();
|
return logResponse.CreateDeadRegionResponseLLSD();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -439,11 +470,15 @@ namespace OpenSim.Framework.Communications
|
||||||
if (StatsManager.UserStats != null)
|
if (StatsManager.UserStats != null)
|
||||||
StatsManager.UserStats.AddSuccessfulLogin();
|
StatsManager.UserStats.AddSuccessfulLogin();
|
||||||
|
|
||||||
|
m_log.DebugFormat(
|
||||||
|
"[LOGIN END]: LLSD Authentication of user {0} {1} successful. Sending response to client.",
|
||||||
|
userProfile.FirstName, userProfile.SurName);
|
||||||
|
|
||||||
return logResponse.ToLLSDResponse();
|
return logResponse.ToLLSDResponse();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
m_log.Info("[LOGIN]: " + ex.ToString());
|
m_log.Info("[LOGIN]: LLSD " + ex.ToString());
|
||||||
return logResponse.CreateFailedResponseLLSD();
|
return logResponse.CreateFailedResponseLLSD();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue