From d118769d8ca25cd406ceb7412b84aa87f97c808f Mon Sep 17 00:00:00 2001 From: eric Date: Sun, 24 Oct 2004 20:55:30 +0000 Subject: [PATCH] just a little work on it - still have some code and plenty of debugging to do --- web/html/pkgsubmit.php | 262 ++++++++++++++++++-------------- web/lib/aur.inc | 8 +- web/testing/xmms-skins.tar.gz | Bin 1803 -> 2850 bytes web/testing/xmms-skins/PKGBUILD | 22 +-- 4 files changed, 160 insertions(+), 132 deletions(-) diff --git a/web/html/pkgsubmit.php b/web/html/pkgsubmit.php index 44399116..1b986ccf 100644 --- a/web/html/pkgsubmit.php +++ b/web/html/pkgsubmit.php @@ -1,6 +1,7 @@ " . $msg . "
\n"; - print "\n"; - html_footer("\$Id$"); - exit(); -} if ($_COOKIE["AURSID"]) { # track upload errors @@ -37,7 +32,9 @@ if ($_COOKIE["AURSID"]) { if (!$_REQUEST["pkgname"]) { $error = __("You did not specify a package name."); } else { - $pkg_name = escapeshellarg($_REQUEST["pkgname"]); + $pkg_name = str_replace("'", "", $_REQUEST["pkgname"]); + $pkg_name = escapeshellarg($pkg_name); + $pkg_name = str_replace("'", "", $pkg_name); # get rid of single quotes $presult = preg_match("/^[a-z][a-z0-9_-]*$/", $pkg_name); if ($presult == FALSE || $presult <= 0) { # FALSE => error processing regex, 0 => invalid characters @@ -47,9 +44,7 @@ if ($_COOKIE["AURSID"]) { } if (!$error && (!$_REQUEST["comments"] || $_REQUEST["comments"] == '')) { - $error = __("You must supply a comment."); - } else { - print exitError($error); + $error = __("You must supply a comment for this upload/change."); } if (!$error) { @@ -69,10 +64,15 @@ if ($_COOKIE["AURSID"]) { array("", $pkg_name, "")); } } - } else { - print exitError($error); } + # TODO check to see if the user has the ability to 'change' package + # attributes such as location and/or category. Examples: TUs can + # only add/change packages in Unsupported and the AUR, normal users + # can only add/change packages in Unsupported. + # + + if (!$error) { # no errors checking upload permissions, go ahead and try to process # the uploaded package file. @@ -93,36 +93,33 @@ if ($_COOKIE["AURSID"]) { # $error = __("Error trying to upload file - please try again."); } - } else { - print exitError($error); } # at this point, we can safely unpack the uploaded file and parse # its contents. # - if (!@mkdir($INCOMING_DIR.$pkg_name)) { - $error = __("Could not create incoming directory: %s.", - array($INCOMING_DIR.$pkg_name)); - } else { - if (!@chdir($INCOMING_DIR.$pkg_name)) { - $error = __("Could not change directory to %s.", - array($INCOMING_DIR.$pkg_name)); - } else { - # try .gz first - # - exec("/bin/sh -c 'tar xzf ".$upload_file."'", $retval); - if (!$retval) { - # now try .bz2 format - # - exec("/bin/sh -c 'tar xjf ".$upload_file."'", $retval); - } - if (!$retval) { - $error = __("Unknown file format for uploaded file."); - } - } - } - if ($error) { - print exitError($error); + if (!$error) { + if (!@mkdir($INCOMING_DIR.$pkg_name)) { + $error = __("Could not create incoming directory: %s.", + array($INCOMING_DIR.$pkg_name)); + } else { + if (!@chdir($INCOMING_DIR.$pkg_name)) { + $error = __("Could not change directory to %s.", + array($INCOMING_DIR.$pkg_name)); + } else { + # try .gz first + # + @exec("/bin/sh -c 'tar xzf ".$upload_file."'", $trash, $retval); + if (!$retval) { + # now try .bz2 format + # + @exec("/bin/sh -c 'tar xjf ".$upload_file."'", $trash, $retval); + } + if (!$retval) { + $error = __("Unknown file format for uploaded file."); + } + } + } } # At this point, if no error exists, the package has been extracted @@ -131,39 +128,41 @@ if ($_COOKIE["AURSID"]) { # packaged without the $pkg_name subdirectory, try and create it # and move the package contents into the new sub-directory. # - if (is_dir($INCOMING_DIR.$pkg_name."/".$pkg_name) && - is_file($INCOMING_DIR.$pkg_name."/".$pkg_name."/PKGBUILD")) { - # the files were packaged correctly - # - if (!chdir($INCOMING_DIR.$pkg_name."/".$pkg_name)) { - $error = __("Could not change to directory %s.", - array($INCOMING_DIR.$pkg_name."/".$pkg_name)); - } - $pkg_dir = $INCOMING_DIR.$pkg_name."/".$pkg_name; - } elseif (is_file($INCOMING_DIR.$pkg_name."/PKGBUILD")) { - # not packaged correctly, but recovery may be possible. - # try and create $INCOMING_DIR.$pkg_name."/".$pkg_name and - # move package contents into the new dir - # - if (!@mkdir($INCOMING_DIR.$pkg_name."/".$pkg_name)) { - $error = __("Could not create directory %s.", - array($INCOMING_DIR.$pkg_name."/".$pkg_name)); - } else { - exec("/bin/sh -c 'mv * ".$pkg_name."'"); - if (!file_exists($INCOMING_DIR.$pkg_name."/".$pkg_name."/PKGBUILD")) { - $error = __("Error exec'ing the mv command."); - } - } - if (!@chdir($INCOMING_DIR.$pkg_name."/".$pkg_name)) { - $error = __("Could not change to directory %s.", - array($INCOMING_DIR.$pkg_name."/".$pkg_name)); - } - $pkg_dir = $INCOMING_DIR.$pkg_name."/".$pkg_name; - } else { - # some wierd packaging/extraction error - baal - # - $error = __("Error trying to unpack upload - PKGBUILD does not exist."); - } + if (!$error) { + if (is_dir($INCOMING_DIR.$pkg_name."/".$pkg_name) && + is_file($INCOMING_DIR.$pkg_name."/".$pkg_name."/PKGBUILD")) { + # the files were packaged correctly + # + if (!@chdir($INCOMING_DIR.$pkg_name."/".$pkg_name)) { + $error = __("Could not change to directory %s.", + array($INCOMING_DIR.$pkg_name."/".$pkg_name)); + } + $pkg_dir = $INCOMING_DIR.$pkg_name."/".$pkg_name; + } elseif (is_file($INCOMING_DIR.$pkg_name."/PKGBUILD")) { + # not packaged correctly, but recovery may be possible. + # try and create $INCOMING_DIR.$pkg_name."/".$pkg_name and + # move package contents into the new dir + # + if (!@mkdir($INCOMING_DIR.$pkg_name."/".$pkg_name)) { + $error = __("Could not create directory %s.", + array($INCOMING_DIR.$pkg_name."/".$pkg_name)); + } else { + @exec("/bin/sh -c 'mv * ".$pkg_name."'"); + if (!file_exists($INCOMING_DIR.$pkg_name."/".$pkg_name."/PKGBUILD")) { + $error = __("Error exec'ing the mv command."); + } + } + if (!@chdir($INCOMING_DIR.$pkg_name."/".$pkg_name)) { + $error = __("Could not change to directory %s.", + array($INCOMING_DIR.$pkg_name."/".$pkg_name)); + } + $pkg_dir = $INCOMING_DIR.$pkg_name."/".$pkg_name; + } else { + # some wierd packaging/extraction error - baal + # + $error = __("Error trying to unpack upload - PKGBUILD does not exist."); + } + } # if no error, get list of directory contents and process PKGBUILD # @@ -271,60 +270,64 @@ if ($_COOKIE["AURSID"]) { } } } - if ($error) { - print exitError($error); + + # TODO This is where other additional error checking can be + # performed. Examples: #md5sums == #sources?, md5sums of any + # included files match?, install scriptlet file exists? + # + + + # Now, run through the pkgbuild array and do any $pkgname/$pkgver + # substituions. + # + if (!$error) { + $pkgname_var = $pkgbuild["pkgname"]; + $pkgver_var = $pkgbuild["pkgver"]; + $new_pkgbuild = array(); + while (list($k, $v) = each($pkgbuild)) { + $v = str_replace("\$pkgname", $pkgname_var, $v); + $v = str_replace("\$pkgver", $pkgver_var, $v); + $new_pkgbuild[$k] = $v; + } } - print "Groovy!!! - We're all set to populate the database!!
\n"; - print "\n"; - html_footer("\$Id$"); - exit(); - - # update the backend database if there are no errors + # update the backend database # - if (!$error) { - $dbh = db_connect(); - if ($pkg_exists) { + if (!$error) { + $dbh = db_connect(); + if ($pkg_exists) { - # this is an overwrite of an existing package, the database ID - # needs to be preserved so that any votes are retained. However, - # PackageDepends, PackageSources, and PackageContents can be - # purged. - # - $q = "SELECT * FROM Packages "; - $q.= "WHERE Name = '".mysql_escape_string($_FILES["pfile"]["name"])."'"; - $result = db_query($q, $dbh); - $pdata = mysql_fetch_assoc($result); + # this is an overwrite of an existing package, the database ID + # needs to be preserved so that any votes are retained. However, + # PackageDepends, PackageSources, and PackageContents can be + # purged. + # + $q = "SELECT * FROM Packages "; + $q.= "WHERE Name = '".mysql_escape_string($_FILES["pfile"]["name"])."'"; + $result = db_query($q, $dbh); + $pdata = mysql_fetch_assoc($result); - # flush out old data that will be replaced with new data - # - $q = "DELETE FROM PackageContents WHERE PackageID = ".$pdata["ID"]; - db_query($q, $dbh); - $q = "DELETE FROM PackageDepends WHERE PackageID = ".$pdata["ID"]; - db_query($q, $dbh); - $q = "DELETE FROM PackageSources WHERE PackageID = ".$pdata["ID"]; - db_query($q, $dbh); + # flush out old data that will be replaced with new data + # + $q = "DELETE FROM PackageContents WHERE PackageID = ".$pdata["ID"]; + db_query($q, $dbh); + $q = "DELETE FROM PackageDepends WHERE PackageID = ".$pdata["ID"]; + db_query($q, $dbh); + $q = "DELETE FROM PackageSources WHERE PackageID = ".$pdata["ID"]; + db_query($q, $dbh); - # TODO - # $q = "UPDATE Packages ..." + # TODO + # $q = "UPDATE Packages ..." # $q = "INSERT INTO PackageUploadHistory ..." - } else { - # this is a brand new package - # - # TODO - # $q = "INSERT ..." - } - } - - # TODO clean up on error? How much cleaning to do? - # - if ($error) { - # TODO clean house (filesystem/database) - # - } - + } else { + # this is a brand new package + # + # TODO + # $q = "INSERT ..." + } + } } @@ -337,6 +340,9 @@ if ($_COOKIE["AURSID"]) { print "".$error."
\n"; print "
 
\n"; } + $pkg_categories = pkgCategories(); + $pkg_locations = pkgLocations(); + print "
\n"; print "\n"; @@ -350,6 +356,28 @@ if ($_COOKIE["AURSID"]) { print "\n"; print " \n"; print "\n"; + print "\n"; + print " "; + print __("Package Category").":\n"; + print " "; + print "\n"; + print "\n"; + print "\n"; + print " "; + print __("Package Location").":\n"; + print " "; + print "\n"; + print "\n"; print "\n"; print " "; print __("Upload package file").":\n"; @@ -362,9 +390,9 @@ if ($_COOKIE["AURSID"]) { print __("Overwrite existing package?"); print " \n"; print " "; - print " ".__("Yes"); + print " ".__("Yes"); print "   "; - print " "; + print " "; print __("No"); print " \n"; print "\n"; diff --git a/web/lib/aur.inc b/web/lib/aur.inc index f652b061..e696d5bb 100644 --- a/web/lib/aur.inc +++ b/web/lib/aur.inc @@ -512,11 +512,11 @@ function rm_rf($dirname="") { $d = dir($dirname); while ($f = $d->read()) { if ($f != "." && $f != "..") { - if (is_dir($dirname.$f)) { - rm_rf($dirname.$f."/"); + if (is_dir($dirname."/".$f)) { + rm_rf($dirname."/".$f); } - if (is_file($dirname.$f) || is_link($dirname.$f)) { - unlink($dirname.$f); + if (is_file($dirname."/".$f) || is_link($dirname."/".$f)) { + unlink($dirname."/".$f); } } } diff --git a/web/testing/xmms-skins.tar.gz b/web/testing/xmms-skins.tar.gz index 9fb0db3c761217d08bacf69993243dfedc0a332e..1b313f8c731e9d4a4e535c4fe77c253694f55c8e 100644 GIT binary patch literal 2850 zcmV+-3*Gb|iwFRON_s&61MOUUbK5o&&%dWnfm1V+wo{3Clhj0Md`+g4Y18S{O|R3r z84n167Hg5z@nPA$x$k~U>S0BZEz76y(ld4vo5tgZ#V&TS00~^BX*nn_lC1Qed@RC1 zz7WlC;tSmVO*n6VFX;)vgh|c?k@5*VQlC6Q;-hi2L3LTF0--0W(388%*`mB7f7OxI z?>`A$-ROT%X#B)gV%(J>p0>T>lbt>h#|Q-LC&1 zzx(!Y@7{d>s!48B9^6JF55Ca%F8xbP#D@MMpJE?_{yP!kBiH|D=;<3XLMvr|b&1GO zAPNfeu<$5HBpBfk{vlf=8oj=np{Kpi&|8&c75ulwXp!-}`T4RD;xx(Xt6^T8zkqVz z_3lPaC|d&bUeX3FvB&zjU{=vkfpk<6Zb(F2f5O{e3hOU{SOgkG7~ zg|_3*m+0>yFRb;OiJD%#sou?oFn)*Uf1rQ#5Zc9RoJ?)$owk+!ooqLQh5w4L}$qxsPCN0A>6d_&1E)ow1Yc)y-3lVTE`5JK} zXMY85Ily%}BW^oQF4R4SC7T9qw^FPB`BbpuNYCtgnYB>ueHj&Si&mt(uLmpZi#g@kn3JVP9fznunF{hDX z)CwB2FbtK{N&rg8f{;W?QgBKEHW>Qi2Sl47q>THR0ZK@XA;6HJnlsyU)0dn>KLfzx zwBaR;{V--Yv;w$`03pKK=s04g5l(~wMTkf$qj(fbaI7?ngd{{rYm5Or((n=lII>uU zCW=g`m;&4NS%@Xm(&7*|(hWlGD;+WDjI~nxq3>g;F2hKXP#7Oje61A7!S}V#G-cMu z+82Qexdu&e+sFl2;Mf=n8ev>X!$S@25v~b{Qh@@17Zy|K0yFTF#*q;*@Dn%cQh^B> z1r&krw7|a4n48y=;Xq7@KMrqThko#Ji0Gxp0 z5G(bfI+>c!zd-*2YtjZiZ36eI^%#ZrAkB-C%u6pI1r25!*$`WKbqU2Ls<0b|x~igQ z=*!kj53B+{;r=y>^d5!xxuCGt*iP0ngn^3a`tJ?no$1$}@2hcbxC-TJ=^`V6V!9FY-15I3RB&Jip%FVwk3uxu_N zfa}fjvN~IifY$r|#p+3p`r{YqO^mMd8W1e1+vR$aoujzOQ*=60=}B3_>N?2~9bSEf zX5iIIi%M%3E#;Lh`x{uQLN|-uR4wZc6|gh0i*-Uhoq7yh*_CIKvhv>j`0Y<8uU>D0 zyvcz50v4(DR25&f%%$oYx@8Tja$wS^$~MUbiqy3&k%`besV1XM5QIuK0B(y64F=_P zrZ+QBre%HuJXcxO0GHrHTh#AQe)tyI>@q3xtld+x6es{(qCZHUDENeK-GiL9c&!^2 zKLtBH{u7M2@4q^s-THqo_M7L$#edbt1L8kQ-1i@ykn{hKn|9m(EwSGNJ;CAjPla3m zbwkenA2)5=|6CtG0(?OH2ahiP>w<36|1l%Leg2<-vbW+t0mYpE?|{BTRP;c{qq!ax z>ddIi(ef3|pf0ApUyulTUNbOMU3h-8rGwy=cboW zoNlxKV@7~`?O%xP{XfE-{dYop?O#5`{y!W&&J%o^^uhN(>Fnrd01uDS59k5<=WhR} z8`{>tZO-f3yE=L}HS)OY`)?uH_WqyX!maO@(YT?wh1oG*TzJP|2=fsp!^IH#?LiXL6RR)EIvw{TEvUv3lVEg#iGtYL zI8@l$kj0D=yH`HV!QA%GHXz*3?!9I4;r2jxQVF!iQV7D8mA*2@j{-sj_#P0C_9OFA zq~hI}&x=oM7vux~pU$f5LDR?MwXw(lZ_WR>jsK{7|Jw;|>;I?MC$HYV9#&V?@!Hs@ z|K`rG_w_HN`~I^V`gxL+2>vN_T1U$;05!Y(&4DAG&#sX&X_6&nRj4Ytv2PeXUUv_DcC zjXlUi?tdWCm(1CJ7v%1LaQ8pB`yU=J?f7W(=xyxr|Lx1(_wRq_oVfU}6LRgB>|?50W;7E&zA{0Dy|c Az5oCK literal 1803 zcmV+m2lV(KiwFSAjCDZ(1MOICZyUK0_SfoH5RL&ShgjnKE{#)g?j;CqX%TCe%-r1FG>s&X9g1Zz&HE^WWkn?b69&(nG>!N5++RLnLX9vHRP?SWe z;hQCjj=!0dGs9FC}LOtjqOk!^$=m+Yw&dKp zsza-~FE5+QUoQF^!P1|6Re0NW(-OKDlSzHKC~X1r`%OKluArGC;_%o&J|7~x-$j5i@&JQPjlg|&AU00vZW~qg>(5J@U%u%+)KlEQ)5Rz9w+SJSxf-(^+S&PN^w$hmsV_cW4B=g{DP_A@BfDMZ zFFp=q=>J#Q_@%Adak;NH3D8v~Tp(FcJ~Uc{Y1gkZ9I$?ByIHYL^v1HwI$LIa@zqO> z8-*+V(4bpF0qrz4&@KzGtMuEcUW5^JK(jw z_q`hlRg~ZFt~>p=p93^%tk1!g>+LJG)a-772cx&kJhH^+tI+UxF%;<&IyDaiU)n3% zgv$qSlF?>-+6wB~WKsmx_QmkxU{*=yt&GmQpefiGtv88Hf#ML8_)^i-DK3p>Db$m4Rcm= zEJ`U26k|zJ=0j?@kO>utVt5D)9a7v&0YjJx-Xk&26tN^9d@(UGQBVU4y>p1*s1H6m z5r*VAiYQ7sZG)B0Xe_MUIi(p>8bSz&#|B^0lscf+1m}XW!s6LYgrQn^4b;#fyQ%Ss z^-f?g0NN)eNhq3Y<18~OB#4rDYcUT=;uGPyfQ0%)rPfG~Oh_2=f-XoJ0!K!Kv^q%R zaXltI!&F)%0DTdWV+bPPCyy?ui2lTZE}I4;IHE9`a;;OXoR3Cf@BwTpjJMP#I;g=H z?sx=9J#h3drHKrlQ*IR%3HM;sz>#;Ui;|_rh9ppG1u~OJ%rZj96cEK?kP&l>{8A5I zq%3tpFl}^5A_}57Lp^7yVqD7@uy1pYYG!nFOeHq41B$f}3^L0c7Xmj3sF)fJ25aSIR{Q?{ zd&m=Fn+0K~gy6l2l&~V$YF^p}5Nw-UyueNBs_iZ|8)B@!e*nL%$l?42c@xP^)guCs zer(sXazSEK7393O#aY{8cb%1lPp_Yo8mn3hqy<>7RCUlEZeiJu+&8<0-Pleoy0e6J zpU~&|OkgRyo`tOKW*^?a{>$0RSKAV`Ob z11$-Ttg>!-x(z}|YfsSIrX(jP?M>;o2hZ}hx(8m_vKxR~tf3?7+p|BvCQx2wO;wKn zsere=%(@(du6`9QCZIg&yO`pPyvMxseo1UQ0?eVj_;60@CaanO9q;4$klFLIL#*GE zFH^Rj!8bFiJUmY7nlo6FI=)!CriXuD;!%JGE*dDRE7-h|ceNiJ_|E`UJwIZTcA3R) ta#Z1~`G@_>X)k-(%U<@fm%Z#|FMHX`UiPw=z3kKP4004W)f(QTr diff --git a/web/testing/xmms-skins/PKGBUILD b/web/testing/xmms-skins/PKGBUILD index e2c7b38f..83d934b6 100644 --- a/web/testing/xmms-skins/PKGBUILD +++ b/web/testing/xmms-skins/PKGBUILD @@ -33,17 +33,17 @@ source=(http://spacefem.com/skins/ChalkItUp.tar.gz \ http://gd.tuwien.ac.at/mm/xmms/Skins/xmms_skin-0.9.zip \ http://havardk.xmms.org/skins/xmmsskins-1.0.tar.gz) -md5sums=('1a541ca4fbcbd60eaffac97a8e01a514' '60b5249618067baba41093d566f56c9f' -'2eef6028cb492eb6c61e3d4833f050d1' 'ae60e6fd170737af35caf219ddf859ec' -'d3d5e43860db73a73b37a4949eebfe4f' 'a38d448ac059f42bd32e52f3999a6ca5' -'93891ba6259280d07a8781cd89234703' '92dd1ae652c43ea514764460b852f42c' -'9f79f309e5859b878b0cdcfb3d97a8b0' '55b6ada4b963132bb561156eddd47615' -'880be0a9dbbd9a3a458739063c6e0904' '89c7acb342bee6c7977047669ba195d7' -'7caaa4977c73c23e70c758a94c4104ef' '96340dd2f5634a6d49c9a314c1db7ad1' -'83f2cdc3d2cd2fbd5f3a4f92eba8d932' '108266865bcf9509edea839ca0a76d57' -'2b2fee8ce2ba18074dc202a50372ce95' 'acb8bf4189ad7d00a36ca74514686f8e' -'a770f9e537a0cec3818b331696d7ffff' 'b90c21851264fd273bb06196fb157a7a' -'aaaed9cd81b233e4fe5f896e9353443e' 'f625e06f82d8132209ed947c6d8502a4') +md5sums=('1a541ca4fbcbd60eaffac97a8e01a514' '60b5249618067baba41093d566f56c9f' \ + '2eef6028cb492eb6c61e3d4833f050d1' 'ae60e6fd170737af35caf219ddf859ec' \ + 'd3d5e43860db73a73b37a4949eebfe4f' 'a38d448ac059f42bd32e52f3999a6ca5' \ + '93891ba6259280d07a8781cd89234703' '92dd1ae652c43ea514764460b852f42c' \ + '9f79f309e5859b878b0cdcfb3d97a8b0' '55b6ada4b963132bb561156eddd47615' \ + '880be0a9dbbd9a3a458739063c6e0904' '89c7acb342bee6c7977047669ba195d7' \ + '7caaa4977c73c23e70c758a94c4104ef' '96340dd2f5634a6d49c9a314c1db7ad1' \ + '83f2cdc3d2cd2fbd5f3a4f92eba8d932' '108266865bcf9509edea839ca0a76d57' \ + '2b2fee8ce2ba18074dc202a50372ce95' 'acb8bf4189ad7d00a36ca74514686f8e' \ + 'a770f9e537a0cec3818b331696d7ffff' 'b90c21851264fd273bb06196fb157a7a' \ + 'aaaed9cd81b233e4fe5f896e9353443e' 'f625e06f82d8132209ed947c6d8502a4') build() { cd $startdir/src/