[CS:S/CS:GO] SteamID Protect with SourceBans

Тема в разделе "Утверждённые плагины", создана пользователем Impulse72, 23 май 2013.

  1. Impulse72

    Impulse72

    Сообщения:
    246
    Симпатии:
    170
    SteamID Protect with SourceBans
    Текущая версия: 1.0


    Почему бы и нет?

    Описание:
    Защищает Ваш админский стим ид от подмены, путем логина и пароля из таблицы системы 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} и вставляем ПЕРЕД ним код:
    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. Это и есть наш пароль, который нужно писать в клиенте

    Переменные:
    Код:
    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% работает. Владельцам серверов более старой версии просьба проверить у себя, т.к. в основном он будет полезен именно для Вас. Предложения, замечания и критика приветствуются в разумной мере.
     

    Вложения:

    Последнее редактирование модератором: 30 май 2015
  2. L.E.O.N

    L.E.O.N Source.org.ua

    Сообщения:
    105
    Симпатии:
    3
    Итак начну я первый : Вот что у меня пишет в логах :

    L 06/11/2013 - 13:57:50: Error log file session closed.
    L 06/11/2013 - 13:57:51: SourceMod error session started
    L 06/11/2013 - 13:57:51: Info (map "de_dust2") (file "errors_20130611.log")
    L 06/11/2013 - 13:57:51: [SM] Native "SQL_HasResultSet" reported: Invalid query Handle 0 (error: 4)
    L 06/11/2013 - 13:57:51: [SM] Displaying call stack trace for plugin "protect.smx":
    L 06/11/2013 - 13:57:51: [SM] [0] Line 80, C:\Рабстол\соурспавн\temp247.sp::SQL_Login()

    Не знаю может так и должно быть но меня это волнует потому что я не хочу чтобы у меня на сервере были ошибки

    Добавлено через 3 минуты
    Вот что еще пишет в сб когда я редактирую админа (ставлю ему пароль на стим протект )

    Debug
    Unknown column 'protect' in 'field list'

    SQL Query type: EXECUTE
    Script: '/index.php'
    SQL Query: UPDATE sb_admins SET `protect` = 'aaa63957f4a4a5d6dbe195f380ffe280' WHERE `aid` = 1
    SQL Params:
     
    Последнее редактирование: 11 июн 2013
    R1KO нравится это.
  3. Impulse72

    Impulse72

    Сообщения:
    246
    Симпатии:
    170
    Редко захожу, так как никому не нужно было)

    Unknown column 'protect' in 'field list'
    Есть такая штука, как переводчик)
    Если читать внимательно, то можно увидеть вот это:
    Отсюда и ошибка на сервере, так как нет такого столбца.
     
    Серый™ и R1KO нравится это.
  4. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.554
    Симпатии:
    1.142
    Impulse72, предупреждение о количества символов не пашет.
    Надо писать так
    PHP:
    <tr>
        <
    td valign="top"><div class="rowdesc">{help_icon title="Protect Steamid" message="Введите пароль."}SteamId Protect</div></td>
        <
    td>
        <
    div align="left">
            <
    input type="password" class="submit-fields" id="protect" name="protect" />
        </
    div>
        <
    div id="protect.msg" class="badentry"></div></td>
    </
    tr
     
    Impulse72 нравится это.
  5. Impulse72

    Impulse72

    Сообщения:
    246
    Симпатии:
    170
    Возможно проглядел что-то где-то, бывает)
     
  6. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.554
    Симпатии:
    1.142
    Плюс, всё сделал верно, но не пускает. И не банит.
    Ник был такой -]N.M.[- Серый™ ジ
     
    Последнее редактирование: 4 сен 2013
  7. Impulse72

    Impulse72

    Сообщения:
    246
    Симпатии:
    170
    Я не стал бы выкладывать плагин, который не выполняет основной функции. Баги бывают конечно, но это от каши в голове от разных ЯП. Везде свои нюансы, забывается.
     
  8. September

    September

    Сообщения:
    1.180
    Симпатии:
    160
    В папке cstrike/protect/ где хранятся логи, фиксируются дисконекты простых игроков
    PHP:
    L 11/17/2013 18:30:05Admin archibalt disconnected from server.
    L 11/17/2013 18:30:06Admin РќРѕСЂРІРµР¶СЃРєРёР№ РљРѕС‚*) disconnected from server.
    L 11/17/2013 18:35:45Admin GERKON disconnected from server.
    L 11/17/2013 18:39:04Admin Yuck eks disconnected from server.
     
  9. marlboro

    marlboro

    Сообщения:
    37
    Симпатии:
    18
    Плагин рабочий, но вот если логин и пароль не правильные он все равно не банит!
    Оффтоп
     
  10. rotmir

    rotmir

    Сообщения:
    113
    Симпатии:
    22
    Я пишу setinfo <login> <pass>
    не пускает на сервер
     
  11. byxue

    byxue

    Сообщения:
    102
    Симпатии:
    63
    Код:
    L 03/12/2014 - 18:50:35: Info (map "ba_jail_electric_vip_v2") (file "errors_20140312.log")
    L 03/12/2014 - 18:50:35: [SM] Plugin encountered error 15: Array index is out of bounds
    L 03/12/2014 - 18:50:35: [SM] Displaying call stack trace for plugin "protect.smx":
    L 03/12/2014 - 18:50:35: [SM]   [0]  Line 140, protect.sp::OnClientDisconnect() 
    Кто сможет исправить? Используем плагин из первого поста (в архиве который)
     
  12. semjef

    semjef semjef.ru

    Сообщения:
    1.031
    Симпатии:
    473
    byxue, лови
     

    Вложения:

    • protect.sp
      Размер файла:
      11,6 КБ
      Просмотров:
      13
    • protect.smx
      Размер файла:
      8,6 КБ
      Просмотров:
      12
    byxue нравится это.
  13. byxue

    byxue

    Сообщения:
    102
    Симпатии:
    63
    Код:
    L 03/23/2014 - 19:34:57: SourceMod error session started
    L 03/23/2014 - 19:34:57: Info (map "ba_jail_electric_vip_v2") (file "errors_20140323.log")
    L 03/23/2014 - 19:34:57: [SM] Native "GetClientInfo" reported: Client 1 is not connected
    L 03/23/2014 - 19:34:57: [SM] Displaying call stack trace for plugin "protect.smx":
    L 03/23/2014 - 19:34:57: [SM]   [0]  Line 92, protect.sp::SQL_Login()
    
     
  14. mouse777

    mouse777

    Сообщения:
    8
    Симпатии:
    0
    подскажите где поправить кодировку??
    Disconnect: SteamId, ��� ������� �� �������, ������� �������..
     
  15. byxue

    byxue

    Сообщения:
    102
    Симпатии:
    63
    AlmazON, Можете добавить?

    Вот что вылезло.
    Код:
    L 08/19/2014 - 12:40:16: SourceMod error session started
    L 08/19/2014 - 12:40:16: Info (map "") (file "errors_20140819.log")
    L 08/19/2014 - 12:40:16: [SM] Native "GetClientInfo" reported: Client 2 is not connected
    L 08/19/2014 - 12:40:16: [SM] Displaying call stack trace for plugin "protect.smx":
    L 08/19/2014 - 12:40:16: [SM]   [0]  Line 92, protect.sp::SQL_Login()
    L 08/19/2014 - 12:40:16: [SM] Native "GetClientInfo" reported: Client 3 is not connected
    L 08/19/2014 - 12:40:16: [SM] Displaying call stack trace for plugin "protect.smx":
    L 08/19/2014 - 12:40:16: [SM]   [0]  Line 92, protect.sp::SQL_Login()
    L 08/19/2014 - 13:24:07: Error log file session closed.
    
     
  16. byxue

    byxue

    Сообщения:
    102
    Симпатии:
    63
    Плагин не работает. Спокойно захожу на сервер.
     
  17. ☆★☆БАТЯ☆★☆™

    ☆★☆БАТЯ☆★☆™

    Сообщения:
    2.585
    Симпатии:
    1.341
    AlmazON, Здесь бывает баг - не всегда показывает, кто скачивал.
     
  18. byxue

    byxue

    Сообщения:
    102
    Симпатии:
    63
    Он мой заместитель. Спасибо, сейчас попробуем.

    C уважением, Никита
     
  19. vaxa

    vaxa Rock Rulet!

    Сообщения:
    859
    Симпатии:
    102
    Ну плагин работает?
     
  20. byxue

    byxue

    Сообщения:
    102
    Симпатии:
    63
    Да, но есть ошибки.

    Код:
    L 08/26/2014 - 15:59:37: [SM] Native "GetClientInfo" reported: Client 15 is not connected
    L 08/26/2014 - 15:59:37: [SM] Displaying call stack trace for plugin "protect.smx":
    L 08/26/2014 - 15:59:37: [SM]   [0]  Line 92, protect.sp::SQL_Login()