private string Get3DiChallengeCode(LoginParams loginParams)
{
string challengeCode = null;
// Try to get challenge code
try
{
string loginServerVersion = GetLoginServerVersion(loginParams.URI);
if (loginServerVersion == "3Di OpenSim LoginService 1.0")
{
// we are connecting to 3Di login server; use custom password routine
string baseLoginServerUri = loginParams.URI;
if (baseLoginServerUri[baseLoginServerUri.Length - 1] == '/')
baseLoginServerUri.Remove(baseLoginServerUri.Length - 1, 1);
string getChallengeCodeUri = baseLoginServerUri
+ "/" + "ChallengeCode"
+ "/" + loginParams.FirstName + "&" + loginParams.LastName;
// get XML from challenge code response
XmlReader reader = XmlReader.Create(getChallengeCodeUri);
XPathDocument xpathDoc = new XPathDocument(reader);
XPathNavigator xpathnav = xpathDoc.CreateNavigator();
string xpathQuery = "/code";
XPathExpression xpathExpr = xpathnav.Compile(xpathQuery);
XPathNodeIterator xpathIter = xpathnav.Select(xpathExpr);
if (xpathIter.MoveNext())
{
// got the challenge code
challengeCode = xpathIter.Current.Value;
}
else
{
// did not get challenge code (e.g. invalid user name)
}
}
}
catch
{
}
return challengeCode;
}