<?php
require 'system/core.php';
session_name('SLS_SSID');
session_start();
if(!isset($_SESSION['auth']))$_SESSION['auth'] = 0;
if($_SESSION['auth'] == 0 && isset($_GET['login']) && isset($_GET['password']))
{
if($_GET['login'] == $config['admin']['login'] && $_GET['password'] == $config['admin']['password'])
{
$_SESSION['auth'] = 1;
$_SESSION['getauth'] = 1;
}
}
if($_SESSION['auth'] == 0 && (empty($_SERVER['PHP_AUTH_USER']) || empty($_SERVER['PHP_AUTH_PW']) || $_SERVER['PHP_AUTH_USER'] != $config['admin']['login'] || $_SERVER['PHP_AUTH_PW'] != $config['admin']['password']))
{
header('WWW-Authenticate: Basic realm="SLS CMSv'.SLSVER.'"');
header('HTTP/1.0 401 Unauthorized');
header('Content-type: text/html; charset=utf-8');
exit('<html><head><title>Ошибка авторизации</title></head><body><h1>Ошибка авторизации</h1></body></html>');
}
function xchmod($file){return decoct(fileperms($file)) % 1000;}
function ext($file){return strtolower(pathinfo($file,PATHINFO_EXTENSION));}
function to($uri){header('Location: '.$uri); exit;}
function del($file)
{
if(!file_exists($file))return false;
if(is_dir($file))
{
$od = opendir($file);
while(($rd = readdir($od)) !== false)
{
if($rd == '.' || $rd == '..')continue;
# if(is_dir($file.'/'.$rd))del($file.'/'.$rd);
# else
del($file.'/'.$rd);
}
closedir($od);
@chmod($file,0777);
return (rmdir($file));
}
else
{
@chmod($file,0777);
return (unlink($file));
}
}
function lines($data)
{
if(is_string($data))
{
$string = true;
$data = explode('<br />',$data);
}
$c = count($data);
$maxlen = strlen($c);
for($i = 0;$i < $c;$i ++)
{
$data[$i] = '<span class="line">#'.(strlen($i + 1) < $maxlen ? str_repeat(' ',($maxlen - strlen($i + 1))) : null).($i + 1).'</span>'.trim($data[$i]);
}
if(isset($string))
{
$data = implode('<br />',$data);
}
return $data;
}
function page($str,$page,$uri)
{
if($str <= 1)return ;
show('<p style="margin-left: 2px">',false);
if($page > 3)show('<<<a href="'.str_replace('{$page}',1,$uri).'">В начало</a> ',false);
if($page > 1)show('<<a href="'.str_replace('{$page}',$page - 1,$uri).'">Назад</a> ',false);
show(' <small>Страница <b>'.$page.'</b> из <b>'.$str.'</b></small> ',false);
if($str > $page)show('<a href="'.str_replace('{$page}',$page + 1,$uri).'">Вперед</a>> ',false);
if(($str - $page) >= 2)show('<a href="'.str_replace('{$page}',$str,$uri).'">В конец</a>>>',false);
show('</p>',false);
}
function mime_type($ext)
{
switch ($ext)
{
default:
return 'application/octet-stream';
break;
case 'jar':
return 'application/java-archive';
break;
case 'jad':
return 'text/vnd.sun.j2me.app-descriptor';
break;
case 'cab':
return 'application/vnd.ms-cab-compressed';
break;
case 'sis':
return 'application/vnd.symbian.install';
break;
case 'zip':
return 'application/x-zip';
break;
case 'rar':
return 'application/x-rar-compressed';
break;
case '7z':
return 'application/x-7z-compressed';
break;
case 'gz':
case 'tgz':
return 'application/x-gzip';
break;
case 'bz':
case 'bz2':
return 'application/x-bzip';
break;
case 'jpg':
case 'jpe':
case 'jpeg':
return 'image/jpeg';
break;
case 'gif':
return 'image/gif';
break;
case 'png':
return 'image/png';
break;
case 'txt':
case 'dat':
case 'php':
case 'php4':
case 'php5':
case 'phtml':
case 'htm':
case 'html':
case 'shtm':
case 'shtml':
case 'wml':
case 'css':
case 'js':
case 'xml':
case 'sql':
case 'slsp':
case 'slss':
return 'text/plain';
break;
case 'mmf':
return 'application/x-smaf';
break;
case 'mid':
return 'audio/mid';
break;
case 'mp3':
return 'audio/mpeg';
break;
case 'amr':
return 'audio/amr';
break;
case 'wav':
return 'audio/x-wav';
break;
case 'mp4':
return 'video/mp4';
break;
case 'wmv':
return 'video/x-ms-wmv';
break;
case '3gp':
return 'video/3gpp';
break;
case 'avi':
return 'video/x-msvideo';
break;
case 'mpg':
case 'mpe':
case 'mpeg':
return 'video/mpeg';
break;
case 'pdf':
return 'application/pdf';
break;
case 'doc':
case 'docx':
return 'application/msword';
break;
case 'swf':
return 'application/x-shockwave-flash';
break;
}
}
$page = (!empty($_GET['page']) && $_GET['page'] > 0) ? $_GET['page'] : 1;
$mode = !empty($_GET['do']) ? $_GET['do'] : null;
if($mode != 'phpinfo')
{
header('Content-type: text/html;charset=utf-8');
header('Cache-control: no-cache');
show('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">',false);
show('<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">',false);
show('<head>',false);
show('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />',false);
show('<title>SLS CMSv'.SLSVER.' :: Admin Panel</title>',false);
show('<style type="text/css">.code{color:#f08000;background-color:#E9E9E9;font-size : 13px; overflow: auto;font-family: Courier New, Courier, monospace;} .line{background-color:#000000;color:#f0f0f0;} .window{padding: 2px;background-color: #E6E6E6;border: 2px inset;} .slstag{color: #00C400;border: 1px solid #808080;} a,a:visited,a:link{color:#0000A0;text-decoration:none;} a:hover{color:#000080;text-decoration:underline;}</style>',false);
show('</head><body>',false);
}
ob_start();
switch($mode)
{
default:
show('<h3>Админка</h3>',false);
show('<hr/>',false);
show('» <a href="'.$_SERVER['SCRIPT_NAME'].'?do=files">Менеджер файлов</a>');
show('» <a href="'.$_SERVER['SCRIPT_NAME'].'?do=help">Помощь по SLS</a>');
show('» <a href="'.$_SERVER['SCRIPT_NAME'].'?do=set">Настройки системы</a>');
show('» <a href="'.$_SERVER['SCRIPT_NAME'].'?do=phpinfo">PHPinfo</a>('.phpversion().')');
show('e <a href="'.$_SERVER['SCRIPT_NAME'].'?do=eval">Выполнение PHP кода</a>');
if(isset($_SESSION['getauth']))show('x <a href="'.$_SERVER['SCRIPT_NAME'].'?do=unsess">Выход</a>');
show('<br />',false);
show('« <a href="index.php">index.php</a>');
break;
#############################################################################
case 'files':
$dir = 'pages';
$dir2 = 'pages/';
if(isset($_GET['dir']))
{
$dir = rawurldecode(trim($_GET['dir']));
if(!is_dir($dir))error('Папка не существует');
if(substr($dir,-1,1) == '/')$dir = substr($dir,0,-1);
$dir2 = $dir.'/';
}
show('<h3>Список файлов "'.(isset($_GET['act']) ? '<a href="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.rawurlencode($dir2).'">'.$dir2.'</a>' : $dir2).'"'.(!empty($dir) ? (isset($_GET['deldir']) ? (isset($_GET['yes']) ? (del($dir) ? die('<br /><b>Папка успешно удалена</b>') : '[ошибка]') : '[<a href="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.$dir.'&deldir&yes&">подтвердить удалениее</a>]' ) : '[<a href="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.$dir.'&deldir&">удалить</a>]') : null).'</h3>',false);
show('<hr/>',false);
switch(isset($_GET['act']) ? $_GET['act'] : null)
{
default:
$files = array();
$od = opendir($dir2);
while(($rd = readdir($od)) !== false)
{
if($rd == '.' || $rd == '..')continue;
$files[] = $rd;
}
closedir($od);
$count = count($files);
show('Найдено файлов : <b>'.$count.'</b>');
if(substr_count($dir,'/') > 2)show('<<<a href="'.$_SERVER['SCRIPT_NAME'].'?do=files">...</a>');
if(!empty($dir))show('<<a href="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.rawurlencode(dirname($dir)).'">..</a>');
if($count > 0)
{
if(empty($_COOKIE['adm_onpage']))
{
setcookie('adm_onpage',10,$sys['t'] + 2592000);
$_COOKIE['adm_onpage'] = 10;
}
elseif(isset($_POST['onpage']))
{
setcookie('adm_onpage',intval($_POST['onpage']),$sys['t'] + 2592000);
$_COOKIE['adm_onpage'] = intval($_POST['onpage']);
}
$str = ceil($count / $_COOKIE['adm_onpage']);
if($page > $str)to($_SERVER['SCRIPT_NAME'].'?do=files&dir='.rawurlencode($dir2).'&page='.$str);
$start = ($page - 1) * $_COOKIE['adm_onpage'];
$end = $start + $_COOKIE['adm_onpage'];
if($count < $end)$end = $count;
for($i = $start;$i < $end;$i ++)
{
if(is_dir($dir2.$files[$i]))show('><a href="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.rawurlencode(($dir2 == './' ? null : $dir2).$files[$i]).'">'.(in_array(substr(substr(realpath($dir2.$files[$i]),strlen($_SERVER['DOCUMENT_ROOT'])),strlen($config['other']['path'])),array('pages','system')) ? '<font color="#800000">'.$files[$i].'</font>' : $files[$i]).'</a>');
else
{
show('<u>'.($i + 1).'.</u> <a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode(($dir2 == './' ? null : $dir2).$files[$i]).'">',false);
$ext = ext($files[$i]);
if(substr(substr(substr(realpath($dir2.$files[$i]),strlen($_SERVER['DOCUMENT_ROOT'])),strlen($config['other']['path'])),0,5) == 'pages' && $ext == 'slsp')
{
show('<font color="#008000">'.$files[$i].(preg_match('#<!-- SLS\|PageTitle:([^>]*) -->#ui',file_get_contents($dir2.$files[$i]),$ptitle) ? ' : '.$ptitle[1] : null).'</font>',false);
}
elseif(substr(substr(substr(realpath($dir2.$files[$i]),strlen($_SERVER['DOCUMENT_ROOT'])),strlen($config['other']['path'])),0,6) == 'system' && (in_array($ext,array('slss','php')) || $files[$i] == 'config.ini'))
{
show('<font color="'.($ext == 'slss' ? '#FF8000' : '#0080FF').'">'.$files[$i].'</font>',false);
}
elseif(in_array(substr(substr(realpath($dir2.$files[$i]),strlen($_SERVER['DOCUMENT_ROOT'])),strlen($config['other']['path'])),array('index.php',basename($_SERVER['SCRIPT_NAME']))))
{
show('<font color="#f00000">'.$files[$i].'</font>',false);
}
else
{
show($files[$i],false);
}
show('</a> ('.round(filesize($dir2.$files[$i]) / 1024,2).'кб/'.date('G:i d M',filemtime($dir2.$files[$i])).') [<a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode(($dir2 == './' ? null : $dir2).$files[$i]).'&act=color">V</a>,<a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode(($dir2 == './' ? null : $dir2).$files[$i]).'&act=download">D</a>,<a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode(($dir2 == './' ? null : $dir2).$files[$i]).'&act=clean&del&">X</a>]');
}
}
page($str,$page,$_SERVER['SCRIPT_NAME'].'?do=files&dir='.rawurlencode($dir2).'&page={$page}');
show('<br />',false);
show('<form action="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.rawurlencode($dir2).'" method="post">',false);
show('<input name="onpage" type="text" value="'.$_COOKIE['adm_onpage'].'" size="4" maxlength="6"/> файлов на страницу',false);
show('<input type="submit" value=">>>"/>',false);
show('</form>',false);
}
else
{
show('<b>В данной папке нет файлов</b>',false);
}
show('<hr/>',false);
show('Создать <a href="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.rawurlencode($dir2).'&act=adddir&'.$rand.'">папку</a> / <a href="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.rawurlencode($dir2).'&act=addfile&'.$rand.'">файл</a>');
show('<a href="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.rawurlencode($dir2).'&act=upload&'.$rand.'">Загрузить</a> / <a href="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.rawurlencode($dir2).'&act=import&'.$rand.'">импортировать</a> файл');
break;
#########################################################################
case 'adddir':
if(isset($_GET['yes']))
{
$name = trim($_POST['namedir']);
if(!file_exists($dir2.$name))
{
if(mkdir($dir2.$name,0777))
{
show('<b>Папка успешно создана</b><br /><a href="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.$dir2.$name.'">'.$name.'</a>');
}
}
else
{
show('<b>Папка '.$dir2.$name.' уже существует!</b>');
}
}
show('<form action="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.rawurlencode($dir2).'&act=adddir&yes&'.$rand.'&" method="post">',false);
show('Новая папка :');
show('<input name="namedir" type="text" value="testdir">');
show('<input type="submit" value="Создать">',false);
show('</form>',false);
break;
#########################################################################
case 'addfile':
if(isset($_GET['yes']))
{
$name = trim($_POST['namefile']);
if(!file_exists($dir2.$name))
{
$templates = array(
'',
'<?php'."\r\n\r\n\r\n\r\n".'?>',
'<!-- SLS|PageTitle:'.basename($name,'.slsp').' -->'."\r\n".'<!-- SLS|PageVersion:html -->');
if(file_put_contents($dir2.$name,(!empty($_POST['template']) ? $templates[intval($_POST['template'])] : null)))
{
show('<b>Файл успешно создан</b><br /><a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.$dir2.$name.'">'.$name.'</a>');
}
}
else
{
show('<b>Файл '.$dir2.$name.' уже существует!</b>');
}
}
show('<form action="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.rawurlencode($dir2).'&act=addfile&yes&'.$rand.'&" method="post">',false);
show('Новый файл :');
show('<input name="namefile" type="text" value="testfile.slsp">');
show('Шаблон :');
show('<select size="1" name="template"/><option value="0">Нет</option><option value="1">PHP file</option><option value="2">SLS file</option></select>');
show('<input type="submit" value="Создать">',false);
show('</form>',false);
break;
#########################################################################
case 'upload':
if(isset($_GET['yes']))
{
$file = $_FILES['file'];
if($file['error'] == 0)
{
if(!empty($_POST['name']))$name = trim($_POST['name']);
else $name = basename($file['name']);
if(!file_exists($dir2.$name) || isset($_POST['rewrite']))
{
if(copy($file['tmp_name'],$dir2.$name))
{
show('<b>Файл успешно сохранен</b><br /><a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.$dir2.$name.'">'.$name.'</a>');
}
else
{
show('Ошибка при сохранении');
}
}
else
{
show('Файл <b>'.$dir2.$name.'</b> уже существует');
}
}
else
{
show('Ошибка при загрузке');
}
}
else
{
show('<form action="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.rawurlencode($dir2).'&act=upload&yes&'.$rand.'&" method="post" enctype="multipart/form-data">',false);
show('Файл :');
show('<input type="file" name="file"/>');
show('Сохранить как (можно не указывать) :');
show('<input name="name" type="text"/>');
show('<input name="rewrite" type="checkbox" value="1" checked>Перезаписывать, если существует');
show('<input type="submit" value="Загрузить"/>',false);
show('</form>',false);
}
break;
#########################################################################
case 'import':
if(isset($_GET['yes']))
{
$url = trim($_POST['url']);
if(($cnt = trim(file_get_contents($url))) !== false)
{
if(!empty($_POST['name']))$name = trim($_POST['name']);
else $name = basename($url);
if(!file_exists($dir2.$name) || isset($_POST['rewrite']))
{
if(file_put_contents($dir2.$name,$cnt))
{
show('<b>Файл успешно сохранен</b><br /><a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.$dir2.$name.'">'.$name.'</a>');
}
else
{
show('Ошибка при сохранении');
}
}
else
{
show('Файл <b>'.$dir2.$name.'</b> уже существует');
}
}
else
{
show('Ошибка при загрузке');
}
}
else
{
show('<form action="'.$_SERVER['SCRIPT_NAME'].'?do=files&dir='.rawurlencode($dir2).'&act=import&yes&'.$rand.'&" method="post">',false);
show('Адрес :');
show('<input type="text" name="url"/>');
show('Сохранить как (можно не указывать) :');
show('<input name="name" type="text"/>');
show('<input name="rewrite" type="checkbox" value="1" checked>Перезаписывать, если существует');
show('<input type="submit" value="Загрузить"/>');
}
break;
}
break;
#############################################################################
case 'file':
$file = rawurldecode(trim($_GET['f']));
if(!file_exists($file))error('Файл не найден');
$dir = dirname($file);
show('<h3>Файл "<a href="'.$_SERVER['SCRIPT_NAME'].'?do=files'.(!empty($dir) && $dir != '.' ? '&dir='.rawurlencode($dir) : null).'&'.$rand.'&">'.dirname($file).'</a>/'.basename($file).'"</h3>',false);
show('<a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&'.$rand.'&">Редактировать</a> '.(ext($file) == 'slsp' && substr($dir,0,5) == 'pages' ? '| <a href="index.php?f='.rawurlencode(substr($file,6,-5)).'">Просмотр</a>' : null).' | <a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&act=info&'.$rand.'&">Информация</a> | <a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&act=clean&'.$rand.'&">Удалить/Очистить</a> | <a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&act=color&'.$rand.'&">Подсветка'.(($ext = ext($file)) == 'php' || $ext == 'phtml' || $ext == 'php3' || $ext == 'php4' || $ext == 'php5' || $ext == 'inc' ? ' PHP' : null).' кода</a> | <a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&act=copy&'.$rand.'&">Копировать</a> | <a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&act=recode&'.$rand.'&">Перекодировка</a> | <a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&act=download&'.$rand.'&">Скачать</a>');
switch($act = !empty($_GET['act']) ? $_GET['act'] : null)
{
default:
$cnt = file($file);
$count = count($cnt);
if(empty($_COOKIE['adm_onpage_edit']))
{
setcookie('adm_onpage_edit',20,$sys['t'] + 2592000);
$_COOKIE['adm_onpage_edit'] = 20;
}
elseif(isset($_POST['onpage_edit']))
{
setcookie('adm_onpage_edit',intval($_POST['onpage_edit']),$sys['t'] + 2592000);
$_COOKIE['adm_onpage_edit'] = intval($_POST['onpage_edit']);
}
$end = $page * $_COOKIE['adm_onpage_edit'];
$start = $end - $_COOKIE['adm_onpage_edit'];
if($end > $count)$end = $count;
$str = ceil($count / $_COOKIE['adm_onpage_edit']);
if(!empty($cnt) && $page > $str)to($_SERVER['SCRIPT_NAME'].'?do=file&f='.$file.'&page='.$str);
if(isset($_GET['save']) && isset($_POST['save']))
{
show('<hr/>',false);
$text = trim($_POST['text']);
$cnt[$start] = $text."\r\n";
for($i = ($start + 1);$i < $end;$i ++)
{
unset($cnt[$i]);
}
# $cnt[$start + 1] = $text;
# dump($cnt);
# file_put_contents($file.'.bak',trim(implode('',$cnt)));
# die();
if(isset($_POST['backup']))
{
setcookie('adm_backup',1,$sys['t'] + 2592000);
if(copy($file,$file.'.bak'))show('<b>'.$file.'.bak</b> успешно сохранен');
else error('Ошибка, при сохранении исходника');
}
else
{
setcookie('adm_backup',0,$sys['t'] + 2592000);
}
if(file_put_contents($file,trim(implode('',$cnt))))to($_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&page='.$page);
else error('Ошибка');
}
show('<small>Строки : '.$start.' - '.$end.' ('.$count.','.$_COOKIE['adm_onpage_edit'].') / Размер : '.round(filesize($file) / 1024,3).'кб</small>',false);
show('<hr/>',false);
show('<form action="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&page='.$page.'&save&'.$rand.'&" method="post">',false);
show('<input name="save" type="hidden" value="1">',false);
show('Содержание файла :');
show('<textarea name="text" rows="'.(min($count,$_COOKIE['adm_onpage_edit']) + 2).'" cols="'.($http['web'] ? 100 : 40).'" wrap="off">',false);
# (($count < $config['admin']['online'] ? $count : $config['admin']['online']) + 1)
for($i = $start;$i < $end;$i ++)
{
show(htmlspecialchars(trim($cnt[$i])),false);
if(($i + 1) != $end)show("\r\n",false);
}
show('</textarea>');
/*
$cnt = htmlspecialchars(trim(file_get_contents($file)));
echo 'Содержание файла : <br />';
echo '<textarea name="text" rows="10" cols="40" wrap="off">'.$cnt.'</textarea><br />';
*/
show('<input type="submit" value="Сохранить">');
show('<input name="backup" type="checkbox" value="1"'.(isset($_COOKIE['adm_backup']) && $_COOKIE['adm_backup'] == 1 ? ' checked' : null).'>Сохранять исходник в файл <b>'.$file.'.bak</b>');
show('</form>',false);
show('<br />',false);
show('<form action="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'" method="post">',false);
show('<input name="onpage_edit" type="text" value="'.$_COOKIE['adm_onpage_edit'].'" size="4" maxlength="6"/> строк на страницу',false);
show('<input type="submit" value=">>>"/>',false);
show('</form>',false);
page($str,$page,$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&page={$page}');
break;
#########################################################################
case 'info':
show('<hr/>',false);
show('<b>'.dirname(realpath($file)).' \ <a href="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.$file.'">'.basename($file).'</a></b>');
show('Изменен : <u>'.date('G:i:s d.m.Y',filectime($file)).'</u>');
show('Размер : <u>'.round(filesize($file) / 1024,4).' кб</u>');
show('Строк в файле : <u>'.count(file($file)).'</u>');
show('CHMOD : <u>'.xchmod($file).'</u>');
show('Mime Type при скачивании : <u>'.mime_type(ext($file)).'</u>');
break;
#########################################################################
case 'clean':
show('<hr/>',false);
if(isset($_GET['yes']))
{
if(isset($_POST['delfile']))
{
if(unlink($file))show('Файл удален');
else error('Ошибка при удалении файла');
}
else
{
if(file_put_contents($file,null) !== false)show('Файл очищен');
else error('Ошибка при очистке файла');
}
}
else
{
show('<form action="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&act=clean&yes&'.$rand.'&" method="post">',false);
show('<input name="delfile" type="checkbox" value="1"'.(isset($_GET['del']) ? ' checked' : null).'/>Удалить файл');
show('<input type="submit" value="Пошел"/>',false);
show('</form>',false);
}
break;
#########################################################################
case 'color':
show('<hr/>',false);
show('<p style="background-color:#EFEFEF"><div class="window">',false);
function color_comm($str)
{
if(preg_match('~<!--([[:space:]])?SLS\|.*([[:space:]])?-->~',$str[0]))
{
return '<span class="slstag">'.$str[0].'</span>';
}
else
{
return '<span style="color:#f08000">'.$str[0].'</span>';
}
}
if(($ext = ext($file)) == 'php' || $ext == 'phtml' || $ext == 'php3' || $ext == 'php4' || $ext == 'php5' || $ext == 'inc')show(lines(highlight_file($file,true)),false);
# else show(lines(nl2br(preg_replace("~("|')[^<>]*("|')~iU",'<span style="color:#DD0000">$0</span>',preg_replace_callback("~<!--.*-->~iU",'color_comm',preg_replace("~(<[^\s!]*\s)([^<>]*)([/?]?>)~iU",'$1<span style="color:#007700">$2</span>$3',preg_replace('~<[^<>]*>~iU','<span style="color:#0000BB">$0</span>',htmlspecialchars(file_get_contents($file),ENT_QUOTES))))))));
else show('<code>'.lines(nl2br(preg_replace("~("|')[^<>]*("|')~iU",'<span style="color:#DD0000">$0</span>',preg_replace_callback("~<!--.*-->~iU",'color_comm',preg_replace("~(<[^\s!]*\s)([^<>]*)([/?]?>)~iU",'$1<span style="color:#007700">$2</span>$3',preg_replace('~<[^<>]*>~iU','<span style="color:#0000BB">$0</span>',htmlspecialchars(file_get_contents($file),ENT_QUOTES))))))).'</code>',false);
show('</div></p>',false);
break;
#############################################################################
case 'copy':
show('<hr/>',false);
if(isset($_POST['newname']))
{
$newname = trim($_POST['newname']);
if(!file_exists($newname) || (isset($_POST['rewrite'])))
{
if(copy($file,$newname))
{
show('<b>Файл скопирован</b>');
if(isset($_POST['delsource']))del($file);
}
else
{
error('Немогу скопировать');
}
}
else
{
show('<b>Файл '.$newname.' уже существует</b>');
}
}
else
{
show('<form action="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&act=copy&'.$rand.'&" method="post">',false);
show('Новое местоположение :');
show('<input name="newname" type="text" value="'.$file.'">');
show('<input name="delsource" type="checkbox" value="1">Удалить исходный файл');
show('<input name="rewrite" type="checkbox" value="1" checked>Перезаписывать, если существует');
show('<input type="submit" value="Пошел">',false);
show('</form>',false);
}
break;
#########################################################################
case 'recode':
show('<hr/>',false);
if(!function_exists('iconv') && !function_exists('mb_convert_encoding'))error('Не установлены библиотеки : Iconv или MBstring<br />Перекодировка невозможна');
$codes = array('utf-8','windows-1251','cp866','koi8-r');
if(isset($_GET['yes']))
{
$from = trim($_POST['from']);
$to = trim($_POST['to']);
if(in_array($from,$codes) && in_array($to,$codes) && $from != $to)
{
$cnt = trim(file_get_contents($file));
if(function_exists('mb_convert_encoding'))$cnt = mb_convert_encoding($cnt,$to,$from);
else $cnt = iconv($from,$to,$cnt);
if(isset($_POST['replace']))
{
if(file_put_contents($file,$cnt))
{
show('Кодировка сменена');
}
else
{
error('Невозможно записать данные');
}
}
else
{
show('При смене кодировки <b>'.$from.' -> '.$to.'</b> текст будет иметь вид : ');
show('<form action="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&act=recode&yes&'.$rand.'&" method="post">',false);
show('<input name="to" type="hidden" value="'.$to.'"/>',false);
show('<input name="from" type="hidden" value="'.$from.'"/>',false);
show('<input name="replace" type="hidden" value="1"/>',false);
show('<input type="submit" value="Сохранить файл"/>');
show('<div class="window"><i>'.nl2br($cnt).'</i></div>',false);
show('<input type="submit" value="Сохранить файл"/>',false);
show('</form>',false);
}
}
else
{
error('Неверны исходные данные');
}
}
else
{
show('<form action="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&act=recode&yes&'.$rand.'&" method="post">',false);
show('Из :');
show('<select size="1" name="from"/>',false);
for($i = 0;$i < 4;$i ++)show('<option value="'.$codes[$i].'"'.($i == 1 ? ' selected' : null).'>'.$codes[$i].'</option>',false);
show('</select>');
show('В :');
show('<select size="1" name="to"/>',false);
for($i = 0;$i < 4;$i ++)show('<option value="'.$codes[$i].'"'.($i == 0 ? ' selected' : null).'>'.$codes[$i].'</option>',false);
show('</select>');
show('<input name="replace" type="checkbox" value="1"/>Сразу менять кодировку, не спрашивать');
show('<input type="submit" value="Сменить кодировку"/>',false);
show('</form>',false);
}
break;
#########################################################################
case 'download':
show('<hr/>',false);
if(isset($_GET['yes']))
{
$type = intval($_POST['type']);
if($type == 0 || $type == 1)
{
$name = trim($_POST['name']);
$mimetype = trim($_POST['mimetype']);
if(!empty($name) && !empty($mimetype))
{
ob_end_clean();
header('HTTP/1.0 200 OK');
header('Cache-Control: public, must-revalidate, max-age=0');
header('Pragma: cache');
$etag = md5($file);
header('ETag: "'.substr($etag,0,4).'-'.substr($etag,5,5).'-'.substr($etag,10,8).'"');
header('Keep-Alive: timeout=15, max=50');
header('Connection: Keep-Alive');
header('Accept-Ranges: bytes');
header('Content-Length: '.filesize($file));
header('Content-Type: '.$mimetype);
header('Content-Disposition: '.($type == 1 ? 'attachment;' : null).'filename="'.$name.'"');
readfile($file);
exit;
}
else
{
error('Введены неверные данные');
}
}
else
{
error('Введены неверные данные');
}
}
else
{
show('<form action="'.$_SERVER['SCRIPT_NAME'].'?do=file&f='.rawurlencode($file).'&act=download&yes&'.$rand.'&" method="post">',false);
show('Режим :');
show('<select size="1" name="type"/>',false);
show('<option value="0">Text</option><option value="1">Attach</option>',false);
show('</select>');
show('MimeType :');
show('<input name="mimetype" type="text" value="'.mime_type(ext($file)).'"/>');
show('Имя :');
show('<input name="name" type="text" value="'.basename($file).'"/>');
show('<input type="submit" value="Скачать"/>',false);
show('</form>',false);
}
break;
}
break;
#############################################################################
case 'help':
show('<h3>О проекте "SLS CMS"</h3>',false);
show('<hr/>',false);
show('<b>SLS</b>(Super Lite Site, дословно : Супер Легкий Сайт) <b>CMS</b> - это система управления содержимым сайта, написанная на PHP для построения небольших проектов.');
show('В системе, страницы вашего сайта хранятся в виде отдельных файлов в директории pages/ с расширением SLSP.');
show('Для построения сайта, не требующая знаний и особых усилий от вас, но позволяющая в какой то степени стандартизировать структуру страниц и наполнить их динамическими свойствами.');
show('Нужно только знание основых HTML/WML тегов.');
show('Страницы будут обладать некоторыми динамичными свойствами,к примеру, присутствует возможность создавать/переопределять переменные для хранения каких либо данных');
show('Доступно использование некоторых функций, для вывода динамичной информации. (таких как вывод даты, вставка кода другого файла)');
show('<br />',false);
show('В админ-панели есть менеджер файлов, где вы можете редактирова/создавать/удалять страницы не прибегая к редактированию у себя на компьютере (телефоне) и загрузке их на сервер');
show('<h3>Принцип работы</h3>',false);
show('<hr/>',false);
show('Принцип работы довольно прост.');
show('<b>1.</b> Пользователь, запрашивает страницу, через специальный обработчик (index.php).');
show('Указывает нужную ему страницу без расширения файла (.slsp), после знака вопроса (?) в аргументе "f".');
show('Примеры названий файлов-страниц :');
show(' <b>/pages/index.slsp</b> - доступен по адресу <b>index.php?f=index</b>, если подключен MorRewrite то <b>/index.slsp</b>');
show(' <b>/pages/dir/index.slsp</b> - доступен по адресу <b>index.php?f=dir/index</b>, если подключен MorRewrite то <b>/dir/index.slsp</b>');
show('Если у вас установлен модуль ModRewrite, вы можете указывать ссылки вида *файл страницы*.slsp');
show(' <b>Пример</b> : index.slsp (главная страница)');
show('В название файла можно использовать символы : <b>A-z0-9-_</b>, если файл будет иметь название, в котором присутствутют другие символы, он будет недоступен из браузера');
# show(' <b></b> - доступен по адресу <b></b>, если подключен MorRewrite то <b></b>');
show('<b>2.</b> Обработчик, проверяет, существует ли данный файл в папке со страницами (/pages/), и доступн ли он для прямого вызова.');
show('<b>3.</b> Если файл может быть вызван, обработчик получает содержимое файла, подключает к нему содержимое файлов <b>/system/allup.slss</b> и <b>/system/alldown.slss</b>, до и после страницы соотвественно.');
show('<b>4.</b> Происходит выполнение всех комманд, указанных в содержимом файл(ов).');
show('<b>5.</b> В зависимости от указанной версии, обработчик посылает заголовки, а также, подключает шапку(head) и ноги(foot) соответственно выбранной версии.');
show('Если существуют файлы :');
show(' <b>HTML версия</b> : <b>/system/fulluphtml.slsp</b> - он будет подключен в качестве шапки страницы, <b>/system/fulldownhtml.slsp</b> - будет подключен в качестве ног страницы.');
show(' <b>WML версия</b> : <b>/system/fullupwml.slsp</b> - он будет подключен в качестве шапки страницы, <b>/system/fulldownwml.slsp</b> - будет подключен в качестве ног страницы.');
show('Если указанные файлы не существуют, будут использованные стандартные блоки вверха, и низа страниц.');
show('<b>6.</b> Обработанная страница отдается пользователю.');
show('<br />',false);
show('<b>Примечание</b> : в файлах head\'ров и foot\'еров не происходит обработка, и исполнение SLS комманд.');
show('<h3>Список основных комманд, для управлением работы SLS</h3>',false);
show('<hr/>',false);
show('Каждая комманда SLS, должна быть заключена в виде HTML-комментария, и иметь вид : <span class="code"><!-- SLS|<i>произвольная_комманда</i> --></span>, пробел до и после "--" обязателен!');
show('Что-бы заставить обработчик, вывести коммаду в виде текста, то есть не исполнив её, поставьте перед ней обратный слэш "\", в этом случае, комманда выведется в браузер как будто это простой текст.');
show('[...] - указываются агрументы, которые должны присутствовать в комманде.');
show('{...} - указываются агрументы, которые могут отсутствовать в комманде.');
show('<h4>Основые комманды</h4>',false);
show('<u>1.</u> <span class="code"><!-- SLS|PageTitle:[name] --></span>');
show('Определяет заголовок текущей страницы.');
show('Стандартное значение указывается в файле конфигурации.');
show('<u>2.</u> <span class="code"><!-- SLS|PageVersion:[version] --></span>');
show('Определяет версию текущей страницы.');
show('Доступные значения : wml, html.');
show('Стандартное значение указывается в файле конфигурации.');
show('<u>3.</u> <span class="code"><!-- SLS|PageNotDirectCall --></span>');
show('Указывает на то что данный файл (страницу) нельзя вызвать прямо.');
show('Такую комманду нужно включать например в файлы, которые будут подключаться к другим.');
show('<u>4.</u> <span class="code"><!-- SLS|PageAutoBr --></span>');
show('При вставке данной комманды в файл, при обработке, будут автоматически расставлены HTML переносы строк (<br />), перед \r\n.');
show('<u>5.</u> <span class="code"><!-- SLS|Include:[filename] --></span>');
show('Вставляет в текущий файл, содержимое файла указанного в аргументе <b>filename</b>.');
show('<b>filename</b> следует указывать БЕЗ расширения файлов (.slsp), и файл должен распологаться в папке /pages/.');
show('<u>6.</u> <span class="code"><!-- SLS|Header:"[header]"{;"header"} --></span>');
show('Позволяет вставить заголовок (в параметре[ах] <b>header</b>) которые передастся пользователю.');
show('Можно указывать несколько заголовков, каждый должен быть обрамлен двойными кавычками (<b>"</b>) и отделяться друг от дурга точкой с запятой (<b>;</b>)');
show('<h4>Дополнительные комманды</h4>',false);
show('<hr/>',false);
show('<u>1.</u> <span class="code"><!-- SLS|Date{:format} --></span>');
show('Вставляет в документ, отформатированную по формату указанному в аргументе <b>format</b> текущую дату.');
show('Синтаксис формата, аналогичен передаваемуму в PHP функцию <b>date()</b>');
show('<u>2.</u> <span class="code"><!-- SLS|MicroTime --></span>');
show('Вставляет в документ, время генерации текущей страницы, вида : [секунды.миллисекунды{3}].');
show('<h4>Работа с переменными</h4>',false);
show('<hr/>',false);
show('<u>1.</u> <span class="code"><!-- SLS|Var:[varname] --></span>');
show('Вставляет в документ значение внутренней переменной, с имененем <b>varname</b>.');
show('<u>2.</u> <span class="code"><!-- SLS|Var:[varname]=[varvalue] --></span>');
show('Изменяет/Создает новую переменную с имененм <b>varname</b>, и значением <b>varvalue</b>');
show('<br />',false);
show('Изначально доступные переменные :');
show(' <b>ua</b> - браузер пользователя, безопасный для вывода в браузер.');
show(' <b>is_web</b> - определяет, веб браузер или нет. 1 - веб, 0 - нет.');
show(' <b>ip</b> - IP адрес пользователя.');
show(' <b>uri</b> - относительный путь, от корня сайта к текущей страницы.');
show(' <b>host</b> - домен');
show(' <b>unix_time</b> - метка текущего времени в формате UNIX TIMESTAMP.');
# show(' <b></b> - ');
show('<h4>"Остатки" от PHP</h4>',false);
show('<hr/>',false);
show('<u>1.</u> <span class="code"><!-- SLS|phpOn -->[code]<!-- SLS|phpOff --></span>');
show('Обработчик выполняем указанный между этими блоками PHP код (обозначенный <b>code</b>), и вставляет в страницу.');
show('<?php и ?> вставлять не нужно!');
show('<u>2.</u> <span class="code"><!-- SLS|phpColorOn -->[code]<!-- SLS|phpColorOff --></span>');
show('Код указанный в <b>code</b> подсвечивается стандартной функцией highlight_string().');
show('<?php и ?> можно и не вставлять!');
# show('<u>.</u> <span class="code"><!-- SLS| --></span>');
show('<h3>Список файлов</h3>',false);
show('<hr/>',false);
show('<b>/pages/</b> - директория с файлами страниц.');
show('<b>/system/</b> - директория системных для SLS файлов.');
show('<b>/system/config.ini</b> - конфигурационный файл.');
show('<b>/system/core.php</b> - часть движка, подключаемая во время работы.');
show('<b>/system/versions.txt</b> - список версий движка, со всеми изменениями.');
show('<br />',false);
show('<b>/system/alldown.slsp</b> - подключаемый файл в любой версии (wml|html), после содержания страницы, но перед вывода конца.');
show('<b>/system/allup.slsp</b> - подключаемый файл в любой версии (wml|html), перед содержанием страницы, но после вывода заголовков.');
show('<b>/system/fulluphtml.slsp</b> - подключаемый файл заголовков, для HTML страниц.');
show('<b>/system/fulldownhtml.slsp</b> - подключаемый файл ног, для HTML страниц.');
show('<b>/system/fullupwml.slsp</b> - подключаемый файл заголовков, для WML страниц.');
show('<b>/system/fulldownwml.slsp</b> - подключаемый файл ног, для WML страниц.');
show('<br />',false);
show('<b>/'.basename($_SERVER['SCRIPT_NAME']).'</b> - администраторская панель (можете переименовывать файл без ограничений, скрипт сам адаптируется к новому названию; только оставьте файл в текущей папке).');
show('<b>/index.php</b> - обработчик.');
show('<b>/robots.txt</b> - файл для поисковых роботов, запрещает индексирование директорий pages и system.');
# show('<b></b> - .');
show('<h3>Разработчик</h3>',false);
show('<hr/>',false);
show('Данный скрипт написан Morgan\'ом =)');
show('Рапространяется бесплатно и не требует лицензии.');
show('Вы можете редактировать исходные коды в своих нуждах, но после изменения вы не имеете право называть произведение вашего исскуства <b>SLS CMS</b>, придумайте другое название.');
show('Вопросы и пожелания присылаем мне в ICQ : <b>5</b>З<b>O</b>-6<b>4</b>8.');
show('Если вы хотите продолжения развития данного проекта, пожалуйста, напишите мне об этом. Ваш голос важен для нас!');
show('<br />',false);
show('Если вы желаете помочь проекту, вы можете перевести деньги в качестве благодарности за труды автора :');
show('- <b style="color:#f00000">WMR : R228-526-387-290</b>');
show('- <b style="color:#0000f0">WMZ : Z305-325-535-864</b>');
show('- <b style="color:#00f000">WME : E283-058-070-947</b>');
show('- <b style="color:#a0a0a0">WMU : U118-733-167-610</b>');
show('Все средства будут направлены на развитие проекта.');
break;
#############################################################################
case 'set':
show('<h3>Настройки системы</h3>',false);
show('<hr/>',false);
if(isset($_GET['save']))
{
if(empty($_POST['admin']['login']) || empty($_POST['admin']['password']))error('<b>Не указаны важные данные</b>');
$string = '; Настройки для скрипта SLS
;;;;;;;;;;;;;;;;;;;;;;;;;;;
[default]
; Страница, открывающаяся по дефолту, без .slsp
page='.$_POST['default']['page'].'
; Стандартная версия странциц, wml | html
version='.$_POST['default']['version'].'
; Стандартный заголовок странциц
title='.$_POST['default']['title'].'
[admin]
; Логин администратора
login='.$_POST['admin']['login'].'
; Пароль администратора
password='.$_POST['admin']['password'].'
; Разрешить выполнение PHP кода
exec_php='.$_POST['admin']['exec_php'].'
[other]
; Директория со скриптом
path='.$_POST['other']['path'].'
;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Изменено '.date('G:i:s d.m.Y');
if(file_put_contents('system/config.ini',$string))show('<b>Настройки сохранены</b>');
else error('Ошибка при сохранении настроек');
$noform = 1;
}
if(!isset($noform))
{
show('<form action="'.$_SERVER['SCRIPT_NAME'].'?do=set&save&'.$rand.'&" method="post">',false);
show('Страница, открывающаяся, если не указана другая (по запросу index.php) :');
show('<input name="default[page]" type="text" value="'.$config['default']['page'].'">.slsp');
show('Версия страницы, если не указан другая :');
show('<select size="1" name="default[version]"><option value="wml"'.($config['default']['version'] == 'wml' ? ' selected' : null).'>wml</option><option value="html"'.($config['default']['version'] == 'html' ? ' selected' : null).'>html</option></select>');
show('Заголовок страницы, если не указан другой :');
show('<input name="default[title]" type="text" value="'.$config['default']['title'].'">');
show('Разрешить выполнение PHP кода :');
show('<select size="1" name="admin[exec_php]"><option value="0"'.($config['admin']['exec_php'] == '0' ? ' selected' : null).'>Нет</option><option value="1"'.($config['admin']['exec_php'] == '1' ? ' selected' : null).'>Да</option></select>');
show('Логин администратора :');
show('<input name="admin[login]" type="text" value="'.$config['admin']['login'].'">');
show('Пароль администратора :');
show('<input name="admin[password]" type="text" value="'.$config['admin']['password'].'">');
show('Директория, где находится скрипт :');
show('<input name="other[path]" type="text" value="'.$config['other']['path'].'">');
show('<input type="submit" value="Сохранить">',false);
show('</form>',false);
}
break;
#############################################################################
case 'unsess':
show('<h3>Выход</h3>',false);
show('<hr/>',false);
unset($_SESSION);
$_SESSION = array();
session_unset();
session_destroy();
show('Сессия разрушена');
show('- <a href="'.$_SERVER['SCRIPT_NAME'].'">'.basename($_SERVER['SCRIPT_NAME']).'</a>');
show('- <a href="index.php">index.php</a>');
break;
#############################################################################
case 'phpinfo':
ob_start();
phpinfo();
$cnt = ob_get_contents();
ob_end_clean();
show(str_replace('</body>','<p id="down"><a href="#up">#ВВЕРХ</a><br />«<a href="'.$_SERVER['SCRIPT_NAME'].'">В админ-панель</a></p></body>',str_replace('<body>','<body><p id="up">«<a href="'.$_SERVER['SCRIPT_NAME'].'">В админ-панель</a><br /><a href="#down">#ВНИЗ</a></p>',str_replace('<title>phpinfo()</title>','<title>phpinfo() :: SLS</title>',$cnt))),false);
break;
#############################################################################
case 'eval':
show('<h3>Выполнение PHP кода</h3>',false);
show('<hr/>',false);
$def_code = 'echo \'Hello Word!\';';
$def_textarea = $def_nl2br = $def_htmlspecialchars = $def_pre = 0;
if(isset($_GET['yes']) && isset($_POST['code']))
{
$code = trim($_POST['code']);
if(substr($code,0,5) == '<?php')$code = substr($code,5);
elseif(substr($code,0,3) == '<?=')$code = substr($code,3);
elseif(substr($code,0,2) == '<?')$code = substr($code,2);
if(substr($code,-2) == '?>')$code = substr($code,0,-2);
$def_code = $code;
ob_start();
$eval_mt = microtime(true);
$eval_memory = memory_get_usage();
eval($code);
$eval_mt = microtime(true) - $eval_mt;
$eval_memory = memory_get_usage() - $eval_memory;
$cnt = ob_get_contents();
ob_end_clean();
if(isset($_POST['textarea']))$def_textarea = 1;
if(isset($_POST['nl2br']))$def_nl2br = 1;
if(isset($_POST['htmlspecialchars']))$def_htmlspecialchars = 1;
if(isset($_POST['pre']))$def_pre = 1;
if($def_nl2br == 1)$cnt = nl2br($cnt);
if($def_htmlspecialchars == 1)$cnt = htmlspecialchars($cnt,ENT_QUOTES,'utf-8');
if($def_pre == 1)show('<pre>',false);
elseif($def_textarea == 1)show('<textarea name="result" rows="8" cols="50" wrap="off">',false);
show($cnt,false);
if($def_pre == 1)show('</pre>',false);
elseif($def_textarea == 1)show('</textarea>',false);
else show('<br />',false);
show('<br /><small>Выполнение '.round($eval_mt,5).' сек / '.round($eval_memory / 1024,2).' кб</small>',false);
show('<hr/>',false);
}
show('<form action="'.$_SERVER['SCRIPT_NAME'].'?do=eval&yes&'.$rand.'&" method="post">',false);
show('<textarea name="code" rows="10" cols="80" wrap="off">'.$def_code.'</textarea>');
show('<input type="submit" value="Eval"/>');
show('<input name="textarea" type="checkbox" value="1"'.($def_textarea == 1 ? ' checked' : null).'/>textarea <input name="nl2br" type="checkbox" value="1"'.($def_nl2br == 1 ? ' checked' : null).'/>nl2br <input name="htmlspecialchars" type="checkbox" value="1"'.($def_htmlspecialchars == 1 ? ' checked' : null).'/>htmlspecialchars <input name="pre" type="checkbox" value="1"'.($def_pre == 1 ? ' checked' : null).'/>pre');
show('</form>',false);
break;
}
if($mode != 'phpinfo')
{
if(!empty($mode))show('<hr/><a href="'.$_SERVER['SCRIPT_NAME'].'?'.$rand.'">В админку</a> | ',false);
show('<a href="index.php">На сайт</a>');
show('(c)Morgan, ['.round(microtime(true) - $sys['mt'],4).']');
show('</body></html>',false);
}
ob_end_flush();
echo $buffer;
exit;
?>