diff options
Diffstat (limited to 'web')
-rw-r--r-- | web/html/pkgsubmit.php | 9 | ||||
-rw-r--r-- | web/lib/pkgfuncs.inc | 23 |
2 files changed, 32 insertions, 0 deletions
diff --git a/web/html/pkgsubmit.php b/web/html/pkgsubmit.php index 2b11b7ba..9ef90a77 100644 --- a/web/html/pkgsubmit.php +++ b/web/html/pkgsubmit.php @@ -216,6 +216,15 @@ if ($_COOKIE["AURSID"]): } if (!$error) { + # Check if package name is blacklisted. + if (pkgname_is_blacklisted($pkg_name)) { + if (!canSubmitBlacklisted(account_from_sid($_COOKIE["AURSID"]))) { + $error = __( "%s is on the package blacklist, please check if it's available in the official repos.", $pkg_name); + } + } + } + + if (!$error) { # First, see if this package already exists, and if it can be overwritten $pkg_exists = package_exists($pkg_name); if (can_submit_pkg($pkg_name, $_COOKIE["AURSID"])) { diff --git a/web/lib/pkgfuncs.inc b/web/lib/pkgfuncs.inc index 28211f93..2f693216 100644 --- a/web/lib/pkgfuncs.inc +++ b/web/lib/pkgfuncs.inc @@ -64,6 +64,18 @@ function canManagePackage($uid=0,$AURMUID=0, $MUID=0, $SUID=0, $managed=0) { return 0; } +# Check if the current user can submit blacklisted packages. +# +function canSubmitBlacklisted($atype = "") { + if ($atype == "Trusted User" || $atype == "Developer") { + # Only TUs/Devs can submit blacklisted packages. + return TRUE; + } + else { + return FALSE; + } +} + # grab the current list of PackageCategories # function pkgCategories() { @@ -286,6 +298,17 @@ function pkgname_from_id($id="") { return $id; } +# Check if a package name is blacklisted. +# +function pkgname_is_blacklisted($name) { + $dbh = db_connect(); + $q = "SELECT COUNT(*) FROM PackageBlacklist WHERE Name = '" . mysql_real_escape_string($name) . "'"; + $result = db_query($q, $dbh); + + if (!$result) return false; + return (mysql_result($result, 0) > 0); +} + # display package details # function package_details($id=0, $SID="") { |