<?php
include 'system/func.php';
include 'system/ftp_connect.php';
switch(@$act){
default:
$d=dir_url('/'.boff(prov($_GET['d'])));
$title='Меню файла "'.basename($d).'"';
include 'system/head.php';
title($title);
if(empty($d)){
header('Location: /ftp.php');
}else{
ftp_pasv($serv,true);
$res = ftp_size($serv,$d);
if ($res == '-1') {
header('Location: /ftp.php');
}else{
$path=pathinfo(ftprename($d));
$rf=mb_strtolower($path['extension'],'UTF-8');
echo '<div class="menu"><b>•</b> <a href="/file.php?act=loadfile&d='.bon($d).'">Скачать файл</a><br/>';
if ($rf == 'zip'){
echo '<b>•</b> <a href="/unzip.php?d='.bon($d).'">Распаковать архив</a><br/><b>•</b> <a href="/zip.php?arh='.bon($d).'">Просмотр архива</a><br/>';
}
if ($rf != 'jpg' && $rf != 'jpeg' && $rf != 'jpe' && $rf != 'png' && $rf != 'gif' && $rf != 'bmp' && $rf != 'dll' && $rf != 'wav' && $rf != 'mid' && $rf != 'midi' && $rf != 'mp3' && $rf != 'mmf' && $rf != 'psd' && $rf != 'doc' && $rf != 'pdf' && $rf != 'zip' && $rf != 'rar' && $rf != 'jar' && $rf != '3gp' && $rf != 'avi' && $rf != 'mp4' && $rf != 'tgz' && $rf != 'gz' && $rf != 'bz' && $rf != 'gz2' && $rf != 'bz2' && $rf != 'tbz' && $rf != 'tbz2' && $rf != 'tgz2' && $rf != 'tar' && $rf != '7z' && $rf != 'ico') {
echo'<b>•</b> <a href="/notepad.php?d='.bon($d).'">Обычный редактор</a><br/><b>•</b> <a href="/edit.php?d='.bon($d).'">Редактировать в блокноте</a><br/><b>•</b> <a href="/file.php?act=inzip&d='.bon($d).'">Запаковать файл</a><br/>';
}
echo '<b>•</b> <a href="/file.php?act=iconv&d='.bon($d).'">Кодировка файла</a><br/><b>•</b> <a href="/file.php?act=copy&d='.bon($d).'">Копировать файл</a><br/><b>•</b> <a href="/file.php?act=rename&d='.bon($d).'">Переименовать</a><br/>';
echo '<b>•</b> <a href="/file.php?act=perenos&d='.bon($d).'">Переместить</a><br/><b>•</b> <a href="/file.php?act=del&d='.bon($d).'">Удалить файл</a><br/><b>•</b> <a href="/file.php?act=clear&d='.bon($d).'">Очистить файл</a><br/>
<b>•</b> <a href="/file.php?act=chmod&d='.bon($d).'">Права доступа</a><br/>
<b>•</b> <a href="/file.php?act=view&d='.bon($d).'">Просмотр кода</a><br/><b>•</b> <a href="/file.php?act=info&d='.bon($d).'">Свойства</a></div>';
echo '<div class="menu">« <a href="/ftp.php?d='.bon(verh2($d)).'">Назад</a></div>';
}
}
ftp_close($serv);
break;
case 'loadfile':
$d=boff(prov($_GET['d']));
if (empty($d)){
header('Location: /ftp.php');
}else{
$res=ftp_size($serv, $d);
if ($res == '-1'){
header('Location: /ftp.php');
}else{
if (ftp_get($serv, 'tmp/'.$savedir.'/'.basename($d), $d, FTP_BINARY)){
header('Content-Type: mime/type');
header('Content-Length: '.$res);
header('Content-Disposition: attachment; filename='.basename($d));
echo file_get_contents('tmp/'.$savedir.'/'.basename($d));
unlink('tmp/'.$savedir.'/'.basename($d));
exit();
}else{
header('Location: /file.php?d='.bon($d));
}
}
}
ftp_close($serv);
break;
case 'iconv':
$d=dir_url('/'.boff(prov($_GET['d'])));
$title='Кодировка файла "'.basename($d).'"';
include 'system/head.php';
title($title);
if(empty($d)){
header('Location: /ftp.php');
}else{
ftp_pasv($serv,true);
$res = ftp_size($serv,$d);
if ($res == '-1'){
header('Location: /ftp.php');
}else{
if (isset($_POST['ok'])){
$v=prov($_POST['v']);
$iz=prov($_POST['iz']);
$type=intval($_POST['type']);
if (empty($v) || empty($iz)){
$err='Не выбрана кодировка';
}
elseif (empty($type) || $type != '1' && $type != '2'){
$err='Не выбран тип перекодировки';
}
elseif ($iz == $v){
$err='Не возможно перекодировать из <b>'.$iz.'</b> в <b>'.$v.'</b>';
}
if (!empty($err)){
err($err);
}else{
if (ftp_get($serv, 'tmp/'.$savedir.'/recode.txt', $d, FTP_BINARY)) {
$file=file_get_contents('tmp/'.$savedir.'/recode.txt');
$file=iconv($iz,$v,$file);
file_put_contents('tmp/'.$savedir.'/recode.txt', $file);
if (ftp_put($serv, $d.''.($type == '2'?'.ftp':''), 'tmp/'.$savedir.'/recode.txt', FTP_BINARY)) {
echo '<div class="menu">Кодировка файла успешно изменена</div>';
unlink('tmp/'.$savedir.'/recode.txt');
} else {
err('Не удалось перекодировать файл');
}
} else {
err('Не удалось зугрузить файл на сервер');
}
}
}
echo '<div class="menu"><form method="post">Кодировка оригинала:<br/>
<select name="iz"><option value="utf-8" selected="selected">utf-8</option><option value="windows-1251">windows-1251</option><option value="koi8-r">koi8-r</option><option value="cp866">cp866</option><option value="cp1251">cp1251</option><option value="iso-8859-1">iso-8859-1</option></select>
<br/>Новая кодировка:<br/><select name="v"><option value="utf-8" selected="selected">utf-8</option><option value="windows-1251">windows-1251</option><option value="koi8-r">koi8-r</option><option value="cp866">cp866</option><option value="cp1251">cp1251</option><option value="iso-8859-1">iso-8859-1</option></select>
<br/>Тип перекодировки:<br/><input type="radio" name="type" value="1" checked="checked"> Перезаписать файл<br/><input type="radio" name="type" value="2"> Сохранить в новый файл<b>.ftp</b><br/><input class="btn btn-default" type="submit" name="ok" value="Перекодировать"></form></div>';
}
}
ftp_close($serv);
break;
case 'view':
$d=dir_url('/'.boff(prov($_GET['d'])));
$title='Код файла "'.basename($d).'"';
include 'system/head.php';
title($title);
if(empty($d)){
header('Location: /ftp.php');
}else{
ftp_pasv($serv,true);
$res = ftp_size($serv,$d);
if ($res == '-1'){
header('Location: /ftp.php');
}else{
if (ftp_get($serv, 'tmp/'.$savedir.'/'.basename($d), $d, FTP_BINARY)) {
$file=file_get_contents('tmp/'.$savedir.'/'.basename($d));
if (empty($file)){
err('Файл пуст');
}else{
$code=highlight_string($file, true);
$code=preg_replace('#<code>(.*)</code>#sU','\1',$code);
echo '<div class="menu">'.$code.'</div>';
}
unlink('tmp/'.$savedir.'/'.basename($d));
} else {
err('Не удалось зугрузить файл на сервер');
}
}
}
ftp_close($serv);
break;
case 'chmod':
$d=dir_url('/'.boff(prov($_GET['d'])));
$title='Права доступа файла "'.basename($d).'"';
include 'system/head.php';
title($title);
if(empty($d)){
header('Location: /ftp.php');
}else{
ftp_pasv($serv,true);
$res = ftp_size($serv,$d);
if ($res == '-1'){
header('Location: /ftp.php');
}else{
if (isset($_POST['ok'])){
$chmod=intval($_POST['chmod']);
if (empty($chmod)){
$err='Не введены права доступа';
}
elseif (!preg_match('#^[0-9]{3}+$#sU',$chmod) || !is_numeric($chmod) || strlen($chmod) != 3){
$err='Права доступа введены не верно';
}
if (!empty($err)){
err($err);
}else{
if (ftp_site($serv, 'CHMOD 0'.$chmod.' '.$d)){
echo '<div class="menu">Права доступа успешно изменены</div>';
} else {
err('Не удалось изменить права доступа');
}
}
}
echo '<div class="menu"><form method="post">Права доступа (chmod):<br/><input type="text" name="chmod" value="'.chminf($serv, $d).'"><br/><input class="btn btn-default" type="submit" name="ok" value="Изменить"></form></div>';
}
}
ftp_close($serv);
break;
case 'del':
$d=dir_url('/'.boff(prov($_GET['d'])));
$title='Удаление файла "'.basename($d).'"';
include 'system/head.php';
title($title);
if(empty($d)){
header('Location: /ftp.php');
}else{
ftp_pasv($serv,true);
$res = ftp_size($serv,$d);
if ($res == '-1'){
header('Location: /ftp.php');
}else{
if (isset($_GET['ok'])){
if (ftp_delete($serv,$d)){
header('Location: /ftp.php?d='.bon(verh2($d)));
} else {
err('Не удалось удалить файл');
}
}else{
echo '<div class="menu">Вы действительно хотите удалить данный файл?<br/><center><a href="/file.php?act=del&ok&d='.bon($d).'">Да</a> | <a href="/file.php?d='.bon($d).'">Нет</a></center></div>';
}
}
}
ftp_close($serv);
break;
case 'clear':
$d=dir_url('/'.boff(prov($_GET['d'])));
$title='Очистка файла "'.basename($d).'"';
include 'system/head.php';
title($title);
if(empty($d)){
header('Location: /ftp.php');
}else{
ftp_pasv($serv,true);
$res = ftp_size($serv,$d);
if ($res == '-1'){
header('Location: /ftp.php');
}else{
if (isset($_GET['ok'])){
$fi=ftprename($d);
file_put_contents('tmp/'.$savedir.'/'.$fi,'',0664);
if (ftp_put($serv, $d, 'tmp/'.$savedir.'/'.$fi, FTP_BINARY)){
echo '<div class="menu">Файл успешно очищен</div>';
unlink('tmp/'.$savedir.'/'.$fi);
} else {
err('Не удалось очистить файл');
}
}else{
echo '<div class="menu">Вы действительно хотите очистить данный файл?<br/><center><a href="/file.php?act=clear&ok&d='.bon($d).'">Да</a> | <a href="/file.php?d='.bon($d).'">Нет</a></center></div>';
}
}
}
ftp_close($serv);
break;
case 'rename':
$d=dir_url('/'.boff(prov($_GET['d'])));
$title='Переименование файла "'.basename($d).'"';
include 'system/head.php';
title($title);
if(empty($d)){
header('Location: /ftp.php');
}else{
ftp_pasv($serv,true);
$res = ftp_size($serv,$d);
if ($res == '-1'){
header('Location: /ftp.php');
}else{
if (isset($_POST['ok'])){
$name=prov($_POST['name']);
if (empty($name)){
$err='Не введено название файла';
}
elseif (!preg_match('#^[A-z0-9_\-\.]+$#sU',$name)){
$err='Обнаружены запрещённые символы. Разрешено: A-z0-9_-.';
}
if (!empty($err)){
err($err);
}else{
$newdir=dir_url('/'.ftprename2($d).'/'.$name);
if (ftp_rename($serv,$d,$newdir)) {
header('Location: /ftp.php?d='.bon(verh2($d)));
} else {
err('Не удалось переименовать файл');
}
}
}
echo '<div class="menu"><form method="post">Название файла (A-z0-9_-.):<br/><input type="text" name="name" value="'.ftprename($d).'"><br/><input class="btn btn-default" type="submit" name="ok" value="Переименовать"></form></div>';
}
}
ftp_close($serv);
break;
case 'perenos':
$d=dir_url('/'.boff(prov($_GET['d'])));
$title='Перемещение файла "'.basename($d).'"';
include 'system/head.php';
title($title);
if (empty($d)){
header('Location: /ftp.php');
}else{
ftp_pasv($serv,true);
$res = ftp_size($serv,$d);
if ($res == '-1'){
header('Location: /ftp.php');
}else{
if (isset($_POST['ok'])){
$put=prov($_POST['put']);
if (!empty($put)){
$put=dir_url('/'.$put.'/');
$verh=dir_url('/'.verh2($d).'/');
}
if (empty($put)){
$err='Не введён путь перемещения файла';
}
elseif (!preg_match('#^[A-z0-9_\-\/\.]+$#sU',$put)){
$err='Обнаружены запрещённые символы. Разрешено: A-z0-9_-/.';
}
elseif ($put == $verh){
$err='Данный файл и так находится в этой директории';
}
if (!empty($err)){
err($err);
}else{
$newdir=dir_url('/'.$put.'/'.basename($d));
if (ftp_rename($serv,$d,$newdir)) {
header('Location: /ftp.php?d='.bon($put));
} else {
err('Не удалось переместить файл');
}
}
}
$value=dir_url('/'.verh2(verh2($d)).'/');
echo '<div class="menu"><form method="post">Путь перемещения (A-z0-9_-/.):<br/><input type="text" name="put" value="'.$value.'"><br/><input class="btn btn-default" type="submit" name="ok" value="Переместить"></form></div>';
}
}
ftp_close($serv);
break;
case 'copy':
$d=dir_url('/'.boff(prov($_GET['d'])));
$title='Копирование файла "'.basename($d).'"';
include 'system/head.php';
title($title);
if(empty($d)){
header('Location: /ftp.php');
}else{
ftp_pasv($serv,true);
$res = ftp_size($serv,$d);
if ($res == '-1'){
header('Location: /ftp.php');
}else{
if (isset($_POST['ok'])){
$put=prov($_POST['put']);
if (!empty($put)){
$put=dir_url('/'.$put.'/');
$verh=dir_url('/'.verh2($d).'/');
}
if (empty($put)){
$err='Не введён путь копирования';
}
elseif (!preg_match('#^[A-z0-9_\-\/\.]+$#sU',$put)){
$err='Обнаружены запрещённые символы. Разрешено: A-z0-9_-/.';
}
elseif ($put == $verh){
$err='Данный файл уже есть в этой директории';
}
if (!empty($err)){
err($err);
}else{
$newdir=dir_url('/'.$put.'/'.basename($d));
if (ftp_get($serv, 'tmp/'.$savedir.'/'.basename($d), $d, FTP_BINARY)) {
if (ftp_put($serv, $newdir, 'tmp/'.$savedir.'/'.basename($d), FTP_BINARY)) {
unlink('tmp/'.$savedir.'/'.basename($d));
header('Location: /ftp.php?d='.bon($put));
} else {
err('Не удалось скопировать файл');
}
} else {
err('Не удалось зугрузить файл на сервер');
}
}
}
$value=dir_url('/'.verh2(verh2($d)).'/');
echo '<div class="menu"><form method="post">Путь копирования (A-z0-9_-/.):<br/><input type="text" name="put" value="'.$value.'"><br/><input class="btn btn-default" type="submit" name="ok" value="Копировать"></form></div>';
}
}
ftp_close($serv);
break;
case 'inzip':
$d=dir_url('/'.boff(prov($_GET['d'])));
$title='Архивирование файла "'.basename($d).'"';
include 'system/head.php';
title($title);
if(empty($d)){
header('Location: /ftp.php');
}else{
ftp_pasv($serv,true);
$res = ftp_size($serv,$d);
if ($res == '-1'){
header('Location: /ftp.php');
}else{
if (isset($_POST['ok'])){
$name=prov($_POST['name']);
if (empty($name)){
$err='Не введено название архива';
}
elseif (!preg_match('#^[A-z0-9_\-\.]+$#sU',$name)){
$err='Обнаружены запрещенные символы. Разрешено: A-z0-9_-.';
}
if (!empty($err)){
err($err);
}else{
mkdir('tmp/'.$savedir.'/archive',0777);
if (ftp_get($serv, 'tmp/'.$savedir.'/archive/'.basename($d), $d, FTP_BINARY)){
include 'system/pclzip.php';
$zip=new PclZip('tmp/'.$savedir.'/'.$name.'.zip');
if ($zip->create('tmp/'.$savedir.'/archive/'.basename($d), PCLZIP_OPT_REMOVE_ALL_PATH) != false){
ftp_put($serv, dir_url('/'.verh2($d).'/'.$name.'.zip'), 'tmp/'.$savedir.'/'.$name.'.zip',FTP_BINARY);
unlink('tmp/'.$savedir.'/'.$name.'.zip');
deldir('tmp/'.$savedir.'/archive');
unlink('tmp/'.$savedir.'/'.basename($d));
header('Location: /ftp.php?d='.bon(verh2($d)));
}else{
err('Ошибка создания архива');
}
}else{
err('Ошибка загрузки файла на сервер');
}
}
}
$value=pathinfo($d);
if ($value['basename'] != '.htaccess'){
$value=str_replace('.'.$value['extension'],'',$value['basename']);
}else{
$value='htaccess';
}
echo '<div class="menu"><form method="post">Название архива (A-z0-9_-.):<br/><input type="text" name="name" value="'.$value.'">.zip<br/><input class="btn btn-default" type="submit" name="ok" value="Архивировать"></form></div>';
}
}
ftp_close($serv);
break;
case 'info':
$d=dir_url('/'.boff(prov($_GET['d'])));
$title='Информация о файле "'.basename($d).'"';
include 'system/head.php';
title($title);
if (empty($d)){
header('Location: /ftp.php');
}else{
$res=ftp_size($serv, $d);
if ($res == '-1'){
header('Location: /ftp.php');
}else{
echo '<div class="menu">Название: '.basename($d).'<br/>Размер: '.sizer($res).'<br/>Права доступа: '.chminf($serv, $d).''.(dirinf($serv, $d, 'user') !=false?'<br/>Владелец: '.dirinf($serv, $d, 'user'):'').''.(dirinf($serv, $d, 'group') != false?'<br/>Группа: '.dirinf($serv, $d, 'group'):'').''.(dirinf($serv, $d, 'date') != false?'<br/>Дата создания: '.dirinf($serv, $d, 'date'):'').'</div>';
}
}
ftp_close($serv);
break;
}
if ($act){
echo '<div class="menu">« <a href="/file.php?d='.prov($_GET['d']).'">Назад</a></div>';
}
include 'system/foot.php';
?>