update login server code

This commit is contained in:
Madpeter 2021-12-06 19:32:52 +00:00
parent 9f2fcdedda
commit 666510ba78
3 changed files with 43 additions and 44 deletions

View file

@ -86,7 +86,7 @@
<RegisterForComInterop>False</RegisterForComInterop> <RegisterForComInterop>False</RegisterForComInterop>
<RemoveIntegerChecks>False</RemoveIntegerChecks> <RemoveIntegerChecks>False</RemoveIntegerChecks>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors> <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<WarningLevel>3</WarningLevel> <WarningLevel>4</WarningLevel>
<NoStdLib>False</NoStdLib> <NoStdLib>False</NoStdLib>
<NoWarn>1591,1574,0419</NoWarn> <NoWarn>1591,1574,0419</NoWarn>
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>

View file

@ -3569,7 +3569,6 @@ namespace OpenMetaverse
if (args.Accept) if (args.Accept)
{ {
// Accept the inventory offer // Accept the inventory offer
switch (e.IM.Dialog) switch (e.IM.Dialog)
{ {
case InstantMessageDialog.InventoryOffered: case InstantMessageDialog.InventoryOffered:

View file

@ -153,9 +153,9 @@ namespace OpenMetaverse
/// <summary>LoginLocation used to set the starting region and location (overrides Start) example: "Tentacles/128/64/109"</summary> /// <summary>LoginLocation used to set the starting region and location (overrides Start) example: "Tentacles/128/64/109"</summary>
/// <remarks>Leave empty to use the starting location</remarks> /// <remarks>Leave empty to use the starting location</remarks>
public string LoginLocation; public string LoginLocation;
/// <summary> /// <summary>
/// Default constructor, initializes sane default values /// Default constructor, initializes sane default values
/// </summary> /// </summary>
@ -715,7 +715,7 @@ namespace OpenMetaverse
public static UUID ParseMappedUUID(string key, string key2, OSDMap reply) public static UUID ParseMappedUUID(string key, string key2, OSDMap reply)
{ {
OSD folderOSD; OSD folderOSD;
if (!reply.TryGetValue(key, out folderOSD) || folderOSD.Type != OSDType.Array) {return UUID.Zero;} if (!reply.TryGetValue(key, out folderOSD) || folderOSD.Type != OSDType.Array) { return UUID.Zero; }
OSDArray array = (OSDArray)folderOSD; OSDArray array = (OSDArray)folderOSD;
if (array.Count == 1 && array[0].Type == OSDType.Map) if (array.Count == 1 && array[0].Type == OSDType.Map)
@ -731,7 +731,7 @@ namespace OpenMetaverse
public static UUID ParseMappedUUID(string key, string key2, Hashtable reply) public static UUID ParseMappedUUID(string key, string key2, Hashtable reply)
{ {
if (!reply.ContainsKey(key) || !(reply[key] is ArrayList)) {return UUID.Zero;} if (!reply.ContainsKey(key) || !(reply[key] is ArrayList)) { return UUID.Zero; }
var array = (ArrayList)reply[key]; var array = (ArrayList)reply[key];
if (array.Count == 1 && array[0] is Hashtable) if (array.Count == 1 && array[0] is Hashtable)
@ -748,22 +748,22 @@ namespace OpenMetaverse
List<InventoryFolder> folders = new List<InventoryFolder>(); List<InventoryFolder> folders = new List<InventoryFolder>();
OSD skeleton; OSD skeleton;
if (!reply.TryGetValue(key, out skeleton) || skeleton.Type != OSDType.Array) {return folders.ToArray();} if (!reply.TryGetValue(key, out skeleton) || skeleton.Type != OSDType.Array) { return folders.ToArray(); }
OSDArray array = (OSDArray)skeleton; OSDArray array = (OSDArray)skeleton;
folders.AddRange(from t in array folders.AddRange(from t in array
where t.Type == OSDType.Map where t.Type == OSDType.Map
select (OSDMap)t select (OSDMap)t
into map into map
select new InventoryFolder(map["folder_id"].AsUUID()) select new InventoryFolder(map["folder_id"].AsUUID())
{ {
PreferredType = (FolderType)map["type_default"].AsInteger(), PreferredType = (FolderType)map["type_default"].AsInteger(),
Version = map["version"].AsInteger(), Version = map["version"].AsInteger(),
OwnerID = owner, OwnerID = owner,
ParentUUID = map["parent_id"].AsUUID(), ParentUUID = map["parent_id"].AsUUID(),
Name = map["name"].AsString() Name = map["name"].AsString()
}); });
return folders.ToArray(); return folders.ToArray();
} }
@ -773,19 +773,19 @@ namespace OpenMetaverse
var folders = new List<InventoryFolder>(); var folders = new List<InventoryFolder>();
OSD skeleton; OSD skeleton;
if (!reply.TryGetValue(key, out skeleton) || skeleton.Type != OSDType.Array) {return folders.ToArray();} if (!reply.TryGetValue(key, out skeleton) || skeleton.Type != OSDType.Array) { return folders.ToArray(); }
OSDArray array = (OSDArray)skeleton; OSDArray array = (OSDArray)skeleton;
folders.AddRange(from t in array folders.AddRange(from t in array
where t.Type == OSDType.Map where t.Type == OSDType.Map
select (OSDMap)t select (OSDMap)t
into map into map
select new InventoryFolder(map["folder_id"].AsUUID()) select new InventoryFolder(map["folder_id"].AsUUID())
{ {
Name = map["name"].AsString(), Name = map["name"].AsString(),
ParentUUID = map["parent_id"].AsUUID(), ParentUUID = map["parent_id"].AsUUID(),
PreferredType = (FolderType)map["type_default"].AsInteger(), PreferredType = (FolderType)map["type_default"].AsInteger(),
Version = map["version"].AsInteger() Version = map["version"].AsInteger()
}); });
return folders.ToArray(); return folders.ToArray();
} }
@ -796,7 +796,7 @@ namespace OpenMetaverse
var folders = new List<InventoryFolder>(); var folders = new List<InventoryFolder>();
if (!reply.ContainsKey(key) || !(reply[key] is ArrayList)) {return folders.ToArray();} if (!reply.ContainsKey(key) || !(reply[key] is ArrayList)) { return folders.ToArray(); }
ArrayList array = (ArrayList)reply[key]; ArrayList array = (ArrayList)reply[key];
foreach (object t in array) foreach (object t in array)
@ -934,8 +934,8 @@ namespace OpenMetaverse
{ {
ServerCertificateCustomValidationCallback = delegate { return true; }, ServerCertificateCustomValidationCallback = delegate { return true; },
AllowAutoRedirect = true AllowAutoRedirect = true
}); });
private LoginParams CurrentContext = null; private LoginParams CurrentContext = null;
private readonly AutoResetEvent LoginEvent = new AutoResetEvent(false); private readonly AutoResetEvent LoginEvent = new AutoResetEvent(false);
private LoginStatus InternalStatusCode = LoginStatus.None; private LoginStatus InternalStatusCode = LoginStatus.None;
@ -1034,7 +1034,7 @@ namespace OpenMetaverse
public void BeginLogin(LoginParams loginParams) public void BeginLogin(LoginParams loginParams)
{ {
// FIXME: Now that we're using CAPS we could cancel the current login and start a new one // FIXME: Now that we're using CAPS we could cancel the current login and start a new one
if (CurrentContext != null) {throw new Exception("Login already in progress");} if (CurrentContext != null) { throw new Exception("Login already in progress"); }
LoginEvent.Reset(); LoginEvent.Reset();
CurrentContext = loginParams; CurrentContext = loginParams;
@ -1133,12 +1133,12 @@ namespace OpenMetaverse
if (string.IsNullOrEmpty(loginParams.Channel)) if (string.IsNullOrEmpty(loginParams.Channel))
{ {
Logger.Log("Viewer channel not set. This is a TOS violation on some grids.", Logger.Log("Viewer channel not set. This is a TOS violation on some grids.",
Helpers.LogLevel.Warning); Helpers.LogLevel.Warning);
loginParams.Channel = $"{Settings.USER_AGENT}"; loginParams.Channel = $"{Settings.USER_AGENT}";
} }
if((loginParams.Start != "home") && (loginParams.Start != "last")) if ((loginParams.Start != "home") && (loginParams.Start != "last"))
{ {
loginParams.Start = "home"; loginParams.Start = "home";
Logger.Log("The Start option only accepts home or last! please use LoginLocation to set a custom login location!", Helpers.LogLevel.Warning); Logger.Log("The Start option only accepts home or last! please use LoginLocation to set a custom login location!", Helpers.LogLevel.Warning);
@ -1147,15 +1147,15 @@ namespace OpenMetaverse
if (string.IsNullOrEmpty(loginParams.LoginLocation) == false) if (string.IsNullOrEmpty(loginParams.LoginLocation) == false)
{ {
string[] bits = loginParams.LoginLocation.Split('/'); string[] bits = loginParams.LoginLocation.Split('/');
if(bits.Count() == 4) if (bits.Count() == 4)
{ {
if(int.TryParse(bits[1],out int X) == true) if (int.TryParse(bits[1], out int X) == true)
{ {
if (int.TryParse(bits[2], out int Y) == true) if (int.TryParse(bits[2], out int Y) == true)
{ {
if (int.TryParse(bits[3], out int Z) == true) if (int.TryParse(bits[3], out int Z) == true)
{ {
Logger.Log("Setting login location to: "+ loginParams.LoginLocation, Helpers.LogLevel.Info); Logger.Log("Setting login location to: " + loginParams.LoginLocation, Helpers.LogLevel.Info);
loginParams.Start = StartLocation(bits[0], X, Y, Z); loginParams.Start = StartLocation(bits[0], X, Y, Z);
} }
} }
@ -1169,7 +1169,7 @@ namespace OpenMetaverse
#endregion #endregion
// TODO: Allow a user callback to be defined for handling the cert // TODO: Allow a user callback to be defined for handling the cert
ServicePointManager.ServerCertificateValidationCallback = ServicePointManager.ServerCertificateValidationCallback =
(sender, certificate, chain, sslPolicyErrors) => true; (sender, certificate, chain, sslPolicyErrors) => true;
if (Client.Settings.USE_LLSD_LOGIN) if (Client.Settings.USE_LLSD_LOGIN)
@ -1286,8 +1286,8 @@ namespace OpenMetaverse
var cts = new CancellationTokenSource(); var cts = new CancellationTokenSource();
cts.CancelAfter(cc.Timeout); cts.CancelAfter(cc.Timeout);
var loginResponse = await HTTP_CLIENT.PostAsXmlRpcAsync(cc.URI, request, cts.Token); var loginResponse = await HTTP_CLIENT.PostAsXmlRpcAsync(cc.URI, request, cts.Token);
cts.Dispose(); cts.Dispose();
LoginReplyXmlRpcHandler(loginResponse, loginParams); LoginReplyXmlRpcHandler(loginResponse, loginParams);
} }
catch (Exception e) catch (Exception e)