Commit graph

750 commits

Author SHA1 Message Date
Lukas Fleischer
d16f7cf712 Use snake case for all package functions
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-04-05 15:54:21 +02:00
Lukas Fleischer
f461344211 Move package actions to package bases
Package actions now operate on package bases instead of packages. Move
all actions to the correct locations.

This also fixes some issues with comment notifications.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-04-05 13:54:06 +02:00
Lukas Fleischer
16090496a4 Only parse PKGBUILD when required
Instead of always parsing the PKGBUILD, only invoke the parser when
there is no meta data (.AURINFO) available. This speeds up the general
case (packages including meta data).

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-04-05 12:21:36 +02:00
Lukas Fleischer
d7044eb1ec Factor out PKGBUILD parsing
This is legacy code. Move it to a separate source file in order to clean
up the submission code. The code will be removed altogether in an
upcoming release.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-04-05 12:21:36 +02:00
Lukas Fleischer
8921e4deb9 Do not allow for overwriting arbitrary packages
A package should only be overwritten if it already belongs to the
package base that is trying to overwrite it.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-04-05 12:21:36 +02:00
Lukas Fleischer
f7d13b5b36 Add package base detail pages
This adds package base details pages, similar to the package details
pages. Each package base details page contains general information
(package base name, category, submitter, maintainer, ...) and links to
all the corresponding packages. As on the package details pages,
comments and links to several package actions are also provided.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-04-05 12:21:36 +02:00
Lukas Fleischer
fb81bfd8df Add full support for the new .AURINFO format
This adds full support for the new .AURINFO format used by mkaurball,
including support for split packages.

The old PKGBUILD parser is still available for compatibility reasons.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-04-05 12:21:36 +02:00
Lukas Fleischer
b558572a2e Make the delete function remove package bases
Deleting a single package without deleting the whole package base makes
no sense. Comments and votes are already stored on a per-package basis,
making this a straightforward extension.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-04-05 12:21:36 +02:00
Lukas Fleischer
b7941073ac Add provisional support for package bases
This adds a PackageBases table to the database schema and moves the
following fields from the Packages table to PackageBases:

* CategoryID
* NumVotes
* OutOfDateTS
* SubmittedTS
* ModifiedTS
* SubmitterUID
* MaintainerUID

It also fixes all database accesses to comply with the new layout.

Having a separate PackageBases table is the first step to split package
support. By now, we create one PackageBases entry per package (where the
package base has the same name as the corresponding package). When
adding full support for split packages later, the package base name will
be derived from the pkgbase variable and a single package base will be
shared amongst all packages built from one source package.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-04-05 12:21:35 +02:00
Lukas Fleischer
1be6761acd passreset.php: Make error messages translatable
This fixes a regression introduced in commit 48b7407 (passreset.php:
Refactor HTML, 2014-01-08).

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-02-10 22:20:47 +01:00
Lukas Fleischer
9864988517 Highlight the AUR link in the navigation bar
Fixes FS#38498.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-02-10 20:26:11 +01:00
Lukas Fleischer
165bcba54e Style fixes: Capitalization of "true" and "false"
Use "true" instead of "TRUE" and "false" instead of "FALSE" or "False".

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-02-06 16:32:31 +01:00
canyonknight
42c9957e41 account_details.php: Add link to edit a user's account
This improves the ability to edit a user's account directly through
UI features rather than manually appending 'edit' to the URL or
searching for the account and selecting edit.

Signed-off-by: canyonknight <canyonknight@gmail.com>
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-02-03 21:16:36 +01:00
canyonknight
1e9d539acf Further optimize voters.php to only need the package name
* Extends changes in 81d4cc13dc
* Modify getvotes() to use the package name rather than package ID
* Rename getvotes() to votes_for_pkgname() for clarity with new changes
* Modify routing framework and links to now use package names for voters.php

Signed-off-by: canyonknight <canyonknight@gmail.com>
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-01-22 18:27:42 +01:00
canyonknight
81d4cc13dc voters.php: Remove extra call to pkgname_from_id()
No need to store package ID and call pkgname_from_id() twice when
the end goal is the package name.

Signed-off-by: canyonknight <canyonknight@gmail.com>
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-01-20 15:41:19 +01:00
Lukas Fleischer
ecbb664b3d pkgsubmit.php: Improve visibility of errors
Make use of the "errorlist" class instead of "pkgoutput" which is no
longer defined in the CSS.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-01-17 11:36:01 +01:00
Lukas Fleischer
b7ea144dfb Add a warning for packages without .AURINFO
Display a deprecation warning when a package without meta data is
submitted. The user can still decide to ignore that warning by
resubmitting the package but doing so is not recommended.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-01-17 11:35:04 +01:00
Lukas Fleischer
ddbe1d1b1e Promote the use of mkaurball
mkaurball automatically adds .AURINFO meta data when building, so tell
people to use that instead of `makepkg --source`.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-01-17 11:35:04 +01:00
Lukas Fleischer
bfea8b29ad Detect split packages from .AURINFO
There is an extension to the .AURINFO format that supports split
packages. Since there is no support for split packages in the AUR so
far, add a check to identify these cases.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-01-17 11:35:04 +01:00
Lukas Fleischer
d428da4780 Strip whitespace from .AURINFO lines
Indentation can be useful if one wants to structure an .AURINFO file.
Remove leading and trailing whitespace from each line before parsing.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-01-17 11:35:04 +01:00
Lukas Fleischer
b0c55ae5c6 Rename "depend" field to "depends" in .AURINFO
This field has been renamed in a revision of the .AURINFO format.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-01-17 11:35:04 +01:00
Lukas Fleischer
f2e26ebbf8 Fix split package error handling
Do not remove parentheses from the pkgname to make sure the split
package detection works properly.

Also, fix a regression introduced in 4bb6e88 (pkgsubmit.php: Simplify
package name validation, 2013-03-05) that resulted in the split package
error message never showing up.

Fixes FS#37496.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-01-11 13:36:10 +01:00
Balló György
d8ea2d4a02 Forbid developers to vote
According to Trusted User Bylaws, TUs (and only TUs) must take part in
votes. Developers who want to take part in votes should set their account
type to 'Trusted User'.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-01-11 12:08:51 +01:00
Lukas Fleischer
cc490ce8d6 passreset.php: Error out if e-mail is empty
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-01-11 12:08:24 +01:00
Lukas Fleischer
48b74071f0 passreset.php: Refactor HTML
* Use the "errorlist" class for errors.
* Refactor some code.
* Properly display error messages when requesting a key.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-01-11 12:08:24 +01:00
Joris Steyn
72e4d54178 Typeahead workaround for having to press enter twice
Currently, one has to press enter twice in order to submit the package
search form with typeahead completion. Add a workaround to fix this.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-01-11 12:04:33 +01:00
Joris Steyn
0d68494de7 Go to package when selecting a typeahead suggestion
Directly jump to the package details when selecting an entry from the
drop-down list.

Implements FS#34471.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2014-01-02 00:48:20 +01:00
canyonknight
dbf1d474f7 Convert adopt/disown package action link to form
* Changes adopting/disowning packages to use GET instead of POST
* Uses CSS to make form submit button look like a link
* Complements commit 3bc951e3d8

Signed-off-by: canyonknight <canyonknight@gmail.com>
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-09-08 13:53:47 +02:00
Lukas Fleischer
77f1b264ca Sync CSS with archweb
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-09-03 13:14:39 +02:00
Lukas Fleischer
3130a887e8 Move "Add Proposal" link to "Current Votes"
The page this links to allows for adding an item to the list of current
votes. Move the link accordingly.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-09-03 12:53:58 +02:00
Lukas Fleischer
c1c7f9b350 Move package comment check to packages.php
Checking whether to add a comment is something that really does not
belong to a function named display_package_details().

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-08-27 11:35:26 +02:00
Lukas Fleischer
bf019a5b6c Use POST-Redirect-GET for most package actions
Avoid showing a POST data resubmission dialog and simply redirect to the
package page if a package action completed successfully.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-08-27 11:25:14 +02:00
Lukas Fleischer
23867a211c Add boolean return values to several pkg_*() functions
Change the return values of following functions to return both
error/success and an error/success message:

* pkg_flag()
* pkg_unflag()
* pkg_adopt()
* pkg_vote()
* pkg_delete()
* pkg_notify()
* pkg_delete_comment()
* pkg_change_category()

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-08-27 11:19:45 +02:00
Lukas Fleischer
7c8e86010d Pick sane default registration language
Instead of defaulting to Català (which is the first entry in the list of
supported languages), choose whatever language the unregistered user is
browsing the AUR in.

Fixes FS#34825.

Suggested-by: canyonknight <canyonknight@gmail.com>
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-08-27 02:42:19 +02:00
Lukas Fleischer
69b98efa35 Re-add CRSF tokens to most package actions
We fixed all known CRSF vulnerabilities in commit 2c93f0a (Implement
token system to fix CSRF vulnerabilities, 2012-06-23). c349cb2 (Add
virtual path support for package actions, 2012-07-17) partly reverted
this by injecting a valid CRSF token when virtual paths are in use.

This patch allows for keeping the virtual path feature, while
reintroducing POST forms and CRSF tokens. Actions like package flagging,
votes and notifications are no longer prone to CRSF (see FS#35437 for
details).

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-08-27 02:27:19 +02:00
Lukas Fleischer
3bc951e3d8 pkg_details: Convert most action links to forms
Use forms and POST instead of GET for following actions:

* Flagging/Unflagging a package out-of-date
* Voting for a package and removing votes
* Enabling/Disabling notifications

Use CSS to make the submit buttons of these forms look like links.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-08-27 02:10:13 +02:00
Lukas Fleischer
a4a170e58e Move "Past Votes" navigation to "Past Votes" box
These are navigation links and do not belong to the action box.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-08-26 17:53:24 +02:00
Lukas Fleischer
2dd3d04f45 Add "Last Votes by TU" list
This shows a list of all Trusted Users and the vote ID of the last
proposal each of the TUs voted on. This list is sorted by vote ID.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-08-26 17:34:31 +02:00
Lukas Fleischer
d41e40d9d6 Add a vote type to the TU proposal form
There are only four valid reasons for starting a TU vote, so instead of
letting the user choose a vote length, let her pick a reason and set
vote length and quorum based on that selection.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-08-22 17:48:18 +02:00
Lukas Fleischer
6844f6c1d2 Allow for setting an account's inactivity status
This adds a field to the users table and corresponding fields to the
account edit and display forms that allow for setting an (in-)activity
status.

This might turn out to be useful if a user is on vacation and can not
respond to update/orphan/deletion requests.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-08-22 17:43:13 +02:00
canyonknight
cf083cf9ba Remove superfluous search wrapper function
The search_accounts_form() wrapper function doesn't have any
arguments and only makes it unclear what is happening within
account.php

Signed-off-by: canyonknight <canyonknight@gmail.com>
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-04-24 11:05:51 +02:00
canyonknight
ca067d5492 Retrieve package details after package actions are processed
Fixes FS#34508

Signed-off-by: canyonknight <canyonknight@gmail.com>
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-04-20 00:22:53 +02:00
Lukas Fleischer
0703b02c53 Use minified typeahead JS from archweb
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-03-26 00:54:18 +01:00
Lukas Fleischer
4fc1b9a0ca Return 404 error page if invalid package ID is used
We already display the 404 error page if someone tries to access an
invalid package via virtual URLs ("/packages/nonexistent"). Add the same
check to "web/html/packages.php" to make sure the same error is shown if
a user requests package details of a nonexistent package ID via legacy
URLs ("/packages.php?ID=-1").

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-03-21 22:38:49 +01:00
Lukas Fleischer
f1a4b508e5 Enforce e-mail validation during registration
Remove the password field from the account creation form and always send
a password reset request via e-mail instead. This ensures that only
users with valid e-mail addresses are able to login.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-03-19 14:03:34 +01:00
Lukas Fleischer
5d31bb2450 Move reset key submission to a separate function
This allows for reusing reset key submission for other things, such as
sending an initial password reset code during account registration.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-03-19 14:03:33 +01:00
Lukas Fleischer
5a1137363c pkgsubmit.php: Parse .AURINFO metadata
This allows for adding a metadata file called ".AURINFO" to source
tarballs to overwrite specific PKGBUILD fields. .AURINFO files are
parsed line by line. The syntax for each line is "key = value", where
key is any of the following field names:

* pkgname
* pkgver
* pkgdesc
* url
* license
* depend

Multiple "depend" lines can be specified to add multiple dependencies.

This format closely matches the .PKGINFO format that is used for binary
packages in pacman/libalpm. It can be extended by field name prefixes or
sections to support split packages later.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-03-09 00:33:15 +01:00
Lukas Fleischer
1f27b2fb9b pkgsubmit.php: Move URL protocol check down
Move all PKGBUILD field validations to a central location.

Also, change $pkgbuild[] to $new_pkgbuild[] in order to parse evaluated
PKGBUILD fields instead of raw ones.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-03-05 13:26:35 +01:00
Lukas Fleischer
4bb6e88742 pkgsubmit.php: Simplify package name validation
Remove redundant filters -- single quotes are already removed in
$pkgbuild_new and we do not pass the package name to a shell
(additionally, the regular expression already checks for potentially
evil characters).

Also, move the $pkg_name extraction up to fix the split package check.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-03-05 13:26:35 +01:00
Lukas Fleischer
21e6c3f65f Fix default selection on the account edit page
We used a mixture of account type IDs and account type descriptions on
the account edit page. This resulted in the account type field always
defaulting to "Normal user" after an invalid form had been submitted.

Consistently use account type IDs to avoid this.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2013-02-10 12:11:36 +01:00