<?php
/*
Автор скрипта: Juse
Модификация: Jahak
*/

include_once "config.php";
include_once "head.php";

if (!isset($_GET['action'])){
    echo '<div class="rmenu"><b>Ошибка! Не выбранна команда!</b></div>';
    include_once "foot.php";
    exit;
}
if (!file_exists($_GET['fid'])){
    echo '<div class="rmenu"><b>Ошибка! Файл не найден!</b></div>';
    include_once "foot.php";
    exit;
}
if ($_GET['action']=="delfile"){
    if ($_GET['r']=="1"){
        if (unlink($_GET['fid'])){
        echo '<div class="list2">Файл успешно удалён!</div>'; 
        } else {
            echo '<div class="rmenu">Ошибка удаления файла!</div>';
        }
    } else {
        $_GET['fid'] = str_replace('/', '%2f', $_GET['fid']); 
        echo '<div class="bmenu">Файл: <b>'.$_GET['fid'].'</b></div><div class="list2"><b>Вы подтверждаете что хотите удалить файл?</b><br /><a href="?action=delfile&amp;r=1&amp;fid='.$_GET['fid'].'">Да</a> / <a href="index.php?action=viewfile&amp;fid='.$_GET['fid'].'">Нет</a></div>';
    }
}
if($_GET['action']=="rar_view"){
    if(preg_match("/h2m.ru/i",$_SERVER['HTTP_HOST'])){
        echo 'Извените, но ваш хостинг не поддерживает такую функцию.';
        } else {
            function sizer($s) {
                $o=1;
                while($s>1024) {
                $s = round($s / 1024, 1);
                $o++;
                } switch($o) {
                    case(1): $o='b';
                        break;
                    case(2): $o='Kb';
                        break;
                    case(3): $o='Mb';
                        break;
                    case(4): $o='Gb';
                        break;
                } return $s.$o;
            }
            $filepath = str_replace('%2f','/',$_GET['fid']);
            $rar = rar_open($filepath) or die('<div class="rmenu">Ошибка открытия RAR архива</div>');
            $list = rar_list($rar);
            $c = count($list); echo 'Обьектов: '.$c.'<hr/>';
            for($i = 0; $i<$c; $i++) {
                echo $list[$i]->name.' ['.sizer($list[$i]->unpacked_size).'/'.sizer($list[$i]->packed_size).']<br />';
            }
            rar_close($rar);
        }
}
if ($_GET['action']=="rename"){
    $_GET['fid'] = str_replace("%2f", "/", $_GET['fid']);
    $exp = dirname(realpath($_GET['fid'])); 
    $exts = realpath($_GET['fid']);
    $exti = str_replace($exp, $exts, $exts);
    $ext = strtolower(substr($exti, 1 + strrpos($exti, "/")));
    $_GET['fid'] = str_replace("/", "%2f", $_GET['fid']);
    echo '<div class="bmenu">Файл: <b>'.$_GET['fid'].'</b></div>' .
    '<div class="list2">' .
    '<form action="?action=renamer&amp;fid='.$_GET['fid'].'" method="post">' .
    'Название файла:<br /><input type="hidden" name="starname" value="'.$ext.'" />' .
    '<input name="newname" value="'.$ext.'" /><br />' .
    '<input type="submit" value="Переименовать" />' .
    '</form></div>' .
	'<div class="menu"><a href="index.php?action=viewfile&amp;fid='.$_GET['fid'].'">Назад</a></div>';
}
if ($_GET['action']=="renamer"){
    if(eregi("/", $_POST['newname'])){
        echo '<div class="rmenu">Ошибка! Не верное название файла! Допустимые символы: a-z _ 0-9 -</div>';
        include_once "foot.php";
        exit;
    }
    $a = str_replace($_POST['starname'], $_POST['newname'], $_GET['fid']);
    if (rename($_GET['fid'],$a)){
        echo 'Файл/Папка успешно переминована!'; 
    } else {
        echo '<div class="rmenu">Ошибка переименования Файла/Папки</div>';
    }
}
if ($_GET['action']=="view"){
    $file = file_get_contents($_GET['fid']);
 /*    echo '<div class="bmenu">Файл: <b>'.$_GET['fid'].'</b></div>
<div class="list2">'.highlight_string($file, true).'</div>
<div class="menu"><a href="index.php?action=viewfile&amp;fid='.$_GET['fid'].'">Назад</a></div>'; */
    include_once 'geshi/geshi.php';
    $sf = str_replace("../", "", $_GET['fid']);
?>
<div class="bmenu">
Файл: <b><?php echo $sf; ?></b>
</div>
<div class="list2">
<?php
    $language = substr(strrchr($_GET['fid'], "."), 1);
    $geshi = new GeSHi($file, $language);
    $geshi->set_header_type(GESHI_HEADER_NONE);
    $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
    // $geshi->set_line_style('color: #003030;', 'font-weight: bold; color: #006060;', true);
    // $geshi->set_code_style('color: #000020;', true);
    $geshi->set_link_styles(GESHI_LINK, 'color: #000060;');
    $geshi->set_link_styles(GESHI_HOVER, 'background-color: #f0f000;');
    // $geshi->set_header_content('Тип файла: <LANGUAGE>, Время генерации: <TIME><hr noshade width="535">');
    echo $geshi->parse_code();
?>
</div>
<div class="menu">
<a href="index.php?action=viewfile&amp;fid=<?php echo $_GET['fid']; ?>">Назад</a>
</div>
<?php
    include_once 'foot.php';
}
###############
if ($_GET['action']=="clearfile"){
    if ($_GET['r']=="1"){ 
        $fp = fopen($_GET['fid'], "w");
        flock($fp, LOCK_EX);
        fputs($fp, '');
        flock($fp, LOCK_UN);
        fclose($fp);
        if ($fp){
            echo '<b>Файл успешно очищен!</b><br />';
        } else {
            echo '<br />Ошибка очистки файла!';
        }
    } else {
        $_GET['fid'] = str_replace('/', '%2f', $_GET['fid']);
        echo '<div class="bmenu">Файл: <b>'.$_GET['fid'].'</b></div>' .
        '<div class="list2"><b>Вы подтверждаете что хотите очистить файл?</b><br />' .
        '<a href="?action=clearfile&amp;r=1&amp;fid='.$_GET['fid'].'">Да</a>&nbsp;/&nbsp;<a href="index.php?action=viewfile&amp;fid='.$_GET['fid'].'">Нет</a></div>';
    }
}
/* CHMOD */
// if ($_GET['action']=="chmod"){
    // $_GET['fid'] = str_replace("%2f", "/", $_GET['fid']);
    // $ext = substr(sprintf("%o", fileperms($_GET['fid'])), -3);
    // $_GET['fid'] = str_replace("/", "%2f", $_GET['fid']);
    // echo '<form action="?action=chmode&amp;fid='.$_GET['fid'].'" method="post">
// <b>Права доступа</b><br />
// Chmod:<br /><input name="chmod" size="5" value="'.$ext.'">
// <input type="submit" value="Установить"/></form>';
// }
// if ($_GET['action']=="chmode"){
    // $_GET['fid'] = str_replace("%2f", "/", $_GET['fid']);
    // if(eregi("[^0-9]", $_POST['chmod'])){
        // echo 'Не верно введены права доступа! Вводите только числа!';
        // include_once "foot.php";
        // exit;
    // }
    // $chmod = '0'.$_POST['chmod'];
    // if (chmod($_GET['fid'], $chmod)){
        // chmod($_GET['fid'], $chmod);
        // echo 'Прова доступа установлены! ('.$_POST['chmod'].')<br />';
    // } else {
        // echo 'Ошибка установки прав доступа! Операция не позволяет! ('.$_POST['chmod'].')<br />';
    // }
// }
if ($_GET['action']=="info"){
    $sf = str_replace("../", "", $_GET['fid']);
    echo '<div class="bmenu">Свойства файла: <b>'.$sf.'</b></div>' .
    '<div class="list2">Размер: '.formatsize(filesize($_GET['fid'])).'<br />' .
    'Права доступа: '.substr(sprintf("%o", fileperms($_GET['fid'])), -3).'<br />' .
    'Група: '.filegroup($_GET['fid']).'<br />' .
    'Владелец: '.fileowner($_GET['fid']).'<br />' .
    'Время: '.maketime(filemtime($_GET['fid'])).'</div>' .
    '<div class="menu"><a href="index.php?action=viewfile&amp;fid='.$_GET['fid'].'">Назад</a></div>';
}
include_once "foot.php";