Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2010-07-02 16:36:12

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

MOD: Защита админов и модераторов по IP

По мотивам https://fluxbb.qb7.ru/forum/viewtopic.php?id=1974
----------
1. Меняем файл login.php.
После

    // Update the status if this is the first time the user logged in
    if ($cur_user['group_id'] == PUN_UNVERIFIED)
        $db->query('UPDATE '.$db->prefix.'users SET group_id='.$pun_config['o_default_user_group'].' WHERE id='.$cur_user['id']) or error('Unable to update user status', __FILE__, __LINE__, $db->error());

добавляем

  // перезаписываем ip админа и модератора - Visman
  if ($cur_user['group_id'] == PUN_ADMIN || $cur_user['group_id'] == PUN_MOD)
    $db->query('UPDATE '.$db->prefix.'users SET registration_ip=\''.$db->escape(get_remote_address()).'\' WHERE id='.$cur_user['id']) or error('Unable to update user IP', __FILE__, __LINE__, $db->error());

2. Меняем файл include/functions.php в части ф-ии check_cookie.
После

        // If user authorisation failed
        if (!isset($pun_user['id']) || md5($cookie_seed.$pun_user['password']) !== $cookie['password_hash'])
        {
            $expire = $now + 31536000; // The cookie expires after a year
            pun_setcookie(1, md5(uniqid(rand(), true)), $expire);
            set_default_user();

            return;
        }

добавляем

    // проверка ip админа и модератора - Visman
        if (($pun_user['g_id'] == PUN_ADMIN || $pun_user['g_moderator'] == '1') && $pun_user['registration_ip'] != get_remote_address())
        {
            $expire = $now + 31536000; // The cookie expires after a year
            pun_setcookie(1, md5(uniqid(rand(), true)), $expire);
            set_default_user();

            return;
        }

Редактировался Visman (2010-07-03 12:26:45)

Offline

#2 2010-07-02 22:26:08

artoodetoo
Admin by chance
Зарегистрирован: 2008-09-09
Сообщений: 887
Сайт

Re: MOD: Защита админов и модераторов по IP

Visman, вот такая проверка устарела

$pun_user['g_id'] == PUN_MOD

т.к. в 1.4 может быть несколько модераторских групп.
Сама идея мода понятна. Правда лучше бы проверялся не конкретный IP, а подсеть, т.к. типично пользователь выходит в инет из "домашней" сети где адрес выделяется динамически из некоторого пула.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Offline

#3 2010-07-03 05:49:59

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: MOD: Защита админов и модераторов по IP

Правда лучше бы проверялся не конкретный IP, а подсеть,

В течении одного сеанса связи все равно IP не меняется, т.ч. это не сильно критично.
А с определением подсети наверное возникнут проблемы!?

вот такая проверка устарела

Лучше уж такая, чем совсем модераторов не проверять wink
Или появились другие возможности определения модераторов?

Offline

#4 2010-07-03 12:02:58

artoodetoo
Admin by chance
Зарегистрирован: 2008-09-09
Сообщений: 887
Сайт

Re: MOD: Защита админов и модераторов по IP

В современной функции check_cookie() в include/functions.php есть такое:

        $pun_user['is_admmod'] = $pun_user['g_id'] == PUN_ADMIN || $pun_user['g_moderator'] == '1';

There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Offline

#5 2010-07-03 12:27:24

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: MOD: Защита админов и модераторов по IP

artoodetoo, спасибо!
Поменял в первом посте условие.

Offline

Подвал доски

Под управлением FluxBB. Хостинг Hostens