<?
##########################################
## Автор: -=ШАХТЕР=-                        #                                                                                                                                                                                      ## Сайт: http://masteram.us                 #                 															                      ## ICQ  :  46-92-90                         #                 														 		           ## Версия 4.0 Лицензионная                  #
## Данная версия скрипта является ПЛАТНОЙ,  #
## вы НЕ ИМЕЕТЕ ПРАВА распрострянять данный #
##  скрипт или какие-либо части его кода... #
#########################################
require'../config.php';
$align='left';
$title='Обменник - Загрузка файла';
aut();
head();
who_add(0,'enter');



function parseUA($s) {
if(preg_match('/Opera Mini\/1/i', $s)) return 1;
if(preg_match('/Opera Mini\/2/i', $s)) return 2;
if(preg_match('/Opera Mini\/3/i', $s)) return 3;
if(preg_match('/Opera Mini\/4/i', $s)) return 4;
}


function retrans($t){
$a = array('_','YA','Ya','ya','yee','YO','yo','Yo','ZH','zh','Zh','Z','z','CH','ch','Ch','SH','sh','Sh','YE','ye','Ye','YU','yu','Yu','JA','ja','Ja','A','a','B','b','V','v','G','g','D','d','E','e','I','i','J','j','K','k','L','l','M','m','N','n','O','o','P','p','R','r','S','s','T','t','U','u','F','f','H','h','W','w','x','q','Y','y','C','c','!');
$b = array(' ','Я','Я','я','ые','Ё','ё','Ё','Ж','ж','Ж','З','з','Ч','ч','Ch','Ш','ш','Ш','Э','э','Э','Ю','ю','Ю','Я','я','Я','А','а','Б','б','В','в','Г','г','Д','д','Е','е','И','и','Й','й','К','к','Л','л','М','м','Н','н','О','о','П','п','Р','р','С','с','Т','т','У','у','Ф','ф','Х','х','Щ','щ','ъ','ь','Ы','ы','Ц','ц','');
return str_replace($b,$a,$t);
}

function del($text)
{
$text=str_replace('"','', $text);
$text=str_replace("'",'', $text);
$text=str_replace('&','', $text);
$text=str_replace('$','', $text);
$text=str_replace('>','', $text);
$text=str_replace('<','', $text);
$text=str_replace('~','', $text);
$text=str_replace('`','', $text);
$text=str_replace('#','', $text);
$text=str_replace('*','', $text);
$text=str_replace('&#39','', $text);
return $text;
}

function getExt($name) {
return end(explode('.', $name));
}

function checkExt($name) {
$exts[] = '3gp';
$exts[] = '3GP';
$exts[] = '7z';
$exts[] = '7Z';
$exts[] = 'aac';
$exts[] = 'AAC';
$exts[] = 'amr';
$exts[] = 'AMR';
$exts[] = 'app';
$exts[] = 'APP';
$exts[] = 'asf';
$exts[] = 'ASF';
$exts[] = 'asx';
$exts[] = 'ASX';
$exts[] = 'avi';
$exts[] = 'AVI';
$exts[] = 'bmp';
$exts[] = 'BMP';
$exts[] = 'bmx';
$exts[] = 'BMX';
$exts[] = 'cab';
$exts[] = 'CAB';
$exts[] = 'col';
$exts[] = 'COL';
$exts[] = 'db';
$exts[] = 'DB';
$exts[] = 'deb';
$exts[] = 'DEB';
$exts[] = 'ear';
$exts[] = 'EAR';
$exts[] = 'elf';
$exts[] = 'ELF';
$exts[] = 'exe';
$exts[] = 'EXE';
$exts[] = 'flv';
$exts[] = 'FLV';
$exts[] = 'gif';
$exts[] = 'GIF';
$exts[] = 'hme';
$exts[] = 'HME';
$exts[] = 'img';
$exts[] = 'IMG';
$exts[] = 'imy';
$exts[] = 'IMY';
$exts[] = 'iso';
$exts[] = 'ISO';
$exts[] = 'jad';
$exts[] = 'JAD';
$exts[] = 'jar';
$exts[] = 'JAR';
$exts[] = 'jpeg';
$exts[] = 'JPEG';
$exts[] = 'jpg';
$exts[] = 'JPG';
$exts[] = 'ldb';
$exts[] = 'LDB';
$exts[] = 'mid';
$exts[] = 'MID';
$exts[] = 'midi';
$exts[] = 'MIDI';
$exts[] = 'mmf';
$exts[] = 'MMF';
$exts[] = 'mng';
$exts[] = 'MNG';
$exts[] = 'mov';
$exts[] = 'MOV';
$exts[] = 'mp3';
$exts[] = 'MP3';
$exts[] = 'mp4';
$exts[] = 'MP4';
$exts[] = 'mpc';
$exts[] = 'MPC';
$exts[] = 'mpeg';
$exts[] = 'MPEG';
$exts[] = 'mpg';
$exts[] = 'MPG';
$exts[] = 'mpn';
$exts[] = 'msi';
$exts[] = 'msm';
$exts[] = 'msp';
$exts[] = 'nth';
$exts[] = 'ogg';
$exts[] = 'pdf';
$exts[] = 'png';
$exts[] = 'ra';
$exts[] = 'rar';
$exts[] = 'rpm';
$exts[] = 'rtf';
$exts[] = 'scs';
$exts[] = 'sdt';
$exts[] = 'sis';
$exts[] = 'srt';
$exts[] = 'swf';
$exts[] = 'thm';
$exts[] = 'tsk';
$exts[] = 'txt';
$exts[] = 'utz';
$exts[] = 'war';
$exts[] = 'wav';
$exts[] = 'wbmp';
$exts[] = 'wmv';
$exts[] = 'xpi';
$exts[] = 'zip';
$exts[] = 'tar';
$exts[] = 'gz';
$exts[] = 'bz2';

$found = false;

foreach($exts as $key=>$value) {
if(getExt($name) == $value) {
$found = true;
break;
}
}

if(!$found) return false;
else return true;
}

function getWithoutPath($filename) {
return end(explode("/", $filename));
}

function p20repl($fn) {
return str_replace('%20', ' ', $fn);
}


$fid  = check(intval($_GET['fid']));
$fid2  = check(intval($_GET['fid2']));

if (isset($_GET['fid'])&&isset($_GET['fid2'])){

$cat = @$db->sql_fetchrow($db->sql_query("select * from  `fo_cat` where id = '".$fid."'" ));
$cat2 = @$db->sql_fetchrow($db->sql_query("select * from  `fo_cat2` where id = '".$fid2."'" ));
echo menu.'<a href="/fo">Oбменник</a>|<a href="/fo/'.$cat['id'].'"><b>'.$cat['name'].'</b></a>|<b>'.$cat2['name'].'</b>'.div;

//if(!is_dir($cat2['path'])) die('Такой папки не существует!');


if (empty($act)){

if ($_GET['halp']=='passprices'){
echo 'За каждый загруженный файл вы получаете деньги чата. За один мегабайт загруженных данных вам на счет зачисляется '.$set['rur_1mb'].' рубль.<br/>Также вы можете устанавливать цену на свой пароль (0 - пароль нельзя будет купить).
';
echo "<br/>";
echo gb.'<a href="/fo">Обменник</a>'.div;
echo gb.'<a href="/enter">Прихожая</a>'.div;
foot();
}

if ($ver=='wml'){
echo 'Загрузка файлов доступна только в xHTML версии!';
echo "<br/>";
echo gb.'<a href="/fo">Обменник</a>'.div;
echo gb.'<a href="/enter">Прихожая</a>'.div;
foot();
}

echo '<b>Перед загрузкой ознакомтесь с правилами:</b><br />
1) Запрещенно загружать файлы в несоответствующюю им категорию.<br />
2) В описании запрещено использовать нецензурную лексику.<br />
3) За нурещение 1 и 2 пункта, ваш файл будет удален, а вы наказанны!<br /><br />';


echo '<form action="?act=act&amp;'.SID.'" method="post" enctype="multipart/form-data">';
echo '<input type="radio" name="fileupl" value="f" id="fuid" checked><label for="fuid">Загрузить файл</label><br/>';

switch(parseUA($_SERVER['HTTP_USER_AGENT'])) {
case 1:
case 2:
echo '<b>*</b>Файл:<br/>';
echo '<input name="file_opera" value="" /><a href="op:fileselect">Выбрать файл</a><br/>';
case 3:
case 4:
default:
echo '<b>*</b>Файл:<br/>';
echo '<input type="file" name="file" /><br/>';
break;

}
echo '<input type="radio" name="fileupl" value="u" id="uuid"><label for="uuid">Загрузить по ссылке</label><br/><input type="text" name="url" value="http://" /><br/><br/>';
echo '<b>*</b>Имя:<br/><input type="text" name="name" value="" /><br/>';
echo '<b>*</b>Описание:<br/><input type="text" name="desc" value="" /><br/>';
echo 'Пароль:<br/><input type="password" name="password" value="" /><br/>';
echo 'Цена пароля (рублей), 0 - купить нельзя:<br/><input type="text" name="price" value="0" size="4" /> (<a href="?halp=passprices">Информация</a>)<br/>';

$chislo=rand(1000,9999);
$db->sql_query("DELETE FROM `chislo` WHERE `ip` = '".$ip."'");
$db->sql_query("INSERT INTO `chislo` (chislo,ip) values('$chislo','".$ip."')");
echo '&#160;<b>'.$chislo.'</b><br/><b>*</b>Проверочный код:<br/>
<input type="text" name="code" size="4" maxlength="4" title="code"/><br/>';

echo '<br /><input type="submit" class="ibutton" name="send" value="Отправить!" /></form><br/>';


}else{
$password = check($_POST['password']);
if(($_POST['password']!='')&&(!preg_match('!^[a-z0-9]+$!i',$_POST['password'])))$err = 'В пароле обнаружены запрешенные знаки!';

if($_POST['fileupl'] == '') $_POST['fileupl'] = 'f';
if($_POST['fileupl'] == 'f') {
if(isset($_POST['file_opera'])) {


$uploadedfile = $_POST['file_opera'];

if(strlen($uploadedfile)) {

if(strlen($uploadedfile) > 1024*1024*$set['fo_size']) $err = 'Размер файла превышает '.$set['fo_size'].' Мб.';


$array = explode('file=', $uploadedfile);
$tmp_name = $array[0];
$filebase64 = $array[1];
}
if (strlen($filebase64)) {
$name = $tmp_name;

$fname = $name;
$fnames=$name; //имя
if ((preg_match("/.php/i", $fnames)) or (preg_match("/.pl/i", $fnames)) or ($fnames == ".htaccess")) {
$err = 'Файлы такого типа запрещены!';
}
$ext2 = explode(".", $fname);
if (count($ext2) != 2) {
$err = 'Запрещены файлы не имеющие имени, расширения, или с двойным расширением.';
}

if (strlen($fname) > 30) {
$err = 'Длина названия файла не должна превышать 30 символов!';
}
if (eregi("[^a-z0-9.()+_-]", $fname)) {
$err = '<br />В названии файла "<b>' . $fname . '</b>" присутствуют недопустимые символы.<br />Разрешены только латинские символы, цифры и некоторые знаки ( .()+_- )<br />Запрещены пробелы.';
}

if(!checkExt($name))$err = 'Запрещенный формат файла<br/>';

$FileName = $cat2['path'].$password.del(check(retrans($name)));
if(file_exists($FileName)) $err = 'Файл уже существует';

if (empty($err)){

$filedata = base64_decode($filebase64);
$file = @fopen($FileName, "wb");
if($file){
if(flock($file, LOCK_EX)){
fwrite($file, $filedata);
flock($file, LOCK_UN);
}
fclose($file);
}
$path = $FileName;
}

}

} elseif(isset($_FILES['file']) && $_FILES['file']['error'] == 0) {
if(!checkExt($_FILES['file']['name'])) $err = 'Запрещенный формат файла<br/>';

$fnames=$_FILES['file']['name']; //имя
$fname = strtolower($_FILES['file']['name']);
if ((preg_match("/.php/i", $fnames)) or (preg_match("/.pl/i", $fnames)) or ($fnames == ".htaccess")) {
$err = 'Файлы такого типа запрещены!';
}
$ext2 = explode(".", $fname);
if (count($ext2) != 2) {
$err = 'Запрещены файлы не имеющие имени, расширения, или с двойным расширением.';
}

if (strlen($fname) > 30) {
$err = 'Длина названия файла не должна превышать 30 символов!';
}
if (eregi("[^a-z0-9.()+_-]", $fname)) {
$err = '<br />В названии файла "<b>' . $fname . '</b>" присутствуют недопустимые символы.<br />Разрешены только латинские символы, цифры и некоторые знаки ( .()+_- )<br />Запрещены пробелы.';
}

if($_FILES['file']['size'] > 1024*1024*$set['fo_size']) {
$err = 'Размер файла превышает '.$set['fo_size'].' Мб.';
}

$FileName = $cat2['path'].$password.del(check(retrans($_FILES['file']['name'])));
if(file_exists($FileName)) $err = 'Файл уже существует';

if (empty($err)){
copy($_FILES['file']['tmp_name'], $FileName);
$path = $cat2['path'].$password.del(check(retrans($_FILES['file']['name'])));

}


} else {
$err = 'Ошибка загрузки файла: '.$_FILES['file']['error'].'<br/>';
}

} elseif($_POST['fileupl'] == 'u') {

if($_POST['url'] == '') {
$err = 'Вы не ввели ссылку на файл!';
}

$f = @fopen($_POST['url'], 'r');
if(!$f) {
$err = 'Файл по ссылке <b>'.check($_POST['url']).'</b> недоступен. Возможно, он был удален или вы ввели неверную ссылку.</b>';
}

if(!checkExt($_POST['url'])) {
$err = 'Запрещенный формат файла<br/>';
}



$parametr = explode('#',trim($_POST['url']));
if(!isset($parametr[1])) $parametr[1] = basename(trim($parametr[0]));
$ex = pathinfo(trim($parametr[0]));
$ext = strtolower($ex['extension']);

$fname = $parametr[1];
$fnames=$parametr[1]; //имя

if ((preg_match("/.php/i", $fnames)) or (preg_match("/.pl/i", $fnames)) or ($fnames == ".htaccess")) {
$err = 'Файлы такого типа запрещены!';
}
$ext2 = explode(".", $fname);
if (count($ext2) != 2) {
$err = 'Запрещены файлы не имеющие имени, расширения, или с двойным расширением.';
}

if (strlen($fname) > 30) {
$err = 'Длина названия файла не должна превышать 30 символов!';
}
if (eregi("[^a-z0-9.()+_-]", $fname)) {
$err = '<br />В названии файла "<b>' . $fname . '</b>" присутствуют недопустимые символы.<br />Разрешены только латинские символы, цифры и некоторые знаки ( .()+_- )<br />Запрещены пробелы.';
}

while($c = fread($f, 1024)) $filedata .= $c;

if(strlen($filedata) > 1024*1024*$set['fo_size']) {
$err = 'Размер файла превышает <b>'.$set['fo_size'].' Мб</b>.';
}

$FileName = $cat2['path'].$password.del(check(retrans(getWithoutPath($_POST['url']))));
if(file_exists($FileName)) $err = 'Файл уже существует';

if (empty($err)){
fclose($f);
$_POST['url'] = p20repl($_POST['url']);
file_put_contents($FileName, $filedata);
$path = $cat2['path'].$password.del(check(retrans(getWithoutPath($_POST['url']))));

}

}
$desc = check($_POST['desc']);
if (strlen2($desc)<5)$err = 'Короткое описание!';
$online = $db->sql_fetchrow($db->sql_query("SELECT * FROM `chislo` WHERE `ip` = '".$ip."'"));
if($online['chislo'] != intval($_POST['code']))$err = 'Проверочный код введен неверно!';

if (empty($err)){
$name = check($_POST['name']);
$price = check(intval($_POST['price']));

$infolder = dirname($path).'/';
$size = filesize($path);
$query = $db->sql_query("INSERT INTO `fo_files` (`user_id`, `path`, `name`, `infolder`, `size` , `timeupload`, `about`, `pass`, `price`) VALUES ('$user[id]', '$path', '$name', '$infolder' , '$size' , '$time', '$desc', '$password', '$price');");
chmod($path, 0644);

if ($query){


if($size < 1048576) $size = 0;
else if($size > 1048576) $size = round($size/1024/1024);
$rur = $user['rur']+($set['rur_1mb']*$size);
$db->sql_query('UPDATE `users` SET `rur` = "'.$rur.'" WHERE `id` = "'.$user['id'].'"');

$user['fo_files']++;
$db->sql_query('UPDATE `users` SET `fo_files` = "'.$user['fo_files'].'" WHERE `id` = "'.$user['id'].'"');

header ('Location: /fo/'.$fid.'/'.$fid2.'?'.SID);  exit;
}else echo 'Ошибка загрузки!';
}else echo $err;

}

}else{
echo 'Такой папки не существует';
}

echo "<br/>";
echo gb.'<a href="/fo">Обменник</a>'.div;
echo gb.'<a href="/enter">Прихожая</a>'.div;
foot();
?>
