mirror of
https://github.com/opensim/opensim.git
synced 2026-08-10 11:33:28 +08:00
split usermanagement adduser into simpler per case methods
This commit is contained in:
@@ -39,6 +39,7 @@ namespace OpenSim.Framework
|
||||
None = 0,
|
||||
ValidHost = 1,
|
||||
Resolved = 1 << 1,
|
||||
Empty = 1 << 2,
|
||||
|
||||
ValidResolved = ValidHost | Resolved
|
||||
}
|
||||
@@ -56,7 +57,7 @@ namespace OpenSim.Framework
|
||||
|
||||
public OSHTTPURI(string uri, bool withDNSResolve = false)
|
||||
{
|
||||
Flags = OSHTTPURIFlags.None;
|
||||
Flags = OSHTTPURIFlags.Empty;
|
||||
Port = -1;
|
||||
IP = null;
|
||||
Host = string.Empty;
|
||||
@@ -67,6 +68,7 @@ namespace OpenSim.Framework
|
||||
if (string.IsNullOrEmpty(uri))
|
||||
return;
|
||||
|
||||
Flags = OSHTTPURIFlags.None;
|
||||
try
|
||||
{
|
||||
Uri m_checkuri = new Uri(uri);
|
||||
@@ -114,12 +116,12 @@ namespace OpenSim.Framework
|
||||
|
||||
public bool IsValidHost
|
||||
{
|
||||
get { return Flags != OSHTTPURIFlags.None;}
|
||||
get { return (Flags & OSHTTPURIFlags.ValidHost) != 0; }
|
||||
}
|
||||
|
||||
public bool ValidAndResolved(out string error)
|
||||
{
|
||||
if (Flags == OSHTTPURIFlags.None)
|
||||
if ((Flags & OSHTTPURIFlags.ValidHost) == 0)
|
||||
{
|
||||
error = "failed to parse uri";
|
||||
return false;
|
||||
@@ -180,7 +182,7 @@ namespace OpenSim.Framework
|
||||
|
||||
public OSHHTPHost(string url, bool withDNSResolve = false)
|
||||
{
|
||||
Flags = OSHTTPURIFlags.None;
|
||||
Flags = OSHTTPURIFlags.Empty;
|
||||
Port = 80;
|
||||
IP = null;
|
||||
Host = string.Empty;
|
||||
@@ -191,8 +193,9 @@ namespace OpenSim.Framework
|
||||
if (string.IsNullOrEmpty(url))
|
||||
return;
|
||||
|
||||
url = url.ToLowerInvariant();
|
||||
Flags = OSHTTPURIFlags.None;
|
||||
|
||||
url = url.ToLowerInvariant();
|
||||
try
|
||||
{
|
||||
int urllen = url.Length;
|
||||
@@ -285,7 +288,7 @@ namespace OpenSim.Framework
|
||||
|
||||
public bool IsValidHost
|
||||
{
|
||||
get { return Flags != OSHTTPURIFlags.None; }
|
||||
get { return (Flags & OSHTTPURIFlags.ValidHost) != 0; }
|
||||
}
|
||||
|
||||
public bool IsResolvedHost
|
||||
@@ -295,7 +298,7 @@ namespace OpenSim.Framework
|
||||
|
||||
public bool ValidAndResolved(out string error)
|
||||
{
|
||||
if (Flags == OSHTTPURIFlags.None)
|
||||
if ((Flags & OSHTTPURIFlags.ValidHost) == 0)
|
||||
{
|
||||
error = "failed to parse uri";
|
||||
return false;
|
||||
@@ -365,7 +368,7 @@ namespace OpenSim.Framework
|
||||
{
|
||||
string[] sections = new string[] {"Const", "Startup", "Hypergrid"};
|
||||
|
||||
string gatekeeper = Util.GetConfigVarFromSections<string>(config, "GatekeeperURI", sections, String.Empty);
|
||||
string gatekeeper = Util.GetConfigVarFromSections<string>(config, "GatekeeperURI", sections, string.Empty);
|
||||
if (string.IsNullOrEmpty(gatekeeper))
|
||||
{
|
||||
IConfig serverConfig = config.Configs["GatekeeperService"];
|
||||
@@ -441,7 +444,7 @@ namespace OpenSim.Framework
|
||||
throw new Exception("HomeURI configuration error");
|
||||
}
|
||||
|
||||
string homeAlias = Util.GetConfigVarFromSections<string>(config, "HomeURIAlias", sections, String.Empty);
|
||||
string homeAlias = Util.GetConfigVarFromSections<string>(config, "HomeURIAlias", sections, string.Empty);
|
||||
if (!string.IsNullOrWhiteSpace(homeAlias))
|
||||
{
|
||||
string[] alias = homeAlias.Split(',');
|
||||
@@ -582,7 +585,7 @@ namespace OpenSim.Framework
|
||||
{
|
||||
OSHHTPHost tmp = new OSHHTPHost(othergatekeeper, false);
|
||||
if (!tmp.IsValidHost)
|
||||
return -1;
|
||||
return ((tmp.Flags & OSHTTPURIFlags.Empty) == 0) ? -1 : 1;
|
||||
if (tmp.Equals(m_gateKeeperURL))
|
||||
return 1;
|
||||
if (m_gateKeeperAlias != null && m_gateKeeperAlias.Contains(tmp))
|
||||
@@ -594,7 +597,7 @@ namespace OpenSim.Framework
|
||||
{
|
||||
OSHHTPHost tmp = new OSHHTPHost(othergatekeeper, false);
|
||||
if (!tmp.IsValidHost)
|
||||
return -1;
|
||||
return ((tmp.Flags & OSHTTPURIFlags.Empty) == 0) ? -1 : 1;
|
||||
if (tmp.Equals(m_gateKeeperURL))
|
||||
return 1;
|
||||
if (m_gateKeeperAlias != null && m_gateKeeperAlias.Contains(tmp))
|
||||
@@ -611,7 +614,8 @@ namespace OpenSim.Framework
|
||||
public int IsLocalGrid(OSHHTPHost othergatekeeper)
|
||||
{
|
||||
if (!othergatekeeper.IsValidHost)
|
||||
return -1;
|
||||
return ((othergatekeeper.Flags & OSHTTPURIFlags.Empty) == 0) ? -1 : 1;
|
||||
|
||||
if (othergatekeeper.Equals(m_gateKeeperURL))
|
||||
return 1;
|
||||
if (m_gateKeeperAlias != null && m_gateKeeperAlias.Contains(othergatekeeper))
|
||||
@@ -623,7 +627,7 @@ namespace OpenSim.Framework
|
||||
{
|
||||
OSHHTPHost tmp = new OSHHTPHost(otherhome, false);
|
||||
if (!tmp.IsValidHost)
|
||||
return -1;
|
||||
return ((tmp.Flags & OSHTTPURIFlags.Empty) == 0) ? -1 : 1;
|
||||
if (tmp.Equals(m_homeURL))
|
||||
return 1;
|
||||
if (m_homeURLAlias != null && m_homeURLAlias.Contains(tmp))
|
||||
@@ -635,7 +639,7 @@ namespace OpenSim.Framework
|
||||
{
|
||||
OSHHTPHost tmp = new OSHHTPHost(otherhome, false);
|
||||
if (!tmp.IsValidHost)
|
||||
return -1;
|
||||
return ((tmp.Flags & OSHTTPURIFlags.Empty) == 0) ? -1 : 1;
|
||||
if (tmp.Equals(m_homeURL))
|
||||
return 1;
|
||||
if (m_homeURLAlias != null && m_homeURLAlias.Contains(tmp))
|
||||
@@ -643,8 +647,6 @@ namespace OpenSim.Framework
|
||||
|
||||
if (withResolveCheck)
|
||||
{
|
||||
if (tmp.IsResolvedHost)
|
||||
return 0;
|
||||
return tmp.ResolveDNS() ? 0 : -2;
|
||||
}
|
||||
return 0;
|
||||
|
||||
@@ -1022,13 +1022,9 @@ namespace OpenSim.Framework
|
||||
{
|
||||
m_log.ErrorFormat(
|
||||
"[UTIL]: Couldn't find native Windows library at {0}", nativeLibraryPath);
|
||||
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool IsEnvironmentSupported(ref string reason)
|
||||
|
||||
@@ -1317,9 +1317,9 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||
|
||||
protected void AddUserData(SceneObjectGroup sog)
|
||||
{
|
||||
UserManagementModule.AddUser(sog.RootPart.CreatorID, sog.RootPart.CreatorData);
|
||||
UserManagementModule.AddCreatorUser(sog.RootPart.CreatorID, sog.RootPart.CreatorData);
|
||||
foreach (SceneObjectPart sop in sog.Parts)
|
||||
UserManagementModule.AddUser(sop.CreatorID, sop.CreatorData);
|
||||
UserManagementModule.AddCreatorUser(sop.CreatorID, sop.CreatorData);
|
||||
}
|
||||
|
||||
public virtual void TransferInventoryAssets(InventoryItemBase item, UUID sender, UUID receiver)
|
||||
|
||||
@@ -64,7 +64,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
|
||||
protected IServiceThrottleModule m_ServiceThrottle;
|
||||
protected IUserAccountService m_userAccountService = null;
|
||||
protected IGridUserService m_gridUserService = null;
|
||||
|
||||
|
||||
protected GridInfo m_thisGridInfo;
|
||||
|
||||
// The cache
|
||||
@@ -212,7 +212,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
|
||||
// m_log.DebugFormat(
|
||||
// "[USER MANAGEMENT MODULE]: Handling request for name binding of UUID {0} from {1}",
|
||||
// uuid, remote_client.Name);
|
||||
if(m_Scenes.Count <= 0)
|
||||
if(!m_Enabled || m_Scenes.Count <= 0)
|
||||
return;
|
||||
|
||||
if (m_userCacheByID.TryGetValue(uuid, out UserData user))
|
||||
@@ -331,13 +331,13 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
|
||||
protected virtual void CacheCreators(SceneObjectGroup sog)
|
||||
{
|
||||
//m_log.DebugFormat("[USER MANAGEMENT MODULE]: processing {0} {1}; {2}", sog.RootPart.Name, sog.RootPart.CreatorData, sog.RootPart.CreatorIdentification);
|
||||
AddUser(sog.RootPart.CreatorID, sog.RootPart.CreatorData);
|
||||
AddCreatorUser(sog.RootPart.CreatorID, sog.RootPart.CreatorData);
|
||||
|
||||
foreach (SceneObjectPart sop in sog.Parts)
|
||||
{
|
||||
AddUser(sop.CreatorID, sop.CreatorData);
|
||||
AddCreatorUser(sop.CreatorID, sop.CreatorData);
|
||||
foreach (TaskInventoryItem item in sop.TaskInventory.Values)
|
||||
AddUser(item.CreatorID, item.CreatorData);
|
||||
AddCreatorUser(item.CreatorID, item.CreatorData);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -732,41 +732,34 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
|
||||
m_userCacheByID.Add(id, user, local ? LOCALEXPIRE : HGEXPIRE);
|
||||
}
|
||||
|
||||
public virtual void AddUser(UUID uuid, string first, string last, bool isNPC = false, int expire = LOCALEXPIRE)
|
||||
public void AddSystemUser(UUID uuid, string first, string last)
|
||||
{
|
||||
UserData user = new UserData();
|
||||
user.Id = uuid;
|
||||
user.FirstName = first;
|
||||
user.LastName = last;
|
||||
user.HasGridUserTried = isNPC;
|
||||
if (!isNPC && last.StartsWith("@"))
|
||||
UserData user = new UserData()
|
||||
{
|
||||
string url = last.Substring(1);
|
||||
bool local;
|
||||
if (CheckUrl(url, out local, out OSHHTPHost host))
|
||||
{
|
||||
if (local)
|
||||
{
|
||||
user.IsLocal = true;
|
||||
user.HomeURL = string.Empty;
|
||||
user.HasGridUserTried = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
user.IsLocal = false;
|
||||
user.HomeURL = host.URI;
|
||||
user.HasGridUserTried = false;
|
||||
}
|
||||
user.IsUnknownUser = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
Id = uuid,
|
||||
FirstName = first,
|
||||
LastName = last,
|
||||
IsLocal = true,
|
||||
HasGridUserTried = true,
|
||||
HomeURL = string.Empty,
|
||||
IsUnknownUser = false
|
||||
};
|
||||
m_userCacheByID.Add(uuid, user, NOEXPIRE);
|
||||
}
|
||||
|
||||
public void AddNPCUser(UUID uuid, string first, string last)
|
||||
{
|
||||
UserData user = new UserData()
|
||||
{
|
||||
user.IsUnknownUser = false;
|
||||
user.IsLocal = true;
|
||||
user.HasGridUserTried = true;
|
||||
}
|
||||
m_userCacheByID.Add(uuid, user, isNPC ? NOEXPIRE : expire);
|
||||
Id = uuid,
|
||||
FirstName = first,
|
||||
LastName = last,
|
||||
HasGridUserTried = true,
|
||||
IsLocal = true,
|
||||
HomeURL = string.Empty,
|
||||
IsUnknownUser = false
|
||||
};
|
||||
m_userCacheByID.Add(uuid, user, NOEXPIRE);
|
||||
}
|
||||
|
||||
public virtual void AddUser(UUID uuid, string first, string last, string homeURL)
|
||||
@@ -826,7 +819,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void AddUser(UUID id, string creatorData)
|
||||
public virtual void AddCreatorUser(UUID id, string creatorData)
|
||||
{
|
||||
// m_log.InfoFormat("[USER MANAGEMENT MODULE]: Adding user with id {0}, creatorData {1}", id, creatorData);
|
||||
|
||||
@@ -849,13 +842,8 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
|
||||
return;
|
||||
firstname = nameparts[0];
|
||||
for(int xi = 1; xi < nameparts.Length; ++xi)
|
||||
{
|
||||
if(xi != 1)
|
||||
{
|
||||
lastname += " ";
|
||||
}
|
||||
lastname += nameparts[xi];
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(firstname))
|
||||
return;
|
||||
if (string.IsNullOrWhiteSpace(lastname))
|
||||
@@ -865,22 +853,13 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
|
||||
return;
|
||||
|
||||
homeURL = parts[0];
|
||||
if(homeURL.Length > 10)
|
||||
{
|
||||
string test = homeURL.Substring(10);
|
||||
int indx = test.IndexOf("/");
|
||||
if(indx > 0 && indx != test.Length - 1)
|
||||
homeURL = homeURL.Substring(0, indx + 10);
|
||||
}
|
||||
|
||||
bool local;
|
||||
|
||||
var oldUser = new UserData();
|
||||
oldUser.Id = id;
|
||||
oldUser.HasGridUserTried = false;
|
||||
oldUser.IsUnknownUser = false;
|
||||
|
||||
if (CheckUrl(homeURL, out local, out OSHHTPHost host))
|
||||
if (CheckUrl(homeURL, out bool local, out OSHHTPHost host))
|
||||
{
|
||||
if (local)
|
||||
{
|
||||
@@ -907,7 +886,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
|
||||
oldUser.HasGridUserTried = true;
|
||||
oldUser.IsUnknownUser = true;
|
||||
}
|
||||
m_userCacheByID.Add(id, oldUser, int.MaxValue / 16);
|
||||
m_userCacheByID.Add(id, oldUser, NOEXPIRE);
|
||||
}
|
||||
|
||||
public bool RemoveUser(UUID uuid)
|
||||
@@ -946,8 +925,8 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
|
||||
|
||||
protected virtual void Init(IConfigSource config)
|
||||
{
|
||||
AddUser(UUID.Zero, "Unknown", "User", false, NOEXPIRE);
|
||||
AddUser(Constants.m_MrOpenSimID, "Mr", "Opensim", false, NOEXPIRE);
|
||||
AddSystemUser(UUID.Zero, "Unknown", "User");
|
||||
AddSystemUser(Constants.m_MrOpenSimID, "Mr", "Opensim");
|
||||
RegisterConsoleCmds();
|
||||
|
||||
IConfig userManagementConfig = config.Configs["UserManagement"];
|
||||
|
||||
@@ -188,7 +188,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||
{
|
||||
foreach (InventoryItemBase item in items)
|
||||
if (!string.IsNullOrEmpty(item.CreatorData))
|
||||
UserManager.AddUser(item.CreatorIdAsUuid, item.CreatorData);
|
||||
UserManager.AddCreatorUser(item.CreatorIdAsUuid, item.CreatorData);
|
||||
}, null, string.Format("GetFolderContent (user {0}, folder {1})", userID, folderID));
|
||||
}
|
||||
|
||||
|
||||
@@ -682,7 +682,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
part.CreatorID = m_defaultUser;
|
||||
}
|
||||
if (UserManager != null)
|
||||
UserManager.AddUser(part.CreatorID, part.CreatorData);
|
||||
UserManager.AddCreatorUser(part.CreatorID, part.CreatorData);
|
||||
|
||||
if (!(ResolveUserUuid(scene, part.OwnerID) || ResolveGroupUuid(part.OwnerID)))
|
||||
part.OwnerID = m_defaultUser;
|
||||
@@ -727,7 +727,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
}
|
||||
|
||||
if (UserManager != null)
|
||||
UserManager.AddUser(kvp.Value.CreatorID, kvp.Value.CreatorData);
|
||||
UserManager.AddCreatorUser(kvp.Value.CreatorID, kvp.Value.CreatorData);
|
||||
|
||||
if (!ResolveGroupUuid(kvp.Value.GroupID))
|
||||
kvp.Value.GroupID = UUID.Zero;
|
||||
|
||||
@@ -680,7 +680,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
IUserManagement uman = RequestModuleInterface<IUserManagement>();
|
||||
if (uman != null)
|
||||
uman.AddUser(item.CreatorIdAsUuid, item.CreatorData);
|
||||
uman.AddCreatorUser(item.CreatorIdAsUuid, item.CreatorData);
|
||||
|
||||
if (!Permissions.BypassPermissions())
|
||||
{
|
||||
|
||||
@@ -1330,7 +1330,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
{
|
||||
tmp = SceneGridInfo.EconomyURL;
|
||||
if (!string.IsNullOrEmpty(tmp))
|
||||
fm.AddOpenSimExtraFeature("currency-base-uri", tmp);
|
||||
fm.AddOpenSimExtraFeature("currency-base-uri", tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3248,11 +3248,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
{
|
||||
if (UserManagementModule != null)
|
||||
{
|
||||
string first = aCircuit.firstname, last = aCircuit.lastname;
|
||||
string first = aCircuit.firstname;
|
||||
string last = aCircuit.lastname;
|
||||
|
||||
if (sp != null && sp.PresenceType == PresenceType.Npc)
|
||||
{
|
||||
UserManagementModule.AddUser(aCircuit.AgentID, first, last, true);
|
||||
UserManagementModule.AddNPCUser(aCircuit.AgentID, first, last);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4263,8 +4264,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
}
|
||||
else
|
||||
{
|
||||
// Let the SP know how we got here. This has a lot of interesting
|
||||
// uses down the line.
|
||||
sp.TeleportFlags = (TPFlags)teleportFlags;
|
||||
|
||||
if (sp.IsChildAgent)
|
||||
@@ -4294,7 +4293,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
CapsModule.ActivateCaps(acd.circuitcode);
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -64,8 +64,11 @@ namespace OpenSim.Framework
|
||||
/// <returns>UUID.Zero if no user with that name is found or if the name is "Unknown User"</returns>
|
||||
UUID GetUserIdByName(string firstName, string lastName);
|
||||
|
||||
|
||||
void AddSystemUser(UUID uuid, string first, string last);
|
||||
void AddNPCUser(UUID uuid, string first, string last);
|
||||
/// <summary>
|
||||
/// Add a user.
|
||||
/// Add a creator user.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// If an account is found for the UUID, then the names in this will be used rather than any information
|
||||
@@ -73,29 +76,16 @@ namespace OpenSim.Framework
|
||||
/// </remarks>
|
||||
/// <param name="uuid"></param>
|
||||
/// <param name="creatorData">The creator data for this user.</param>
|
||||
void AddUser(UUID uuid, string creatorData);
|
||||
void AddCreatorUser(UUID uuid, string creatorData);
|
||||
|
||||
/// <summary>
|
||||
/// Add a user.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The UUID is related to the name without any other checks being performed, such as user account presence.
|
||||
/// </remarks>
|
||||
/// <param name="uuid"></param>
|
||||
/// <param name="firstName"></param>
|
||||
/// <param name="lastName"></param>
|
||||
void AddUser(UUID uuid, string first, string last, bool isNPC = false, int expire = 1800000);
|
||||
|
||||
/// <summary>
|
||||
/// Add a user.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The arguments apart from uuid are formed into a creatorData string and processing proceeds as for the
|
||||
/// AddUser(UUID uuid, string creatorData) method.
|
||||
/// </remarks>
|
||||
/// <param name="uuid"></param>
|
||||
/// <param name="firstName"></param>
|
||||
/// <param name="profileURL"></param>
|
||||
/// <param name="homeURL"></param>
|
||||
void AddUser(UUID uuid, string firstName, string lastName, string homeURL);
|
||||
bool RemoveUser(UUID uuid);
|
||||
bool IsLocalGridUser(UUID uuid);
|
||||
|
||||
@@ -406,7 +406,7 @@ namespace OpenSim.Services.UserAccountService
|
||||
else
|
||||
break;
|
||||
}
|
||||
if (String.IsNullOrWhiteSpace(password))
|
||||
if (string.IsNullOrWhiteSpace(password))
|
||||
{
|
||||
MainConsole.Instance.Output("create user aborted");
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user