<?php
// ini_set('display_errors',true);
// error_reporting(E_ALL);
//-----Подключаем функции-----//
$title='Файл менеджер';
include 'system/func.php';
include 'system/ftp_connect.php';
switch($act){
default:
//include 'system/head.php';
title($title);


$d=dir_url('/'.prov(boff($_GET['d'])).'/');
ftp_pasv($serv,true);
$lines = ftp_rawlist($serv, $d);
if (ftp_chdir($serv, $d) == false){
{ header('Location: /manager/explode.php'); exit; }
}else{
if (!empty($d) && $d != '/') echo '<div class="menu"><a href="/manager/explode.php?d='.bon(verh($d)).'"><img src="/inc/style/img/up.png" alt="up"></a> '.dir_url('/'.$d.'/').'</div>';
$cnt_dir=0;
for ($i=0; $i<count($lines); $i++) {
$name=preg_replace("~([^\s]*[\s]*){8}\s{1}(.*)~m","\\2",$lines[$i]);
if ($name != '.' && $name != '..' && !preg_match('/->/i',$name)){
$chm=preg_replace("~([^\s]*).*~m","\\1",$lines[$i]);
if ($chm[0] != '-'){
echo '<div class="menu"><a href="/manager/explode.php?d='.bon(dir_url('/'.$d.'/'.$name.'/')).'"> <img src="/img/manager/dir.gif"  width="19" height="19"> '.$name.'</a></div>';
$cnt_dir++;
}
}
}
$cnt_file=0;
for($j=0; $j<count($lines); $j++){
$name=preg_replace("~([^\s]*[\s]*){8}\s{1}(.*)~m","\\2",$lines[$j]);
if ($name!="." && $name!=".." && !preg_match('/->/i',$name)){
$size=preg_replace("~([^\s]*[\s]*){4}\s{1}([^\s]*)(.*)~m","\\2",$lines[$j]);
$chm=preg_replace("~([^\s]*).*~m","\\1",$lines[$j]);
if ($chm[0] == "-") {

//echo '<a class="section" href="/manager/file.php?d='.bon(dir_url('/'.$d.'/'.$name)).'"><img src="/design/manager/'.strtr((string)$mtip, $img_typ). '" alt="*" width="19" height="19"> '.$name.'  ['.sizer($size).']<br/></a></div>'; 

echo '<div class="menu"><a href="/manager/file.php?d='.bon(dir_url('/'.$d.'/'.$name)).'"><img src="/img/manager/file.gif" alt="*" width="19" height="19"> '.$name.'  ['.sizer($size).']</a></div>';    
///
$img_typ = array(
    'html' => 'html.png',
    'php' => 'php.png'
    );
///
$cnt_file++;
 }
 }
}
if ($cnt_dir == 0 && $cnt_file == 0){echo '<div class="err">Папка пуста</div>';}
echo '<div class="title">Папок: '.$cnt_dir.' / Файлов: '.$cnt_file.'</div>';
echo '<div class="menu">Создать: <a href="/manager/explode.php?act=newfile&amp;d='.bon($d).'"><span class="main">файл</span></a> / <a href="/manager/explode.php?act=newdir&amp;d='.bon($d).'"><span class="main">папку</span></a><br/></div>';
if (!empty($d) && $d != '/') echo '<div class="menu"><a href="/manager/dir.php?d='.bon($d).'"><img src="/img/manager/dir.gif" alt="*"> Меню папки ['.basename($d).']</a></div>';
echo '<div class="menu"><a href="/manager/change.php?d='.bon($d).'"><img src="/img/manager/multi.gif" alt="*"> Расширенный режим</a></div>
<div class="menu"><a href="/manager/explode.php?act=upload&amp;d='.bon($d).'"><img src="/img/manager/file.gif" alt="*"> Выгрузить файл</a></div>
<div class="menu"><a href="/manager/explode.php?act=import&amp;d='.bon($d).'"><img src="/img/manager/file.gif" alt="*"> Импортировать файл</a></div>';
 }

ftp_close($serv);
break;
case 'newdir':
$title='Создание папки';
include 'system/head.php';
title($title);
$d=dir_url('/'.boff(prov($_GET['d'])).'/');
if(ftp_chdir($serv, $d) == false){
{ header('Location: /manager/explode.php'); exit; }
}else{
if (isset($_POST['ok'])){
$name=prov($_POST['name']);
if (empty($name)){$err='<div class="err">Не введено название</div>';}
elseif (!preg_match('/^[A-z0-9_\-\.]+$/ui',$name)){$err='<div class="err">Не верно введено название папки</div>';}
if (!empty($err)){
err($err);
}else{
$dir=dir_url('/'.$d.'/'.$name.'/');
if (ftp_mkdir($serv,$dir)) {
{ header('Location: /manager/explode.php?d='.bon($d)); exit; }
} else {
err('<div class="err">Не удалось создать папку</div>');
}
}
}
echo '<div class="menu"><form method="post">Название (A-z0-9_-.):<br/><input type="text" name="name" value="image"><br/><input class="btn btn-default" type="submit" name="ok" value="Создать"></form></div>';
}
ftp_close($serv);
break;
case 'newfile':
$title='Создание файла';
include 'system/head.php';
title($title);
$d=dir_url('/'.boff(prov($_GET['d'])).'/');
if (ftp_chdir($serv, $d) == false){
{ header('Location: /manager/explode.php'); exit; }
}else{
if (isset($_POST['ok'])){
$name=prov($_POST['name']);
if (empty($name)){
$err='<div class="err">Не введено название файла</div>';
}
elseif (!preg_match('/^[A-z0-9_\-\.]+$/ui',$name)){
$err='<div class="err">Не верно введено название файла</div>';
}
if (!empty($err)){
err($err);
}else{
file_put_contents('tmp/'.$savedir.'/create.txt', filteroff($_POST['text']), 0664);
$remote_file=dir_url('/'.$d.'/'.$name);
if (ftp_put($serv, $remote_file, 'tmp/'.$savedir.'/create.txt', FTP_BINARY)) {
unlink('tmp/'.$savedir.'/create.txt');
{ header('Location: /manager/explode.php?d='.bon($d)); exit; }
} else {
err('<div class="err">Не удалось создать файл</div>');
}
}
}
$value='<?php

?>';
echo '<div class="menu"><form method="post">Название (A-z0-9_-.):<br/><input type="text" name="name" value="index.php"><br/>Содержимое:<br/><textarea name="text" cols="80" rows="15" style="width: 93%">'.$value.'</textarea><br/><input class="btn btn-default" type="submit" name="ok" value="Создать"></form></div>';
}
ftp_close($serv);
break;
case 'import':
$title='Импортирование файла';
include 'system/head.php';
title($title);
$d=dir_url('/'.boff(prov($_GET['d'])).'/');
if (ftp_chdir($serv, $d) == false){
{ header('Location: /manager/explode.php'); exit; }
}else{
if (isset($_POST['ok'])){
$url=prov($_POST['url']);
$path=pathinfo($url);
if (empty($url) || $url == 'http://' || $url == 'https://'){
$err='<div class="err">Не введён url файла</div>';
}
elseif (!preg_match('#^(http|https)://(.*)$#sU',$url) || !public_url_ok($url)){
$err='<div class="err">Не верно введён адрес файла</div>';
}
elseif (GetFileSize(html_entity_decode($url, ENT_QUOTES, 'UTF-8')) > $maxupload){
$err='<div class="err">Максимальный размер импортируемого файла '.sizer($maxupload).'</div>';
}
elseif (!copy(html_entity_decode($url, ENT_QUOTES, 'UTF-8'), 'tmp/'.$savedir.'/'.basename($path['basename']), public_url_ctx())){
$err='<div class="err">Не удалось импортировать файл</div>';
}
if (!empty($err)){
err($err);
}else{
$remote_file=dir_url('/'.$d.'/'.$path['basename']);
$imported = ftp_put($serv, $remote_file, 'tmp/'.$savedir.'/'.basename($path['basename']), FTP_BINARY);
@unlink('tmp/'.$savedir.'/'.basename($path['basename']));
if ($imported) {
{ header('Location: /manager/explode.php?d='.bon($d)); exit; }
} else {
err('<div class="err">Не удалось импортировать файл</div>');
}
}
}
echo '<div class="menu"><form method="post">URL файла (max '.sizer($maxupload).'):<br/><input type="text" name="url" value="http://"><br/><input class="btn btn-default" type="submit" name="ok" value="Импортировать"></form></div>';
}
ftp_close($serv);
break;
case'upload':
$title='Выгрузка файла';
include 'system/head.php';
title($title);
$d=dir_url('/'.boff(prov($_GET['d'])).'/');
if (ftp_chdir($serv, $d) == false){
{ header('Location: /manager/explode.php'); exit; }
}else{
if (isset($_POST['ok'])){
if (empty($_FILES['file']['name'])){
$err='<div class="err">Не выбран файл</div>';
}
elseif ($_FILES['file']['size'] > $maxupload){
$err='<div class="err">Максимальный размер выгружаемого файла '.sizer($maxupload).'</div>';
}
elseif (!move_uploaded_file($_FILES['file']['tmp_name'], 'tmp/'.$savedir.'/'.($_FILES['file']['name'] = basename($_FILES['file']['name'])))){
$err='<div class="err">Не удалось загрузить файл</div>';
}
if (!empty($err)){
err($err);
}else{
$remote_file=dir_url('/'.$d.'/'.$_FILES['file']['name']);
$file='tmp/'.$savedir.'/'.$_FILES['file']['name'];
$uploaded = ftp_put($serv, $remote_file, $file, FTP_BINARY);
@unlink($file);
if ($uploaded) {
{ header('Location: /manager/explode.php?d='.bon($d)); exit; }
} else {
err('<div class="err">Не удалось выгрузить файл на сервер</div>');
include 'system/foot.php';
exit();
}
}
}
echo '<div class="menu"><form method="post" enctype="multipart/form-data">Выберите файл (max '.sizer($maxupload).'):<br/><input type="file" name="file" style="width: 93%"><br/><input class="btn btn-default" type="submit" name="ok" value="Выгрузить"></form></div>';
}
ftp_close($serv);
break;
}
if ($act){
echo '<div class="menu"><a href="/manager/explode.php?d='.prov($_GET['d']).'">&laquo; Назад</a></div>';
}
include 'system/foot.php';
?>