Хранилища Subversion ant

Сравнить редакции

Не учитывать пробелы Редакция 153 → Редакция 154

/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");
 
?>