VBTT - Мод торрент трекера для vBulletin. Скачать движок трекера бесплатно (не tbdev и не torrentpier). Разработка vBulletin Torrent Tracker

VBTT - Мод торрент трекера для vBulletin. Скачать движок трекера бесплатно (не tbdev и не torrentpier). Разработка vBulletin Torrent Tracker (http://www.vbtt.org/index.php)
-   VBTT v.2.0 (http://www.vbtt.org/forumdisplay.php?f=2)
-   -   VBTT v.2.5 beta (последняя с php-аннонсером) (http://www.vbtt.org/showthread.php?t=147)

Skald 17.03.2010 14:42

VBTT v.2.5 beta (последняя с php-аннонсером)
 
Вложений: 1
Внимание! Устанавливать на живой трекер - на свой страх и риск!!!!
Это релиз для админов понимающих что такое PHP и MySQL.
Отдаю данную наработку в полностью открытое использование - юзайте как посчитаете нужным :)))
Поддержку этой версии прекращаю ввиду ее бесперспективности (на днях будет расширенное описание почему именно так).

В архиве все что нужно для работы трекера. (кажется ничего не забыл положить в архив).
Установка и требования к доп продуктам в общем аналогичны 2.0.х.
db_struct.txt - изменения в структуре базы необходимые для работы.
config.php.add - то что надо добавить в основной файл конфига булки (зачем в аннонсере делать лишние запросы для получения настроек)
Апдейт с 2.0.2 можно провести, в ручном режиме (для тех кто разбирается в mysql это не составит проблем).

Это последняя версия с пхп аннонсером которая пойдет на шаред хостингах, поддерживать дальше его я не собираюсь.

В данный момент начинает разрабатываться версия с полубинарным аннонсером, которая рассчитана специально для выделенных серверов (или вдс). Новая версия будет оптимизирована именно под вдс, но с возможностью масштабирования (более детально все будет описано в отдельном разделе).

Еще один момент. Суммарная статистика в профиле обсчитывается у пользователей по неактивности его пира (т.е. в момент переноса статы активных пиров в архив пиров)

После установки будет показывать что версия 2.5 alpha - не стоит пугаться, так и надо, просто забыл название исправить. А перезаливать продукт только ради этого не вижу смысла.

P.S. Если кто-то решит продолжать развитие именно этой версии, я всегда смогу помочь (и всегда смогу объяснить почему в коде что-то сделано так а не как-то по другому), но сам ее поддерживать не буду. Поддерживать несколько довольно разных продуктов даже если они и делают почти одно и тоже 1 человеку просто немного трудновато :)

miniminimum 18.03.2010 10:17

Очень ждем! Спасибо!

P.S. а инсталл напишем...

angarsk2 18.03.2010 15:39

Я весь день уже жду !!!

SAS 19.03.2010 09:55

Очень ждем.

И новую версию под вдс тоже очень ждем :)

Skald 19.03.2010 13:19

обновил первый пост (добавил архив с продуктом)

MiraMaX166 19.03.2010 13:54

Спасибище, Skald!!! Очень ждал!

SAS 19.03.2010 14:13

Да, большое спасибо, пойду прикручивать на тестовом форуме... :)

Добавлено через 16 минут
Кстати, возник вопрос - а те дампы структуры таблиц, что есть в файле db_struct.txt (к примеру, таблица peers) - это финальные дампы таблиц? Просто я обратил внимание что в них отсутствуют некоторые ключи и поля, которые есть в 2.0.2.

miniminimum 19.03.2010 14:40

Skald, спасибо!
Интересует какие изменения между 2.0.2 и 2.5...

Skald 19.03.2010 15:43

Цитата:

Сообщение от SAS (Сообщение 2113)
Кстати, возник вопрос - а те дампы структуры таблиц, что есть в файле db_struct.txt (к примеру, таблица peers) - это финальные дампы таблиц? Просто я обратил внимание что в них отсутствуют некоторые ключи и поля, которые есть в 2.0.2.

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

Сообщение от miniminimum (Сообщение 2115)
Интересует какие изменения между 2.0.2 и 2.5...

Сильных изменений в плане интерфейса - нет, может одна 2 настройки добавились. Основная переделка - это аннонсер и его взаимодействие с форумом, сделано для увеличения производительности. Логика расчета перенесена на mysql, идет упор на пакетные запросы по крону.

Добавлено через 13 минут
Добавил в первый пост инфу насчет расчета статы

miniminimum 19.03.2010 23:37

vBulletin v3.8.5 с интегрированным VBTT v2.5

http://www.mediafire.com/file/ytoz3r...btt25_utf8.rar

Вроде нигде не накосячил...

miniminimum 20.03.2010 09:12

Я правильно понял? Если в настройке: "Переносить неактивные пиры и их статистику в архивную БД по прошествии заданного интервала времени в секундах" стоит 36000, то статистика пользователя будет обновляться каждые 10 часов. Или есть нюансы?

NetS 20.03.2010 14:21

Ура! Всё взял напильник в зубы и пошёл прикручивать

Добавлено через 1 час 45 минут
Так пошли непонятки:

1. `peer_id` char(32) NOT NULL default '' -> `peer_id` binary(20) NOT NULL default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'

Само по ALTER TABLE MODIFY сконвертится или нужен напильник?

2. Какая тут преследуется логика? Необходимо найти соответствие старым значениям и новым
Старые поля:
`active` int(11) unsigned NOT NULL
`announced` int(11) unsigned NOT NULL,
`completed` int(11) unsigned NOT NULL,

Новое поле:
`lastevent` enum('','started','stopped','completed') NOT NULL default '',


4. Что пишется в эти поля и по какому принципу они заполняются?
`pid` binary(4) NOT NULL,
`upload_user` bigint(20) unsigned NOT NULL default '0',
`download_user` bigint(20) unsigned NOT NULL default '0',

PS как разберусь будет конвертор В остальном уже всё готово

Skald 21.03.2010 14:49

NetS, самый простой вариант переименовываем таблицу peers в peers_archive и удаляем в ней лишние поля. И создаем новую таблицу peers с нуля. Т.е. просто старая таблица peers разбита сейчас на 2 таблицы peers и peers_archive. В таблице peers храняться только активны пиры (для уменьшения размеров таблицы).

Для таблицы peers_archive и поля `download_user` и `upload_user` надо приравнять к `download_sum` и`upload_sum` соответственно. Потом эти значения будут отличаться, но т.к. в версии 2.0.2 не сохранялась отдельно реальная стата по трафу и засчитанная стата пользователю, поэтому нужно при апдейте сделать эти поля равными.

насчет `lastevent`, `pid` и др. полей новой таблицы peers. Т.к. при обновлении она будет пустая, то можно не заморачиваться.

Более подробно о логике переноса активных пиров в таблицу архива можно глянуть в крон файле vbtt_peers_arc.php

NetS 22.03.2010 09:44

Отлично значит всё ещё проще Я хотел сделать наоборот )

NetS 22.03.2010 17:34

Обновились

Цитата:

CREATE TABLE `peers_leechers` (
`uid` int(10) unsigned NOT NULL default '0',
`fid` int(10) unsigned NOT NULL default '0',
`mtime` int(10) unsigned NOT NULL default '0',
UNIQUE KEY `uid_fid` (`uid`,`fid`),
KEY `mtime` (`mtime`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;

CREATE TABLE `peers_port` (
`ipa` int(11) unsigned NOT NULL default '0',
`port` smallint(5) unsigned NOT NULL default '0',
`connectable` tinyint(3) unsigned default NULL,
`mtime` int(11) unsigned NOT NULL default '0',
UNIQUE KEY `ipa_port` (`ipa`,`port`),
KEY `mtime` (`mtime`),
KEY `connectable` (`connectable`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS peers_cache;

CREATE TABLE `peers_cache` (
`n` int(11) unsigned NOT NULL auto_increment,
`pid` binary(4) NOT NULL default '\0\0\0\0',
`uid` int(11) unsigned NOT NULL default '0',
`fid` int(11) unsigned NOT NULL default '0',
`event` enum('','started','stopped','completed') NOT NULL default '',
`downloaded` bigint(20) unsigned NOT NULL default '0',
`left` bigint(20) unsigned NOT NULL default '0',
`uploaded` bigint(20) unsigned NOT NULL default '0',
`bonus` smallint(5) unsigned NOT NULL default '0',
`peer_id` binary(20) NOT NULL default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
`ipa` int(11) unsigned NOT NULL default '0',
`port` smallint(5) unsigned NOT NULL default '0',
`mtime` int(11) unsigned NOT NULL default '0',
PRIMARY KEY (`n`)
) ENGINE=MEMORY AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

ALTER TABLE `peers`
DROP COLUMN active,
DROP COLUMN announced,
DROP COLUMN pclass,
DROP COLUMN uploaded,
DROP COLUMN downloaded,
DROP COLUMN upspeed,
DROP COLUMN downspeed,
DROP COLUMN ipa,
DROP COLUMN port,
DROP INDEX fid_uid,
DROP INDEX connectable,
DROP INDEX completed,
DROP INDEX uid;

ALTER TABLE `peers`
ADD UNIQUE KEY `uid_fid` (`uid`,`fid`),
ADD INDEX `fid` (`fid`),
ADD COLUMN `download_user` bigint(20) unsigned NOT NULL default '0',
ADD COLUMN `upload_user` bigint(20) unsigned NOT NULL default '0';
MODIFY `peer_id` binary(8) NOT NULL default '\0\0\0\0\0\0\0\0',
MODIFY `completed` tinyint(4) unsigned NOT NULL default '0',
RENAME peers_archive;

UPDATE `peers_archive` SET `upload_user`=`upload_sum`, `download_user`=`download_sum`;

CREATE TABLE `peers` (
`pid` binary(4) NOT NULL,
`uid` int(11) unsigned NOT NULL,
`fid` int(11) unsigned NOT NULL,
`lastevent` enum('','started','stopped','completed') NOT NULL default '',
`downloaded` bigint(20) unsigned NOT NULL default '0',
`left` bigint(20) unsigned NOT NULL,
`uploaded` bigint(20) unsigned NOT NULL default '0',
`upspeed` bigint(20) unsigned NOT NULL default '0',
`downspeed` bigint(20) unsigned NOT NULL default '0',
`download_sum` bigint(20) unsigned NOT NULL default '0',
`download_user` bigint(20) unsigned NOT NULL default '0',
`upload_sum` bigint(20) unsigned NOT NULL default '0',
`upload_user` bigint(20) unsigned NOT NULL default '0',
`timespent` bigint(20) unsigned NOT NULL,
`peer_id` binary(20) NOT NULL default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
`ipa` int(11) unsigned NOT NULL,
`port` smallint(5) unsigned NOT NULL default '0',
`mtime` int(11) unsigned NOT NULL,
`flag` tinyint(3) unsigned NOT NULL default '0',
UNIQUE KEY `uid` (`uid`,`pid`),
KEY `mtime` (`mtime`),
KEY `fid` (`fid`),
KEY `flag` (`flag`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

ALTER TABLE `attachment`
DROP COLUMN ctime,
DROP COLUMN announce_list,
DROP INDEX ctime,
MODIFY `flags` int(11) unsigned NOT NULL default '0',
MODIFY `mtime` int(11) unsigned NOT NULL default '0',
MODIFY `size` bigint(20) unsigned NOT NULL default '0';

ALTER TABLE `user`
DROP COLUMN leechers,
DROP COLUMN seeders,
DROP COLUMN ctime,
DROP INDEX ctime;

Aiser 23.03.2010 14:02

Цитата:

ALTER TABLE `peers`
ADD UNIQUE KEY `uid_fid` (`uid`,`fid`),
ADD INDEX `fid` (`fid`),
ADD COLUMN `download_user` bigint(20) unsigned NOT NULL default '0',
ADD COLUMN `upload_user` bigint(20) unsigned NOT NULL default '0';
MODIFY `peer_id` binary(20) NOT NULL default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
MODIFY `completed` tinyint(4) unsigned NOT NULL default '0',
RENAME peers_archive;

UPDATE `peers_archive` SET `upload_user`=`upload_sum`, `download_user`=`download_sum`;
Мне кажется или должно так?
Цитата:

ALTER TABLE `peers`
ADD UNIQUE KEY `uid_fid` (`uid`,`fid`),
ADD KEY `mtime` (`mtime`),
ADD KEY `fid` (`fid`),
ADD COLUMN `download_user` bigint(20) unsigned NOT NULL default '0',
ADD COLUMN `upload_user` bigint(20) unsigned NOT NULL default '0';
MODIFY `peer_id` binary(8) NOT NULL default '\0\0\0\0\0\0\0\0',
MODIFY `completed` tinyint(4) unsigned NOT NULL default '0',
RENAME peers_archive;

UPDATE `peers_archive` SET `upload_user`=`upload_sum`, `download_user`=`download_sum`;
Да и ещё вот это у меня уже было:
Цитата:

ADD COLUMN `download_user` bigint(20) unsigned NOT NULL default '0',
ADD COLUMN `upload_user` bigint(20) unsigned NOT NULL default '0';
Вот ещё в peers_archive нужна тоже удалить?
Цитата:

`useragent ` varchar(255) unsigned NOT NULL;
А в files ничего удалять не надо при обновлении?

NetS 23.03.2010 14:40

Цитата:

Сообщение от Aiser (Сообщение 2132)
ADD KEY `mtime` (`mtime`),

уже есть этот ключ

Цитата:

Сообщение от Aiser (Сообщение 2132)
MODIFY `peer_id` binary(8) NOT NULL default '\0\0\0\0\0\0\0\0',

есть такое дело, но в таком случае не понимаю зачем в peers длина 20?

Цитата:

Сообщение от Aiser (Сообщение 2132)
Да и ещё вот это у меня уже было:
ADD COLUMN `download_user` bigint(20) unsigned NOT NULL default '0',
ADD COLUMN `upload_user` bigint(20) unsigned NOT NULL default '0';

Скорее всего исправляли ранее в ручную Тут на форуме где-то об этом писалось

Цитата:

Сообщение от Aiser (Сообщение 2132)
Вот ещё в peers_archive нужна тоже удалить?
`useragent ` varchar(255) unsigned NOT NULL;

не было у меня такого Может ещё раньше почистил, т.к. не использовалось


Цитата:

Сообщение от Aiser (Сообщение 2132)
А в files ничего удалять не надо при обновлении?

если текущая структура совпадаёт, то нет А она вроде бы совпадает

Aiser 23.03.2010 15:40

Да и какие тут изменения? Это вроде не бета, а альфа.

Skald 23.03.2010 19:02

Aiser, Не нравится не кушаем - может немного грубо, но меня очень долго просили выложить последнюю версию - я выложил. Основные изменения, что почти все апдейты таблиц идут пакетно и если установлен xcache или ea, на аннонс/скрейп идет 0-2 простых запроса к БД и то к мемори таблицам.
И я отписался что эту версию не вижу смысла продолжать разрабатывать, т.к. совсем не перспективно, просто пхп+мускуль в привычном понимании не совсем подходящая технология для торрент трекера.
И не надо думать что бинарник панацея для торрент трекера, бинарник - да, но не в реализации xbtt - потому что даже пакетное обновление при большом пакете вызывает большие напряги на сервере. Все что я говорю имеет смысл только для действительно больших форумных трекеров. Для 95% трекеров хватит и версии 2.0.2 (разве что небольшие куски кода взять из 2.5), вот для остальных 4.9% нужна 2.5, а для оставшихся 0.1% может быть понадобится следующая версия, но там без умения ручной сборки пакетов уже точно не обойтись будет.


NetS, В общем все правильно, но для всех запросов лучше сделать несколько комментов, т.к. запрос типа
Код:

ALTER TABLE `peers`
ADD UNIQUE KEY `uid_fid` (`uid`,`fid`),
ADD INDEX `fid` (`fid`),
ADD COLUMN `download_user` bigint(20) unsigned NOT NULL default '0',
ADD COLUMN `upload_user` bigint(20) unsigned NOT NULL default '0';
MODIFY `peer_id` binary(20) NOT NULL default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
MODIFY `completed` tinyint(4) unsigned NOT NULL default '0',
RENAME peers_archive;

У многих может вызвать вопросы, т.к. RENAME peers_archive в конце можно и не заметить :)

И большое равно спасибо.

NetS 23.03.2010 19:55

Я правильно понимаю что проверка доступности порта вырезана под корень? коли так там можно будет ещё порезать и в шаблонах поправить А то народ смущается. Если сам дальше эту версию ковырять не будешь могу потом свою выкинуть со всеми правками.

PS Трекер летает :)

Добавлено через 1 минуту
Сори туплю Как сейчас работает проверка порта? peers_port табличка для этого?

Skald 23.03.2010 20:55

NetS, порт проверяется но по крону :)
раз в минуту и проверка идет не дольше чем 30 сек, чтобы не прикладывать сервер в момент проверки большого количества пиров за натом.

Aiser 23.03.2010 20:55

Эм. Я разве, что-то плохого сказал? Я лично обновился и жду следующего релиза.

Skald 23.03.2010 21:03

Aiser, Да, может немного грубо написал, но это не изменяет того что версия выложена как есть и да она с багами, но это всетаки бета (а не альфа), т.к. в проверена в продакшене уже в течении более чем полугода.
И да, я прекрасно знаю какие у нее недоработки, но она стабильна - существующие баги никак не связаны со стабильностью - это все недоработки от перехода с версии 2.0.2 - не везде подправлено взаимодействие интерфейса, особенно при использовании кеширования.
И также точно знаю что в 90% случаев пользователям хватит и предыдущей версии (функционал морды ведь почти не изменился).

P.S. Вот релиз 4-й булки с большим натягом можно бетой назвать :)

Aiser 23.03.2010 21:07

Ну я лично написал из-за того, что был удивлен, когда установил 2.5. Там было написано альфа. Опечатка, но подумал уже, что не то скачал.

UnFeeLing 23.03.2010 21:27

я не очень шарю в sql, кто нибудь напишет мануалчик как обновить свой трекер?:)

Skald 23.03.2010 21:38

Aiser, Ну в продукте название осталось еще от самого начала переделывания :) Сейчас уже перезаливать архив только из-за этого не буду. Так надо было сначала и сказать, что в самом продукте внутри так написано :)))) Добавлю коммент в первый пост, что-бы больше никто не пугался

Aiser 23.03.2010 21:57

Может показалось, но что-то у многих в профиле показывает темы как активные, которые не сидируют.
Да и общая статистика обновляется только по не активности пользователя на трекере? Как быть с системой повышения по торренту? Нормально будет переносить или если человек весь день качать будет статистика общая не будет обновляться?

Skald 24.03.2010 11:08

Цитата:

Сообщение от Aiser (Сообщение 2145)
? Как быть с системой повышения по торренту? Нормально будет переносить или если человек весь день качать будет статистика общая не будет обновляться?

это так. Пришлось пойти на это в пользу производительности.

Только один момент, сейчас более подробно распишу что значит активность пира (потому что в данном случае это доже плюс). Активность пира - это активность конкретной единичной раздачи/закачки пользователя. Т.е. к примеру берем хитрож... пользователя, который думает что он много сможет накачать. И что мы получаем, что бы его стата не обсчитывалась он должен оставаться на раздаче. Только остановит любую раздачу или перегрузит торрент клиент - статистика этой раздачи или всех раздач соответственно обсчитаются. А как следствие на трекере получаем ситуацию, что пользователи, те которые не хотели оставаться на раздаче после скачки, остаются как можно дольше.

Второй бонус (реализовать 5 минут) - можно сделать бонус за непрерывное сидирование - т.е. коэфф. засчитанного от непрерывного времени сидирования. Например, скачал и сразу свалил, получил скаченное в 2-м объеме, а если хотя бы подождал часа 3, то скаченное 1 к 1 засчиталось, долго сидировал после скачки, засчитали скаченное в половинном объеме.
Аналогично и с отдачей, сразу свалил отдача в 2 раза меньше, сидировал - отдача в полном объеме, долго сидировал - в 2-м объеме.

Добавлено через 6 минут
Цитата:

Сообщение от Aiser (Сообщение 2145)
Может показалось, но что-то у многих в профиле показывает темы как активные, которые не сидируют.

Тут могут быть нюансы с временем архивирования пиров. Более точно не подскажу, т.к. проблем с активными пирами не было (есть проблемы с отображением пиров для скаченных/загруженных, но с активными - нет, т.к. выборка идет только из одной таблицы)

Aiser 24.03.2010 11:35

А технически нет выхода с ограничением по рейтингу в будущем? Было бы неплохо, если бы встроенно в продукт хотя бы было.
Бонусов не хватает. Неплохо с отдачей так, а то есть люди которые уходят сразу.
Ещё тут вроде за свои темы до первого сидера и т.д. нет. Хотелось бы и их тоже или типа того как щас модно. За сидирования баллы получать и менять на уплоад. Хотя проще сразу выдавать.
Да и можно ли сделать вывод в postbite (или профиле юзера) инфы скока скачал, раздал за текущую сессию пока не выключить торрент клиент (ту которую ещё не преплюсовали)?

Skald 24.03.2010 13:31

Цитата:

Сообщение от Aiser (Сообщение 2151)
Да и можно ли сделать вывод в postbite

можно, но это лишние запросы к БД (к совсем не легкой таблице peers), а если делать через кеш, то придется структуру кеша менять.

UnFeeLing 29.03.2010 07:23

ну дык кто-то напишет инструкцию по апдейту с старой версии?

Aiser 29.03.2010 09:38

Посмотри пару страниц назад. Там написано все в одном сообщении как обновится. Лично по аналогии делал обновление.

SpJkee 05.04.2010 17:55

Ребят кто может помочь с обновлением на VBTT v.2.5 beta за n-cумму сумму. пишите в ЛС.

giooogi 15.04.2010 10:13

привет всем

у меня один вопрос - можно эту настройку менять и откуда

то-есть для мена очень важна система обновления ратио которую я не совсем понял в 2.5 alpha

(версия трекера vb 3.8.5)

спасибо

Giorgisia 15.04.2010 11:34

Цитата:

Сообщение от giooogi (Сообщение 2215)
привет всем

у меня один вопрос - можно эту настройку менять и откуда

то-есть для мена очень важна система обновления ратио которую я не совсем понял в 2.5 alpha

(версия трекера vb 3.8.5)

спасибо

у меня такая же проблема

O_o

UnFeeLing 18.04.2010 11:37

как сделать алерт таблицы аттачмент, если она весит где-то 600 метров?

Skald 18.04.2010 17:08

UnFeeLing, такой вопрос, а что вложения все еще в БД?????
Если да - то это писец, а не трекер...

Добавлено через 40 секунд
giooogi, Я уже не раз писал чем отличается система обновления ратио в новой версии, поэтому повторяться не буду.

UnFeeLing 18.04.2010 17:59

Цитата:

Сообщение от Skald (Сообщение 2231)
UnFeeLing, такой вопрос, а что вложения все еще в БД?????
Если да - то это писец, а не трекер...

Добавлено через 40 секунд
giooogi, Я уже не раз писал чем отличается система обновления ратио в новой версии, поэтому повторяться не буду.

перемещать влом :)))

lycon 19.04.2010 12:04

Цитата:

Сообщение от miniminimum (Сообщение 2118)
vBulletin v3.8.5 с интегрированным VBTT v2.5

http://www.mediafire.com/file/ytoz3r...btt25_utf8.rar

Вроде нигде не накосячил...

не могу ни разобраться ни пере конвертировать,все время вместо русских символов какие-то кракозябры. в кодировке windows-1251 можете выложить?

futuristers 26.04.2010 22:42

При установке возникает ошибка:Следующие зависимости не найдены:
Продукт yo_admin_forumlist должен быть установлен до установки этого продукта. (Совместим с *). Не совсем понимаю, что от меня просит.
Ставлю VBTT v.2.5 beta, булка 3.8.4... В конфиге прописал всё как надо залил файлы по папочкам, что делать ещё, что бы всё завелось?


Часовой пояс GMT +3, время: 15:51.

vBulletin® 3.8.1. ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot