- Автор ресурса
- #1
SteamID Protect with SourceBans
Оу, ребятки. Может все таки найдется хороший человек который сможет совместить SourceBans с SteamID Protect? Особенно пользователям 34й версии нужен этот плагин, и без него сервера подвергаются риску подбора ИДа.
Сам то я ничего не понимаю в этом всем, но примерно хотелось бы видеть работу плагина как то так:
Список всех администраторов из SourceBans лежит в таблице "sb_admins", вот что бы с этой таблицы брались значения : user (Ник админа в СБ), authid(STEAM_ID), password(Пароль от профиля СБ) и генерировался список администраторов в файл steamprotect.txt. И что бы при каждом изменении таблицы (удалили\добавили админа) - такие же происходили изменения и в файле.
Конечно пароли от СБ в бд хранятся в кодировке, но я не знаю, возможно ли эти то пароли использовать...
Примерно как то так...
Я думаю что многие будут признательны тому, кто это все осуществит
Почему бы и нет?
Описание:
Защищает Ваш админский стим ид от подмены, путем логина и пароля из таблицы системы SourceBans.
Требования:
Поддерживаются игры:
- Только CS: Source
Перед тем как зайти нужно написать в консоли, либо сразу закинуть в autoexec.cfg:
setinfo <1> <2>, где 1 - это Ваш логин в системе, 2 - пароль.
Хочу заметить, что пароль не от учетной записи, а тот, который Вы введете в детальных настройках админа после установки.
Установка:
Ну, во-первых, файлы плагина нужно раскидать по папкам. Думаю, что ни у кого трудностей с этим не выйдет.
В databases.cfg нужно добавить:
PHP:
"Protect"
{
"driver" "mysql"
"database" "Ваша база SB"
"user" "Ваш логин от базы"
"pass" "Ваш пароль от базы"
}
Во-вторых, веб часть. Договоримся, что картинки, на которые я буду ссылаться, находятся в архиве в папке image.
Предисловие. Почему нельзя просто использовать пароль от учетной записи системы? Все очень просто: Одинаковые пароли уже не есть хорошо; в серверной части недоступен механизм шифрования, который используется разрабами для шифрования пароля (sha1), но зато доступен другой. Мы будем использовать md5 + соль.
Для начала, отредактируем таблицу "sb_admins", добавив новое поле "protect", в котором и будет хранится наш пароль. Тип - varchar, размер - 128. В Navicat`е это выглядит как на картинке 1.
Далее, нужно изменить файлы системы, чтобы можно было устанавливать пароль. Как это сделать есть в архиве в текстовом файле Task.txt, но я продублирую и тут.
Открываем файл шаблона с названием page_admin_edit_admins_details.tpl.
Через поиск (Ктрл+ф3) находим {/if} и вставляем ПЕРЕД ним код:
Открываем includes/СUserManager.php.
После функции encrypt_password, на всякий случай ее код:
Вставляем похожую функцию:
Самые большие изменения потерпит файл admin.edit.admindetails.php, что находится в папке pages.
ПЕРЕД:
Вставляем
ПЕРЕД
Дописываем:
И последний простенький шаг: ПОСЛЕ
рисуем
Через поиск (Ктрл+ф3) находим {/if} и вставляем ПЕРЕД ним код:
PHP:
<tr>
<tr>
<td valign="top"><div class="rowdesc">{help_icon title="Protect Steamid" message="Type your password again to confirm."}SteamId Protect</div></td>
<td>
<div align="left">
<input type="password" class="submit-fields" id="protect" name="protect" />
</div>
</tr>
Открываем includes/СUserManager.php.
После функции encrypt_password, на всякий случай ее код:
PHP:
function encrypt_password($password, $salt=SB_SALT)
{
return sha1(sha1($salt . $password));
}
PHP:
function encrypt_password2($password, $salt, $salt1)
{
return md5($password . $salt . $salt1);
}
Самые большие изменения потерпит файл admin.edit.admindetails.php, что находится в папке pages.
ПЕРЕД:
PHP:
}
// Only proceed, if there are no errors in the form
if($error == 0)
{
PHP:
if(!empty($_POST['protect']))
{
$protect_changed = true;
if(strlen($_POST['protect']) < 3)
{
$error++;
$errorScript .= "$('protect.msg').innerHTML = 'Your password must be at-least 3 characters long.';";
$errorScript .= "$('protect.msg').setStyle('display', 'block');";
}
}
ПЕРЕД
PHP:
// set the basic fields
$edit = $GLOBALS['db']->Execute("UPDATE ".DB_PREFIX."_admins SET
`user` = ?, `authid` = ?, `email` = ?
WHERE `aid` = ?", array($a_name, $a_steam, $a_email, $_GET['id']));
PHP:
if($protect_changed)
{
$name = $_POST['adminname'];
$edit = $GLOBALS['db']->Execute("UPDATE ".DB_PREFIX."_admins SET
`protect` = ?
WHERE `aid` = ?", array($userbank->encrypt_password2($_POST['protect'], $name[0], $name[2]), $_GET['id']));
}
И последний простенький шаг: ПОСЛЕ
PHP:
$serverpw_changed = false;
PHP:
$protect_changed = false;
Хочу подчеркнуть, что "готовые файлы" в архиве сделаны из свежескаченной сборки с сайта разработчиков, но тем не менее, возможно, Вам помогут разобраться.
Ничего сложного нет, если включить голову. В итоге у нас появится штука, изображенная на рисунке 2. Это и есть наш пароль, который нужно писать в клиенте
Переменные:
C-подобный:
ps_ban - При "1" будет банить тех, кто попытался зайти с подменой. Бан по IP.
ps_ban_time - Длительность бана в минутах. Не имеет смысла ставить 0, так как далеко не у всех статичный IP. Это лишь усложнит жизнь "мего-хацкеру".
ps_logs_dir - директория логов относительно cstrike. Каждый день там будет появлятся файл и будут совершаться записи о успешном или не очень заходе админов на сервер.
ps_serverid - сервер ID для этого сервера. Находится в cfg системы. Я не совсем понял структуру, но вроде бы если -1, то все админы, что зареганы в SB имеют там админ права. Если иное число, то только те админы, у которых стоит "галочка" напротив этого сервера в SB. Поправьте, если не прав.
P.S.И еще кое что. Я протестировал плагин только на OB версии CSS и он 100% работает. Владельцам серверов более старой версии просьба проверить у себя, т.к. в основном он будет полезен именно для Вас. Предложения, замечания и критика приветствуются в разумной мере.
Последнее редактирование модератором: