Хранилища Subversion ant

Редакция

Редакция 286 | Авторство | Сравнить с предыдущей | Последнее изменение | Открыть журнал | Скачать | RSS

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

$mode = $secure->wrapInt($_POST["mode"]);
$act  = $secure->wrapInt($_POST["act"]);

$go = "./admin.php";

switch ($mode) {
    case '0':
    break;
    case '1':
        switch ($act) {
            case '0':
            break;
            case '1':
                // Добавление нового дистрибутива
                $distname = $secure->wrapStr($_POST["distName"]);
                $distua   = $secure->wrapStr($_POST["distUA"]);
                $disttype = $secure->wrapInt($_POST["distType"]);

                $distlogo = 0;
                if ($_FILES["distLOGO"]["type"]!=0) {
                    $folder   = dirname(__FILE__)."/img/logo/".$secure->stripStr($distua)."-orig.png";
                    $folderN  = dirname(__FILE__)."/img/logo/".$secure->stripStr($distua).".png";
                    $folderEM = dirname(__FILE__)."/img/logo/".$secure->stripStr($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 добавлена поддержка основанного на ".$secure->stripStr($log["type"])."-пакетах дистрибутива ".$distname.".";
                $res =& $db->query("INSERT INTO changelog SET log_record=NOW(), log_title='$title', log_desc='$dinfo'");

                $go .= "?mode=".$mode."&action=0";

                break;
            case '2':
                // Правка существующего дистрибутива
                $distname = $secure->wrapStr($_POST["distName"]);
                $distua   = $secure->wrapStr($_POST["distUA"]);
                $disttype = $secure->wrapInt($_POST["distType"]);
                $distID   = $secure->wrapInt($_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=".$mode."&action=0";

            break;
            case '3':
                // Удаление существующего дистрибутива
                $distID = $secure->wrapInt($_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 удалена поддержка основанного на ".$secure->stripStr($log["type"])."-пакетах дистрибутива ".$secure->stripStr($log["distname"]).".";
                $res =& $db->query("INSERT INTO changelog SET log_record=NOW(), log_title='$title', log_desc='$dinfo'");

                $go .= "?mode=".$mode."&action=0";

            break;
        }
    break;
    case '2':
        switch ($act) {
            case '0':
            break;
            case '1':
                // Добавление новой версии дистрибутива
                $versname = $secure->wrapStr($_POST["versNam"]);
                $versnumb = $secure->wrapStr($_POST["versNum"]);
                $verscode = $secure->wrapStr($_POST["versCN"]);
                $distname = $secure->wrapInt($_POST["distName"]);

                $res =& $db->query("INSERT INTO version SET dist_id='$distname', vname='$versname', version='$versnumb', vcodename='$verscode'");

                // ChangeLog recording
                $res =& $db->query("SELECT * FROM distribution WHERE dist_id='$distname'");
                $res->fetchInto($log, DB_FETCHMODE_ASSOC);
                $title = "Добавлена новая версия ".$log["distname"];
                $dinfo = "В Ant добавлена поддержка новой версии дистрибутива ".$log["distname"]." &ndash; ".$versnumb;
                if ($versname!="") {
                    $dinfo .= " с кодовым названием &#8220;".$versname."&#8221;.";
                } else {
                    $dinfo .= ".";
                }
                $res =& $db->query("INSERT INTO changelog SET log_record=NOW(), log_title='$title', log_desc='$dinfo'");

                $go .= "?mode=".$mode."&action=0";

            break;
            case '2':
                // Правка имеющейся версии дистрибутива
                $versname = $secure->wrapStr($_POST["versNam"]);
                $versnumb = $secure->wrapStr($_POST["versNum"]);
                $verscode = $secure->wrapStr($_POST["versCN"]);
                $distname = $secure->wrapInt($_POST["distName"]);
                $versID   = $secure->wrapInt($_POST["versID"]);

                $res =& $db->query("UPDATE version SET dist_id='$distname', vname='$versname', version='$versnumb', vcodename='$verscode' WHERE version_id='$versID'");

                $go .= "?mode=".$mode."&action=0";

            break;
            case '3':
                // Удаление существующей версии дистрибутива
                $versID = $secure->wrapInt($_POST["versID"]);

                $res =& $db->query("SELECT * FROM version v JOIN distribution d ON v.dist_id=d.dist_id WHERE v.version_id='$versID'");
                $res->fetchInto($log, DB_FETCHMODE_ASSOC);

                $res =& $db->query("DELETE FROM version WHERE version_id='$versID'");
                $res =& $db->query("DELETE FROM ver2rep WHERE ver_id='$versID'");

                // ChangeLog recording
                $title = "Удалена поддержка ".$log["distname"]." ".$log["version"];
                $dinfo = "Из Ant удалена поддержка версии ".$log["version"]."{CNAME} дистрибутива ".$log["distname"].".";
                if ($log["vname"]!="") {
                $dinfo = str_replace("{CNAME}","(&#8220;".$log["vname"]."&#8221;)",$dinfo);
                } else {
                    $dinfo = str_replace("{CNAME}","",$dinfo);
                }
                $res =& $db->query("INSERT INTO changelog SET log_record=NOW(), log_title='$title', log_desc='$dinfo'");

                $go .= "?mode=".$mode."&action=0";

            break;
        }
    case '3':
        switch ($act) {
            case '0':
            break;
            case '1':
                // Добавление нового источника
                $origin = $secure->wrapStr($_POST["origin"]);
                $res =& $db->query("INSERT INTO origin SET origin='$origin'");
                $go .= "?mode=".$mode."&action=0";
            break;
            case '2':
                // Правка существующего источника
                $origin = $secure->wrapStr($_POST["origin"]);
                $id     = $secure->wrapInt($_POST["originID"]);
                $res =& $db->query("UPDATE origin SET origin='$origin' WHERE orig_id='$id'");
                $go .= "?mode=$mode&action=0";
            break;
            case '3':
                // Удаление существующего источника
                $id = $secure->wrapInt($_POST["originID"]);
                $res =& $db->query("DELETE FROM rep2orig WHERE orig_id='$id'");
                $res =& $db->query("DELETE FROM origin WHERE orig_id='$id'");
                $go .= "?mode=".$mode."&action=0";
            break;
        }
    break;
    case '4':
        switch ($act) {
            case '0':
            break;
            case '1':
                // Добавление нового репозитория
                $versID  = $secure->wrapInt($_POST["vers"]);
                $repname = $secure->wrapStr($_POST["repName"]);
                $repinfo = $secure->wrapStr($_POST["repInfo"]);
                $repsche = $secure->wrapInt($_POST["scheme"]);
                $origin  = $secure->wrapInt($_POST["orign"]);
                $reproot = $secure->wrapInt($_POST["rootFolder"]);
                $default = $secure->wrapInt($_POST["default"]);

                $res =& $db->query("INSERT INTO repository SET repname='$repname', repdescribe='$repinfo', scheme_id='$repsche', orig_id='$origin', root_id='$reproot', default='$default'");
                $res =& $db->query("SELECT rep_id FROM repository ORDER BY rep_id DESC LIMIT 1");
                $res->fetchInto($rep, DB_FETCHMODE_ASSOC);
                $rep_id = $rep["rep_id"];

                $res =& $db->query("INSERT INTO ver2rep SET ver_id='$versID', rep_id='$rep_id'");

                for ($i=0;$i<count($_POST["sect"]);$i++) {
                        $res =& $db->query("INSERT INTO sect2rep SET sect_id='".$_POST["sect"][$i]."', rep_id='$rep_id'");
                }

                for ($i=0;$i<count($_POST["repMirror"]);$i++) {
                        $res =& $db->query("INSERT INTO mirr2rep SET mirror_id='".$_POST["repMirror"][$i]."', rep_id='$rep_id'");
                }

                $go .= "?mode=".$mode."&action=0";

            break;
            case '2':
                // Правка репозитория
                $repID   = $secure->wrapInt($_POST["rep"]);
                $repname = $secure->wrapStr($_POST["repName"]);
                $repinfo = $secure->wrapStr($_POST["repInfo"]);
                $repsche = $secure->wrapInt($_POST["scheme"]);
                $origin  = $secure->wrapInt($_POST["origin"]);
                $reproot = $secure->wrapInt($_POST["rootFolder"]);
                $default = 0;
                if(isset($_POST["default"]) && ($_POST["default"]==1)) {
                        $default = 1;
                };

                $res =& $db->query("UPDATE repository SET repname='$repname', repdescribe='$repinfo', scheme_id='$repsche', orig_id='$origin', root_id='$reproot', defaultrep='$default' WHERE rep_id='$repID'");
                $res =& $db->query("DELETE FROM sect2rep WHERE rep_id='$repID'");
                for ($i=0;$i<count($_POST["sect"]);$i++) {
                    $res =& $db->query("INSERT INTO sect2rep SET sect_id='".$_POST["sect"][$i]."', rep_id='$repID'");
                }

                $res =& $db->query("DELETE FROM mirr2rep WHERE rep_id='$repID'");
                for ($i=0;$i<count($_POST["repMirror"]);$i++) {
                        $res =& $db->query("INSERT INTO mirr2rep SET mirror_id='".$_POST["repMirror"][$i]."', rep_id='$repID'");
                }

                $go .= "?mode=".$mode."&action=0";

            break;
            case '3':
                // Удаление репозитория
                $repID = $secure->wrapInt($_POST["rep"]);

                $res =& $db->query("DELETE FROM repository WHERE rep_id='$repID'");
                $res =& $db->query("DELETE FROM sect2rep WHERE rep_id='$repID'");
                $res =& $db->query("DELETE FROM ver2rep WHERE rep_id='$repID'");
                $res =& $db->query("DELETE FROM mirr2rep WHERE rep_id='$repID'");

                $go .= "?mode=".$mode."&action=0";

            break;
        }
    break;
    case '5':
        switch ($act) {
            case '0':
            break;
            case '1':
                // Создание секции
                $sectname = $secure->wrapStr($_POST["sectName"]);
                $sectinfo = $secure->wrapStr($_POST["sectInfo"]);

                $req =& $db->query("INSERT INTO section SET sectname='$sectname', sectinfo='$sectinfo'");
                $req =& $db->query("SELECT sect_id FROM section ORDER BY sect_id DESC LIMIT 1");
                $req->fetchInto($sect, DB_FETCHMODE_ASSOC);

                for($i=0;$i<count($_POST["dist"]);$i++) {
                    $req =& $db->query("INSERT INTO sect2dist SET dist_id='".$_POST["dist"][$i]."', sect_id='".$sect["sect_id"]."'");
                }

                $go .= "?mode=".$mode."&act=0";

            break;
            case '2':
                // Правка секции
                $sectID   = $secure->wrapInt($_POST["sectID"]);
                $sectname = $secure->wrapStr($_POST["sectName"]);
                $sectinfo = $secure->wrapStr($_POST["sectInfo"]);

                $req =& $db->query("UPDATE section SET sectname='$sectname', sectinfo='$sectinfo' WHERE sect_id='$sectID'");
                $req =& $db->query("DELETE FROM sect2dist WHERE sect_id='$sectID'");

                for($i=0;$i<count($_POST["dist"]);$i++) {
                    $req =& $db->query("INSERT INTO sect2dist SET dist_id='".$_POST["dist"][$i]."', sect_id='".$sectID."'");
                }

                $go .= "?mode=".$mode."&action=0";

            break;
            case '3':
                // Удаление секции
                $sectID = $secure->wrapInt($_POST["sectID"]);

                $req =& $db->query("DELETE FROM section WHERE sect_id='$sectID'");
                $req =& $db->query("DELETE FROM sect2dist WHERE sect_id='$sectID'");
                $req =& $db->query("DELETE FROM sect2rep WHERE sect_id='$sectID'");

                $go .= "?mode=".$mode."&action=0";

            break;
        }
    break;
    case '6':
        switch ($act) {
            case '0':
            break;
            case '1':
                // Добавление новой схемы
                $scheme = $secure->wrapStr($_POST["scheme"]);
                $req =& $db->query("INSERT INTO scheme SET scheme='$scheme'");
                $go .= "?mode=".$mode."&act=0";
            break;
            case '2':
                // Правка схемы
                $schemeID = $secure->wrapInt($_POST["schemeID"]);
                $scheme = $secure->wrapStr($_POST["scheme"]);
                $req =& $db->query("UPDATE scheme SET scheme='$scheme' WHERE scheme_id='$schemeID'");
                $go .= "?mode=".$mode."&act=0";
            break;
            case '3':
                // Удаление схемы
                $schemeID = ($secure->wrapInt($_POST["schemeID"]));
                $req =& $db->query("DELETE FROM scheme WHERE scheme_id='$schemeID'");
                $go .= "?mode=".$mode."&act=0";
            break;
        }
    break;
    case '7':
        switch ($act) {
            case '0':
            break;
            case '1':
                // Добавление нового типа репозитория
                $rtype = $secure->wrapStr($_POST["rtype"]);
                $req =& $db->query("INSERT INTO rtype SET rtype='$rtype'");
                $go .= "?mode=".$mode."&act=0";
            break;
            case '2':
                // Правка существующего типа репозитория
                $rtypeID = $secure->wrapInt($_POST["rtypeID"]);
                $rtype   = $secure->wrapStr($_POST["rtype"]);
                $req =& $db->query("UPDATE rtype SET rtype='$rtype' WHERE rtype_id='$rtypeID'");
                $go .= "?mode=".$mode."&act=0";
            break;
            case '3':
                // Удаление типа репозитория
                $rtypeID = $secure->wrapInt($_POST["rtypeID"]);
                $req =& $db->query("DELETE FROM rtype WHERE rtype_id='$rtypeID'");
                $go .= "?mode=".$mode."&act=0";
            break;
        }
    break;
    case '8':
        switch ($act) {
            case '0':
            break;
            case '1':
                // Создание корневой папки репозиториев
                $root = $secure->wrapStr($_POST["rootFolder"]);
                $req =& $db->query("INSERT INTO root SET root_folder='$root'");
                $go .= "?mode=".$mode."&act=0";
            break;
            case '2':
                // Редактирование корневой папки репозиториев
                $root_id = $secure->wrapInt($_POST["rootID"]);
                $root_fd = $secure->wrapStr($_POST["rootFolder"]);
                $req =& $db->query("UPDATE root SET root_folder='$root_fd' WHERE root_id='$root_id'");
                $go .= "?mode=".$mode."&act=0";
            break;
            case '3':
                // Удаление корневой папки репозиториев
                $root_id = $secure->wrapInt($_POST["rootID"]);
                $req =& $db->query("DELETE FROM root WHERE root_id='$root_id'");
                $go .= "?mode=".$mode."&act=0";
            break;
        }
    break;
    case '9':
        switch ($act) {
            case '0':
            break;
            case '1':
                // Добавление нового зеркала
                $mirr_name = $secure->wrapStr($_POST["mname"]);
                $mirr_url = $secure->wrapStr($_POST["murl"]);
                list($proto,$addr) = split("://",$mirr_url);
                $proto .= "://";
                $res =& $db->query("INSERT INTO mirror SET mname='$mirr_name', mproto='$proto', murl='$addr'");
                $go .= "?mode=".$mode."&action=0";
            break;
            case '2':
                // Правка существующего зеркала
                $mirr_name = $secure->wrapStr($_POST["mname"]);
                $mirr_url = $secure->wrapStr($_POST["murl"]);
                $mirr_id = $secure->wrapInt($_POST["mirrorID"]);
                list($proto,$addr)=split("://",$mirr_url);
                $proto .= "://";
                $res =& $db->query("UPDATE mirror SET mname='$mirr_name', mproto='$proto', murl='$addr' WHERE mirror_id='$mirr_id'");
                $go .= "?mode=$mode&action=0";
            break;
            case '3':
                // Удаление существующего зеркала
                $mirr_id = $secure->wrapInt($_POST["mirrorID"]);
                $res =& $db->query("DELETE FROM mirr2rep WHERE mirror_id='$mirr_id'");
                $res =& $db->query("DELETE FROM mirror WHERE mirror_id='$mirr_id'");
                $go .= "?mode=".$mode."&action=0";
            break;
        }
    break;
    case '20':
        switch ($act) {
            case '0':
            break;
            case '1':
                // Добавление новой настройки Ant
                $option = $secure->wrapStr($_POST["setoption"]);
                $value  = $secure->wrapStr($_POST["setvalue"]);
                $req =& $db->query("INSERT INTO settings SET opt='$option', optvalue='$value'");
                $go .= "?mode=".$mode."&act=0";
            break;
            case '2':
                // Правка настройки Ant
                $optID  = $secure->wrapInt($_POST["optID"]);
                $option = $secure->wrapStr($_POST["setoption"]);
                $value  = $secure->wrapStr($_POST["setvalue"]);
                $req =& $db->query("UPDATE settings SET opt='$option', optvalue='$value' WHERE opt_id='$optID'");
                $go .= "?mode=".$mode."&act=0";
            break;
            case '3':
                // Удаление настройки
                $optID = $secure->wrapInt($_POST["optID"]);
                $req =& $db->query("DELETE FROM settings WHERE opt_id='$optID'");
                $go .= "?mode=".$mode."&act=0";
            break;
        }
    break;
    case '21':
        switch ($act) {
            case '0':
            break;
            case '1':
                // Добавление интерфейса
                $ifname = $secure->wrapStr($_POST["ifname"]);
                $ifinfo = $secure->wrapStr($_POST["ifinfo"]);
                $ifname = str_replace(".php","",$ifname);
                $req =& $db->query("INSERT INTO interfaces SET interface='$ifname', interfaceinfo='$ifinfo'");
                $go .= "?mode=".$mode."&act=0";
            break;
            case '2':
                // Правка интерфейса
                $ifname = $secure->wrapStr($_POST["ifname"]);
                $ifinfo = $secure->wrapStr($_POST["ifinfo"]);
                $if     = $secure->wrapInt($_POST["if"]);
                $ifname = str_replace(".php","",$ifname);
                $req =& $db->query("UPDATE interfaces SET interface='$ifname', interfaceinfo='$ifinfo' WHERE if_id='$if'");
                $go .= "?mode=".$mode."&act=0";
            break;
            case '3':
                // Удаление интерфейса
                $if = $secure->wrapInt($_POST["if"]);
                $req =& $db->query("DELETE FROM interfaces WHERE if_id='$if'");
                $go .= "?mode=".$mode."&act=0";
            break;
        }
    break;
    case '22':
        switch ($act) {
            case '0':
                // Смена пароля
                // $OID        = $secure->wrapInt($_POST["OID"]);
                $oldpass    = $secure->wrapStr($_POST["oldPW"]);
                $newpass1   = $secure->wrapStr($_POST["newPW1"]);
                $newpass2   = $secure->wrapStr($_POST["newPW2"]);

                $errpwd = 0;
                $spass = md5($newpass1."ANT");
                $soldpass = md5($oldpass."ANT");
                if ($soldpass != $_COOKIE[$CookiePasswd]) {
                    $go .= "?error=1";
                    $errpwd = 1;
                }
                if ($newpass1 != $newpass2) {
                $go .= "?error=2";
                $errpwd = 2;
                }

                if ($errpwd==0) {
                // fix: Для многопользовательского варианта придется запрос переписать
                $req =& $db->query("UPDATE owner SET passwd='$spass' WHERE login='admin'");
                }
            break;
        }
    break;
}

header("Location: $go\n\n");

?>