Jump to content

Martali

Newbie
  • Content Count

    2
  • Joined

  • Last visited

  • Feedback

    N/A

Community Reputation

0

About Martali

  • Rank
    Только пришел
  1. Спасибо за подсказку, ElectroMyStyle.
  2. Доброго времени суток. Не могу разобраться, как работает связь обвязки Ghtweb 5.1.3 (взята с Github'a) и ява-сборки jts 2018 года. Сам логин и игровой сервер запущены и работают. Развернул и настроил Ghtweb 5, отображает онлайн сервера, список игроков, топ ПВП/ПК. Проблема с созданием аккаунта на сайте. После успешной регистрации, учётные данные принимаются сайтом. Стоит зайти на логин сервер, даже до выбора сервера, в ЛК на сайт уже не попасть. Опытным путём и чтением результатов запроса в Гугл, причиной считаю разную генерацию хэшей БД сайта и логин сервера. При авторизации на сайте хэш имеет такой вид: faf200037c7b4290662d57f0ee59a450 (поле hash_auth), на логин сервере — fEqNCco3Yq9h5ZUglD3CZJT4lBs=(поле password). После авторизации на логин сервере значение поле password становится вида — sha1:1000:BKUtFOSowxjReuJ2InqAesCMSOOmUo3q:RckmG3A/AGEG3TODiYTgsCWjz6+/UqyW и зайти в ЛК на сайте больше нельзя. В настройках логин-сервера на ghtweb стоит тип шифрования sha1, в конфиге логин сервера, так же стоит sha1. Менял настройки на whirpool и в ght и в логин сервере. Поведение не поменялось, только в указанных выше полях поначалу меняется вид строки хэша, но поле password в БД логин сервера всегда имеет вид sha1:1000:BKUtFOSowxjReuJ2InqAesCMSOOmUo3q:RckmG3A/AGEG3TODiYTgsCWjz6+/UqyW после первой авторизации в нём(ЛС). Кто сталкивался с подобным, прошу подсказать, как исправить или куда копать? Прикрепляю фрагменты Lineage.php и LoginForm.php с каталога ghtweb'a, так как там в коде встречается passwordEncrypt PHP: # /** * Шифровка пароля * * @param $password * * @return string */ public function passwordEncrypt($password) { if ($this->config('password_type') == Ls::PASSWORD_TYPE_WHIRLPOOL) { return base64_encode(hash('whirlpool', $password, true)); } return base64_encode(pack('H*', sha1(utf8_encode($password)))); } PHP: // Аккаунт на сервере найден if ($account) { if ($account['password'] == $l2->passwordEncrypt($this->getPassword())) { // Аккаунта на сайте нет, создаю его так как на сервере он уже есть if (!$siteAccount) { $email = null; $columnNames = $l2->getDb() ->getSchema() ->getTable('accounts') ->getColumnNames(); if (is_array($columnNames)) { foreach ($columnNames as $column) { if (strpos($column, 'mail') !== false && isset($account[$column])) { $email = $account[$column]; } } } // В таблице с аккаунтами нет поля с Email. Нет смысла регать дальше аккаунт на сайте if (!$email) { throw new Exception('Аккаунт не найден'); } // Создаю аккаунт на сайте $userModel = Users::create($login, $email, Users::STATUS_ACTIVATED, $lsId, Users::ROLE_DEFAULT); $userModel->save(false); $siteAccountUserId = $userModel->user_id; } $found = true; } } // Аккаунт не найден if (!$found) { if ($siteAccountUserId) { UsersAuthLogs::model()->addErrorAuth($siteAccountUserId); } $this->incrementBadAttempt(); $this->addError($attr, 'Неправильный Логин или Пароль.'); } } catch (Exception $e) { $this->addError('login', $e->getMessage()); } }
×
×
  • Create New...