[РЕШЕНО] IP администратора сделать 127.0.0.1

У вас есть идея для расширения функциональности phpBB 3.0.x? Расскажите о ней здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
ya2538
phpBB 1.2.0
Сообщения: 17
Стаж: 14 лет 4 месяца
Благодарил (а): 11 раз
Поблагодарили: 1 раз

[РЕШЕНО] IP администратора сделать 127.0.0.1

Сообщение ya2538 »

Приветствую

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

как это обычно пишут "поиск по ру.форуму и ру.гуглу ничего не дал, либо я валенок не в состоянии составить грамотный запрос"
натыкался только на аналогичные "вопросы"

Прошу Вашего содействия (или же ссылки с "предупреждением" если я валенок и решение уже давно есть)

====если Вам не интересна тема, дальше можно не читать :)

Как я это "вижу"
при отправке сообщения в базу форума проверяется IP пользователя. так вот, именно в этом моменте нужно перехватить отправку poster_ip, выполняя проверку if group ID = X (ID группы Администраторы) вписывать 0 (localhost, 127.0.0.1) если условия не выполнены - продолжать как обычно.

в дополнение интересует sql запрос либо же скрипт который "подчистит" все записио о IP членов группы "администраторы"

спасибо за внимание

ключевые слова: ip скрыть администратора подмена phpbb 3 phpbb3
Последний раз редактировалось ya2538 24.05.2012 11:04, всего редактировалось 1 раз.
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

Re: IP администратора сделать 127.0.0.1

Сообщение MIT »

ya2538 писал(а):при отправке сообщения в базу форума проверяется IP пользователя. так вот, именно в этом моменте нужно перехватить отправку poster_ip
Неправильный подход сппособен породить кучу проблем. IP надо подменять на этапе создания сессии пользователя, в одном месте, централизованно, а не где попало.

Ну вот, например, можно сделать так:
Open includes/session.php
Find

Код: Выделить всё

				$s_browser = ($config['browser_check']) ? trim(strtolower(substr($this->data['session_browser'], 0, 149))) : '';
Add before

Код: Выделить всё

				switch ($this->data['user_id'])
				{
					case 2:
						$this->ip = $s_ip = $u_ip = '127.0.0.1';
						break;
				}
Где 2 — идентификатор пользователя. Условие можно поставить и другое, например для основателей.


Что бы потереть IP`ы из базы, выполни запросы

Код: Выделить всё

UPDATE phpbb_sessions SET session_ip = '127.0.0.1' WHERE session_user_id = 2

Код: Выделить всё

UPDATE phpbb_users SET user_ip = '127.0.0.1' WHERE user_id = 2

Код: Выделить всё

UPDATE phpbb_posts SET poster_ip = '127.0.0.1' WHERE poster_id = 2

Код: Выделить всё

UPDATE phpbb_log SET log_ip = '127.0.0.1' WHERE user_id = 2
Аватара пользователя
МайскийЖук
phpBB 3.0.7-PL1
Сообщения: 2535
Стаж: 16 лет 11 месяцев
Благодарил (а): 17 раз
Поблагодарили: 366 раз

IP администратора сделать 127.0.0.1

Сообщение МайскийЖук »

Откройте файлы:

/includes/mcp/mcp_front.php
/includes/mcp/mcp_logs.php
/includes/mcp/mcp_notess.php

и во всех них найдите:

Код: Выделить всё

                'IP'            => $row['ip'], 
Во всех этих файлах замените эту строчку на следующую:

Код: Выделить всё

                'IP'            => ($auth->acl_get('a_')) ? $row['ip'] : '', 
Откройте файл /includes/mcp/mcp_main.php и найдите там следующую строчку:

Код: Выделить всё

                    'poster_ip'            => (string) $row['poster_ip'],  
Замените ее на строчку:

Код: Выделить всё

                    'poster_ip'            => ($auth->acl_get('a_')) ? (string) $row['poster_ip'] : '',  
Откройте файл includes/mcp/mcp_post.php и найдите в нем:

Код: Выделить всё

        'POST_IP'                => $post_info['poster_ip'],  
Замените на:

Код: Выделить всё

        'POST_IP'                => ($auth->acl_get('a_')) ?  $post_info['poster_ip'] : '',  
Найдите:

Код: Выделить всё

                'IP'            => $row['poster_ip'],   
Замените на:

Код: Выделить всё

                'IP'            => ($auth->acl_get('a_')) ? $row['poster_ip'] : '',   
Найдите:

Код: Выделить всё

        'POST_IPADDR'            => ($auth->acl_get('m_info',  
Замените на:

Код: Выделить всё

        'POST_IPADDR'            => ($auth->acl_get('a_',  
Найдите:

Код: Выделить всё

        'U_LOOKUP_IP'            => ($auth->acl_get('m_info'  
Замените на:

Код: Выделить всё

        'U_LOOKUP_IP'            => ($auth->acl_get('a_'  
Найдите:

Код: Выделить всё

        'U_WHOIS'                => ($auth->acl_get('m_info',  
Замените на:

Код: Выделить всё

        'U_WHOIS'                => ($auth->acl_get('a_',  
Найдите:

Код: Выделить всё

$template->assign_block_vars('iprow', array(
                'IP'            => $row['poster_ip'],  
                'HOSTNAME'        => $hostname,
                'NUM_POSTS'        => $row['postings'],
                'L_POST_S'        => ($row['postings'] == 1) ? $user->lang['POST'] : $user->lang['POSTS'],
                'U_LOOKUP_IP'    => ($rdns_ip_num == $row['poster_ip'] || $rdns_ip_num == 'all') ? '' : "$url&i=$id&mode=post_details&rdns={$row['poster_ip']}#ip",
                'U_WHOIS'        => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&mode=$mode&action=whois&p=$post_id&ip={$row['poster_ip']}"))
            ); 
Замените на:

Код: Выделить всё

            if ($auth->acl_get('a_')){
            
            $template->assign_block_vars('iprow', array(
                'IP'            => $row['poster_ip'],  
                'HOSTNAME'        => $hostname,
                'NUM_POSTS'        => $row['postings'],
                'L_POST_S'        => ($row['postings'] == 1) ? $user->lang['POST'] : $user->lang['POSTS'],
                'U_LOOKUP_IP'    => ($rdns_ip_num == $row['poster_ip'] || $rdns_ip_num == 'all') ? '' : "$url&i=$id&mode=post_details&rdns={$row['poster_ip']}#ip",
                'U_WHOIS'        => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&mode=$mode&action=whois&p=$post_id&ip={$row['poster_ip']}"))
            );            
            
            }
            else
            {
            
            $template->assign_block_vars('iprow', array(
                'IP'            => '',  
                'HOSTNAME'        => '',
                'NUM_POSTS'        => $row['postings'],
                'L_POST_S'        => ($row['postings'] == 1) ? $user->lang['POST'] : $user->lang['POSTS'],
                'U_LOOKUP_IP'    => '',
                'U_WHOIS'        => '')
            );
            
            } 
Внимание! Как обычно работоспособность не гарантирована. Перед внесением изменений в файлы не забывайте делать резервные копии этих файлов.
Любовь и боль, покой и бой я как любой несу с собой…
ya2538
phpBB 1.2.0
Сообщения: 17
Стаж: 14 лет 4 месяца
Благодарил (а): 11 раз
Поблагодарили: 1 раз

Re: IP администратора сделать 127.0.0.1

Сообщение ya2538 »

МайскийЖук, MIT
спасибо огромное
попробовал Вариант от MIT
все сработало на ура!

МайскийЖук
не могли бы Вы откомментировать что происходит при изменении кодов... я в php профан, у MIT - понятно


для таких же чайников как и я вот код для ГРУПП

кстати поменял в 2х местах (341, 658 строки (у Вас могут быть другие - зависит от модов))
includes/session.php

найти

Код: Выделить всё

				$s_browser = ($config['browser_check']) ? trim(strtolower(substr($this->data['session_browser'], 0, 149))) : '';
добавить перед эти кодом:

Код: Выделить всё

				switch ($this->data['group_id'])
				{
					case 11111:
						$this->ip = $s_ip = $u_ip = '127.0.0.1';
						break;
				}
где 11111 - целевая группа

проверил - все работтает, как и SQL запросы для "подчистки IP"
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: [РЕШЕНО] IP администратора сделать 127.0.0.1

Сообщение Палыч »

ya2538 писал(а):что происходит при изменении кодов..
Решение МайскогоЖука лишает модераторов возможности отслеживания IP, оставляя это право только за администраторами.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Аватара пользователя
МайскийЖук
phpBB 3.0.7-PL1
Сообщения: 2535
Стаж: 16 лет 11 месяцев
Благодарил (а): 17 раз
Поблагодарили: 366 раз

[РЕШЕНО] IP администратора сделать 127.0.0.1

Сообщение МайскийЖук »

Палыч, ну чо уж так извращаться-то? :lol:

Нельзя было написать «Решение МайскогоЖука» или «Решение Майского Жука»? :)
Любовь и боль, покой и бой я как любой несу с собой…
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: [РЕШЕНО] IP администратора сделать 127.0.0.1

Сообщение Палыч »

МайскийЖук
))))))))
Извини, не подумал )))))))))))
Просто щёлкнул по нику и добавил окончание ))))))))
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Аватара пользователя
biro
phpBB 1.4.2
Сообщения: 67
Стаж: 15 лет 10 месяцев
Откуда: Россия
Благодарил (а): 12 раз
Поблагодарили: 3 раза

Re: [РЕШЕНО] IP администратора сделать 127.0.0.1

Сообщение biro »

Заметил такую вещь, когда админ просто заходит на форум, то в Кто сейчас на конференции показывается его настоящий ip адрес. Потом, если войти в админку, то ip подменяется на 127.0.0.1.

Вопрос, как сделать так, чтобы ip подменялся сразу при входе на форум в Кто сейчас на конференции , без необходимости заходить а админ-панель?
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: [РЕШЕНО] IP администратора сделать 127.0.0.1

Сообщение Пчелкин »

МайскийЖук писал(а):Откройте файлы:

/includes/mcp/mcp_front.php
/includes/mcp/mcp_logs.php
/includes/mcp/mcp_notess.php
Феноменально!! Можно теперь модерам открывать опцию "Видеть инфу о сообщениях"
Феноменально!!!
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Dbonz
phpBB 2.0.0
Сообщения: 231
Стаж: 14 лет 2 месяца
Благодарил (а): 25 раз
Поблагодарили: 25 раз

Re: [РЕШЕНО] IP администратора сделать 127.0.0.1

Сообщение Dbonz »

МайскийЖук писал(а):Откройте файл includes/mcp/mcp_post.php и найдите в нем:
Последнее действие в этом файле возвращает конструкцию 'IP' => $row['poster_ip'], и отменяет вторую замену.
Т.е. должно быть 'IP' => ($auth->acl_get('a_')) ? $row['poster_ip'] : '',

Иначе говоря:

Код: Выделить всё

            if ($auth->acl_get('a_')){
            
            $template->assign_block_vars('iprow', array(
                'IP' => ($auth->acl_get('a_')) ? $row['poster_ip'] : '',  
                'HOSTNAME'        => $hostname,
                'NUM_POSTS'        => $row['postings'],
                'L_POST_S'        => ($row['postings'] == 1) ? $user->lang['POST'] : $user->lang['POSTS'],
                'U_LOOKUP_IP'    => ($rdns_ip_num == $row['poster_ip'] || $rdns_ip_num == 'all') ? '' : "$url&i=$id&mode=post_details&rdns={$row['poster_ip']}#ip",
                'U_WHOIS'        => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&mode=$mode&action=whois&p=$post_id&ip={$row['poster_ip']}"))
            );            
            
            }
            else
            {
            
            $template->assign_block_vars('iprow', array(
                'IP'            => '',  
                'HOSTNAME'        => '',
                'NUM_POSTS'        => $row['postings'],
                'L_POST_S'        => ($row['postings'] == 1) ? $user->lang['POST'] : $user->lang['POSTS'],
                'U_LOOKUP_IP'    => '',
                'U_WHOIS'        => '')
            );
            
            }
Или вторую замену в файле просто пропустить мимо?

Есть дырка в жалобах. Виден "IP-адрес для сообщения: ….", на которое жалуются. Как закрыть?

Добавлено спустя 1 час 21 минуту 6 секунд:
И ещё одна дырка, если разрешена блокировка пользователей, то при переходе к блокировки по IP, IP выбранного пользователя автоматом влетает в форму, где указывается диапазон IP или просто IP.

Уважаемые гуру, есть ли вообще в природе способ полностью перекрыть модераторам любую возможность пронюхать IP?

Или новую тему надо было создать?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: [РЕШЕНО] IP администратора сделать 127.0.0.1

Сообщение rxu »

Убить его при инициализации сессии. См. includes/session.php.
Изображение
Аватара пользователя
Dbonz
phpBB 2.0.0
Сообщения: 231
Стаж: 14 лет 2 месяца
Благодарил (а): 25 раз
Поблагодарили: 25 раз

Re: [РЕШЕНО] IP администратора сделать 127.0.0.1

Сообщение Dbonz »

Всё, дошло наконец) Не то начал изначально применять. Большое спасибо!

А в одном "убийстве" сразу несколько ID групп можно перечислить?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: [РЕШЕНО] IP администратора сделать 127.0.0.1

Сообщение rxu »

Да не вопрос. Используйте какой-нибудь in_array(), и всё.
Изображение
Аватара пользователя
Dbonz
phpBB 2.0.0
Сообщения: 231
Стаж: 14 лет 2 месяца
Благодарил (а): 25 раз
Поблагодарили: 25 раз

Re: [РЕШЕНО] IP администратора сделать 127.0.0.1

Сообщение Dbonz »

Вбил так:

Код: Выделить всё

switch ($this->data['group_id'])
				{
				case 1:	
				case 2:
				case 3:
				case 4:
				case 5:
				case 7:
						$this->ip = $s_ip = $u_ip = '127.0.0.1';
						break;
				}
Работает. Но ведь это тоже не вариант, так "стерилизовать". Сам же при желании клонов отследить не сможешь… ;)
Ещё раз спасибо!
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: [РЕШЕНО] IP администратора сделать 127.0.0.1

Сообщение rxu »

Так вы себя, или всех админов исключите из этого фильтра.
Но тогда это опять придется делать уровнем ниже, чем сессии.
Изображение

Вернуться в «Запросы модов для phpBB 3.0.x»