Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Безопасность (http://forum.mynuke.ru/forumdisplay.php?f=13)
-   -   Обновляем форум phpBB 2.0.11 до 2.0.12 (http://forum.mynuke.ru/showthread.php?t=17)

Soniks 23.02.2005 04:22

Обновляем форум phpBB 2.0.11 до 2.0.12
 
Если вы производили какие-либо изменения в коде форума, то вам тогда проще обновить самим (вручную), а иначе просто скачайте BBtoNuke 2.0.12 и скопируйте в дерикторию с нюкой.

Обновляем вручную:

Открываем modules/Forums/admin/admin_db_utilities.php
Находим (~733):
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'); 

Заменяем на:
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'); 


Открываем modules/Forums/admin/index.php
Находим (~597):
PHP код:
 "L_NO_GUESTS_BROWSING" => $lang['No_users_browsing'])
     );


Ниже добавляем:
PHP код:
 // Check for new version
$current_version explode('.''2' $board_config['version']);
$minor_revision = (int) $current_version[2];
 
$errno 0;
$errstr $version_info '';
 
if (
$fsock = @fsockopen('www.phpbb.com'80$errno$errstr))
{
     @
fputs($fsock"GET /updatecheck/20x.txt HTTP/1.1\r\n");
     @
fputs($fsock"HOST: www.phpbb.com\r\n");
     @
fputs($fsock"Connection: close\r\n\r\n");
 
     
$get_info false;
     while (!@
feof($fsock))
     {
         if (
$get_info)
         {
            
$version_info .= @fread($fsock1024);
         }
         else
         {
            if (@
fgets($fsock1024) == "\r\n")
            {
             
$get_info true;
            }
         }
     }
     @
fclose($fsock);
 
     
$version_info explode("\n"$version_info);
     
$latest_head_revision = (int) $version_info[0];
     
$latest_minor_revision = (int) $version_info[2];
     
$latest_version = (int) $version_info[0] . '.' . (int) $version_info[1] . '.' . (int) $version_info[2];
 
     if (
$latest_head_revision == && $minor_revision == $latest_minor_revision)
     {
         
$version_info '<p style="color:green">' $lang['Version_up_to_date'] . '</p>';
     }
     else
     {
         
$version_info '<p style="color:red">' $lang['Version_not_up_to_date'];
         
$version_info .= '<br />' sprintf($lang['Latest_version_info'], $latest_version) . sprintf($lang['Current_version_info'], '2' $board_config['version']) . '</p>';
     }
}
else
{
     if (
$errstr)
     {
         
$version_info '<p style="color:red">' sprintf($lang['Connect_socket_error'], $errstr) . '</p>';
     }
     else
     {
         
$version_info '<p>' $lang['Socket_functions_disabled'] . '</p>';
     }
}
 
$version_info .= '<p>' $lang['Mailing_list_subscribe_reminder'] . '</p>';
 
 
$template->assign_vars(array(
     
'VERSION_INFO' => $version_info,
     
'L_VERSION_INFORMATION' => $lang['Version_information'])
); 

Открываем modules/Forums/common.php
Находим (~56):
PHP код:
 $test = array('HTTP_GET_VARS' => NULL'HTTP_POST_VARS' => NULL'HTTP_COOKIE_VARS' => NULL'HTTP_SERVER_VARS' => NULL'HTTP_ENV_VARS' => NULL'HTTP_POST_FILES' => NULL); 


Заменяем на:
PHP код:
 $test = array('HTTP_GET_VARS' => NULL'HTTP_POST_VARS' => NULL'HTTP_COOKIE_VARS' => NULL'HTTP_SERVER_VARS' => NULL'HTTP_ENV_VARS' => NULL'HTTP_POST_FILES' => NULL'phpEx' => NULL'phpbb_root_path' => NULL); 

Находим (~72):
PHP код:
 else if (@ini_get('register_globals') == '1' || strtolower(@ini_get('register_globals')) == 'on')
{
// PHP4+ path 

Ниже добавляем:
PHP код:
 $not_unset = array('HTTP_GET_VARS''HTTP_POST_VARS''HTTP_COOKIE_VARS''HTTP_SERVER_VARS''HTTP_SESSION_VARS''HTTP_ENV_VARS''HTTP_POST_FILES''phpEx''phpbb_root_path''name''admin''nukeuser''user''no_page_header'); 

Находим (~82):
PHP код:
 unset($input['input']);
 
while (list(
$var,) = @each($input))
if (
$var != 'phpbb_root_path' && $var != 'no_page_header' && $var != 'phpEx' && $var != 'admin' && $var != 'user' && $var != 'name' && $var != 'nukeuser')
{
unset($
$var);


Заменяем на:
PHP код:
 unset($input['input']);
unset(
$input['not_unset']);
while (list(
$var,) = @each($input))
{
     if (!
in_array($var$not_unset))
     {
         unset($
$var);
     }


Находим (~225):
PHP код:
 $client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : $REMOTE_ADDR ); 

Заменяем на:
PHP код:
 $client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : getenv('REMOTE_ADDR') ); 


Открываем includes/functions.php
Находим (~85):
PHP код:
 $username htmlspecialchars(rtrim(trim($username), "\\"));
$username substr(str_replace("\\'""'"$username), 025);
$username str_replace("'""\\'"$username); 

Заменяем на:
PHP код:
 $username substr(htmlspecialchars(str_replace("\'""'"trim($username))), 025);
$username phpbb_rtrim($username"\\"); 
$username str_replace("'""\'"$username); 

Находим (~90):
PHP код:
 return $username;


Ниже добавляем:
PHP код:
 // added at phpBB 2.0.12 to fix a bug in PHP 4.3.10 (only supporting charlist in php >= 4.1.0)
function phpbb_rtrim($str$charlist false)
{
if (
$charlist === false)
{
     return 
rtrim($str);
}
 
$php_version explode('.'PHP_VERSION);
 
// php version < 4.1.0
if ((int) $php_version[0] < || ((int) $php_version[0] == && (int) $php_version[1] < 1))
{
     while (
$str{strlen($str)-1} == $charlist)
     {
         
$str substr($str0strlen($str)-1);
     }
}
else
{
     
$str rtrim($str$charlist);
}
 
return 
$str;


Находим (~634):
PHP код:
 $debug_text .= '</br /><br />Line : ' $err_line '<br />File : ' $err_file

Заменяем на:
PHP код:
 $debug_text .= '</br /><br />Line : ' $err_line '<br />File : ' basename($err_file); 

Soniks 23.02.2005 04:23

продолжаем...
 
Открываем includes/page_tail.php
Находим (~78):
PHP код:
 'PHPBB_VERSION' => '2' $board_config['version'], 

Заменяем на:
PHP код:
 // 'PHPBB_VERSION' => '2' . $board_config['version'], 

Открываем includes/template.php
Находим (~274):
PHP код:
 $filename phpbb_realpath($this->root '/' $filename); 

Заменяем на:
PHP код:
 $filename = ($rp_filename phpbb_realpath($this->root '/' $filename)) ? $rp_filename $filename

Открываем includes/usercp_avatar.php
Находим (~56):
PHP код:
 {
global 
$board_config$userdata

После добавляем:
PHP код:
 $avatar_file basename($avatar_file); 

Находим (~72):
PHP код:
 function user_avatar_gallery($mode, &$error, &$error_msg$avatar_filename)
{
global 
$board_config

После добавляем:
PHP код:
 $avatar_filename str_replace(array('../''..\\''./''.\\'), ''$avatar_filename);
if (
$avatar_filename{0} == '/' || $avatar_filename{0} == "\\")
{
     return 
'';


Находим (~237):
PHP код:
 $move_file 'copy';
         } 

После добавляем:
PHP код:
 if (!is_uploaded_file($avatar_filename))
         {
            
message_die(GENERAL_ERROR'Unable to upload file'''__LINE____FILE__);
         } 

Открываем includes/usercp_register.php
Находим (~462):
PHP код:
 $avatar_mode = ( !empty($user_avatar_name) ) ? 'local' 'remote'

Заменяем на:
PHP код:
 $avatar_mode = (empty($user_avatar_name)) ? 'remote' 'local'

Открываем modules/Forums/language/lang_english/lang_admin.php
Найдите (~727):
PHP код:
 //
// That's all Folks!
// ------------------------------------------------- 

До этого добавьте:
PHP код:
 //
// Version Check
//
$lang['Version_up_to_date'] = 'Your installation is up to date, no updates are available for your version of phpBB.';
$lang['Version_not_up_to_date'] = 'Your installation does <b>not</b> seem to be up to date. Updates are available for your version of phpBB, please visit <a href="http://www.phpbb.com/downloads.php" target="_new">http://www.phpbb.com/downloads.php</a> to obtain the latest version.';
$lang['Latest_version_info'] = 'The latest available version is <b>phpBB %s</b>.';
$lang['Current_version_info'] = 'You are running <b>phpBB %s</b>.';
$lang['Connect_socket_error'] = 'Unable to open connection to phpBB Server, reported error is:<br />%s';
$lang['Socket_functions_disabled'] = 'Unable to use socket functions.';
$lang['Mailing_list_subscribe_reminder'] = 'For the latest information on updates to phpBB, why not <a href="http://www.phpbb.com/support/" target="_new">subscribe to our mailing list</a>.';
$lang['Version_information'] = 'Version Information'


Откройте modules/Forums/language/lang_russian/lang_admin.php
Найдите (~713):
PHP код:
 //
// That's all Folks!
// ------------------------------------------------- 

До этого добавьте:
PHP код:
 //
// Проверка Версии
//
$lang['Version_up_to_date'] = 'У вас установленна последняя версия, никакие обновления не доступны для вашей версии phpBB .';
$lang['Version_not_up_to_date'] = 'Ваша версия <b>устарела</b> и нуждается в обновление. Обновите свой форум phpBB, скачайте <a href="http://www.phpbb.com/downloads.php" target="_new">http://www.phpbb.com/downloads.php</a> последнюю версию здесь.';
$lang['Latest_version_info'] = 'Последняя доступная версия <b>phpBB %s</b>.';
$lang['Current_version_info'] = 'У вас установленна <b>phpBB %s</b>.';
$lang['Connect_socket_error'] = 'Невозможно соеденится с phpBB Сервером, ошибка:<br />%s';
$lang['Socket_functions_disabled'] = 'Не возможно использовать функцию сокета.';
$lang['Mailing_list_subscribe_reminder'] = 'Что бы узнать почему не доступна последняя версия phpBB, <a href="http://www.phpbb.com/support/" target="_new">напешите письмо в службу поддержки</a>.';
$lang['Version_information'] = 'Информация О Версии'

Откройте modules/Forums/templates/subSilver/admin/index_body.tpl
Найдите (~77):
PHP код:
 </table>
 
<
br /> 

После добавьте:
PHP код:
 <h1>{L_VERSION_INFORMATION}</h1>
 
{
VERSION_INFO}
 
<
br /> 

Откройте themes/DeepBlue/forums/overall_footer.tpl
Найдите (~11):
PHP код:
 Powered by <a href="http://www.phpbb.com/" target="_phpbb" class="copyright">phpBB</a
{
PHPBB_VERSION} &copy2001-2003 phpBB Group<br

Замените на:
PHP код:
 Powered by <a href="http://www.phpbb.com/" target="_phpbb" class="copyright">phpBB</a> &copy20012005 phpBB Group<br /> 

Откройте themes/DeepBlue/forums/simple_footer.tpl
Найдите (~11):
PHP код:
 Powered by <a href="http://www.phpbb.com/" target="_phpbb" class="copyright">phpBB</a
{
PHPBB_VERSION} &copy2001-2003 phpBB Group<br

Замените на:
PHP код:
 Powered by <a href="http://www.phpbb.com/" target="_phpbb" class="copyright">phpBB</a> &copy20012005 phpBB Group<br /> 

Откройте modules/Forums/viewtopic.php
Найдите (~510):
PHP код:
 unset($words);
 
$highlight urlencode($HTTP_GET_VARS['highlight']); 

Ниже добавьте:
PHP код:
 $highlight_match phpbb_rtrim($highlight_match"\\"); 


Если установлен Патч 2.9, то
Найдите (~22):
PHP код:
 if (!eregi("modules.php"$_SERVER['PHP_SELF'])) {
        die (
"You can't access this file directly...");
    } 

Замените на:
PHP код:
 if ( !defined('MODULE_FILE') ) 

die(
"You can't access this file directly..."); 



Выполните SQL запрос:
Код:
UPDATE `nuke_bbconfig` SET `config_value` = '.0.12' WHERE `config_name` = 'version' LIMIT 1

в место nuke_ вставте свой префикс таблицы!


На этом закончена Модернизация Вашего форума phpBB 2.0.11 до версии phpBB 2.0.12!:wink:

Lionell 26.02.2005 21:23

Fatal error: Call to undefined function: encode_ip() in t:\home\www.brofj.ru\www\modules\forums\common.php on line 217

Куда копировать? по подробнее плз

Soniks 26.02.2005 21:57

поставь сначала патч 2.9 а потом уже ставь обновление форума.
а копировать все надо в корень с нюкой

ArapovUV 01.03.2005 15:41

PHP-Nuke 7.5 Patched 2.9
При замене bbtonuke 2.11 на 2.13
не удается зайти в панель администрирования
выдает сообщение:
Fatal error: Call to undefined function: encode_ip() in ...l/modules/Forums/common.php on line 220

если возвращаю в .../modules/Forum/ файлы из PHP-Nuke 7.5 Patched 2.9 - все работает нормально

:angry: уж больно влом в руки пачить )))

Soniks 01.03.2005 16:23

я надеюсь, сначало было установленно bbtonuke 2.12, а затем bbtonuke 2.13

ArapovUV 02.03.2005 11:33

ессно

ArapovUV 02.03.2005 11:37

причем засада началась с 12 версии и продолжилась на 13

ArapovUV 02.03.2005 12:02

Сам нашел
/modules/Forums/common.php line 192
// NOTE: If using Nuke Patched 2.9 comment out the next two lines and uncomment the third line
global $forum_admin;
if ($forum_admin == 1) {
//if (defined('FORUM_ADMIN')) {
// @include("../../../db/db.php");
@include("../../../includes/constants.php");
@include("../../../includes/template.php");

Soniks 02.03.2005 12:33

ArapovUV
ну так и должно быть!, где ты там нашел вот эту строчку я, не знаю :)
Цитата // NOTE: If using Nuke Patched 2.9 comment out the next two lines and uncomment the third line

проглядел все BBtoNuke так и не нашел...


Часовой пояс GMT +4, время: 19:23.

Copyright © 2005 by Soniks