update login server code
This commit is contained in:
parent
9f2fcdedda
commit
666510ba78
3 changed files with 43 additions and 44 deletions
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue