public static void Exception(string error) { Console.WriteLine(error); using (StreamWriter writer = new StreamWriter(Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "error.txt"), true)) writer.WriteLine("[{0}] {1}", DateTime.Now.ToString("o"), error); logger.Error(error); ControlsManager.SetStatus("Fatal error occured! Please, send logs to developers."); }
private void MainForm_Loaded(object sender, RoutedEventArgs e) { ControlsManager.DisableLoginButton(); Task.Run(() => { logger.Info("Connecting to server"); ControlsManager.SetStatus("Connecting to auth&login server..."); Client.Connect(); logger.Info("Waiting for connection"); ControlsManager.SetStatus("Waiting for connection..."); while (!Client.IsConnected() && Client.State != Client.ClientState.Offline) { } if (Client.IsConnected()) { logger.Info("Requesting launcher update"); Client.RequestLauncherUpdate(); logger.Info("Waiting launcher to update"); UpdateManager.LauncherUpdate.WaitOne(); logger.Info("Requesting clients data"); Client.RequestClients(); logger.Info("Requesting clients files data"); Client.RequestClientsFiles(); } else { ControlsManager.SetLoginButtonOffline(); } ControlsManager.SetStatus("Ready"); ControlsManager.EnableLoginButton(); }); }
public static async Task Login(string username, string password) { if (Client.IsConnected()) { if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password)) { logger.Warn("No login data entered to request auth"); ControlsManager.SetStatus("Enter login and password!"); return; } string clientName = ControlsManager.GetSelectedClientName(); if (string.IsNullOrEmpty(clientName)) { logger.Error("Client not selected!"); ControlsManager.SetStatus("Select client!"); return; } ControlsManager.DisableLoginButton(); logger.Info("Requesting client update"); ClientsData.Client client = Config.Instance.Clients.Clients.First(c => c.Name == clientName); ControlsManager.SetStatus("Checking for updates..."); await UpdateManager.UpdateClient(client); logger.Info("Waiting client updates to finish"); ControlsManager.SetStatus("Updating..."); await Task.Run(() => { UpdateManager.ClientUpdate.WaitOne(); }); logger.Info("Client updating done"); ControlsManager.SetStatus("Ready"); logger.Info("Updating config with current login data"); Config.Instance.Username = username; string passHash = Config.Instance.PassHash == password ? Config.Instance.PassHash : CryptoUtils.CalculateStringVersaHash(password); Config.Instance.PassHash = passHash; string session = Anticheat.Session; logger.Info("Requesting auth"); ControlsManager.SetStatus("Requesting auth..."); Client.SendAuth(session, username, passHash); logger.Info("Launching Minecraft"); ControlsManager.SetStatus("Launching Minecraft..."); Anticheat.HideLauncher(); var minecraft = Start(username, session, client.Server, client.Path); if (Config.Instance.WindowedFullscreen) { EnableWindowedFullscreen(minecraft); } Anticheat.Protect(); logger.Info("All jobs done"); System.Windows.Application.Current.Shutdown(); } // TODO: offline mode }