View file functions.php

File size: 15.94Kb
<?
// Скрипт Файлового Менеджера
// Результат 3-х дневного круглосуточного бдения =)
//
// Версия: 0.1d
// Обновления Ищите Здеся: http://wapinet.ru/script/
// Автор: Gemorroj
//
// Номера кошельков. Надеюсь понятно для чего =)
// WMR 167963845445
// WMZ 225757696726



$time = 14400;                // + Время по гринвичу
$date_format = 'd.m.Y H:i';   // Формат даты
$string = 1;                  // Поле ввода где можно в ручную набирать путь к папке/файлу
$realname = 1;                // Полные пути к файлам/директориям
$translit = 0;                // Транслит имен файлов и папок
$auth = 0;                    // Авторизация
$user_pass = '1234';          // Пароль
$user_name = 'Gemorroj';      // Логин
$php = '/usr/local/bin/php';  // Путь к PHP

// Верх
$top = '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
<head>
<title>Page</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>';

// Низ
$foot = '<div class="w">Powered by Gemorroj<br/>
<a href="http://wapinet.ru">wapinet.ru</a></div></body></html>';

// Язык
$lng = array(
'title_index'=>'Содержимое Папки',
'title_look'=>'Редактирование Файла',
'title_change'=>'Измнение Параметров',
'name'=>'Имя',
'type'=>'Тип',
'size'=>'Размер',
'change'=>'Изменение',
'del'=>'Удаление',
'chmod'=>'CHMOD',
'date'=>'Дата',
'create_dir'=>'Создать Каталог',
'create_file'=>'Создать Файл',
'go'=>'Перейти',
'ch'=>'Изменить',
'dl'=>'Удалить',
'cr'=>'Создать',
'sz'=>'Размер',
'change_name'=>'Имя',
'change_chmod'=>'CHMOD',
'change_del'=>'Удалить Исходный Файл',
'change_func'=>'Переместить/Переименовать',
'only_write'=>'Только для Записи',
'syntax'=>'Синтаксис',
'charset'=>'Кодировка',
'charset_no'=>'Оригинал',
'charset_utf'=>'UTF-8',
'charset_win'=>'Win-1251',
'warning'=>'Такой Файл Уже Существует<br/>Вся Информация в Нем Будет Уничтожена',
'back'=>'Назад',
'file'=>'Файл',
'dir'=>'Папка',
'not_found'=>'Файл не Найден',
'copy_file_true'=>'Файл Скопирован',
'copy_file_false'=>'Файл не Скопирован',
'move_file_true'=>'Файл Перемещен',
'move_file_false'=>'Файл не Перемещен',
'del_file_true'=>'Файл Удален',
'del_file_false'=>'Файл не Удален',
'create_file_true'=>'Файл Создан',
'create_file_false'=>'Файл не Создан',
'create_dir_true'=>'Каталог Создан',
'create_dir_false'=>'Каталог не Создан',
'fputs_file_true'=>'Данные Записаны',
'fputs_file_false'=>'Данные не Записаны',
'chmod_true'=>'Права Изменены',
'chmod_false'=>'Права не Изменены',
'copy_files_true'=>'Файлы Скопированы',
'move_files_true'=>'Файлы Перемещены',
'del_dir_true'=>'Каталог Удален',
'syntax_true'=>'Синтаксических Ошибок не Найдено',
'syntax_file_not_found'=>'File not Found',
'syntax_not_check'=>'Файл не Проверен',
'syntax_show_full'=>'Показать Синтаксис',
'syntax_line'=>'Строка:',
'syntax_unknown'=>'Unknown'
);


///////////////////
// Дальше Функции, туда не влезай - убьет. =)
//////////////////





include_once 'gzip.php'; // Компрессия


if($auth)
{

function auth($user,$pass)
{
global $user_name, $user_pass;
if(empty($user) || empty($pass))
{
header("WWW-Authenticate: Basic realm=\"Authentification\"");
header("HTTP/1.0 401 Unauthorized");
header("Content-type: text/html; charset=utf-8");
print '<html><head><title>Error</title></head><body><p style="color:red;font-size:24pt;text-align:center">Unauthorized</p></body></html>';
exit;
}
else
{
if(($user != $user_name) || ($pass != $user_pass))
{
header("WWW-Authenticate: Basic realm=\"Authentification\"");
header("HTTP/1.0 401 Unauthorized");
header("Content-type: text/html; charset=utf-8");
print '<html><head><title>Error</title></head><body><p style="color:red;font-size:24pt;text-align:center">Unauthorized</p></body></html>';
exit;
}
}
}

auth($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']);
}


function send_header()
{
if(substr_count($_SERVER['HTTP_USER_AGENT'], 'MSIE'))
{
header('Content-type: text/html; charset=UTF-8');
}
else
{
//header('Content-type: text/html; charset=UTF-8');
header('Content-type: application/xhtml+xml; charset=UTF-8');
}
header('Cache-control: no-cache');
}


function c($query,$c)
{
if(!$query)
{
$current = '.';
}
else
{
if($c)
{
$current = trim(rawurldecode($c));
if(is_dir($current))
{
if(strrchr($current,'/') != '/')
{
$current = $current.'/';
}
}
}
else
{
$current = trim(rawurldecode($query));
}
}
return $current;
}


function translit($file)
{
$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','q','Y','y','C','c','X','x');
$b = array(' ','','Я','Я','я','ые','Ё','ё','Ё','Ж','ж','Ж','З','з','Ч','ч','Ch','Ш','ш','Ш','Э','э','Э','Ю','ю','Ю','Я','я','Я','А','а','Б','б','В','в','Г','г','Д','д','Е','е','И','и','Й','й','К','к','Л','л','М','м','Н','н','О','о','П','п','Р','р','С','с','Т','т','У','у','Ф','ф','Х','х','Щ','щ','ь','Ы','ы','Ц','ц','Х','х');

if(strpos($file , '--') !== false)
{
$name = str_replace($a,$b,$file);
}
else
{
$name = str_replace('_',' ',$file);
}
//$name = strtok($name,'.');
return $name;
}


function this($current)
{
global $lng,$realname;
if($realname)
{
$realpath = realpath($current);
}
else
{
$realpath = $current;
}
$up = explode_url($current,3);

if(is_dir($current))
{
if($current == '.')
{
$page = '<div class="border">'.$lng['dir'].' <strong><a href="index.php">'.getcwd().'</a></strong> ('.look_chmod(getcwd()).')<br/></div>';
}
else
{
$page = '<div class="border">'.$lng['back'].' <a href="index.php?'.$up.'">'.$up.'</a> ('.look_chmod($up).')<br/></div>
<div class="border">'.$lng['dir'].' <strong><a href="index.php?'.$current.'">'.$realpath.'</a></strong> ('.look_chmod($current).')<br/></div>';
}
}
elseif(is_file($current))
{
$d = explode_url($current,2);
$page = '<div class="border">'.$lng['back'].' <a href="index.php?'.$up.'">'.$up.'</a> ('.look_chmod($up).')<br/></div>
<div class="border">'.$lng['dir'].' <strong><a href="index.php?'.$d.'">'.$d.'</a></strong> ('.look_chmod($d).')<br/></div>
<div class="border">'.$lng['file'].' <strong><a href="edit.php?'.$current.'">'.$realpath.'</a></strong> ('.look_chmod($current).')<br/></div>';
}
return $page;
}


function static_name($current,$dest)
{
$len = strlen($current);
if(substr($dest,0,$len) == $current)
{
$static = substr($dest,$len);

if(strpos($static,'/'))
{
$static = strtok($static,'/');
}
}
else
{
$ststic = NULL;
}
return $static;
}


function copy_d($dest)
{
$ex = explode('/',$dest);
foreach($ex as $var)
{
$tmp.= $var.'/';
mkdir($tmp);
}
}


function copy_files($source,$dest,$static)
{
global $lng;
    $folder = opendir($source);
    while($file = readdir($folder))
    {
        if($file == '.' || $file == '..' || $file == $static) {
            continue;
        }
        if($source == $dest) {
            break;
        }

        if(is_dir($source.'/'.$file))
        {
            mkdir($dest.'/'.$file,0777);
            copy_files($source.'/'.$file,$dest.'/'.$file,$static);
        }
        else
        {
            copy($source.'/'.$file,$dest.'/'.$file);
        }

    }
    closedir($folder);
return '<div class="red">'.$lng['copy_files_true'].'<br/></div>';
}


function move_files($source,$dest,$static)
{
global $lng;
    $folder = opendir($source);
    while($file = readdir($folder))
    {
        if($file == '.' || $file == '..' || $file == $static)
        {
            continue;
        }
        if($source == $dest) {
            break;
        }

        if(is_dir($source.'/'.$file))
        {
            mkdir($dest.'/'.$file,0777);
            move_files($source.'/'.$file,$dest.'/'.$file,$static);
            rmdir($source.'/'.$file);
        }
        else
        {
            if(copy($source.'/'.$file,$dest.'/'.$file))
            {
                unlink($source.'/'.$file);
            }

        }

    }
    closedir($folder);
    rmdir($source);
return '<div class="red">'.$lng['move_files_true'].'<br/></div>';
}


function copy_file($source,$dest)
{
global $lng;
$dir = dirname($dest);
{
copy_d($dir);
}
if(copy($source,$dest))
{
$page.= '<div class="red">'.$lng['copy_file_true'].'<br/></div>';
}
else
{
$page.= '<div class="red">'.$lng['copy_file_false'].'<br/></div>';
}
return $page;
}


function move_file($source,$dest)
{
global $lng;
$dir = dirname($dest);
{
copy_d($dir);
}
if(copy($source,$dest))
{
del_file($source);
$page.= '<div class="red">'.$lng['move_file_true'].'<br/></div>';
}
else
{
$page.= '<div class="red">'.$lng['move_file_false'].'<br/></div>';
}
return $page;
}


function del_file($file)
{
global $lng;
if(unlink($file))
{
$page.= '<div class="red">'.$lng['del_file_true'].'<br/></div>';
}
else
{
$page.= '<div class="red">'.$lng['del_file_false'].'<br/></div>';
}
return $page;
}


function del_dir($directory)
{
$dir = opendir($directory);
while($file = readdir($dir))
{
if(is_file($directory.'/'.$file))
{
unlink($directory.'/'.$file);
}
elseif(is_dir($directory.'/'.$file) && ($file != '.') && ($file != '..'))
{
del_dir($directory.'/'.$file);
}
}
closedir($dir);
rmdir($directory);
}


function explode_url($current,$kol)
{
$ex = explode('/',$current);
$count = count($ex)-$kol;

if($count >= 0)
{
$i = 0;
do
{
$up.= $ex[$i].'/';
}
while(++$i <= $count);
}
else
{
$up = '.';
}
return $up;
}


function dir_size($file)
{
/*
$res = `du -sk $file`; // Unix комманда
preg_match('/\d+/', $res, $kb); // Parse result
$mb = round($kb[0] / 1024, 1); // From kilobytes to megabytes
return $mb.' mb';
*/
if(!is_dir($file) || !is_readable($file))
{
return false;
}
$dirname_stack[] = $file;
$size = 0;
do
{
$dirname = array_shift($dirname_stack);
$handle = opendir($dirname);
while($file = readdir($handle))
{
if($file != '.' && $file != '..' && is_readable($dirname . DIRECTORY_SEPARATOR . $file))
{
if(is_dir($dirname . DIRECTORY_SEPARATOR . $file))
{
$dirname_stack[] = $dirname . DIRECTORY_SEPARATOR . $file;
}
$size += filesize($dirname . DIRECTORY_SEPARATOR . $file);
}
}
closedir($handle);
}
while(count($dirname_stack) > 0);
$kb = round($size/1024,1);
return $kb.' kb';
}


function file_size($file)
{
$kb = round(filesize($file)/1024,1);
return $kb.' kb';
}


function look_chmod($file)
{
//$chmod = `ls -l $file`; // Unix комманда
$chmod =  substr(sprintf('%o', fileperms($file)), -4);
return $chmod;
}


function create_file($file,$mode,$chmod,$text)
{
global $lng;
if($create = fopen($file, $mode))
{
$page.= '<div class="red">'.$lng['create_file_true'].'<br/></div>';
if($text)
{
if(fputs($create,$text))
{
$page.= '<div class="red">'.$lng['fputs_file_true'].'<br/></div>';
}
else
{
$page.= '<div class="red">'.$lng['fputs_file_false'].'<br/></div>';
}
}
fclose($create);
$page.= rechmod($file,$chmod);
}
else
{
$page.= '<div class="red">'.$lng['create_file_false'].'<br/></div>';
}
return $page;
}


function rechmod($current,$chmod)
{
global $lng;
if(chmod(trim($current), octdec(trim($chmod))))
{
$page.= '<div class="red">'.$lng['chmod_true'].'<br/></div>';
}
else
{
$page.= '<div class="red">'.$lng['chmod_false'].'<br/></div>';
}
return $page;
}


function create_dir($dir,$chmod)
{
global $lng;
if(mkdir($dir, octdec(trim($chmod))))
{
$page.= '<div class="red">'.$lng['create_dir_true'].'<br/></div>';
}
else
{
$page.= '<div class="red">'.$lng['create_dir_false'].'<br/></div>';
}
return $page;
}


function syntax($source)
{
global $lng,$php;
if(file_exists($source))
{
$source = escapeshellcmd($source);
exec($php.' -c -f -l "'.$source.'"',$rt,$v);
$erl = 0;
if(($v == 255)||(count($rt) == 3))
{
$st = trim(strip_tags($rt[1]));
$error = 1;
if($st<>NULL)
{
$srp = trim(preg_replace("~[^:]*:(.*)(in [^\s]*".$source.").*~","\\1",$st,1));
$page.= str_replace($source,'',$srp);
$st = str_replace($source,'',$st);
$erl = preg_replace("~.*\s(\d*)$~","\\1",$st,1);
if($erl<>NULL)
{
$page.= '<br/>'.$lng['syntax_line'].' '.$erl.'<br/>';
}
}
else
{
$page.= $lng['syntax_unknown'].'<br/>';
}
$page.= '<hr/>';
}
elseif($v === 0)
{
$error = 1; // Если 2 то при правильном синтаксисе код выводиться не будет
$page.= $lng['syntax_true'].'<br/>';
}
$page = '<div class="red">'.$page.'</div>';
if($error == 1)
{
$page.= '<div class="code">';
$fl = str_replace("\n",'',trim(file_get_contents($source)));
$fl = highlight_string($fl,true);

//$fl = str_replace(array('<code>','</code>'),array('',''),$fl);

$fl = str_replace(array('<font ', '</font>'), array('<span ', '</span>'), $fl);
$fl = preg_replace('#color="(.*?)"#', 'style="color: \\1"', $fl);

$arr = split("\r",$fl);
$cnt = count($arr);

$begin = 0;
$end = $cnt;

for($i=$begin; $i<$end; $i++)
{
if($i == $erl-1)
{
$page.= '<span class="fail_code">&#160;'.($i+1).'&#160;</span> '.$arr[$i].'<br/>';
}
else
{
$page.= '<span class="true_code">'.($i+1).'</span> '.$arr[$i].'<br/>';
}
}

$page.= '</div>';

}
elseif($error<>2)
{
$page.= $lng['syntax_not_check'].'<br/>';
}
}
else
{
$page.= $lng['syntax_file_not_found'].'<br/>';
}

return $page;
}




/////  Win
// 192 - А
// 223 - Я
// 224 - а
// 255 - я
// 168 - Ё
// 184 - ё

$utf = array(
'А',
'Б',
'В',
'Г',
'Д',
'Е',
'Ё',
'Ж',
'З',
'И',
'Й',
'К',
'Л',
'М',
'Н',
'О',
'П',
'Р',
'С',
'Т',
'У',
'Ф',
'Х',
'Ц',
'Ч',
'Ш',
'Щ',
'Ь',
'Ы',
'Ъ',
'Э',
'Ю',
'Я',
'а',
'б',
'в',
'г',
'д',
'е',
'ё',
'ж',
'з',
'и',
'й',
'к',
'л',
'м',
'н',
'о',
'п',
'р',
'с',
'т',
'у',
'ф',
'х',
'ц',
'ч',
'ш',
'щ',
'ь',
'ы',
'ъ',
'э',
'ю',
'я'
);

$win = array(
chr(192),
chr(193),
chr(194),
chr(195),
chr(196),
chr(197),
chr(168),
chr(198),
chr(199),
chr(200),
chr(201),
chr(202),
chr(203),
chr(204),
chr(205),
chr(206),
chr(207),
chr(208),
chr(209),
chr(210),
chr(211),
chr(212),
chr(213),
chr(214),
chr(215),
chr(216),
chr(217),
chr(218),
chr(219),
chr(220),
chr(221),
chr(222),
chr(223),
chr(224),
chr(225),
chr(226),
chr(227),
chr(228),
chr(229),
chr(184),
chr(230),
chr(231),
chr(232),
chr(233),
chr(234),
chr(235),
chr(236),
chr(237),
chr(238),
chr(239),
chr(240),
chr(241),
chr(242),
chr(243),
chr(244),
chr(245),
chr(246),
chr(247),
chr(248),
chr(249),
chr(250),
chr(251),
chr(252),
chr(253),
chr(254),
chr(255)
);

function win_to_utf($source)
{
global $utf,$win;
return str_replace($win,$utf,$source);
}

function utf_to_win($source)
{
global $utf,$win;
return str_replace($utf,$win,$source);
}

?>