This commit is contained in:
UbitUmarov
2020-08-28 01:13:17 +01:00
parent 44b7e0c83f
commit 90bd42ddc0
3 changed files with 83 additions and 86 deletions

View File

@@ -130,23 +130,32 @@ namespace OpenSim.Capabilities.Handlers
httpResponse.RawBuffer = EmptyResponse;
return;
}
StringBuilder sb = osStringBuilderCache.Acquire();
sb.Append("[WEB FETCH INV DESC HANDLER]: Unable to fetch folders owned by ");
sb.Append("Unknown");
sb.Append(" :");
int limit = 9;
int limit = 5;
int count = 0;
foreach (UUID bad in bad_folders)
{
if (BadRequests.ContainsKey(bad))
continue;
sb.Append(" ");
sb.Append(bad.ToString());
++count;
if (--limit < 0)
break;
}
if (limit < 0)
sb.Append(" ...");
m_log.Warn(osStringBuilderCache.GetStringAndRelease(sb));
if(count > 0)
{
if (limit < 0)
sb.Append(" ...");
m_log.Warn(osStringBuilderCache.GetStringAndRelease(sb));
}
else
osStringBuilderCache.Release(sb);
sb = osStringBuilderCache.Acquire();
sb.Append("<llsd><map><key>folders</key><array /></map><map><key>bad_folders</key><array>");

View File

@@ -84,7 +84,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
words[0] = words[0].Trim(); // it has at least 1
words[1] = words[1].Trim().ToLower();
string match1 = "@" + words[1];
if (words[0] == String.Empty) // query was @foo.com?
if (String.IsNullOrWhiteSpace(words[0])) // query was @foo.com?
{
foreach (UserData d in m_userCacheByID.Values)
{
@@ -132,16 +132,19 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
return;
}
UserAgentServiceConnector uasConn = new UserAgentServiceConnector(uriStr);
UUID userID = UUID.Zero;
try
uriStr = uriStr.ToLower();
if(!WebUtil.GlobalExpiringBadURLs.ContainsKey(uriStr))
{
userID = uasConn.GetUUID(names[0], names[1]);
}
catch (Exception e)
{
m_log.Debug("[USER MANAGEMENT MODULE]: GetUUID call failed ", e);
UserAgentServiceConnector uasConn = new UserAgentServiceConnector(uriStr);
try
{
userID = uasConn.GetUUID(names[0], names[1]);
}
catch (Exception e)
{
m_log.Debug("[USER MANAGEMENT MODULE]: GetUUID call failed ", e);
}
}
if (!userID.Equals(UUID.Zero))
@@ -151,9 +154,6 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
ud.FirstName = words[0];
ud.LastName = "@" + words[1];
users.Add(ud);
// WARNING! that uriStr is not quite right... it may be missing the / at the end,
// which will cause trouble (duplicate entries on some tables). We should
// get the UUI instead from the UAS. TO BE FIXED.
AddUser(userID, names[0], names[1], uriStr);
m_log.DebugFormat("[USER MANAGEMENT MODULE]: User {0}@{1} found", words[0], words[1]);
}
@@ -162,17 +162,6 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
}
}
}
//else
//{
// foreach (UserData d in m_UserCache.Values)
// {
// if (d.LastName.StartsWith("@") &&
// (d.FirstName.ToLower().StartsWith(query.ToLower()) ||
// d.LastName.ToLower().StartsWith(query.ToLower())))
// users.Add(d);
// }
//}
}
}
}

View File

@@ -33,27 +33,23 @@ using System.Threading;
using OpenSim.Framework;
using OpenSim.Framework.Console;
using OpenSim.Framework.Monitoring;
using OpenSim.Region.ClientStack.LindenUDP;
using OpenSim.Region.Framework;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces;
using OpenSim.Services.Connectors.Hypergrid;
using OpenMetaverse;
using OpenMetaverse.Packets;
using log4net;
using Nini.Config;
using Mono.Addins;
using DirFindFlags = OpenMetaverse.DirectoryManager.DirFindFlags;
namespace OpenSim.Region.CoreModules.Framework.UserManagement
{
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "UserManagementModule")]
public class UserManagementModule : ISharedRegionModule, IUserManagement, IPeople
{
private const int BADURLEXPIRE = 2 * 60;
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
protected bool m_Enabled;
@@ -449,10 +445,9 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
public virtual string GetUserHomeURL(UUID userID)
{
UserData user;
if (GetUser(userID, out user))
if (GetUser(userID, out UserData user) && user != null)
{
if (user.LastWebFail > 0 && Util.GetTimeStamp() - user.LastWebFail > 5 * 60)
if (user.LastWebFail > 0 && Util.GetTimeStamp() - user.LastWebFail > BADURLEXPIRE)
user.LastWebFail = -1;
return user.HomeURL;
}
@@ -461,13 +456,12 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
public virtual string GetUserHomeURL(UUID userID, out bool recentFail)
{
UserData user;
recentFail = false;
if (GetUser(userID, out user))
if (GetUser(userID, out UserData user))
{
if (user.LastWebFail > 0)
{
if (Util.GetTimeStamp() - user.LastWebFail > 5 * 60)
if (Util.GetTimeStamp() - user.LastWebFail > BADURLEXPIRE)
user.LastWebFail = -1;
else
recentFail = true;
@@ -488,7 +482,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
if(userdata.LastWebFail > 0)
{
if(Util.GetTimeStamp() - userdata.LastWebFail > 5 * 60) // 5 minutes
if(Util.GetTimeStamp() - userdata.LastWebFail > BADURLEXPIRE) // 5 minutes
return string.Empty;
userdata.LastWebFail = -1;
}
@@ -501,29 +495,32 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
return string.Empty;
}
if (!string.IsNullOrEmpty(userdata.HomeURL) && !WebUtil.GlobalExpiringBadURLs.ContainsKey(userdata.HomeURL))
if (!string.IsNullOrEmpty(userdata.HomeURL))
{
// m_log.DebugFormat("[USER MANAGEMENT MODULE]: Requested url type {0} for {1}", serverType, userID);
string homeuri = userdata.HomeURL.ToLower();
if (!WebUtil.GlobalExpiringBadURLs.ContainsKey(homeuri))
{
//m_log.DebugFormat("[USER MANAGEMENT MODULE]: Requested url type {0} for {1}", serverType, userID);
UserAgentServiceConnector uConn = new UserAgentServiceConnector(homeuri);
try
{
userdata.ServerURLs = uConn.GetServerURLs(userID);
}
catch(System.Net.WebException e)
{
m_log.DebugFormat("[USER MANAGEMENT MODULE]: GetServerURLs call failed {0}", e.Message);
WebUtil.GlobalExpiringBadURLs.Add(homeuri, BADURLEXPIRE * 1000);
userdata.ServerURLs = new Dictionary<string, object>();
}
catch (Exception e)
{
m_log.Debug("[USER MANAGEMENT MODULE]: GetServerURLs call failed ", e);
userdata.ServerURLs = new Dictionary<string, object>();
}
UserAgentServiceConnector uConn = new UserAgentServiceConnector(userdata.HomeURL);
try
{
userdata.ServerURLs = uConn.GetServerURLs(userID);
if (userdata.ServerURLs != null && userdata.ServerURLs.ContainsKey(serverType) && userdata.ServerURLs[serverType] != null)
return userdata.ServerURLs[serverType].ToString();
}
catch(System.Net.WebException e)
{
m_log.DebugFormat("[USER MANAGEMENT MODULE]: GetServerURLs call failed {0}", e.Message);
WebUtil.GlobalExpiringBadURLs.Add(userdata.HomeURL, 120000);
userdata.ServerURLs = new Dictionary<string, object>();
}
catch (Exception e)
{
m_log.Debug("[USER MANAGEMENT MODULE]: GetServerURLs call failed ", e);
userdata.ServerURLs = new Dictionary<string, object>();
}
if (userdata.ServerURLs != null && userdata.ServerURLs.ContainsKey(serverType) && userdata.ServerURLs[serverType] != null)
return userdata.ServerURLs[serverType].ToString();
}
return string.Empty;
}
@@ -537,8 +534,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
public virtual string GetUserServerURL(UUID userID, string serverType, out bool recentFail)
{
recentFail = false;
UserData userdata;
if (!GetUser(userID, out userdata))
if (!GetUser(userID, out UserData userdata))
return string.Empty;
if (userdata.IsLocal)
@@ -546,7 +542,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
if (userdata.LastWebFail > 0)
{
if (Util.GetTimeStamp() - userdata.LastWebFail > 5 * 60) // 5 minutes
if (Util.GetTimeStamp() - userdata.LastWebFail > BADURLEXPIRE)
recentFail = true;
else
userdata.LastWebFail = -1;
@@ -560,33 +556,36 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
return string.Empty;
}
if (!recentFail && !string.IsNullOrEmpty(userdata.HomeURL) && !WebUtil.GlobalExpiringBadURLs.ContainsKey(userdata.HomeURL))
if (!recentFail && !string.IsNullOrEmpty(userdata.HomeURL))
{
// m_log.DebugFormat("[USER MANAGEMENT MODULE]: Requested url type {0} for {1}", serverType, userID);
string homeurl = userdata.HomeURL.ToLower();
if(!WebUtil.GlobalExpiringBadURLs.ContainsKey(homeurl))
{
//m_log.DebugFormat("[USER MANAGEMENT MODULE]: Requested url type {0} for {1}", serverType, userID);
UserAgentServiceConnector uConn = new UserAgentServiceConnector(homeurl);
try
{
userdata.ServerURLs = uConn.GetServerURLs(userID);
}
catch (System.Net.WebException e)
{
m_log.DebugFormat("[USER MANAGEMENT MODULE]: GetServerURLs call failed {0}", e.Message);
userdata.ServerURLs = new Dictionary<string, object>();
userdata.LastWebFail = Util.GetTimeStamp();
WebUtil.GlobalExpiringBadURLs.Add(homeurl, BADURLEXPIRE * 1000);
recentFail = true;
}
catch (Exception e)
{
m_log.Debug("[USER MANAGEMENT MODULE]: GetServerURLs call failed ", e);
userdata.ServerURLs = new Dictionary<string, object>();
userdata.LastWebFail = Util.GetTimeStamp();
recentFail = true;
}
UserAgentServiceConnector uConn = new UserAgentServiceConnector(userdata.HomeURL);
try
{
userdata.ServerURLs = uConn.GetServerURLs(userID);
if (userdata.ServerURLs != null && userdata.ServerURLs.ContainsKey(serverType) && userdata.ServerURLs[serverType] != null)
return userdata.ServerURLs[serverType].ToString();
}
catch (System.Net.WebException e)
{
m_log.DebugFormat("[USER MANAGEMENT MODULE]: GetServerURLs call failed {0}", e.Message);
userdata.ServerURLs = new Dictionary<string, object>();
userdata.LastWebFail = Util.GetTimeStamp();
WebUtil.GlobalExpiringBadURLs.Add(userdata.HomeURL, 120000);
recentFail = true;
}
catch (Exception e)
{
m_log.Debug("[USER MANAGEMENT MODULE]: GetServerURLs call failed ", e);
userdata.ServerURLs = new Dictionary<string, object>();
userdata.LastWebFail = Util.GetTimeStamp();
recentFail = true;
}
if (userdata.ServerURLs != null && userdata.ServerURLs.ContainsKey(serverType) && userdata.ServerURLs[serverType] != null)
return userdata.ServerURLs[serverType].ToString();
}
return string.Empty;
}