/trunk/templates/admin_ng.tpl |
---|
Новый файл |
0,0 → 1,15 |
{config_load file=ant.conf section="setup"} |
{include file="header.tpl"} |
<h1>Интерфейс администратора</h1> |
{$error} |
<table> |
<tr valign="top"> |
<td>{$menu}</td> |
<td>{$display}</td> |
</tr> |
<table> |
<div id="footer">{$title} {$antversion}</div> |
{include file="footer.tpl"} |
/trunk/admin_ng.php |
---|
Новый файл |
0,0 → 1,189 |
<?php |
require_once dirname(__FILE__)."/sign-valid.php"; |
$mode = abs(intval($_GET["mode"])); |
$cat = abs(intval($_GET["cat"])); |
$act = abs(intval($_GET["action"])); |
$uid = abs(intval($_GET["uid"])); |
$err = abs(intval($_GET["error"])); |
// Admin file/interface |
$admin = "./admin_ng.php"; |
switch ($err) { |
case '1': |
$error = "Ошибка ввода пароля: старый пароль неверен!"; |
break; |
case '2': |
$error = "Ошибка ввода пароля: новые пароли не совпадают!"; |
break; |
} |
$menu = " |
<ul> |
<li><a href='".$admin."?mode=0'>Управление</a></li> |
<br> |
<li><a href='".$admin."?mode=1&cat=0'>Источники</a></li> |
<li><a href='".$admin."?mode=1&cat=1'>Дистрибутивы</a></li> |
<li><a href='".$admin."?mode=1&cat=2'>Версии</a></li> |
<li><a href='".$admin."?mode=1&cat=3'>Секции</a></li> |
<br> |
<li><a href='./signout.php' style='color:red;'>Выход</a></li> |
</ul> |
"; |
switch ($mode) { |
case '0': |
$display = "Under construction!!!"; |
break; |
case '1': |
switch($cat) { |
case '0': |
switch($act) { |
case '0': |
// Список источников |
$orig =& $db->query("SELECT * FROM origin"); |
$display = "<table><tr><td>Источник - Список</td><td>Действие</td><td>Описание</td><td>Корень</td><td>Домашняя страница</td><td>Ссылка на ключ</td></tr>"; |
while ($orig->fetchInto($info, DB_FETCHMODE_ASSOC)) { |
$display .= "<tr><td>".stripslashes($info["origin"])."</td>"; |
$display .= "<td><a href='".$admin."?mode=1&cat=0&action=2&uid=".$info["id"]."'><img src='img/edit.png' alt='Править'></a><a href='".$admin."?mode=1&cat=0&action=3&uid=".$info["id"]."'><img src='img/delete.png' alt='Удалить'></a></td>"; |
$display .= "<td>".stripslashes($info["desk"])."</td><td>".stripslashes($info["basedir"])."</td><td>".stripslashes($info["homeurl"])."</td><td>".stripslashes($info["keyurl"])."</td></tr>"; |
} |
$display .= "</table>"; |
$display .= "<p><a href='".$admin."?mode=1&cat=0&action=1'><img src='img/add.png' alt='Добавить'>Добавить новый источник</a></p>"; |
break; |
case '1': |
// Добавление нового источника |
$display = "<h3>Источник - Добавление</h3>"; |
$display .= "<form action='./process_ng.php' method='POST' enctype='multipart/form-data'>\n"; |
$display .= "<input type='hidden' name='cat' value='$cat'>\n"; |
$display .= "<input type='hidden' name='act' value='$act'>\n"; |
$display .= "Название : <input type='text' name='origin'><br>\n"; |
$display .= "Описание :<br> <textarea name='desk'></textarea><br>\n"; |
$display .= "Корень: <input type='text' name='basedir'><br>\n"; |
$display .= "Домашняя страница: <input type='text' name='homeurl'><br>\n"; |
$display .= "Ссылка на ключ: <input type='text' name='keyurl'><br>\n"; |
$display .= "<input type='submit' value='Создать'></form>\n"; |
break; |
case '2': |
// Правка существующего источника |
$orig =& $db->query("SELECT * FROM origin WHERE id='$uid'"); |
$orig->fetchInto($info, DB_FETCHMODE_ASSOC); |
$type .= "</select>\n"; |
$display = "<h3>Источник - Правка : <em>'".stripslashes($info["origin"])."'</em></h3>"; |
$display .= "<form action='./process_ng.php' method='POST' enctype='multipart/form-data'>\n"; |
$display .= "<input type='hidden' name='cat' value='$cat'>\n"; |
$display .= "<input type='hidden' name='act' value='$act'>\n"; |
$display .= "<input type='hidden' name='originID' value='$uid'>\n"; |
$display .= "Название : <input type='text' name='origin' value='".stripslashes($info["origin"])."'><br>\n"; |
$display .= "Описание :<br> <textarea name='desk' value='".stripslashes($info["desk"])."'></textarea><br>\n"; |
$display .= "Корень: <input type='text' name='basedir' value='".stripslashes($info["basedir"])."'><br>\n"; |
$display .= "Домашняя страница: <input type='text' name='homeurl' value='".stripslashes($info["homeurl"])."'><br>\n"; |
$display .= "Ссылка на ключ: <input type='text' name='keyurl' value='".stripslashes($info["keyurl"])."'><br>\n"; |
$display .= "<input type='submit' value='Править'></form>\n"; |
break; |
case '3': |
// Удаление существующего источника |
$orig =& $db->query("SELECT * FROM origin WHERE id='$uid'"); |
$orig->fetchInto($info, DB_FETCHMODE_ASSOC); |
$display = "<h3>Удаление источника репозиториев <em>'".stripslashes($info["origin"])."'</em></h3>"; |
$display .= "<form action='./process_ng.php' method='POST' enctype='multipart/form-data'>\n"; |
$display .= "<input type='hidden' name='cat' value='$cat'>\n"; |
$display .= "<input type='hidden' name='act' value='$act'>\n"; |
$display .= "<input type='hidden' name='originID' value='$uid'>\n"; |
$display .= "<input type='submit' value='Удалить'></form>\n"; |
break; |
} |
break; |
case '1': |
switch($act) { |
case '0': |
// Список дистрибутивов |
$distr =& $db->query("SELECT * FROM distribution"); |
$display = "<table><tr><td>Дистрибутив</td><td>Действие</td><td>Описание</td><td>URL</td><td>Ссылка на ключ</td></tr>"; |
while ($distr->fetchInto($info, DB_FETCHMODE_ASSOC)) { |
$display .= "<tr><td>".stripslashes($info["distname"])."</td>"; |
$display .= "<td><a href='".$admin."?mode=1&cat=1&action=2&uid=".$info["dist_id"]."'><img src='img/edit.png' alt='Править'></a><a href='".$admin."?mode=1&cat=1&action=3&uid=".$info["dist_id"]."'><img src='img/delete.png' alt='Удалить'></a></td>"; |
$display .= "<td>".stripslashes($info["origin"])."</td></tr>"; |
} |
$display .= "</table>"; |
$display .= "<p><a href='".$admin."?mode=1&cat=1&action=1'><img src='img/add.png' alt='Добавить'>Добавить новый дистрибутив</a></p>"; |
break; |
case '1': |
// Добавление нового дистрибутива |
$dtype =& $db->query("SELECT * FROM dtype"); |
$type = "<select name='distType'>"; |
while ($dtype->fetchInto($dtinfo, DB_FETCHMODE_ASSOC)) { |
$type .= "<option value='".$dtinfo["type_id"]."'>".stripslashes($dtinfo["type"])."</option>"; |
} |
$type .= "</select>\n"; |
$display = "<h3>Дистрибутив - Добавление</h3>"; |
$display .= "<form action='./process_ng.php' method='POST' enctype='multipart/form-data'>\n"; |
$display .= "<input type='hidden' name='cat' value='$cat'>\n"; |
$display .= "<input type='hidden' name='act' value='$act'>\n"; |
$display .= "Название дистрибутива: <input type='text' name='distName'><br>\n"; |
$display .= "Представление в строке User-Agent'а: <input type='text' name='distUA'><br>\n"; |
$display .= "Тип дистрибутива: ".$type."<br>"; |
$display .= "Логотип дистрибутива (Прозрачный PNG): <input type='file' name='distLOGO'><br>"; |
$display .= "<input type='submit' value='Создать'></form>\n"; |
break; |
case '2': |
// Правка существующего дистрибутива |
$dist =& $db->query("SELECT * FROM distribution WHERE dist_id='$uid'"); |
$dist->fetchInto($info, DB_FETCHMODE_ASSOC); |
$dtype =& $db->query("SELECT * FROM dtype"); |
$type = "<select name='distType'>"; |
while ($dtype->fetchInto($dtinfo, DB_FETCHMODE_ASSOC)) { |
if ($info["disttype"]==$dtinfo["type_id"]) { |
$type .= "<option value='".$dtinfo["type_id"]."' selected>".stripslashes($dtinfo["type"])."</option>"; |
} else { |
$type .= "<option value='".$dtinfo["type_id"]."'>".stripslashes($dtinfo["type"])."</option>"; |
} |
} |
$type .= "</select>\n"; |
$display = "<h3>Дистрибутив - Правка: <em class='".stripslashes($info["distua"])."-em'>".stripslashes($info["distname"])."</em></h3>"; |
$display .= "<form action='./process_ng.php' method='POST' enctype='multipart/form-data'>\n"; |
$display .= "<input type='hidden' name='cat' value='$cat'>\n"; |
$display .= "<input type='hidden' name='act' value='$act'>\n"; |
$display .= "<input type='hidden' name='distID' value='$uid'>\n"; |
$display .= "Название дистрибутива: <input type='text' name='distName' value='".stripslashes($info["distname"])."'><br>\n"; |
$display .= "Представление в строке User-Agent'a: <input type='text' name='distUA' value='".stripslashes($info["distua"])."'><br>\n"; |
$display .= "Тип дистрибутива: ".$type."<br>"; |
$display .= "Логотип дистрибутива (Прозрачный PNG): <input type='file' name='distLOGO'><br>"; |
$display .= "<input type='submit' value='Править'></form>\n"; |
break; |
case '3': |
// Удаление существующего дистрибутива |
$dist =& $db->query("SELECT * FROM distribution WHERE dist_id='$uid'"); |
$dist->fetchInto($info, DB_FETCHMODE_ASSOC); |
$display = "<h3>Удаление apt-дистрибутива <em class='".stripslashes($info["distua"])."-em'>".stripslashes($info["distname"])."</em></h3>"; |
$display .= "<form action='./process_ng.php' method='POST'>\n"; |
$display .= "<input type='hidden' name='cat' value='$cat'>\n"; |
$display .= "<input type='hidden' name='act' value='$act'>\n"; |
$display .= "<input type='hidden' name='distID' value='$uid'>\n"; |
$display .= "<input type='hidden' name='distUA' value='".stripslashes($info["distua"])."'>\n"; |
$display .= "<input type='submit' value='Удалить'></form>\n"; |
break; |
} |
break; |
case '2': |
break; |
case '3': |
break; |
case '4': |
break; |
} |
break; |
} |
$smarty->assign('feedaddr',$_SERVER["HTTP_HOST"].dirname($_SERVER["PHP_SELF"])); |
$smarty->assign('error',$error); |
$smarty->assign('menu',$menu); |
$smarty->assign('display',$display); |
$smarty->assign('antversion',$core->getSetting('version',$db)); |
$smarty->assign('title',$core->getSetting('codename',$db)); |
$smarty->assign('style',$core->getCSSList($db)); |
$smarty->display('admin.tpl'); |
?> |
/trunk/process_ng.php |
---|
Новый файл |
0,0 → 1,200 |
<?php |
/** |
* Project: Ant: sources.list generator |
* File: process.php |
* |
* This application is free software; you can redistribute it and/or |
* modify it under the terms of the GNU Lesser General Public |
* License as published by the Free Software Foundation; either |
* version 2.1 of the License, or (at your option) any later version. |
* |
* This application is distributed in the hope that it will be useful, |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
* Lesser General Public License for more details. |
* |
* You should have received a copy of the GNU Lesser General Public |
* License along with this library; if not, write to the Free Software |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
* |
*/ |
require_once dirname(__FILE__)."/sign-valid.php"; |
$cat = abs(intval($_POST["cat"])); |
$act = abs(intval($_POST["act"])); |
$go = "./admin_ng.php"; |
switch ($cat) { |
case '0': |
switch ($act) { |
case '0': |
break; |
case '1': |
// Добавление нового источника |
$origin = mysql_real_escape_string($_POST["origin"]); |
$desk = mysql_real_escape_string($_POST["desk"]); |
$basedir = mysql_real_escape_string($_POST["basedir"]); |
$homeurl = mysql_real_escape_string($_POST["homeurl"]); |
$keyurl = mysql_real_escape_string($_POST["keyurl"]); |
$res =& $db->query("INSERT INTO origin SET origin='$origin', desk='$desk', basedir='$basedir', homeurl='$homeurl', keyurl='$keyurl'"); |
$go .= "?mode=1&cat=$cat"; |
break; |
case '2': |
// Правка существующего источника |
$origin = mysql_real_escape_string($_POST["origin"]); |
$desk = mysql_real_escape_string($_POST["desk"]); |
$basedir = mysql_real_escape_string($_POST["basedir"]); |
$homeurl = mysql_real_escape_string($_POST["homeurl"]); |
$keyurl = mysql_real_escape_string($_POST["keyurl"]); |
$id = abs(intval($_POST["originID"])); |
$res =& $db->query("UPDATE origin SET origin='$origin', desk='$desk', basedir='$basedir', homeurl='$homeurl', keyurl='$keyurl' WHERE id='$id'"); |
$go .= "?mode=1&cat=$cat"; |
break; |
case '3': |
// Удаление существующего источника |
$id = abs(intval($_POST["originID"])); |
$res =& $db->query("DELETE FROM origin WHERE id='$id'"); |
$go .= "?mode=1&cat=$cat"; |
break; |
} |
break; |
case '1': |
switch ($act) { |
case '0': |
break; |
case '1': |
// Добавление нового дистрибутива |
$distname = mysql_real_escape_string($_POST["distName"]); |
$distua = mysql_real_escape_string($_POST["distUA"]); |
$disttype = abs(intval($_POST["distType"])); |
$distlogo = 0; |
if ($_FILES["distLOGO"]["type"]!=0) { |
$folder = dirname(__FILE__)."/img/logo/".stripslashes($distua)."-orig.png"; |
$folderN = dirname(__FILE__)."/img/logo/".stripslashes($distua).".png"; |
$folderEM = dirname(__FILE__)."/img/logo/".stripslashes($distua)."-em.png"; |
if (move_uploaded_file($_FILES["distLOGO"]["tmp_name"],$folder)) { |
chmod($folder, 0644); |
list($width, $height) = GetImageSize($folder); |
$percent = 32/$height; |
$newwidth = $width * $percent; |
$newheight = $height * $percent; |
$output = ImageCreateTrueColor($newwidth, $newheight); |
$source = ImageCreateFromPNG($folder); |
ImageCopyResampled($output, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); |
ImagePNG($output, $folderEM); |
$percent = 15/$height; |
$newwidth = $width * $percent; |
$newheight = $height * $percent; |
$output = ImageCreateTrueColor($newwidth, $newheight); |
ImageCopyResized($output, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); |
ImagePNG($output, $folderN); |
unlink($folder); |
$distlogo = 1; |
} |
} |
$res =& $db->query("INSERT INTO distribution SET distname='$distname', distua='$distua', disttype='$disttype', distlogo='$distlogo'"); |
// ChangeLog recording |
$res =& $db->query("SELECT * FROM dtype WHERE type_id='$disttype'"); |
$res->fetchInto($log, DB_FETCHMODE_ASSOC); |
$title = "Добавлен новый дистрибутив"; |
$dinfo = "В Ant добавлена поддержка основанного на ".stripslashes($log["type"])."-пакетах дистрибутива ".$distname."."; |
$res =& $db->query("INSERT INTO changelog SET log_record=NOW(), log_title='$title', log_desc='$dinfo'"); |
$go .= "?mode=1&cat=$cat"; |
break; |
case '2': |
// Правка существующего дистрибутива |
$distname = mysql_real_escape_string($_POST["distName"]); |
$distua = mysql_real_escape_string($_POST["distUA"]); |
$disttype = abs(intval($_POST["distType"])); |
$distID = abs(intval($_POST["distID"])); |
if ($_FILES["distLOGO"]["type"]!='') { |
$folder = dirname(__FILE__)."/img/logo/".$distua."-orig.png"; |
$folderN = dirname(__FILE__)."/img/logo/".$distua.".png"; |
$folderEM = dirname(__FILE__)."/img/logo/".$distua."-em.png"; |
if (move_uploaded_file($_FILES["distLOGO"]["tmp_name"],$folder)) { |
chmod ($folder, 0644); |
list($width, $height) = GetImageSize($folder); |
$percent = 32/$height; |
$newwidth = $width * $percent; |
$newheight = $height * $percent; |
$output = ImageCreateTrueColor($newwidth, $newheight); |
$black = ImageColorAllocate($output, 0, 0, 0); |
$source = ImageCreateFromPNG($folder); |
ImageCopyResampled($output, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); |
ImageColorTransparent($output, $black); |
ImagePNG($output, $folderEM); |
$percent = 15/$height; |
$newwidth = $width * $percent; |
$newheight = $height * $percent; |
$output = ImageCreateTrueColor($newwidth, $newheight); |
$black = ImageColorAllocate($output, 0, 0, 0); |
ImageCopyResized($output, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); |
ImageColorTransparent($output, $black); |
ImagePNG($output, $folderN); |
unlink($folder); |
$res =& $db->query("UPDATE distribution SET distlogo='1' WHERE dist_id='$distID'"); |
} |
} |
$res =& $db->query("UPDATE distribution SET distname='$distname', distua='$distua', disttype='$disttype', WHERE dist_id='$distID'"); |
$go .= "?mode=1&cat=$cat"; |
break; |
case '3': |
// Удаление существующего дистрибутива |
$distID = abs(intval($_POST["distID"])); |
$distUA = $_POST["distUA"]; |
$folder1 = dirname(__FILE__)."/img/logo/".$distUA."-em.png"; |
$folder2 = dirname(__FILE__)."/img/logo/".$distUA.".png"; |
if (file_exists($folder1)) { unlink($folder1); } |
if (file_exists($folder2)) { unlink($folder2); } |
$res =& $db->query("SELECT * FROM distribution d JOIN dtype t ON d.disttype=t.type_id WHERE d.dist_id='$distID'"); |
$res->fetchInto($log, DB_FETCHMODE_ASSOC); |
$res =& $db->query("DELETE FROM distribution WHERE dist_id='$distID'"); |
$res =& $db->query("DELETE FROM sect2dist WHERE dist_id='$distID'"); |
$res =& $db->query("DELETE FROM version WHERE dist_id='$distID'"); |
// ChangeLog recording |
$title = "Удаление поддержки дистрибутива"; |
$dinfo = "Из Ant удалена поддержка основанного на ".stripslashes($log["type"])."-пакетах дистрибутива ".stripslashes($log["distname"])."."; |
$res =& $db->query("INSERT INTO changelog SET log_record=NOW(), log_title='$title', log_desc='$dinfo'"); |
$go .= "?mode=1&cat=$cat"; |
break; |
} |
break; |
case '2': |
break; |
case '3': |
break; |
} |
header("Location: $go\n\n"); |
?> |