Установка torrenpier на freebsd

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Гость
проходил мимо

Установка torrenpier на freebsd

Непрочитанное сообщение Гость » 2011-01-13 20:17:47

Установка torrenpier на freebsd.
Решил написать статью, тк в рунете нашел только одну статью и ту не совсем верную и не ориентированную на новичков.
Самому пришлось потратить много времени чтобы это все наладить, тк с фрей дружу не очень давно, с остальным линуксом вообще незнаком.
Ниже будет представлена установка и минимальная настройка трекера до состояния "более-менее". ^_^
В статье активно использованы мануалы найденные на просторах инета. Текст ориентирован непосредственно на новичков, подразумевается некий навык общения с Webmin'ом.
(Некоторые решения описаны непосредственным выполнением через Вебмин, если не хотите его использовать - гуглите на тему как это делается в консоли. Но вообще вроде так все предельно разжевал)))

Нам понадобятся:
-Apache;
-Mysql;
-PHP5;
-PHP5-extensions;
-Движок торента;

1) Установка Mysql (Советую обратится к другим мануалам по установке, например из статьи на сайте лиссяры, тк этот способ я не проверял - у меня уже стоял до этого mysql)

Ставим 5 версию и из портов.

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

cd /usr/ports/databases/mysql50-server/
make && make install && make clean
По окончании инсталляции, создаем конфиг для mysql в /usr/local/etc/my.cnf

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

# Опции для всех клиентов MySQL
[client]
# Пароль для подключения к БД
#password       = your_password
# Порт на котором висит MySQL
port            = 3306
# Сокет MySQL
socket          = /tmp/mysql.sock


# Опции MySQL-сервера
[mysqld]
# Порт
port            = 3306
# Адрес, который будем слушать (если вам не нужно подключаться к
# MySQL с других машин, то оставьте здесь 127.0.0.1)
bind-address    = 127.0.0.1
# Где лежит сокет
socket          = /tmp/mysql.sock
# Не использовать средства системных блокировок.
skip-locking
#
#Расчет идет из 1/4 от оперативки,но не больше 1/2 иначе будут
#скидыватся на жесткий временные файлы, что повлечет снижение 
#производительности
key_buffer = 256K
# Максимальный размер одного пакета
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K
skip-networking
skip-innodb
skip-bdb
server-id       = 1
#Логи
# Файл должен существовать, с соответствующими правами на него:
# touch /var/log/mysql.log
# chown mysql:wheel /var/log/mysql.log
# chmod 640 /var/log/mysql.log
log            = /var/log/mysql.log
[mysqldump]
# Если задан этот параметр, то обработчик таблицы при выполнении
# удаления не будет объединять индексы - в некоторых случаях это
# может ускорить данную операцию
quick
# Максимальная величина пакета, посылаемого/принимаемого с сервера
max_allowed_packet = 16M

[mysql]
# Отключает автоматическое рехеширование. rehash следует использовать
# для получения хеша таблиц и полей. Это обеспечивает более
# быстрый старт mysql.
no-auto-rehash
# Опция, которую рекомендуется раскомментить начинающим :)
# Разрешает выполнять только операции UPDATE и DELETE, используя ключи.
#safe-updates

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
# Допускать простой длительностью interactive_timeout секунд (вместо
# wait_timeout секунд) перед закрытием данного соединения.
interactive-timeout
Добавляем в автозагрузку записав в /etc/rc.conf

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

mysql_enable="YES"
Установка стандартной базы, запуск и установка пароля:

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

/usr/local/bin/mysql_install_db --user=mysql
/usr/local/bin/mysqld_safe --user=mysql&usr/local/bin/mysqladmin -u root password 'new-password'
2) Установка Apache (версия 2.2)

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

cd /usr/ports/www/apache22
make install clean
Правим конфиг апача:

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

ee /usr/local/etc/apache22/httpd.conf
(новые строки лучше дописать внизу, а не в середине. так же лучше это сделать из консоли, либо из Webmin'а: Службы - веб сервер Апач - вкладка Global configuration - Редактирование файла настроек.):
Изображение

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

<VirtualHost *:80>
        AddType application/x-httpd-php .php .php3
Action application/x-httpd-php /cgi-bin/php-cgi
Alias /имя_трекера "/usr/local/www/имя_трекера"
DocumentRoot /usr/local/www/имя_трекера
<Directory "/usr/local/www/имя_трекера">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ServerName имя_любое
ScriptAlias /cgi-bin/ "/usr/local/www/apache22/cgi-bin/"
</VirtualHost>
3)Установка PHP5:

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

cd /usr/ports/lang/php5 && make config
Выбираем в меню: Apache, zend multibye support.
Устанавливаем.

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

cd /usr/ports/lang/php5 && make install clean
Модуль сам пропишется в конфиге апача.

4) PHP5-extensions
Теперь к нашему модулю соберем расширение

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

cd /usr/ports/lang/php5-extensions && make config
выбираем в меню
Bcmath, bz2, curl, ftp, gd, iconv, mbstring, sockets, MYSQL, zlib
Ставим:

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

cd /usr/ports/lang/php5-extensions && make install clean
Создаем и редактируем конфиг:

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

cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini
ee /usr/local/etc/php.ini
Меняем конфиг взависимости от конфигурации ПК:
#Lite

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

safe_mode = Off
safe_mode_gid = On
max_execution_time = 20
max_input_time = 40
memory_limit = 10M
upload_max_filesize = 5M
Register_Globals off
#Full

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

Safe_mode = Off
safe_mode_gid = On
max_execution_time = 60
max_input_time = 60
memory_limit = 48M
post_max_size = 12M
upload_max_filesize = 8M
Register_Globals off
Ну все в принципе связка установлена, запускаем смотрим работает или нет.
Далее качаем движок торента,если конечно он у вас не закачен заранее, распаковываем, соблюдая директории
(в частности нужно распаковать папку forum и bt).

Устанавливаем права доступа на данные папки, подпапки в них и файлы 777:

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

chmod 777 /usr/local/www/pekarnya/forum/ajax
и так далее все папки по порядку:
- ajax
- ajax/html
- images
- images/avatars
- images/avatars/gallery
- images/flags
- images/logo
- images/ranks
- images/smiles
- cache
- cache/filecache/*
- files
- files/thumbs
- log
- pictures
- triggers


Либо с помощью вебмина:
Прочее - Менеджер файлов (для корректного отображения русского языка должна стоять кодировка Russian CP1251 в Webmin - Сменить язык и тему) - Кнопка Свойства на панели сверху и ставим галочки:
Изображение

Создаем базу данных

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

mysql -u root -p 
вводим свой пароль

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

CREATE DATABASE имя_базы_торрента;
quit;
Заливаем дамп

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

mysqldump -u root -p torrent</usr/local/www/имя_трекера/mysql.sql
Либо можно через webmin выбрать Создание новой базы, ввести имя, Character set - utf8, Создать.
Изображение
Далее следует зайти в Редактирование базы, выбрать исполнить sql - в окне выбрать файл *.sql который был скачан вместе с торрентом. можно выбрать с расположения на сервере, можно загрузить с другого пк.
Изображение

Правим файл конфигурации /usr/local/www/имя_трекера/forum/config.php
Необходимо отредактировать следующие строки

// Database
$dbhost = 'localhost';
$dbname = 'torrent'; \\Изменить имя базы данных на свое
$dbuser = 'root'; \\Имя пользователя mysql
$dbpasswd = 'пароль'; \\Пароль доступа к бд
$dbcharset = 'cp1251'; \\Кодировка


Все можно заходить на трекер http://айпи/имя_трекера

логин admin пароль admin

ИСПРАВЛЕНИЕ ОШИБОК:

- По умолчанию из браузера Опера невозможно залогинится. Это решается следующим путем:

поставить в /forum/config.php

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

$bb_cfg['cookie_domain'] = '';
$bb_cfg['cookie_path']   = '/';
- После запуска трекера при попытке зайти на него появиться сообщение: Форум временно отключен ,подождите 45 секунд!
Это не ошибка,это обновление cron'a!

- Решаем косяк с установкой времени (или часовых поясов)! Трекер работает нормально, но сверху сыпятся ошибки!

Отредактировать файл /usr/local/etc/php.ini и поместить в следующую строку:

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

date.timezone = "Europe/Moscow"
- Не регистрирует торрент
Необходимо разрешить регистрацию торрентов в Админке
http://i3.fastpic.ru/big/2009/1023/47/2 ... 221847.jpg[/IMG


- Не добавляет скачанный файл в торрент-клиент:

находим файл download.php
в нем ищем такой код:

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

if (preg_match('/Opera(\/| )([0-9].[0-9]{1,2})/', $HTTP_USER_AGENT, $log_version))
{
	$browser_version = $log_version[2];
	$browser_agent = 'opera';
}
else if (preg_match('/MSIE ([0-9].[0-9]{1,2})/', $HTTP_USER_AGENT, $log_version))
{
	$browser_version = $log_version[1];
	$browser_agent = 'ie';
}
else if (preg_match('/OmniWeb\/([0-9].[0-9]{1,2})/', $HTTP_USER_AGENT, $log_version))
{
	$browser_version = $log_version[1];
	$browser_agent = 'omniweb';
}
else if (preg_match('/Netscape([0-9]{1})/', $HTTP_USER_AGENT, $log_version))
{
	$browser_version = $log_version[1];
	$browser_agent = 'netscape';
}
else if (preg_match('/Mozilla\/([0-9].[0-9]{1,2})/', $HTTP_USER_AGENT, $log_version))
{
	$browser_version = $log_version[1];
	$browser_agent = 'mozilla';
}
else if (preg_match('/Konqueror\/([0-9].[0-9]{1,2})/', $HTTP_USER_AGENT, $log_version))
{
	$browser_version = $log_version[1];
	$browser_agent = 'konqueror';
}
else
{
	$browser_version = 0;
	$browser_agent = 'other';
}
Удаляем либо комментируем весь этот кусок (последнее предпочтительнее),
а вместо него добавляем:

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

$browser_agent="other";
if (strpos($HTTP_USER_AGENT, "MSIE") !== false ) $browser_agent='ie';
if (strpos($HTTP_USER_AGENT, "Opera") !== false ) $browser_agent='opera';
if (strpos($HTTP_USER_AGENT, "FireFox") !== false ) $browser_agent='firefox';
if (strpos($HTTP_USER_AGENT, "Netscape") !== false ) $browser_agent='netscape';
if (strpos($HTTP_USER_AGENT, "OmniWeb") !== false ) $browser_agent='omniweb';
if (strpos($HTTP_USER_AGENT, "Mozilla") !== false ) $browser_agent='mozilla';
if (strpos($HTTP_USER_AGENT, "Konqueror") !== false ) $browser_agent='konqueror';
- Каждые ~10 секунд браузер долго загружает страницу: работает крон.
Простая привязка его к системному крону:

Создать в папке файл /имя_трекера/forum/cron.php со следущим текстом:

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

<?php

define('FORCE_CRON', true);
require('./common.php');
exit;
Отключаем в конфиге запуск крона - в файле /forum/confing.php изменяем:

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

$bb_cfg['cron_enabled']        = true;
на 
Код:
$bb_cfg['cron_enabled']        = false;
(почти в самом низу списка)

Далее создаем задание крон с указанием:

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

/usr/bin/php5  /имя_трекера/forum/cron.php  &>/tmp/cron.log
добавка &>/tmp/cron.log в конце задания сохраняет все ошибки в файл /tmp/cron.log

Тоже но помощью вебмина: Система - Расписание заданий крон - создать новое задние - пользователь www (у меня под ним работает апач) в окно Команда записываем

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

/usr/local/bin/php /usr/local/www/имя_трекера/forum/cron.php &>/tmp/cron.log
и выбираем необходимое время.
у меня стоит 1 минута.
Изображение

Прошу не ругаться изза несколько корявого построения - я незнаю bb коды ^_^
Господа модераторы, поправьте структуру на ваше усмотрение.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Гость
проходил мимо

Re: Установка torrenpier на freebsd

Непрочитанное сообщение Гость » 2011-01-13 23:13:42

Прошу еще раз извинить, налажал здесь:
Устанавливаем права доступа на данные папки, подпапки в них и файлы 777.
Правильно будет так:

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

chmod 777 /usr/local/www/имя трекера/forum/ajax
Измените пожалуйста это в основном сообщении а это удалите.

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Установка torrenpier на freebsd

Непрочитанное сообщение thefree » 2011-01-13 23:27:23

mysql 5.1 сeйчас в фряхи по дефолту и лучше сразу собирать ее с utf8
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Аватара пользователя
castor
ефрейтор
Сообщения: 50
Зарегистрирован: 2010-10-20 14:33:36

Re: Установка torrenpier на freebsd

Непрочитанное сообщение castor » 2011-01-14 22:48:28

Гость! Ты какую версию torrentpier'a ставил-то? Я в прошлом году (;)) ставил его - он уже полностью на UTF-8 переехал, откуда CP1251???

Гость
проходил мимо

Re: Установка torrenpier на freebsd

Непрочитанное сообщение Гость » 2011-01-14 23:26:36

Ставился TorrentPier R775 RC9.
Часть про кодировку взята с торрентпир.инфо, вероятно просто инфа устарела.
Тк говорю что сам не так давно знаком с фрей тоже поставил с такой((

И еще кое что - отвязка крона описанная выше тоже оказалось неверной.

Аватара пользователя
castor
ефрейтор
Сообщения: 50
Зарегистрирован: 2010-10-20 14:33:36

Re: Установка torrenpier на freebsd

Непрочитанное сообщение castor » 2011-01-15 9:07:47

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

/usr/bin/php5  /имя_трекера/forum/cron.php  &>/tmp/cron.log
На фре точно не будет работать. Путь погляди какой.
Ещё не хватает настройки php, касающейся magic_quotes (точно сейчас не могу посмотреть, где это) - в некоторых местах требуется.
И крон, отвязанный по похожему сценарию, у меня отлично работал.

Аватара пользователя
Your killer
проходил мимо
Сообщения: 6
Зарегистрирован: 2011-01-13 14:47:05
Контактная информация:

Re: Установка torrenpier на freebsd

Непрочитанное сообщение Your killer » 2011-01-16 16:35:07

Что с путем не так?
Вроде все правильно, хотя на трекере ничего не обновляется..
Про меджик квотес не слышал, расскажи.
Like no other.

Аватара пользователя
castor
ефрейтор
Сообщения: 50
Зарегистрирован: 2010-10-20 14:33:36

Re: Установка torrenpier на freebsd

Непрочитанное сообщение castor » 2011-01-16 17:14:20

/usr/bin/php5 - мы же не в линуксе. Поищи, где у тебя лежит похапе - "whereis php". Скорее всего будет /usr/local/bin/php.

Аватара пользователя
Your killer
проходил мимо
Сообщения: 6
Зарегистрирован: 2011-01-13 14:47:05
Контактная информация:

Re: Установка torrenpier на freebsd

Непрочитанное сообщение Your killer » 2011-01-16 17:27:50

Смотри, тк я делал через вебмин - там так я и написал. В мануале точно так же указал для вебмина, а для консоли описался.
Всеравно чтото неработает у мну так крон. Расскажи пожалуйста как его правильно отвязать.
Like no other.

Аватара пользователя
Your killer
проходил мимо
Сообщения: 6
Зарегистрирован: 2011-01-13 14:47:05
Контактная информация:

Re: Установка torrenpier на freebsd

Непрочитанное сообщение Your killer » 2011-01-20 0:58:05

ААА, ну помогите же кто-нибудь.))
Like no other.

Аватара пользователя
Your killer
проходил мимо
Сообщения: 6
Зарегистрирован: 2011-01-13 14:47:05
Контактная информация:

Re: Установка torrenpier на freebsd

Непрочитанное сообщение Your killer » 2011-02-13 19:00:31

Проблема была решена добавлением в корень форума файла auto_cron.php

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

<?php 

define('IN_PHPBB', true); 
define('BB_ROOT', './'); 
$phpEx = substr(strrchr(__FILE__, '.'), 1); 
require(BB_ROOT ."common.$phpEx"); 

$user->session_start(); 

// Cron 
if (empty($_POST) && !defined('IN_AJAX') && !defined('IN_SERVICE') && !file_exists(CRON_RUNNING) || defined('FORCE_CRON')) 
{ 
    if (TIMENOW - $bb_cfg['cron_last_check'] > $bb_cfg['cron_check_interval']) 
    { 
        // Update cron_last_check 
        bb_update_config(array('cron_last_check' => (time() + 10))); 

        require(CFG_DIR .'cron_cfg.'. PHP_EXT); 

        bb_log(date('H:i:s - ') . getmypid() .' -x-- DB-LOCK try'. LOG_LF, CRON_LOG_DIR .'cron_check'); 

        if ($db->get_lock('cron', 1)) 
        { 
            bb_log(date('H:i:s - ') . getmypid() .' --x- DB-LOCK OBTAINED !!!!!!!!!!!!!!!!!'. LOG_LF, CRON_LOG_DIR .'cron_check'); 

            sleep(2); 
            require(CRON_DIR .'cron_init.'. PHP_EXT); 

            $db->release_lock('cron'); 
        } 
    } 
} 
?>
Правда мне пришлось указать полный путь до папки форума в строке

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

define('BB_ROOT', './');
и изменить строку

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

require(BB_ROOT ."common.$phpEx"); 
на

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

require(BB_ROOT ."common.php"); 
Крон работает, правда по ощущениям небыстро, можно ли это подкрутить?
Like no other.

Аватара пользователя
Your killer
проходил мимо
Сообщения: 6
Зарегистрирован: 2011-01-13 14:47:05
Контактная информация:

Re: Установка torrenpier на freebsd

Непрочитанное сообщение Your killer » 2011-10-20 12:00:57

Появилась необходимость установить рекаптчу на форум, решение отыскал только одно, опубликую тут, чтобы незабывалось)))
Идея не моя, просто перевел. Архив с файлами можно взять тут

Перед добавлением мода на форум, сделайте бэкап фсех файлов!
Получите ключи reCAPTCHA API на http://recaptcha.net/api/getkey

Скопируйте recaptchalib.php из архива в директорию includes/recaptchalib.php

Откройте includes/ucp/usercp_register.php

Найдите

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

/*

	This code has been modified from its original form by psoTFX @ phpbb.com
	Changes introduce the back-ported phpBB 2.2 visual confirmation code.

	NOTE: Anyone using the modified code contained within this script MUST include
	a relevant message such as this in usercp_register.php ... failure to do so
	will affect a breach of Section 2a of the GPL and our copyright

	png visual confirmation system : (c) phpBB Group, 2003 : All Rights Reserved

*/
Ниже добавьте

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

//START reCAPTCHA 
require_once($phpbb_root_path . 'includes/recaptchalib.' . $phpEx);
$recaptcha_public_key = '';  // You need to put your public key here
$recaptcha_private_key = ''; // You need to put your private key here
$recaptcha_code = null;
//END reCAPTCHA
Найдите

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

if ($bb_cfg['enable_confirm'] && $mode == 'register')
	{
		if (empty($HTTP_POST_VARS['confirm_id']))
		{
			$error = TRUE;
			$error_msg .= ( ($error_msg) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
		}
		else
		{
			$confirm_id = htmlspecialchars($HTTP_POST_VARS['confirm_id']);
			if (!preg_match('/^[A-Za-z0-9]+$/', $confirm_id))
			{
				$confirm_id = '';
			}

			$sql = 'SELECT code
				FROM ' . CONFIRM_TABLE . "
				WHERE confirm_id = '$confirm_id'
					AND session_id = '" . $userdata['session_id'] . "'";
			if (!($result = $db->sql_query($sql)))
			{
				message_die(GENERAL_ERROR, 'Could not obtain confirmation code', '', __LINE__, __FILE__, $sql);
			}

			if ($row = $db->sql_fetchrow($result))
			{
				// Only compare one char if the zlib-extension is not loaded
				if (!@extension_loaded('zlib'))
				{
					$row['code'] = substr($row['code'], -1);
				}

				if (strtolower($row['code']) != strtolower($confirm_code))
				{
					$error = TRUE;
					$error_msg .= ( ($error_msg) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
				}
				else
				{
					$sql = 'DELETE FROM ' . CONFIRM_TABLE . "
						WHERE confirm_id = '$confirm_id'
							AND session_id = '" . $userdata['session_id'] . "'";
					if (!$db->sql_query($sql))
					{
						message_die(GENERAL_ERROR, 'Could not delete confirmation code', '', __LINE__, __FILE__, $sql);
					}
				}
			}
			else
			{
				$error = TRUE;
				$error_msg .= ( ($error_msg) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
			}
			$db->sql_freeresult($result);
		}
	}
Замените на

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

if ($bb_cfg['enable_confirm'] && $mode == 'register')
 	{	
		//START reCAPTCHA
		$recaptcha_response =  recaptcha_check_answer ($recaptcha_private_key, $client_ip, htmlspecialchars($HTTP_POST_VARS['recaptcha_challenge_field']), htmlspecialchars($HTTP_POST_VARS['recaptcha_response_field'])); 	
		if (!$recaptcha_response->is_valid) {
 			$error = TRUE;
			$recaptcha_code = recaptcha_get_html ($recaptcha_public_key, $recaptcha_response->error);
		//END reCAPTCHA
		 	$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
 		}
	}
Найдите

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

// Visual Confirmation
	$confirm_image = '';

	if (!empty($bb_cfg['enable_confirm']) && $mode == 'register')
	{
		$db->query("
			DELETE cfm
			FROM ". CONFIRM_TABLE ." cfm
			LEFT JOIN ". SESSIONS_TABLE ." s USING(session_id)
			WHERE s.session_id IS NULL
		");

		$row = $db->fetch_row("
			SELECT COUNT(session_id) AS attempts
			FROM ". CONFIRM_TABLE ."
			WHERE session_id = '{$userdata['session_id']}'
		");

		if (isset($row['attempts']) && $row['attempts'] > 20)
		{
			message_die(GENERAL_MESSAGE, $lang['Too_many_registers']);
		}

		$confirm_chars = array('1', '2', '3', '4', '5', '6', '7', '8', '9');

		$max_chars = count($confirm_chars) - 1;
		$confirm_code = '';
		for ($i = 0; $i < 6; $i++)
		{
			$confirm_code .= $confirm_chars[mt_rand(0, $max_chars)];
		}

		$confirm_id = make_rand_str(12);

		$db->query("
			INSERT INTO ". CONFIRM_TABLE ." (confirm_id, session_id, code)
			VALUES ('$confirm_id', '{$userdata['session_id']}', '$confirm_code')
		");

		$confirm_image = (extension_loaded('zlib')) ? '
			<img src="'. append_sid("profile.$phpEx?mode=confirm&id=$confirm_id") .'" alt="" title="" />
		' : '
			<img src="'. append_sid("profile.$phpEx?mode=confirm&id=$confirm_id&c=1") .'" alt="" title="" />
			<img src="'. append_sid("profile.$phpEx?mode=confirm&id=$confirm_id&c=2") .'" alt="" title="" />
			<img src="'. append_sid("profile.$phpEx?mode=confirm&id=$confirm_id&c=3") .'" alt="" title="" />
			<img src="'. append_sid("profile.$phpEx?mode=confirm&id=$confirm_id&c=4") .'" alt="" title="" />
		';
		$s_hidden_fields .= '<input type="hidden" name="confirm_id" value="'. $confirm_id .'" />';

		$template->assign_block_vars('switch_confirm', array());
	}
Замените на

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

// reCAPTCHA Visual Confirmation
	if (!empty($bb_cfg['enable_confirm']) && $mode == 'register')
	{
		//START reCAPTCHA
		if (!$recaptcha_code)
		$recaptcha_code = recaptcha_get_html ($recaptcha_public_key, null);	
		//END reCAPTCHA
		
 		$template->assign_block_vars('switch_confirm', array());
 	}
Найдите

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

'CONFIRM_IMG' => $confirm_image,
Замените на

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

'RECAPTCHA_CODE' => $recaptcha_code,
Откройте templates/default/usercp_register.tpl и найдите

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

<!-- Visual Confirmation -->
	<!-- BEGIN switch_confirm -->
	<tr>
	  <td colspan="2" class="med tCenter">{L_CONFIRM_CODE_IMPAIRED}<p class="mrg_10">{CONFIRM_IMG}</p></td>
	</tr>
	<tr>
	  <td>{L_CONFIRM_CODE}: * <h6>{L_CONFIRM_CODE_EXPLAIN}</h6></td>
	  <td><input type="text" name="cfmcd" size="35" maxlength="6" /></td>
	</tr>
	<!-- END switch_confirm -->
Замените на

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

<!-- Visual Confirmation -->
 	<!-- BEGIN switch_confirm -->
 	<tr> 
	  <td class="row1"><span class="gen">{L_CONFIRM_CODE}: * </span></td>
	  <td class="row2">{RECAPTCHA_CODE}</td>
 	</tr>
 	<!-- END switch_confirm -->
Сохраните и закройте все файлы.
Like no other.