Туториал [урок] система авторизации клиента

  • Автор темы Автор темы byxar
  • Дата начала Дата начала
Код:
<?php
    $salt  = JUserHelper::genRandomPassword(32);
    $crypt = JUserHelper::getCryptedPassword('11111', $salt);
    $password = $crypt.':'.$salt;
?>

вроде такой вот алгоритм шифрования у joomla 1.5 например.
а как шифруешь ты?
 
А почему в этом лаунчере нельзя играть оффлайн? Пишет, что игра не загружена.
Как это изменить?
в папке bin нет файла version, который создается при обновлении
1 вопрос как сделать так чтоб было 2 кнопки обновиться 1 обновляла по обычному пути 2 по совершено другому плз в лс
это не ко мне, я в java не силен
и регу на сайт можно как пример с юзаньем файла connect.php?
попозже зделаю
bad login =\ при on-line=true .
Launcher к базе коннектится - гуд. клиент запускается.

Сервер соединение не дает. =\
у мя пишет плохой логин
вот вам скрипты для проверки системы. закидываете в папку к скриптам auth.php, joinserver.php, checkserver.php.
заходите на index1.php и вводите логин, пароль, в поле версии пишете 13. ответ должен быть в таком виде:
Код:
цифры:цифры:ваш_логин:нужные_цифры:
копируете нужные цифры(что что после логин, без :, если выдало что то другое - не правильно настроили.

заходите на index2.php. вводите логин, сессия - сюда вводите те нужные цифры, что скопировали, сервер - введите 1. если получили ОК, значит все нормально, иначе проверяйте настройки.

теперь переходите на index3.php и вводите логин, сервер - введите 1. если YES, значит скрипт работает нормально, иначе проверяйте настройки.
 

Вложения

мб мне кто-нибудь поможет заставить лаунчер считывать md5 от Joomla 1.7 ?
 
Не получается зайти на сервер. Пишет "User not premium".
В лаунчере все верно (5 раз перепроверил).
Думаю дело в буккитовском классе.

InClassTrnslator
Сохраняю строчку
Код:
http://icraft.su/auth/checkserver.php?user=
Он пишет просто
Код:
http://icraft.su/auth/checkserver.php?user

По дефолту в буккит было
Код:
http://session.minecraft.net/game/checkserver.jsp?user-
Изменяю на
Код:
http://icraft.su/auth/checkserver.php?user-
Все равно одно и то же. Как исправить? Совсем руки опустились(

Еще заметил что если в браузере зайти на
Код:
http://icraft.su/auth/checkserver.php?user=VareZzZ
Он мне пишет
Код:
NO
Так и должно быть?
 
да. кроме юзера передаётся ещё пароль и может ещё что-то, не помню

byxar, эт не под тебя я launcherN037 делал с полем пароля и затачивал под эту систему?
 
Не получается зайти на сервер. Пишет "User not premium".
В лаунчере все верно (5 раз перепроверил).
Думаю дело в буккитовском классе.

InClassTrnslator
Сохраняю строчку
Код:
http://icraft.su/auth/checkserver.php?user=
Он пишет просто
Код:
http://icraft.su/auth/checkserver.php?user

По дефолту в буккит было
Код:
http://session.minecraft.net/game/checkserver.jsp?user-
Изменяю на
Код:
http://icraft.su/auth/checkserver.php?user-
Все равно одно и то же. Как исправить? Совсем руки опустились(
после user должно быть =, и только он.
Еще заметил что если в браузере зайти на

Код:
[URL]http://icraft.su/auth/checkserver.php?user=VareZzZ[/URL]
Он мне пишет

Код:
NO
Так и должно быть?
да, помимо логина еще посылается ид сервера
да. кроме юзера передаётся ещё пароль и может ещё что-то, не помню

byxar, эт не под тебя я launcherN037 делал с полем пароля и затачивал под эту систему?
нет, я твоими услугами еще не пользовался, но начальные исходники брал отсюда и редактровал
 
мб мне кто-нибудь поможет заставить лаунчер считывать md5 от Joomla 1.7 ?
Приведи файл auth.php к такому виду
PHP:
<?php
define('INCLUDE_CHECK',true);
require_once 'functions.php';
include ("connect.php");
$login=$_POST['user'];
$password=$_POST['password'];
$ver=$_POST['version'];

        if(getGameInfo('launcher') == $ver){

            $result = mysql_query("SELECT $db_columnPass FROM $db_table WHERE $db_columnUser='$login'") or die ("Запрос к базе завершился ошибкой."); //извлекаем из базы все данные о пользователе с введенным логином
                $myrow = mysql_fetch_array($result);
                $realPass = $myrow[$db_columnPass];
                $realPass = $realPass[0];
                $parts = explode( ':', $realPass);

                if (count($parts) < 2) $checkPass = md5($password);
                else
                {
                    $salt = $parts[1];
                    $checkPass = md5($password . $salt) . ":" . $salt;
                }

                if ($checkPass == $realPass)
                {
                    $sessid = generateSessionId();
                    $gamebuild=getGameInfo('build');

                    mysql_query("UPDATE $db_table SET $db_columnSesId='$sessid' WHERE $db_columnUser = '$login'") or die ("Запрос к базе завершился ошибкой.");

                    $dlticket = md5($login);
                    echo $gamebuild.':'.$dlticket.':'.$login.':'.$sessid.':';
                }
            else {
                echo "Bad login";
                }
        }
        else{
            echo 'Old version';
            }
?>
P.S. Скрипт не проверял могут быть ошибки (если что исправлю), но где-то месяц назад интегрировал лаунчер с joomla 1.7 все работало.
 
с первого раза получилось =\
У меня тоже оказывается всё получалось. Но всеравно говорит что User not premium.
Я решил копнуть глубже - поставил сниффер.
Снифф увидел пакет

Код:
http://session.minecraft.net/game/joinserver.jsp?user=VareZzZ&sessionId=2***********47594&serverId=98d2************
тоесть даже к ссылке
Код:
http://icraft.su/auth/checkserver.php?user=
он и не притрагивается. Как же так?
Надо бы найти эту ссылку и изменить)
 
UfaRock, ты не модифицировал клиент, прочитай первое сообщение еще раз.
P.S. к joinserver.jsp обращается клиент а не сервер.
 
UfaRock, ты не модифицировал клиент, прочитай первое сообщение еще раз.
P.S. к joinserver.jsp обращается клиент а не сервер.
Вот что значит жестко тупанул =D
Кстати. В клиенте можно ссылку заменить с помощью InClassTranslator
имя класса для смены ссылки - wt.class
 
Приведи файл auth.php к такому виду

PHP:
<?php
define
('INCLUDE_CHECK',true);
require_once
'functions.php';
include (
"connect.php");
$login=$_POST['user'];
$password=$_POST['password'];
$ver=$_POST['version'];

if(
getGameInfo('launcher') == $ver){

$result = mysql_query("SELECT $db_columnPass FROM $db_table WHERE $db_columnUser='$login'") or die ("Запрос к базе завершился ошибкой."); //извлекаем из базы все данные о пользователе с введенным логином
$myrow = mysql_fetch_array($result);
$realPass = $myrow[$db_columnPass];
$realPass = $realPass[0];
$parts = explode( ':', $realPass);

if (
count($parts) < 2) $checkPass = md5($password);
else
{
$salt = $parts[1];
$checkPass = md5($password . $salt) . ":" . $salt;
}

if (
$checkPass == $realPass)
{
$sessid = generateSessionId();
$gamebuild=getGameInfo('build');

mysql_query("UPDATE $db_table SET $db_columnSesId='$sessid' WHERE $db_columnUser = '$login'") or die ("Запрос к базе завершился ошибкой.");

$dlticket = md5($login);
echo
$gamebuild.':'.$dlticket.':'.$login.':'.$sessid.':';
}
else {
echo
"Bad login";
}
}
else{
echo
'Old version';
}
?>

P.S. Скрипт не проверял могут быть ошибки (если что исправлю), но где-то месяц назад интегрировал лаунчер с joomla 1.7 все работало.
не помогло, щя попробую кое что ещё.
 
General, да действительно была ошибка.
В файл functions.php добавил поддержку пароля от joomla 1.6-1.7 (надеюсь автор не против)
P.S. General, файл auth.php модифицировать не нужно.
 

Вложения

Вот что значит жестко тупанул =D
Кстати. В клиенте можно ссылку заменить с помощью InClassTranslator
имя класса для смены ссылки - wt.class
в разных версиях этотфайл назыветься по разному
 
General, да действительно была ошибка.
В файл functions.php добавил поддержку пароля от joomla 1.6-1.7 (надеюсь автор не против)
P.S. General, файл auth.php модифицировать не нужно.
конечно не против, я только за
 
Кто может интегрировать эту систему с IPB?
 
Назад
Верх