private void auth() { AuthBtn.IsEnabled = false; TEmail.IsEnabled = false; TPassword.IsEnabled = false; using (HttpRequest request = new HttpRequest()) { try { RequestParams data = new RequestParams(); data["email"] = TEmail.Text; data["password"] = Crypto.Sha256(Encoding.UTF8.GetBytes(TPassword.Password)); data["hwid"] = HWID.GetSign(TEmail.Text); data["game_id"] = ClientData.GameId; string result = request.Post($"{ClientData.AppDomain}/api/login", data).ToString(); ServerResponse <UserData> response = JsonConvert.DeserializeObject <ServerResponse <UserData> >(result); Clipboard.SetText(JsonConvert.SerializeObject(response)); switch (response.code) { case ServerCodes.API_CODE_GAME_NOT_FOUND: throw new Exception("Игра не найдена!"); case ServerCodes.API_CODE_USER_NOT_FOUND: throw new Exception("Пользователь не найден"); case ServerCodes.API_CODE_SUBSCRIPTION_EXPIRY: throw new Exception("Не найдено активной подписки!"); case ServerCodes.API_CODE_HWID_ERROR: throw new Exception("Аккаунт привязан к другому устройству"); case ServerCodes.API_CODE_USER_BLOCKED: throw new Exception("Возможности аккаунта ограничены!"); case ServerCodes.API_CODE_SUBSCRIPTION_DUPLICATE: throw new Exception("На ваше устройство уже оформлена подписка на эту же игру"); case ServerCodes.API_CODE_OK: ClientData.Logged = true; ClientData.Data = response.data; if (CBSave.IsChecked.HasValue && CBSave.IsChecked.Value) { Properties.Settings.Default.login = TEmail.Text; Properties.Settings.Default.password = TPassword.Password; Properties.Settings.Default.Save(); } Close(); break; default: throw new Exception($"Неизвестная ошибка: {response.code}"); } } catch (Exception ex) { AuthMessage.Content = ex.Message; SnackbarMessage.IsActive = true; } finally { AuthBtn.IsEnabled = true; TEmail.IsEnabled = true; TPassword.IsEnabled = true; } } }
private void MainForm_Loaded(object sender, RoutedEventArgs e) { TVersion.Content += ClientData.VERSION; _hwid = HWID.GetSign(); WebSocket ws = new WebSocket("wss://skinchanger.cc/api/software_v2/"); ServerRequest <AuthData> sr = new ServerRequest <AuthData>() { data = new AuthData { hwid = _hwid }, type = "demoConnect" }; ws.OnError += (o, argc) => { startStatus(false, "Ошибка"); }; ws.OnMessage += (o, args) => { JObject obj = JObject.Parse(args.Data); switch (obj["type"].ToString()) { case "demoConnect": switch (obj["status"].ToObject <ServerCodes>()) { case ServerCodes.API_CODE_OK: if (obj["data"]["version"].ToObject <int>() > ClientData.LAST_UPDATE) { showMessage("Вышло новое обновление! Загрузите новую версию с нашего сайта.", "Скачать", "open_url", ClientData.SKINCHANGER_CC); startStatus(false, "Вышло обновление"); return; } Dispatcher?.Invoke(() => { TOnline.Content = obj["data"]["online"].ToString(); BStartButton.IsEnabled = true; checkSkinChangerStarted(); }); break; case ServerCodes.API_CODE_PROHIBDED: checkSkinChangerStarted(); break; } break; case "online": Dispatcher?.Invoke(() => { TOnline.Content = obj["data"]["online"].ToString(); }); break; case "update": showMessage("Вышло новое обновление! Загрузите новую версию с нашего сайта.", "Скачать", "open_url", ClientData.SKINCHANGER_CC); startStatus(false, "Вышло обновление"); break; } }; ws.Connect(); ws.Send(JsonConvert.SerializeObject(sr)); _timer.Interval = TimeSpan.FromSeconds(1); _timer.Tick += (o, args) => { IntPtr hWnd = NativeMethods.FindWindowA(IntPtr.Zero, "Counter-Strike: Global Offensive"); if (hWnd == IntPtr.Zero) { _status = false; Dispatcher?.Invoke(() => { startStatus(true, "Запустить"); }); } }; }