Обновляем форум phpBB 2.0.18 до 2.0.19
# 1
30.12.2005, 21:17
Открываем
modules/Forums/admin/admin_board.php
Находим (19):
PHP код:
$module [ 'General' ][ 'Configuration' ] = " $file " ;
Заменяем на:
PHP код:
$module [ 'General' ][ 'Configuration' ] = $file ;
Находим (194):
PHP код:
"L_MAX_POLL_OPTIONS" => $lang [ 'Max_poll_options' ],
"L_FLOOD_INTERVAL" => $lang [ 'Flood_Interval' ],
"L_FLOOD_INTERVAL_EXPLAIN" => $lang [ 'Flood_Interval_explain' ],
Ниже добавляем:
PHP код:
'L_MAX_LOGIN_ATTEMPTS' => $lang [ 'Max_login_attempts' ],
'L_MAX_LOGIN_ATTEMPTS_EXPLAIN' => $lang [ 'Max_login_attempts_explain' ],
'L_LOGIN_RESET_TIME' => $lang [ 'Login_reset_time' ],
'L_LOGIN_RESET_TIME_EXPLAIN' => $lang [ 'Login_reset_time_explain' ],
'MAX_LOGIN_ATTEMPTS' => $new [ 'max_login_attempts' ],
'LOGIN_RESET_TIME' => $new [ 'login_reset_time' ],
Открываем
modules/Forums/admin/admin_db_utilities.php
Находим (696):
PHP код:
$tables = array( 'auth_access' , 'banlist' , 'categories' , 'config' , 'disallow' , 'forums' , 'forum_prune' , 'groups' , 'posts' , 'posts_text' , 'privmsgs' , 'privmsgs_text' , 'ranks' , 'search_results' , 'search_wordlist' , 'search_wordmatch' , 'sessions' , 'smilies' , 'themes' , 'themes_name' , 'topics' , 'topics_watch' , 'user_group' , 'users' , 'vote_desc' , 'vote_results' , 'vote_voters' , 'words' , 'confirm' );
Заменяем на:
PHP код:
$tables = array( 'auth_access' , 'banlist' , 'categories' , 'config' , 'disallow' , 'forums' , 'forum_prune' , 'groups' , 'posts' , 'posts_text' , 'privmsgs' , 'privmsgs_text' , 'ranks' , 'search_results' , 'search_wordlist' , 'search_wordmatch' , 'sessions' , 'smilies' , 'themes' , 'themes_name' , 'topics' , 'topics_watch' , 'user_group' , 'users' , 'vote_desc' , 'vote_results' , 'vote_voters' , 'words' , 'confirm' , 'sessions_keys' );
Открываем
modules/Forums/admin/admin_disallow.php
Находим (28):
PHP код:
$module [ 'Users' ][ 'Disallow' ] = append_sid ( $filename );
Заменяем на:
PHP код:
$module [ 'Users' ][ 'Disallow' ] = $filename ;
Открываем
modules/Forums/admin/admin_ranks.php
Находим (27):
PHP код:
$module [ 'Users' ][ 'Ranks' ] = " $file " ;
Заменяем на:
PHP код:
$module [ 'Users' ][ 'Ranks' ] = $file ;
Открываем
modules/Forums/admin/admin_styles.php
Находим (30):
PHP код:
$module [ 'Styles' ][ 'Manage' ] = " $file " ;
Заменяем на:
PHP код:
$module [ 'Styles' ][ 'Manage' ] = $file ;
Открываем
modules/Forums/admin/admin_users.php
Находим (180):
PHP код:
message_die ( GENERAL_ERROR , 'Could not delete user from banlist table' , '' , __LINE__ , __FILE__ , $sql );
}
Ниже добавляем:
PHP код:
$sql = "DELETE FROM " . SESSIONS_TABLE . "
WHERE session_user_id = $user_id " ;
if ( ! $db -> sql_query ( $sql ) )
{
message_die ( GENERAL_ERROR , 'Could not delete sessions for this user' , '' , __LINE__ , __FILE__ , $sql );
}
$sql = "DELETE FROM " . SESSIONS_KEYS_TABLE . "
WHERE user_id = $user_id " ;
if ( ! $db -> sql_query ( $sql ) )
{
message_die ( GENERAL_ERROR , 'Could not delete auto-login keys for this user' , '' , __LINE__ , __FILE__ , $sql );
}
Находим (234):
PHP код:
$username = ( !empty( $HTTP_POST_VARS [ 'username' ]) ) ? trim ( strip_tags ( htmlspecialchars ( $HTTP_POST_VARS [ 'username' ]))) : '' ;
Заменяем на:
PHP код:
$username = ( !empty( $HTTP_POST_VARS [ 'username' ]) ) ? phpbb_clean_username ( $HTTP_POST_VARS [ 'username' ]) : '' ;
Находим (407):
PHP код:
if( @ file_exists (@ phpbb_realpath ( "./" . $board_config [ 'avatar_path' ] . "/" . $this_userdata [ 'user_avatar' ])) )
{
@ unlink ( "./" . $board_config [ 'avatar_path' ] . "/" . $this_userdata [ 'user_avatar' ]);
Заменяем на:
PHP код:
if( @ file_exists (@ phpbb_realpath ( './../' . $board_config [ 'avatar_path' ] . "/" . $this_userdata [ 'user_avatar' ])) )
{
@ unlink ( './../' . $board_config [ 'avatar_path' ] . "/" . $this_userdata [ 'user_avatar' ]);
Открываем
modules/Forums/admin/admin_words.php
Находим (28):
PHP код:
$module [ 'General' ][ 'Word_Censor' ] = " $file " ;
Заменяем на:
PHP код:
$module [ 'General' ][ 'Word_Censor' ] = $file ;
Открываем
modules/Forums/admin/index.php
Находим (63):
Заменяем на:
Находим (237):
PHP код:
if( preg_match ( "/^(3\.23|4\.)/" , $version ) )
{
$db_name = ( preg_match ( "/^(3\.23\.[6-9])|(3\.23\.[1-9][1-9])|(4\.)/" , $version ) ) ? "` $dbname `" : $dbname ;
Заменяем на:
PHP код:
if( preg_match ( "/^(3\.23|4\.|5\.)/" , $version ) )
{
$db_name = ( preg_match ( "/^(3\.23\.[6-9])|(3\.23\.[1-9][1-9])|(4\.)|(5\.)/" , $version ) ) ? "` $dbname `" : $dbname ;
Открываем
includes/bbcode.php
Находим (203):
PHP код:
$patterns [] = "#\[url\]([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\[/url\]#is" ;
$replacements [] = $bbcode_tpl [ 'url1' ];
// [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
$patterns [] = "#\[url\]((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\[/url\]#is" ;
Заменяем на:
PHP код:
$patterns [] = "#\[url\]([\w]+?://([\w\#$%&~/.\-;:=,?@\]+]|\[(?!url=))*?)\[/url\]#is" ;
$replacements [] = $bbcode_tpl [ 'url1' ];
// [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
$patterns [] = "#\[url\]((www|ftp)\.([\w\#$%&~/.\-;:=,?@\]+]|\[(?!url=))*?)\[/url\]#is" ;
Находим (255):
PHP код:
$text = bbencode_first_pass_pda ( $text , $uid , '/\[quote=(\\\".*?\\\")\]/is' , '[/quote]' , '' , false , '' , "[quote: $uid =\\1]" );
Заменяем на:
PHP код:
$text = bbencode_first_pass_pda ( $text , $uid , '/\[quote=\\\\"(.*?)\\\\"\]/is' , '[/quote]' , '' , false , '' , "[quote: $uid =\\\"\\1\\\"]" );
Находим (392):
PHP код:
if( preg_match ( '#\[quote=\\\"#si' , $possible_start , $match ) && ! preg_match ( '#\[quote=\\\"(.*?)\\\"\]#si' , $possible_start ) )
{
// OK we are in a quote tag that probably contains a ] bracket.
// Grab a bit more of the string to hopefully get all of it..
if ( $close_pos = strpos ( $text , '"]' , $curr_pos + 9 ))
{
if ( strpos ( substr ( $text , $curr_pos + 9 , $close_pos - ( $curr_pos + 9 )), '[quote' ) === false )
{
$possible_start = substr ( $text , $curr_pos , $close_pos - $curr_pos + 2 );
Заменяем на:
PHP код:
if( preg_match ( '#\[quote=\\\"#si' , $possible_start , $match ) && ! preg_match ( '#\[quote=\\\"(.*?)\\\"\]#si' , $possible_start ) )
{
// OK we are in a quote tag that probably contains a ] bracket.
// Grab a bit more of the string to hopefully get all of it..
if ( $close_pos = strpos ( $text , '"]' , $curr_pos + 14 ))
{
if ( strpos ( substr ( $text , $curr_pos + 14 , $close_pos - ( $curr_pos + 14 )), '[quote' ) === false )
{
$possible_start = substr ( $text , $curr_pos , $close_pos - $curr_pos + 7 );
Открываем
modules/Forums/common.php
Находим (223):
PHP код:
message_die ( GENERAL_MESSAGE , 'Please ensure both the install/ and contrib/ directories are deleted' );
Заменяем на:
PHP код:
message_die ( GENERAL_MESSAGE , 'Please_remove_install_contrib' );
Открываем
includes/functions.php
Находим (161):
PHP код:
$sql .= ( ( is_integer ( $user ) ) ? "user_id = $user " : "username = '" . $user . "'" ) . " AND user_id <> " . ANONYMOUS ;
Заменяем на:
PHP код:
$sql .= ( ( is_integer ( $user ) ) ? "user_id = $user " : "username = '" . str_replace ( "\'" , "''" , $user ) . "'" ) . " AND user_id <> " . ANONYMOUS ;
Открываем
includes/functions_post.php
Находим (28):
PHP код:
$html_entities_match = array( '#&(?!(\#[0-9]+;))#' , '#<#' , '#>#' );
$html_entities_replace = array( '&' , '<' , '>' );
Заменяем на:
PHP код:
$html_entities_match = array( '#&(?!(\#[0-9]+;))#' , '#<#' , '#>#' , '#"#' );
$html_entities_replace = array( '&' , '<' , '>' , '"' );
Открываем
modules/Forums/usercp_confirm.php
Находим (156):
PHP код:
if (!empty( $HTTP_GET_VARS [ 'c' ]))
{
$_png = define_raw_pngs ();
$char = substr ( $code , intval ( $HTTP_GET_VARS [ 'c' ]) - 1 , 1 );
header ( 'Content-Type: image/png' );
header ( 'Cache-control: no-cache, no-store' );
echo base64_decode ( $_png [ $char ]);
unset( $_png );
exit;
}
Заменяем на:
PHP код:
$_png = define_raw_pngs ();
$char = substr ( $code , - 1 );
header ( 'Content-Type: image/png' );
header ( 'Cache-control: no-cache, no-store' );
echo base64_decode ( $_png [ $char ]);
unset( $_png );
exit;
Открываем
includes/usercp_register.php
Находим (110):
PHP код:
$strip_var_list = array( 'username' => 'username' , 'email' => 'email' , 'icq' => 'icq' , 'aim' => 'aim' , 'msn' => 'msn' , 'yim' => 'yim' , 'website' => 'website' , 'location' => 'location' , 'occupation' => 'occupation' , 'interests' => 'interests' );
$strip_var_list [ 'confirm_code' ] = 'confirm_code' ;
Заменяем на:
PHP код:
$strip_var_list = array( 'email' => 'email' , 'icq' => 'icq' , 'aim' => 'aim' , 'msn' => 'msn' , 'yim' => 'yim' , 'website' => 'website' , 'location' => 'location' , 'occupation' => 'occupation' , 'interests' => 'interests' , 'confirm_code' => 'confirm_code' );
Находим (126):
PHP код:
$trim_var_list = array( 'cur_password' => 'cur_password' , 'new_password' => 'new_password' , 'password_confirm' => 'password_confirm' , 'signature' => 'signature' );
Выше добавляем:
PHP код:
$username = ( !empty( $HTTP_POST_VARS [ 'username' ]) ) ? phpbb_clean_username ( $HTTP_POST_VARS [ 'username' ]) : '' ;
Находим (301):
PHP код:
if ( $row [ 'code' ] != $confirm_code )
Выше добавляем:
PHP код:
// Only compare one char if the zlib-extension is not loaded
if (!@ extension_loaded ( 'zlib' ))
{
$row [ 'code' ] = substr ( $row [ 'code' ], - 1 );
}
Открываем
modules/Forums/language/lang_english/lang_admin.php
Находим (749):
Выше добавляем:
PHP код:
//
// Login attempts configuration
//
$lang [ 'Max_login_attempts' ] = 'Allowed login attempts' ;
$lang [ 'Max_login_attempts_explain' ] = 'The number of allowed board login attempts.' ;
$lang [ 'Login_reset_time' ] = 'Login lock time' ;
$lang [ 'Login_reset_time_explain' ] = 'Time in minutes the user have to wait until he is allowed to login again after exceeding the number of allowed login attempts.' ;
Открываем
modules/Forums/language/lang_english/lang_main.php
Находим (1021):
Выше добавляем:
PHP код:
$lang [ 'Login_attempts_exceeded' ] = 'The maximum number of %s login attempts has been exceeded. You are not allowed to login for the next %s minutes.' ;
$lang [ 'Please_remove_install_contrib' ] = 'Please ensure both the install/ and contrib/ directories are deleted' ;
Открываем
modules/Forums/language/lang_russian/lang_admin.php
Находим (749):
Выше добавляем:
PHP код:
//
// Login attempts configuration
//
$lang [ 'Max_login_attempts' ] = 'Позволить попытки логина' ;
$lang [ 'Max_login_attempts_explain' ] = 'Число позволенных попыток логина на форуме.' ;
$lang [ 'Login_reset_time' ] = 'Время блокировки логина' ;
$lang [ 'Login_reset_time_explain' ] = 'Время в минутах, которое пользователь будет выжидать, пока ему не позволят залогинится снова, после превышения числа позволенных попыток логина.' ;
Открываем
modules/Forums/language/lang_english/lang_main.php
Находим (1021):
Выше добавляем:
PHP код:
$lang [ 'Login_attempts_exceeded' ] = 'Максимальный число %s попыток логина было превышен. Вы не сможете залогинится в течение следующих %s минут.' ;
$lang [ 'Please_remove_install_contrib' ] = 'Пожалуйста убедитесь в том что директории install/ и contrib/ удалены' ;
Открываем
modules/Forums/login.php
Находим (60):
PHP код:
$sql = "SELECT user_id, username, user_password, user_active, user_level
Заменяем на:
PHP код:
$sql = "SELECT user_id, username, user_password, user_active, user_level, user_login_tries, user_last_login_try
Находим (79):
PHP код:
if( md5 ( $password ) == $row [ 'user_password' ] && $row [ 'user_active' ] )
Выше добавляем:
PHP код:
// If the last login is more than x minutes ago, then reset the login tries/time
if ( $row [ 'user_last_login_try' ] && $board_config [ 'login_reset_time' ] && $row [ 'user_last_login_try' ] < ( time () - ( $board_config [ 'login_reset_time' ] * 60 )))
{
$db -> sql_query ( 'UPDATE ' . USERS_TABLE . ' SET user_login_tries = 0,
user_last_login_try = 0 WHERE user_id = ' . $row [ 'user_id' ]);
$row [ 'user_last_login_try' ] = $row [ 'user_login_tries' ] = 0 ;
}
// Check to see if user is allowed to login again... if his tries are exceeded
if ( $row [ 'user_last_login_try' ] && $board_config [ 'login_reset_time' ] &&
$board_config [ 'max_login_attempts' ] && $row [ 'user_last_login_try' ] >= ( time () - ( $board_config [ 'login_reset_time' ] * 60 )) && $row [ 'user_login_tries' ] >= $board_config [ 'max_login_attempts' ])
{
message_die ( GENERAL_MESSAGE , sprintf ( $lang [ 'Login_attempts_exceeded' ], $board_config [ 'max_login_attempts' ], $board_config [ 'login_reset_time' ]));
}
Находим (97):
PHP код:
$admin = (isset( $HTTP_POST_VARS [ 'admin' ])) ? 1 : 0 ;
$session_id = session_begin ( $row [ 'user_id' ], $user_ip , PAGE_INDEX , FALSE , $autologin , $admin );
Ниже добавляем:
PHP код:
// Reset login tries
$db -> sql_query ( 'UPDATE ' . USERS_TABLE . ' SET user_login_tries = 0, user_last_login_try = 0 WHERE user_id = ' . $row [ 'user_id' ]);
Находим (115):
PHP код:
$redirect = ( !empty( $HTTP_POST_VARS [ 'redirect' ]) ) ? str_replace ( '&' , '&' , htmlspecialchars ( $HTTP_POST_VARS [ 'redirect' ])) : '' ;
$redirect = str_replace ( '?' , '&' , $redirect );
Выше добавляем:
PHP код:
// Save login tries and last login
if ( $row [ 'user_id' ] != ANONYMOUS )
{
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_login_tries = user_login_tries + 1, user_last_login_try = ' . time () . '
WHERE user_id = ' . $row [ 'user_id' ];
$db -> sql_query ( $sql );
}
Открываем
modules/Private_Messages/index.php
Находим (38):
PHP код:
$html_entities_match = array( '#&(?!(\#[0-9]+;))#' , '#<#' , '#>#' );
$html_entities_replace = array( '&' , '<' , '>' );
Заменяем на:
PHP код:
$html_entities_match = array( '#&(?!(\#[0-9]+;))#' , '#<#' , '#>#' , '#"#' );
$html_entities_replace = array( '&' , '<' , '>' , '"' );
Открываем
modules/Forums/templates/subSilver/admin/board_config_body.tpl
Находим (59):
Код HTML:
<td class="row2" > <input class="post" type="text" size="3" maxlength="4" name="flood_interval" value="{FLOOD_INTERVAL}" /> </td>
</tr>
Ниже добавляем:
Код HTML:
<tr>
<td class="row1" > {L_MAX_LOGIN_ATTEMPTS}<br /> <span class="gensmall" > {L_MAX_LOGIN_ATTEMPTS_EXPLAIN}</span> </td>
<td class="row2" > <input class="post" type="text" size="3" maxlength="4" name="max_login_attempts" value="{MAX_LOGIN_ATTEMPTS}" /> </td>
</tr>
<tr>
<td class="row1" > {L_LOGIN_RESET_TIME}<br /> <span class="gensmall" > {L_LOGIN_RESET_TIME_EXPLAIN}</span> </td>
<td class="row2" > <input class="post" type="text" size="3" maxlength="4" name="login_reset_time" value="{LOGIN_RESET_TIME}" /> </td>
</tr>
Открываем
modules/Forums/templates/subSilver/admin/index_body.tpl
Находим (46):
Код HTML:
<td class="row2" > <b> {GZIP_COMPRESSION}</b> </td>
</tr>
</table>
Ниже добавляем:
Код HTML:
<h1> {L_VERSION_INFORMATION}</h1>
{VERSION_INFO}
<br />
Находим и удаляем (87):
Код HTML:
<h1> {L_VERSION_INFORMATION}</h1>
{VERSION_INFO}
<br />
Выполняем SQL-запрос (замените префикс nuke_ на свой):
Код:
INSERT INTO nuke_bbconfig (config_name, config_value) VALUES ('max_login_attempts', '5');
INSERT INTO nuke_bbconfig (config_name, config_value) VALUES ('login_reset_time', '30');
UPDATE nuke_bbconfig SET config_value='.0.19' where config_name='version';
Вот и всё, апгрейт форума до версии 2.0.19 успешно завершен
Не задавай глупых вопросов, если сам можешь на них ответить. [url]www.GTA.ru[/url] - лучший сайт по GTA в Россие!
31.12.2005, 12:38
имхо абсолютно бессмысленное обновление.
ибо у все нормальных людей уже давно стоят аналогичные моды
31.12.2005, 13:02
Цитата
ибо у все нормальных людей уже давно стоят аналогичные моды
а при чем здесь моды??
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".
31.12.2005, 13:13
Ну это обновление добавляет функцию запрета максимального количества попыток захода в аккаунт на форуме, хотя для bbtonuke это нафиг не надо, в общем короче просто надо ставить что бы обновить версию, темболее 2.0.20 должна точно из себя что то представлять.
Не задавай глупых вопросов, если сам можешь на них ответить. [url]www.GTA.ru[/url] - лучший сайт по GTA в Россие!
31.12.2005, 18:13
Цитата: Сообщение от Soniks
а при том что с 2 модами выполняющими туже функцию что и это обновление оно конфликтует.
тем более сам принцип блокирования атакующего реализован тупо по первобытному. т.е. блокируется не ип атакующего а тот ник к которому подбирают пароль
мой выбор из щиты такого рода Protect user account блокировка атакующего идет по ип (с обновлением до 2.1.19 неконфликтует)
31.12.2005, 19:39
ssmol обновление предоставлено не только вам, а всем пользователям, и у большинства не стоят ни какие моды
разумнее "банить" по логину, а не по паролю, т.к. спуфиры спокойно меняют проксю в таком случаи и продолжают перебор к уязвимому акаунту.
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".
31.12.2005, 19:52
Soniks да я и неговорю что оно ненадо (обновление) (и себе го прикрутил на один из дыух пхпбб) просто высказал мнение что странное оно
а поповожу проксей ну блоклст прокси пока никто неотменял :) хотя конечно понятно это дикая нгрузка на хостинг и многие хостеры пошлют нах с такой нагрузкой
да и брутфорс акаунта юзера это баловство самих же юзеров (типа почитать что другой в пм пишет) и ничего более ибо даже на акаунт админа админ пароль и пароль обычный Должны различатся. это элементарные правила. так же как и то что например модерами должны быть только люди определенного уровня знаний веб технологий но это имхо ибо реализовать это на практике такое малореально (не у всех есть возможность сидеть в админ панели 24/7 и в модерах и младшем админе иметь програмеров :) )
Опции темы
Поиск в этой теме
Опции просмотра
Линейный вид
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 11:01 .