// LoginResponse: dump a login response to the console private void MyLoginResponse(XmlRpcResponse response) { string firstname = "Un"; string lastname = "Known"; string myname; LoginResponseData responsedata = new LoginResponseData(); responsedata.Parse((Hashtable)response.Value); firstname = responsedata.FirstName; lastname = responsedata.LastName; firstname = firstname.Trim('"'); myname = firstname + " " + lastname; SayToUser("My name is : " + myname); SayToUser("AgentID : " + this.frame.AgentID); SayToUser("SessionID : " + this.frame.SessionID); SayToUser("SecureSessionID: " + this.frame.SecureSessionID); SayToUser("InventoryRoot : " + this.frame.InventoryRoot); SayToUser("Logged in."); SayToUser(""); StatusSetName(myname); StatusSetUUID(this.frame.AgentID.ToString()); // skeleton = responsedata.InventorySkeleton; loggedin = true; StatusSetMsg("Logged in."); }
private void OnLogin(IResponse loginResponse) { if (loginResponse.Error != null && !string.IsNullOrEmpty(loginResponse.Error.Code)) { LogConsole("Error login: "******", " + loginResponse.Error.Message); return; } LoginResponseData data = (LoginResponseData)loginResponse.Data; LogConsole("Token: " + data.Token); m_token = data.Token; m_userGUID = data.UserInfo.GUID; // Get Quotes //IRequest req = MarketData.SubscribeForQuotes(m_token, m_userGUID); IRequest req = TradingApp.GetInitialAppData(m_token, m_userGUID); Send(req, response => { if (response.Error != null && !string.IsNullOrEmpty(response.Error.Code)) { LogConsole("Error: " + response.Error.Code + ", " + response.Error.Message); } else { LogConsole("Success"); } }); }
public Error Login(LoginHandlerMode loginMode, string playerName, string playerLoginKey, out LoginResponseData loginData) { loginData = null; uint playerId; if (!uint.TryParse(playerName, out playerId)) { return(Error.PlayerNotFound); } loginData = new LoginResponseData { Player = new LoginResponseData.PlayerData { Banned = false, Id = playerId, Name = "Player " + playerId, Rights = PlayerRights.Basic }, Achievements = new List <Achievement>(), ThemePurchases = themeManager.Themes.Where(theme => theme.Id != Theme.DEFAULT_THEME_ID) .Select(theme => new ThemePurchase { ThemeId = theme.Id }) .ToList() }; return(Error.Ok); }
private IEnumerator HandleLoginRequest(NetworkMessage x) { var msg = x.ReadMessage <LoginRequestData>(); LoginResponseData resp = new LoginResponseData(); Result <bool> r2 = Login(msg.userName, msg.passwordHash, x.conn); yield return(r2.WaitUntilDone()); if (r2.Value) { resp.isSuccessful = true; Result <AccountInfo> r = GetAccountByUserName(msg.userName); yield return(r.WaitUntilDone()); var user = r.Value; resp.account = new AccountInfo(user.userID, user.userName, user.data); if (OnLoggedIn != null) { OnLoggedIn(new AccountInfo(user.userID, user.userName, user.data)); } } else { resp.isSuccessful = false; if (OnLoginFailed != null) { OnLoginFailed(); } } x.conn.Send((short)CustomMessageTypes.LoginResponse, resp); }
public LoginResponseData GetJwt(User user, string refreshToken, string secret, string accessExpire) { var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(secret); //====Moj kod do roli ==== var roles = GetUserRoles(user); var claims = new List <Claim> { new Claim(ClaimTypes.Name, user.Id.ToString()) }; foreach (var v in roles) { claims.Add(new Claim(ClaimTypes.Role, v.Name)); } //========Koniec=========== var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.UtcNow.AddMinutes(double.Parse(accessExpire)), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); var tokenString = tokenHandler.WriteToken(token); var response = new LoginResponseData { AccessToken = tokenString, RefreshToken = refreshToken }; return(response); }
internal static void AuthUser(LoginResponseData payload) { LoginData = payload; IdeaBagApi.Instance.SetAuthToken(payload.Token); PreferenceManager.Instance.AddEntry("loginData", JsonConvert.SerializeObject(payload)); Toast.MakeText(App.CurrentActivity, "Logged in successfully.", ToastLength.Long).Show(); }
internal static void Logout() { PreferenceManager.Instance.AddEntry("loginData", string.Empty); PreferenceManager.Instance.AddEntry("expiresIn", string.Empty); LoginData = null; Toast.MakeText(App.CurrentActivity, "Logged out successfully.", ToastLength.Long).Show(); }
public async Task <LoginResponseData> GetByAppUserId(string AppUserId) { LoginResponseData user = new LoginResponseData(); var _user = await _userRepository.GetByAppUserId(AppUserId); user.User = _user; return(user); }
private void OnLoginAccepted(LoginResponseData data) { Debug.Log($"login successful! Got id: {data.ID}"); ConnectionManager.Instance.PlayerId = data.ID; ConnectionManager.Instance.LobbyData = data.LobbyData; SceneManager.LoadScene("Lobby", LoadSceneMode.Single); }
public async Task <LoginResponseData> Login(LoginRequestData model, string ip) { if (_dbPatchMgr.GetStatus()) { throw new ApplicationException("Database syncronization in progress, please try to login in few minutes..."); } _dbPatchMgr.Sync(); var refreshTokenLifeTime = ValidateClientAuthentication(model.ClientId, model.ClientSecret); var user = await _userRepo.FindUserByUsername(model.Username); if (user == null) { throw new ApplicationException("Invalid username or password"); } if (await _userRepo.IsUserLogout(user)) { throw new ApplicationException("User account is been logout"); } if (!user.IsActive) { throw new ApplicationException("User account inactive"); } if (_hasher.VerifyHashedPassword(user, user.PasswordHash, model.Password) == PasswordVerificationResult.Failed) { throw new ApplicationException("Invalid username or password"); } var jwtSecurityToken = TokenUtility.GenerateJwtSecurityToken(_appConfig.GetSection("AppConfiguration"), TokenUtility.GenerateClaims(user.UserName, user.Id)); var userVm = UserExtension.BuildUserViewModel(user); var refreshToken = TokenUtility.GenerateRefreshToken(); await SaveRefreshToken(model.ClientId, model.Username, refreshToken, refreshTokenLifeTime, ip); user.LastLoginDate = DateTime.UtcNow; _userRepo.Update(user); var response = new LoginResponseData() { UserId = userVm.UserID, Username = userVm.Username, FullName = userVm.FullName, ProfilePictureUrl = userVm.ProfilePictureUrl, Roles = userVm.Roles, Token = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken), TokenExpires = jwtSecurityToken.ValidTo, TokenIssued = jwtSecurityToken.ValidFrom, RefreshToken = refreshToken, Email = userVm.Email }; return(response); }
public static LoginResponseData ExecuteStaticUser(String UserName, String Email, UserDbContext db, RefreshToken refreshToken = null) { var options = GetOptions(); var now = DateTime.UtcNow; var userId = "1"; var claims = new List <Claim>() { // new Claim(JwtRegisteredClaimNames.Sub, user.UserName), // TODO - Check to use it. new Claim(JwtRegisteredClaimNames.Email, Email), new Claim(JwtRegisteredClaimNames.NameId, "1"), new Claim(JwtRegisteredClaimNames.Jti, "1"), new Claim(JwtRegisteredClaimNames.Iat, new DateTimeOffset(now).ToUniversalTime().ToUnixTimeSeconds().ToString(), ClaimValueTypes.Integer64) }; claims.Add(new Claim("UserId", userId)); claims.Add(new Claim("Name", UserName)); if (refreshToken == null) { refreshToken = new RefreshToken() { UserId = userId, Token = Guid.NewGuid().ToString("N"), }; //db.InsertNew(refreshToken); } refreshToken.IssuedUtc = now; refreshToken.ExpiresUtc = now.Add(options.Expiration); //db.SaveChanges(); var jwt = new JwtSecurityToken( issuer: options.Issuer, audience: options.Audience, claims: claims.ToArray(), notBefore: now, expires: now.Add(options.Expiration), signingCredentials: options.SigningCredentials); var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt); var response = new LoginResponseData { access_token = encodedJwt, refresh_token = refreshToken.Token, expires_in = (int)options.Expiration.TotalSeconds, userName = UserName }; return(response); }
private Message BuildResponse(LoginResponseData res) { var message = new Message(); var header = new MessageHeader { Type = MessageType.LOGIN_RESP, Attachments = res.Attachments }; message.Header = header; message.Body = new byte[1] { res.AuthStatusCode }; return(message); }
public static async Task ProcessLoginResponse(LoginResponseData response) { LOG.Log("Processing login response"); if (response.ResponseType == LoginResponseType.Success) { LOG.Log("Log in was success!"); await GameState.RefreshGameStateFromLoginResponse(response); GeneralRefresherService.Refresh(); await ScreenChangerService.ChangeScreen(ScreenId.Universe); } else { LOG.Log($"Log failed {response.ResponseType}"); ShowLoginResponse($"Login failed: {response.ResponseType}"); } }
private void Login() { m_pxConnector.Send(User.Login(m_NTconnection.Options.User, m_NTconnection.Options.Password), res => { if (res.Error != null && !string.IsNullOrEmpty(res.Error.Code)) { m_NTconnection.ProcessEventArgs(new ConnectionStatusEventArgs(m_NTconnection, ErrorCode.LoginFailed, res.Error.Message, ConnectionStatus.Disconnected, ConnectionStatus.Disconnected)); return; } LoginResponseData data = res.Data as LoginResponseData; if (data == null || string.IsNullOrEmpty(data.Token) || data.UserInfo == null || string.IsNullOrEmpty(data.UserInfo.GUID)) { m_NTconnection.ProcessEventArgs(new ConnectionStatusEventArgs(m_NTconnection, ErrorCode.LoginFailed, "Invalid LoginResponseData", ConnectionStatus.Disconnected, ConnectionStatus.Disconnected)); return; } m_token = data.Token; m_userInfo = data.UserInfo; GetInitialAppData(); }); }
public async Task <LoginResponseData> Login(LoginModel Login) { var isLogin = await userEntity.IsUserLoggedin(Login); if (isLogin == null) { loginResponseData = new LoginResponseData { Message = "Username or password incorrect" }; return(loginResponseData); } else { loginResponseData = new LoginResponseData { Token = isLogin, Message = "Successfully Login" }; return(loginResponseData); } }
public SnowflakeSession(LoginResponseData loginResponseData) { this.SessionToken = loginResponseData.Token; this.MasterToken = loginResponseData.MasterToken; this.ValidityInSeconds = loginResponseData.ValidityInSeconds; this.MasterValidityInSeconds = loginResponseData.MasterValidityInSeconds; this.DisplayUserName = loginResponseData.DisplayUserName; this.ServerVersion = loginResponseData.ServerVersion; this.FirstLogin = loginResponseData.FirstLogin; this.RemMeToken = loginResponseData.RemMeToken; this.RemMeValidityInSeconds = loginResponseData.RemMeValidityInSeconds; this.HealthCheckInterval = loginResponseData.HealthCheckInterval; this.NewClientForUpgrade = loginResponseData.NewClientForUpgrade; this.SessionId = loginResponseData.SessionId; this.IdToken = loginResponseData.IdToken; this.IdTokenValidityInSeconds = loginResponseData.IdTokenValidityInSeconds; this.DatabaseName = loginResponseData.SessionInfo.DatabaseName; this.SchemaName = loginResponseData.SessionInfo.SchemaName; this.WarehouseName = loginResponseData.SessionInfo.WarehouseName; this.RoleName = loginResponseData.SessionInfo.RoleName; }
public void DownloadSnipeApi() { UnityEngine.Debug.Log("DownloadSnipeApi - start"); Process process = new Process(); process.StartInfo.WorkingDirectory = Application.dataPath + "/.."; process.StartInfo.FileName = "curl"; process.StartInfo.Arguments = $"-s -X POST \"https://edit-dev.snipe.dev/api/v1/auth\" -d \"login={mLogin}&password={mPassword}\""; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.Start(); StreamReader reader = process.StandardOutput; string output = reader.ReadToEnd(); UnityEngine.Debug.Log("output " + output); LoginResponseData response = new LoginResponseData(); UnityEditor.EditorJsonUtility.FromJsonOverwrite(output, response); string token = response.token; if (string.IsNullOrEmpty(token)) { UnityEngine.Debug.Log("DownloadSnipeApi - FAILED to get token"); return; } process = new Process(); process.StartInfo.WorkingDirectory = mDirectoryPath; process.StartInfo.FileName = "curl"; process.StartInfo.Arguments = $"-o SnipeApi.cs -H \"Authorization: Bearer {token}\" \"https://edit-dev.snipe.dev/api/v1/project/{mProjectId}/code/unityBindings\""; process.Start(); UnityEngine.Debug.Log("DownloadSnipeApi - done"); }
private void OnRegisterFinished(LoginResponseData lrData) { Debug.Log("Success!"); LoginSuccess(lrData); }
public static LoginResponseData Execute(User user, AdoptMeDataContext db, RefreshToken refreshToken = null) { var options = GetOptions(); var now = DateTime.UtcNow; var claims = new List <Claim>() { new Claim(JwtRegisteredClaimNames.NameId, user.Id), new Claim(JwtRegisteredClaimNames.Jti, user.Id.ToString()), new Claim(JwtRegisteredClaimNames.Iat, new DateTimeOffset(now).ToUniversalTime().ToUnixTimeSeconds().ToString(), ClaimValueTypes.Integer64), new Claim(JwtRegisteredClaimNames.Sub, user.UserName), }; var userClaims = db.UserClaims.Where(i => i.UserId == user.Id); foreach (var userClaim in userClaims) { claims.Add(new Claim(userClaim.ClaimType, userClaim.ClaimValue)); } var userRoles = db.UserRoles.Where(i => i.UserId == user.Id); foreach (var userRole in userRoles) { var role = db.Roles.Single(i => i.Id == userRole.RoleId); claims.Add(new Claim(Extensions.RoleClaimType, role.Name)); } if (refreshToken == null) { refreshToken = new RefreshToken() { UserId = user.Id, Token = Guid.NewGuid().ToString("N"), }; db.InsertNew(refreshToken); } refreshToken.IssuedUtc = now; refreshToken.ExpiresUtc = now.Add(options.Expiration); db.SaveChanges(); var jwt = new JwtSecurityToken( issuer: options.Issuer, audience: options.Audience, claims: claims.ToArray(), notBefore: now, expires: now.Add(options.Expiration), signingCredentials: options.SigningCredentials); var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt); var response = new LoginResponseData { access_token = encodedJwt, refresh_token = refreshToken.Token, expires_in = (int)options.Expiration.TotalSeconds, userName = user.UserName, firstName = user.FirstName, lastName = user.LastName, isAdmin = claims.Any(i => i.Type == Extensions.RoleClaimType && i.Value == Extensions.AdminRole) }; return(response); }
public Error Login(LoginHandlerMode loginMode, string playerName, string playerLoginKey, out LoginResponseData loginData) { loginData = null; ApiResponse <LoginResponseData> response; try { response = loginMode == 0 ? ApiCaller.CheckLoginKey(playerName, playerLoginKey) : ApiCaller.CheckLogin(playerName, playerLoginKey); } catch (Exception e) { logger.Error("Error loading player", e); return(Error.Unexpected); } if (!response.Success) { return(Error.InvalidLogin); } loginData = response.Data; return(Error.Ok); }
private void network_OnLoginResponseCallback(bool loginSuccess, bool redirect, string message, string reason, LoginResponseData replyData) { if (!loginSuccess || redirect) { return; } if (!string.IsNullOrWhiteSpace(replyData.MfaHash)) { var settings = instance.GlobalSettings; if (settings.ContainsKey("saved_logins") && settings.ContainsKey("username") && settings.ContainsKey("login_grid")) { string username = settings["username"]; string grid = settings["login_grid"]; var savedLoginsKey = $"{username}%{grid}"; var loginsMap = (OSDMap)settings["saved_logins"]; if (loginsMap.ContainsKey(savedLoginsKey)) { var sl = (OSDMap)loginsMap[savedLoginsKey]; sl["mfa_hash"] = replyData.MfaHash; } } } }
LoginResponseData HandleLogin(string firstName, string lastName, string password, string start, string version, string channel) { LoginResponseData response = new LoginResponseData(); Agent agent; UUID agentID = Authentication.Authenticate(firstName, lastName, password); if (agentID != UUID.Zero) { // Authentication successful, create a login instance of this agent agent = Accounts.CreateInstance(agentID); if (agent != null) { // Assign a circuit code and insert the agent into the unassociatedAgents dictionary agent.CircuitCode = UDP.CreateCircuit(agent); agent.TickLastPacketReceived = Environment.TickCount; agent.LastLoginTime = Utils.DateTimeToUnixTime(DateTime.Now); // Get this machine's IP address IPHostEntry addresses = Dns.GetHostByName(Dns.GetHostName()); IPAddress simIP = addresses.AddressList.Length > 0 ? addresses.AddressList[0] : IPAddress.Loopback; response.AgentID = agent.AgentID; response.SecureSessionID = agent.SecureSessionID; response.SessionID = agent.SessionID; response.CircuitCode = agent.CircuitCode; response.AgentAccess = agent.AccessLevel; response.BuddyList = null; // FIXME: response.FirstName = agent.FirstName; response.HomeLookAt = agent.HomeLookAt; response.HomePosition = agent.HomePosition; response.HomeRegion = agent.HomeRegionHandle; response.InventoryRoot = agent.InventoryRoot; response.InventorySkeleton = null; // FIXME: response.LastName = agent.LastName; response.LibraryOwner = agent.InventoryLibraryOwner; response.LibraryRoot = agent.InventoryLibraryRoot; response.LibrarySkeleton = null; // FIXME: response.LookAt = agent.CurrentLookAt; response.Message = "Welcome to Simian"; response.Reason = String.Empty; uint regionX, regionY; Utils.LongToUInts(agent.CurrentRegionHandle, out regionX, out regionY); response.RegionX = regionX; response.RegionY = regionY; response.SecondsSinceEpoch = DateTime.Now; // FIXME: Actually generate a seed capability response.SeedCapability = String.Format("http://{0}:{1}/seed_caps", simIP, HttpPort); response.SimIP = simIP; response.SimPort = (ushort)UDPPort; response.StartLocation = "last"; // FIXME: response.Success = true; } else { // Something went wrong creating an agent instance, return a fail response response.AgentID = agentID; response.FirstName = firstName; response.LastName = lastName; response.Message = "Failed to create an account instance"; response.Reason = "account"; response.Success = false; } } else { // Authentication failed, return a fail response response.AgentID = agentID; response.FirstName = firstName; response.LastName = lastName; response.Message = "Authentication failed"; response.Reason = "key"; response.Success = false; } return(response); }
public static LoginResponseData Execute(IConfiguration configuration, ApplicationUser user, UserDbContext db, RefreshToken refreshToken = null) { var options = GetOptions(); var now = DateTime.UtcNow; var claims = new List <Claim> () { // new Claim(JwtRegisteredClaimNames.Sub, user.UserName), // TODO - Check to use it. new Claim(JwtRegisteredClaimNames.Email, user.Email), new Claim(JwtRegisteredClaimNames.NameId, user.Id), new Claim(JwtRegisteredClaimNames.Jti, user.Id.ToString()), new Claim(JwtRegisteredClaimNames.Iat, new DateTimeOffset(now).ToUniversalTime().ToUnixTimeSeconds().ToString(), ClaimValueTypes.Integer64) }; //Load the current loggedin userid to jwt //TODO check for security on this. UsersRepo ur = new UsersRepo(configuration); Users _user = ur.GetUserByEmailId(user.Email); if (_user != null) { claims.Add(new Claim("UserId", _user.UserId.ToString())); } ; var userClaims = db.UserClaims.Where(i => i.UserId == user.Id); foreach (var userClaim in userClaims) { claims.Add(new Claim(userClaim.ClaimType, userClaim.ClaimValue)); } //var userRoles = db.UserRoles.Where(i => i.UserId == user.Id); // TODO - This should load from Application DB //foreach (var userRole in userRoles) //{ // var role = db.Roles.Single(i => i.Id == userRole.RoleId); // claims.Add(new Claim(ClaimTypes.Role, role.Name)); //} if (refreshToken == null) { refreshToken = new RefreshToken() { UserId = user.Id, Token = Guid.NewGuid().ToString("N"), }; db.InsertNew(refreshToken); } refreshToken.IssuedUtc = now; refreshToken.ExpiresUtc = now.Add(options.Expiration); db.SaveChanges(); var jwt = new JwtSecurityToken( issuer: options.Issuer, audience: options.Audience, claims: claims.ToArray(), notBefore: now, expires: now.Add(options.Expiration), signingCredentials: options.SigningCredentials); var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt); var response = new LoginResponseData { access_token = encodedJwt, refresh_token = refreshToken.Token, expires_in = (int)options.Expiration.TotalSeconds, userName = user.UserName }; return(response); }
public async Task <ResponseBase <LoginResponseData> > Login([FromBody] LoginRequestData model) { try { await _signInManager.SignOutAsync(); var lrd = new LoginResponseData(); ApplicationUser user = await _userManager.FindByNameAsync(model.username); if (user == null) { return(new ResponseBase <LoginResponseData>() { ErrorDetails = "Login details entered is incorrect", Payload = null }); } var result = await _signInManager.PasswordSignInAsync(user, model.password, false, false); var _user = await _userRepo.GetByAppUserId(user.Id); // BUG: This shouldn't allow login if email still requires verification if (result.Succeeded) { var identity = await GetClaimsIdentity(model.username, model.password); if (identity == null) { return(new ResponseBase <LoginResponseData>() { ErrorDetails = "Login details entered is incorrect", Payload = null }); } var jwt = await Tokens.GenerateJwt(identity, _jwtFactory, model.username, _jwtOptions, new JsonSerializerSettings { Formatting = Formatting.Indented }); Token Token = JsonConvert.DeserializeObject <Token>(jwt); _user.Token = Token.auth_Token; if (result.RequiresTwoFactor) { //return RedirectToPage("./SendCode", new { returnUrl, RememberMe }); } if (result.IsLockedOut) { return(new ResponseBase <LoginResponseData>() { ErrorDetails = "This you have been LockedOut until " + user.LockoutEnd, Payload = null }); } if (_user.User.Activated != true) { return(new ResponseBase <LoginResponseData>() { ErrorDetails = "Your account has been deactivated contact the admin", Payload = null }); } } else { return(new ResponseBase <LoginResponseData>() { ErrorDetails = "Login details entered is incorrect", Payload = null }); } return(new ResponseBase <LoginResponseData>() { Payload = _user, IsSuccess = true }); } catch (Exception ex) { return(new ResponseBase <LoginResponseData>() { ErrorDetails = Error(), Payload = null }); } }
private void LoginSuccess(LoginResponseData lrData) { SetLoginRequestInProgress(false); currentPlayerData = lrData.playerData; ActivateLobbyScreen(); }
void LoginXmlRpcPostHandler(HttpRequestSignature signature, ref HttpListenerContext context) { string firstName = String.Empty, lastName = String.Empty, password = String.Empty, start = String.Empty, version = String.Empty, channel = String.Empty; try { // Parse the incoming XML XmlReader reader = XmlReader.Create(context.Request.InputStream); reader.ReadStartElement("methodCall"); { string methodName = reader.ReadElementContentAsString("methodName", String.Empty); if (methodName == "login_to_simulator") { reader.ReadStartElement("params"); reader.ReadStartElement("param"); reader.ReadStartElement("value"); reader.ReadStartElement("struct"); { while (reader.Name == "member") { reader.ReadStartElement("member"); { string name = reader.ReadElementContentAsString("name", String.Empty); reader.ReadStartElement("value"); { switch (name) { case "first": firstName = reader.ReadElementContentAsString("string", String.Empty); break; case "last": lastName = reader.ReadElementContentAsString("string", String.Empty); break; case "passwd": password = reader.ReadElementContentAsString("string", String.Empty); break; case "start": start = reader.ReadElementContentAsString("string", String.Empty); break; case "version": version = reader.ReadElementContentAsString("string", String.Empty); break; case "channel": channel = reader.ReadElementContentAsString("string", String.Empty); break; default: if (reader.Name == "string") { Console.WriteLine(String.Format("Ignore login xml value: name={0}, value={1}", name, reader.ReadInnerXml())); } else { Console.WriteLine(String.Format("Unknown login xml: name={0}, value={1}", name, reader.ReadInnerXml())); } break; } } reader.ReadEndElement(); } reader.ReadEndElement(); } } reader.ReadEndElement(); reader.ReadEndElement(); reader.ReadEndElement(); reader.ReadEndElement(); } } reader.ReadEndElement(); reader.Close(); LoginResponseData responseData = HandleLogin(firstName, lastName, password, start, version, channel); if (responseData.Success) { responseData.InventorySkeleton = Inventory.CreateInventorySkeleton(responseData.AgentID); } XmlWriter writer = XmlWriter.Create(context.Response.OutputStream); responseData.ToXmlRpc(writer); writer.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); } }