дополнение моему торому аккаунту
Обновление 2.15 -->> 2.40
0. СДЕЛАЙТЕ BACKUP!
1. Удалите все файлы с ftp, за исключением:
Цитата:
папки torrents
папки avatars
папки cache
файла include/secrets.php
файла Sitemap.xml
2. Загрузите все файлы из папки upload.php на ftp, за исключением:
Цитата:
database.sql install.php Sitemap.xml include/secrets.php
3. Загрузите на ftp все файлы из папки update_215_240
4. Если вы используете форум, то загрузите все файлы из папки to_forum_root в корневую папку форума
5. Зайдите на сайт/update.php и следуйте инструкциям инсталлятора.
Добавлено через 34 секунды
Преход с TBDEV YSE 6 (TBDev v2.0 (18.05.07) Pre 6 RC 0 (update 19.02.09))
Внимание!
Цитата:
1. С предыдущими опросами придется распрощаться.
2. Позиции и места блоков придется настраивать заново.
3. Все ваши старые релизы переместятся в категорию "прочее", хотя никто не мешает вам переименовать ее в "Старые релизы", или как нибудь еще.
4. С банами придется распрощаться.
Итак, начнем:
1. Удалите все файлы с фтп, за исключением и файлов
Цитата:
torrents
torrents/images
include/secrets.php
2. Загрузите на фтп файлы из папки upload, за исключением
Код:
database.sql
install.php
include/secrets.php
3. Поставьте chmod 777 следующим папкам:
Код:
avatars, cache, torrents, torrents/images
4. Поставьте chmod 666 следующим файлам:
Код:
Sitemap.xml
5. Загрузите в корень релизера файлы из папки transfer_from_YSE6
6. Выполните скрипт сайт/transfer.php и следуйте инструкциям инсталлятора.
7. Замените ваш файл include/secrets.php по шаблону:
Код:
PHP:
<?
/*
Project: Kinokpk.com releaser
This file is part of Kinokpk.com releaser.
Kinokpk.com releaser is based on TBDev,
originally by RedBeard of TorrentBits, extensively modified by
Gartenzwerg and Yuna Scatari.
Kinokpk.com releaser is free software;
you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
Kinokpk.com is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Kinokpk.com releaser; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
MA 02111-1307 USA
Do not remove above lines!
*/
if(!defined('IN_TRACKER') && !defined('IN_ANNOUNCE')) die("Direct access to this page not allowed");
$mysql_host = "хост базы трекера";
$mysql_user = "пользователь базы трекера";
$mysql_pass = "пароль для базы трекера";
$mysql_db = "база трекера";
$mysql_charset = "CP1251 (или другой набор символов, в зависимости от вашей конфигурации обычно CP1251)";
$fmysql_host = "хост базы форума";
$fmysql_user = "пользователь базы форума";
$fmysql_pass = "пароль базы форума";
$fmysql_db = "база форума";
$fmysql_charset = "CP1251 (или другой набор символов, в зависимости от вашей конфигурации обычно CP1251)";
$fprefix = "префикс таблиц форума, обычно ibf_";
?>
Добавлено через 1 минуту
vipzal это и есть vem882 тока его заблокировали
Добавлено через 5 минут
PHP:
Kinokpk.com releaser 2.05 и раньше:
recover.php
найти:
Код:
[PHP]elseif($_GET)
заменить на:
Код:
PHP:
elseif($_SERVER['REQUEST_METHOD'] == "GET")
найти:
Код:
добавить выше:
Код:
PHP:
if (!is_valid_id($_GET["id"]))
stderr($tracker_lang['error'], $tracker_lang['invalid_id']);
email-getway.php - удалить, либо поправить:
найти:
Код:
PHP:
$id = 0 + $_GET["id"];
if (!$id)
stderr($tracker_lang['error'], $tracker_lang['invalid_id']);
заменить на:
Код:
PHP:
if (!is_valid_id($_GET["id"]))
stderr($tracker_lang['error'], $tracker_lang['invalid_id']);
$id = 0 + $_GET["id"];
takeconfirm.php найти:
Код:
PHP:
$id = 0 + $_GET["id"];
if (!is_valid_id($id))
stderr("Ошибка", "А вот этого лучше не делать...");
заменить на:
takeinvite.php
найти:
Код:
заменить на:
Код:
PHP:
if (!is_numeric($_GET["id"]) || !isset($_GET["id"]))
stderr($tracker_lang['error'], $tracker_lang['invalid_id']);
$id = 0 + $_GET["id"];
topten.php
найти:
Код:
PHP:
$type = isset($_GET["type"]) ? 0 + $_GET["type"] : 0;
if (!in_array($type,array(1,2,3,4)))
$type = 1;
$limit = isset($_GET["lim"]) ? 0 + $_GET["lim"] : false;
$subtype = isset($_GET["subtype"]) ? $_GET["subtype"] : false;
заменить на:
Код:
PHP:
$type = (isset($_GET["type"]) && is_numeric($_GET["type"])) ? 0 + $_GET["type"] : 0;
if (!in_array($type,array(1,2,3,4)))
$type = 1;
$limit = (isset($_GET["lim"]) && is_numeric($_GET["lim"])) ? 0 + $_GET["lim"] : false;
$subtype = isset($_GET["subtype"]) ? $_GET["subtype"] : false;
Архив обновлен!
Обновление безопасности, заменить avatarup.php
Код:
PHP:
<?
/*
Project: Kinokpk.com releaser
This file is part of Kinokpk.com releaser.
Kinokpk.com releaser is based on TBDev,
originally by RedBeard of TorrentBits, extensively modified by
Gartenzwerg and Yuna Scatari.
Kinokpk.com releaser is free software;
you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
Kinokpk.com is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Kinokpk.com releaser; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
MA 02111-1307 USA
Do not remove above lines!
*/
require "include/bittorrent.php";
dbconn();
loggedinorreturn();
$max_image_width = $avatar_max_width;
$max_image_height = $avatar_max_height;
$maxfilesize = 60 * 1024;
$allowed_types = array(
"image/gif" => "gif",
"image/jpeg" => "jpg",
"image/jpg" => "jpg",
"image/png" => "png"
// Add more types here if you like
);
if(empty($_FILES['avatar']['tmp_name'])) {
stdhead("Загрузка аватара");
print '<table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td class="block" width="100%" align="center" valign="middle" ><strong>Загрузка аватара</strong></td></tr></table>';
print "<br><form method=post enctype=multipart/form-data><div class=\"form-row\"><div class=\"field-widget\"><label for=\"avatar\">Выберите аватару</label> : <input type=file name=avatar title=\"Выберите аватарку\"></div></div>
<input type=submit value=Загрузить ></form><br><br><center><font color=green>Подсказка: Аватара должна быть размером не больше ".round($maxfilesize/1024,2)." килобайт<br>и pазмером не больше ".$max_image_width."х".$max_image_height." пикселей</font></center> ";
stdfoot();
}
else {
$size = @GetImageSize($_FILES['avatar']['tmp_name']);
// var_dump($size);
if (!$size)
stderr($tracker_lang["error"],"Это не картинка, доступ запрещен");
// Is valid filetype?
elseif (!array_key_exists($_FILES['avatar']['type'], $allowed_types))
stderr($tracker_lang["error"],"Внимание! Разрешенные форматы картинок: JPG,PNG,GIF.");
elseif (!preg_match('/^(.+)\.(jpg|png|gif)$/si', $_FILES['avatar']['name']))
stderr($tracker_lang["error"],"Неверное имя файла (не картинка или неверный формат).");
elseif (($size[0] > $max_image_width ) || ($size[1] > $max_image_height))
stderr ($tracker_lang["error"],"<br>Размер вашего аватара ".$size[0]."х".$size[1]." Требуется размер не более ".$max_image_width."х".$max_image_height." пикселей</font></b>");
elseif ($_FILES['avatar']['size'] > $maxfilesize) {
stderr($tracker_lang["error"],"<br>Размер вашей аватары превышает ".round($maxfilesize/1024,2)." килобайт!</font></b>");
}else
{
@unlink("./".$CURUSER['avatar']);
copy($_FILES['avatar']['tmp_name'],"./avatars/".$CURUSER["id"].substr($_FILES['avatar']['name'], strripos($_FILES['avatar']['name'], '.')));
$pathav = "avatars/".$CURUSER["id"].substr($_FILES['avatar']['name'], strripos($_FILES['avatar']['name'], '.'));
sql_query("UPDATE users SET avatar = '".$pathav."' WHERE id = " . $CURUSER["id"])or sqlerr(__FILE__,__LINE__);
/*sql_query("UPDATE ipb_member_extra SET avatar_type = 'url' WHERE id = " . $CURUSER["id"])or sqlerr(__FILE__,__LINE__);
sql_query("UPDATE ipb_member_extra SET avatar_size = '".$size[0]."x".$size[1]."' WHERE id = " . $CURUSER["id"])or sqlerr(__FILE__,__LINE__);
sql_query("UPDATE ipb_member_extra SET avatar_location = '".$pathav."' WHERE id = " . $CURUSER["id"])or sqlerr(__FILE__,__LINE__);
*/
stdmsg("Okay!","<b>Ваша аватара была успешно загружёна на сервер!</b><hr>Название файла: <b>".$CURUSER["id"].substr($_FILES['avatar']['name'], strripos($_FILES['avatar']['name'], '.'))."</b><br>Размер файла: <b>".round($_FILES['avatar']['size']/1024,2)." кб.</b><hr><center>Аватар автоматически добавлен в профиль пользователя</b></center>");// как на релизере, так и на <a href=\"".$DEFAULTBASEURL."/forums/\">Форуме</a></b></center> ";
}
}
?>
takeedit.php функцию uploadimage заменить на:
Код:
PHP:
function uploadimage($x, $imgname, $tid) {
$maxfilesize = 512000; // 500kb
$allowed_types = array(
"image/gif" => "gif",
"image/pjpeg" => "jpg",
"image/jpeg" => "jpg",
"image/jpg" => "jpg",
"image/png" => "png"
// Add more types here if you like
);
if (!($_FILES[image.$x]['name'] == "")) {
if ($imgname != "") {
// Make sure is same as in takeedit.php (except for the $imgname bit)
$img = "torrents/images/$imgname";
$del = @unlink($img);
}
$y = $x + 1;
// Is valid filetype?
if (!array_key_exists($_FILES[image.$x]['type'], $allowed_types))
bark("Invalid file type! Image $y");
if (!preg_match('/^(.+)\.(jpg|png|gif)$/si', $_FILES[image.$x]['name']))
bark("Неверное имя файла (не картинка или неверный формат).");
// Is within allowed filesize?
if ($_FILES[image.$x]['size'] > $maxfilesize)
bark("Invalid file size! Image $y - Must be less than 500kb");
// Where to upload?
// Make sure is same as on takeupload.php
$uploaddir = "torrents/images/";
// What is the temporary file name?
$ifile = $_FILES[image.$x]['tmp_name'];
$size = @GetImageSize($ifile);
// var_dump($size);
if (!$size)
bark("Это не картинка, доступ запрещен");
// By what filename should the tracker associate the image with?
$ifilename = $tid . $x . substr($_FILES[image.$x]['name'], strlen($_FILES[image.$x]['name'])-4, 4);
// Upload the file
$copy = copy($ifile, $uploaddir.$ifilename);
if (!$copy)
bark("Error occured uploading image! - Image $y");
//adds watermark ////////////////////////////////////////////////////
/// ORIGINAL POSTED http://www.codenet.ru/webmast/php/Image-Resize-GD/ /////////////////
$ifn=$uploaddir.$ifilename;
// качество jpeg по умолчанию
if (!isset($q)) $q = 75;
// создаём исходное изображение на основе
// исходного файла и опеределяем его размеры
if (($_FILES[image.$x]['type'] == "image/pjpeg") || ($_FILES[image.$x]['type'] == "image/jpeg") || ($_FILES[image.$x]['type'] == "image/jpg"))
$src = @imagecreatefromjpeg($ifn);
elseif ($_FILES[image.$x]['type'] == "image/gif")
$src = @imagecreatefromgif($ifn);
elseif ($_FILES[image.$x]['type'] == "image/png")
$src = @imagecreatefrompng($ifn);
$w_dest = $size[0];
$h_dest = $size[1];
// создаём пустую картинку
// важно именно truecolor!, иначе будем иметь 8-битный результат
$dest = imagecreatetruecolor($w_dest,$h_dest);
imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_dest, $h_dest);
// определяем координаты вывода текста
$str = "Kinokpk.com & pdaPRIME.ru";
$size = 2; // размер шрифта
$x_text = $w_dest-imagefontwidth($size)*strlen($str)-3;
$y_text = $h_dest-imagefontheight($size)-3;
// определяем каким цветом на каком фоне выводить текст
$white = imagecolorallocate($dest, 255, 255, 255);
$black = imagecolorallocate($dest, 0, 0, 0);
$gray = imagecolorallocate($dest, 127, 127, 127);
if (imagecolorat($dest,$x_text,$y_text)>$gray) $color = $black;
if (imagecolorat($dest,$x_text,$y_text)<$gray) $color = $white;
// выводим текст
imagestring($dest, $size, $x_text-1, $y_text-1, $str,$white-$color);
imagestring($dest, $size, $x_text+1, $y_text+1, $str,$white-$color);
imagestring($dest, $size, $x_text+1, $y_text-1, $str,$white-$color);
imagestring($dest, $size, $x_text-1, $y_text+1, $str,$white-$color);
imagestring($dest, $size, $x_text-1, $y_text, $str,$white-$color);
imagestring($dest, $size, $x_text+1, $y_text, $str,$white-$color);
imagestring($dest, $size, $x_text, $y_text-1, $str,$white-$color);
imagestring($dest, $size, $x_text, $y_text+1, $str,$white-$color);
imagestring($dest, $size, $x_text, $y_text, $str,$color);
if (($_FILES[image.$x]['type'] == "image/pjpeg") || ($_FILES[image.$x]['type'] == "image/jpeg") || ($_FILES[image.$x]['type'] == "image/jpg"))
imagejpeg($dest,$ifn,$q);
elseif ($_FILES[image.$x]['type'] == "image/gif")
imagegif($dest,$ifn,$q);
elseif ($_FILES[image.$x]['type'] == "image/png")
imagepng($dest,$ifn,$q);
imagedestroy($dest);
imagedestroy($src);
////////////////RESIZING END //////////////////////////////////////
return $ifilename;
}
}
takeupload.php найти:
Код:
PHP:
//////////////Take Image Uploads//////////////
найти:
Код:
все, что между заменить на:
Код:
if ($use_integration) {
//IPB TOPIC TRANSFER
$relimage=0;
//END, CONTINUE BELOW
}
$maxfilesize = 512000; // 500kb
$allowed_types = array(
"image/gif" => "gif",
"image/jpeg" => "jpg",
"image/jpg" => "jpg",
"image/png" => "png"
// Add more types here if you like
);
// Where to upload?
// Update for your own server. Make sure the folder has chmod write permissions. Remember this director
$uploaddir = "torrents/images/";
for ($x=0; $x < 2; $x++) {
$y = $x + 1;
if (($_FILES[image.$x]['name'] != "") || !empty($_POST['img'.$x])) {
if (!($_FILES[image.$x]['name'] == "") && empty($_POST['img'.$x])) {
// Is valid filetype?
if (!array_key_exists($_FILES[image.$x]['type'], $allowed_types))
bark("Внимание! Разрешенные форматы картинок: JPG,PNG,GIF. Ошибка при загрузке картинки $y");
if (!preg_match('/^(.+)\.(jpg|png|gif)$/si', $_FILES[image.$x]['name']))
bark("Неверное имя файла (не картинка или неверный формат).");
// Is within allowed filesize?
if ($_FILES[image.$x]['size'] > $maxfilesize)
bark("Внимание! Картинка $y - Слишком большая. Макс. размер: 500kb");
// What is the temporary file name?
$ifile = $_FILES[image.$x]['tmp_name'];
$size = @GetImageSize($ifile);
// var_dump($size);
if (!$size)
bark("Это не картинка, доступ запрещен");
// Calculate what the next torrent id will be
// GO UPSTAIRS //
// By what filename should the tracker associate the image with?
$ifilename = $next_id . $x . substr($_FILES[image.$x]['name'], strlen($_FILES[image.$x]['name'])-4, 4);
//File extention
$ext = substr($_FILES[image.$x]['name'], strlen($_FILES[image.$x]['name'])-3, 3);
// Upload the file
$copy = copy($ifile, $uploaddir.$ifilename);
if (!$copy)
bark("Ошибка при загрузке картинки $y");
//adds watermark///
/// ORIGINAL POSTED
Для просмотра ссылки Войди или Зарегистрируйся /////////////////
$ifn=$uploaddir.$ifilename;
$pictdest = $ifn;
} elseif (($_FILES[image.$x]['name'] == "") && !empty($_POST['img'.$x])) {
if (filesize($_POST['img'.$x] > $maxfilesize)) bark("Внимание! Картинка $y - Слишком большая. Макс. размер: 500kb");
$ifn = $_POST['img'.$x];
$size = @GetImageSize($ifn);
$ifilename = $next_id . $x . substr($_POST['img'.$x], strlen($_POST['img'.$x])-4, 4);
$ext = substr($_POST['img'.$x], strlen($_POST['img'.$x])-3, 3);
$pictdest = $uploaddir.$ifilename;
}
// качество jpeg по умолчанию
if (!isset($q)) $q = 75;
// создаём исходное изображение на основе
// исходного файла и опеределяем его размеры
if ($ext == "jpg")
$src = @imagecreatefromjpeg($ifn);
elseif ($ext == "gif")
$src = @imagecreatefromgif($ifn);
elseif ($ext == "png")
$src = @imagecreatefrompng($ifn);
// var_dump($size);
if (!$src || !$size) bark("Ошибка обработки картинки $y, она недоступна, либо имеет недопустимый формат");
$w_dest = $size[0];
$h_dest = $size[1];
// создаём пустую картинку
// важно именно truecolor!, иначе будем иметь 8-битный результат
$dest = imagecreatetruecolor($w_dest,$h_dest);
imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_dest, $h_dest);
$str = "Kinokpk.com & pdaPRIME.ru";
// определяем координаты вывода текста
$size = 2; // размер шрифта
$x_text = $w_dest-imagefontwidth($size)*strlen($str)-3;
$y_text = $h_dest-imagefontheight($size)-3;
// определяем каким цветом на каком фоне выводить текст
$white = imagecolorallocate($dest, 255, 255, 255);
$black = imagecolorallocate($dest, 0, 0, 0);
$gray = imagecolorallocate($dest, 127, 127, 127);
if (imagecolorat($dest,$x_text,$y_text)>$gray) $color = $black;
if (imagecolorat($dest,$x_text,$y_text)<$gray) $color = $white;
// выводим текст
imagestring($dest, $size, $x_text-1, $y_text-1, $str,$white-$color);
imagestring($dest, $size, $x_text+1, $y_text+1, $str,$white-$color);
imagestring($dest, $size, $x_text+1, $y_text-1, $str,$white-$color);
imagestring($dest, $size, $x_text-1, $y_text+1, $str,$white-$color);
imagestring($dest, $size, $x_text-1, $y_text, $str,$white-$color);
imagestring($dest, $size, $x_text+1, $y_text, $str,$white-$color);
imagestring($dest, $size, $x_text, $y_text-1, $str,$white-$color);
imagestring($dest, $size, $x_text, $y_text+1, $str,$white-$color);
imagestring($dest, $size, $x_text, $y_text, $str,$color);
if ($ext == "jpg")
imagejpeg($dest,$pictdest,$q);
elseif ($ext == "gif")
imagegif($dest,$pictdest,$q);
elseif ($ext == "png")
imagepng($dest,$pictdest,$q);
imagedestroy($dest);
imagedestroy($src);
////////////////RESIZING END //////////////////////////////////////
$inames[] = $ifilename;
if ($use_integration) {
//IPB TOPIC TRENSFER
$relimage=1;
// END, CONTINUE BELOW
}
}
}[/PHP]
Добавлено через 12 минут
viewrequests.php
найти:
Код:
PHP:
$search = $_GET["search"];
заменить на:
Код:
PHP:
$search = (string) $_GET["search"];
аменить файл из аттача
Цитата:
Множественные XSS
Для просмотра ссылки Войди или Зарегистрируйся
simpaty.php
найти:
Код:
заменить на:
Код:
PHP:
$type = htmlentities($_GET['type']);
Добавлено через 14 минут
delete.php
найти:
Код:
PHP:
$rt = 0 + $_POST["reasontype"];
if (!is_int($rt) || $rt < 1 || $rt > 5)
заменить на:
Код:
PHP:
$rt = (int) $_POST["reasontype"];
if ( $rt < 1 || $rt > 5)
удалить:
Код:
Важное обновление безопасности:
users.php
найти:
Код:
PHP:
$search = trim($_GET['search']);
заменить на:
Код:
PHP:
$search = htmlentities(trim($_GET['search']));
заменить файлы из аттача с сохранением структуры папок
Цитата:
XSS + возможность имея права модератора поставить себе любой класс + раскрытие путей подделкой post-запроса
Добавлено через 14 минут
Для просмотра ссылки Войди или Зарегистрируйся
Добавлено через 15 минут
Очередной фикс дырок в системе запросов
заменить файлы из архива.
Цитата:
Ошибка в составлении sql запроса, раскрытие путей
Для просмотра ссылки Войди или Зарегистрируйся
Добавлено через 16 минут
include/functions.php
добавить:
Код:
PHP:
// retrieve images on the site
function check_images($file){
$h1count = preg_match_all('/(<img.*?)\s (src="([a-zA-Z0-9\.;:\/\?&=_|\r|\n]{1,})")/isxmU',$file,$patterns);
$imagesarray = array();
array_push($imagesarray,$patterns[3]);
array_push($imagesarray,$patterns[0]);
$images = $imagesarray[0];
$imagecodes = $imagesarray[1];
if ($images)
foreach ($images as $key => $image) {
if (!@getimagesize($image)) {$bb[] = $imagecodes[$key]; $html[] = $image; }
}
if ($bb)
$code = str_replace($bb,$html,$code);
return $file;
}
Код:
найти:
PHP:
foreach ($privatesmilies as $code => $url)
$s = str_replace($code, "<img border=\"0\" src=\"pic/smilies/$url\">", $s);
return $s;
заменить на:
Код:
PHP:
foreach ($privatesmilies as $code => $url)
$s = str_replace($code, "<img border=\"0\" src=\"pic/smilies/$url\">", $s);
return check_images($s);
Цитата:
GIF-картинки с авторизацией, да и вообще любые несанкционированные вложения в тег <img>
Добавлено через 18 минут
офф саит: Для просмотра ссылки Войди или Зарегистрируйся