Commit graph

2326 commits

Author SHA1 Message Date
Lukas Fleischer
9a03c7fbdd t0002: Add more git-serve tests
Add tests for common scenarios that should be detected/handled by the
git-serve script.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-05 21:23:20 +02:00
Lukas Fleischer
008eace8db t0001: Add more git-auth tests
Test the authentication script with an invalid key type and with a key
that does not exist in the database.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-05 21:02:21 +02:00
Lukas Fleischer
3a41f8d564 git-update: Remove package details before updating
Explicitly remove all package sources, dependencies, relations, licenses
and groups before inserting new ones.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-05 19:38:42 +02:00
Lukas Fleischer
6e38309c19 git-interface: Add test suite and basic tests
Add basic tests for the Git interface. The test suite is based on
sharness.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-05 12:12:09 +02:00
Lukas Fleischer
5014b74868 Cleanup database schema
* Remove test accounts.
* Create indices using CREATE INDEX.
* Always use INTEGER UNSIGNED for IDs.
* Always use BIGINT UNSIGNED for timestamps.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-05 12:05:22 +02:00
Lukas Fleischer
baf8a220ab git-interface: Support SQLite as database backend
In addition to MySQL, add support for SQLite to the database abstraction
layer. Also, add a new configuration option to select the DBMS.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-05 12:05:22 +02:00
Lukas Fleischer
f2a6bd207d git-interface: Do not use UNIX_TIMESTAMP
Avoid using UNIX_TIMESTAMP which is not part of the SQL standard.
Retrieve the current UNIX time in Python and substitute it into the SQL
queries instead.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-05 12:05:22 +02:00
Lukas Fleischer
27631f1157 git-interface: Do not use rowcount
Avoid using Cursor.rowcount to obtain the number of rows returned by a
SELECT statement as this is not guaranteed to be supported by every
database engine.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-05 12:05:22 +02:00
Lukas Fleischer
ecbf32f0cc git-interface: Add AUR_CONFIG environment variable
Introduce a new environment variable that can be used to specify the
path to an aurweb configuration file. If the environment variable is
unset, the default search path is used.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-05 12:05:22 +02:00
Lukas Fleischer
2f5f5583be git-interface: Factor out configuration file parsing
Add a new module that automatically locates the configuration file and
provides methods to obtain the values of configuration options.

Use the new module instead of ConfigParser everywhere.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-05 12:05:22 +02:00
Lukas Fleischer
2915abb9d3 git-interface: Add database abstraction layer
Add a new class that connects to the database specified in the
configuration file and provides an interface to execute SQL queries.
Prepared statements with qmark ("?") placeholders are supported.

Replace all direct database accesses with calls to the new abstraction
layer.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-05 12:05:22 +02:00
Lukas Fleischer
2cd69bf66d git-update: Make maximum blob size configurable
Support setting the maximum blob size in the configuration file.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-05 11:25:51 +02:00
Lukas Fleischer
87f5f1b407 git-update: Use AUR_PRIVILEGED for forced pushes
Instead of looking up the account type of the current user again, use
the AUR_PRIVILEGED environment variable to check whether the user is
allowed to perform non-fast-forward ref updates.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-05 01:22:52 +02:00
Lukas Fleischer
7a53ded5fe git-update: Fix some issues reported by pyflakes
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-05 01:22:51 +02:00
Lukas Fleischer
12ab89b78c Change default SSH options to "restrict"
From the sshd(8) man page:

    Enable all restrictions, i.e. disable port, agent and X11
    forwarding, as well as disabling PTY allocation and execution of
    ~/.ssh/rc. If any future restriction capabilities are added to
    authorized_keys files they will be included in this set.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-04 21:37:52 +02:00
Lukas Fleischer
0c1187caa4 git-serve: Deprecate setup-repo
Since 02dd9c5 (git-serve.py: Automatically create repositories,
2015-01-06), one can create new package bases by running `git push`. It
is no longer necessary to run setup-repo manually.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-04 21:37:52 +02:00
Lukas Fleischer
415a2c836d git-update: Notify privileged users of forced uploads
Show a warning when a Trusted User or a developer creates a package that
is blacklisted or already provided by an official package.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-04 13:04:44 +02:00
Lukas Fleischer
573715afd9 git-serve: Refactor environment variable access
Read all environment variables at the beginning of the script and
immediately pre-process their values.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-08-04 13:04:44 +02:00
Safa AlFulaij
b089747774 Fix plural string
Even though the singular form never occurs, we need to use _n() here to
obtain the correct behavior for languages with multiple plural forms.

Signed-off-by: Safa AlFulaij <safa1996alfulaij@gmail.com>
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-07-24 18:51:12 +02:00
Johannes Löthberg
e55b529813 Make LangPreference DB field wide enough to fit es_419
The language code for Latin American Spanish is es_419, which is longer
than the 5 characters previously allowed.

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-07-24 18:51:05 +02:00
Lukas Fleischer
2160678f9b Remove wearout factor from translatable string
Even though that number is hardcoded in the source code, it is better to
make it not appear in the message catalog such that it can be made
configurable easily later.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-07-23 15:02:37 +02:00
Lukas Fleischer
9cab008e15 Update the Git/SSH interface documentation
Add information on the new set-keywords command and slightly reword some
paragraphs.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-07-11 17:45:48 +02:00
Lukas Fleischer
60cdad28ee Distinguish auto-accepted requests
Before commit 9746a65 (Port notification routines to Python,
2015-06-27), notification emails for automatically closed requests
explicitly stated that the action was taken "automatically by the Arch
User Repository package request system". When porting the notification
routines to Python, this feature was overlooked and emails sent by the
new script always reported that the requester triggered the acceptance
or rejection of a request.

This patch reimplements the old behavior such that notifications no
longer look as if the requester had accepted the request himself.

Reported-by: Johannes Löthberg <johannes@kyriasis.com>
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-06-30 22:45:26 +02:00
Lukas Fleischer
fbf3e54057 Add hard limit for the length of dependency lists
Introduce a configuration option max_depends which can be used to
specify a maximum number of (reverse) dependencies to display on the
package details pages.

Fixes FS#49059.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-06-26 08:53:55 +02:00
Lukas Fleischer
0350de4b42 Update message catalog
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-06-25 16:10:01 +02:00
Lukas Fleischer
7d42d3fc1c Make request type hints translatable
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-06-25 16:09:22 +02:00
Johannes Löthberg
16674e4c9d Linkify user homepage URLs
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-06-25 13:56:23 +02:00
Johannes Löthberg
a2a888625e Add missing database and account fields
Commits 6ec4a35 (Send notifications when changing ownership, 2016-02-21)
and e3670ef (Add a homepage field to accounts, 2016-06-02) forgot to
change some usages of display_account_form() and process_account_form()
to account for the new parameter. The former also forgot to add the new
column to the database schema.

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-06-25 13:55:34 +02:00
Lukas Fleischer
e3670ef188 Add a homepage field to accounts
Allow users to add a link to their homepage to their profile.

Implements FS#22774.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-06-08 22:23:57 +02:00
Lukas Fleischer
9fec03d655 Update README
Reword most parts of the README file, add information on new features
and update the directory layout.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-06-08 22:23:57 +02:00
Lukas Fleischer
333596ab4a Update Arch Linux projects subdomain
The projects.archlinux.org subdomain was moved to git.archlinux.org.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-06-08 22:23:57 +02:00
Lukas Fleischer
b757246e33 pkgbasefuncs.inc.php: Remove debug statement
Remove a leftover var_dump() invocation that was introduced in commit
5fb7a74 (Replace categories with keywords, 2015-06-13).

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-06-02 08:37:43 +02:00
Lukas Fleischer
e17e88a2e2 Add request type hints
Add a text that explains when the currently selected request type should
be used.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-05-23 22:56:01 +02:00
Lukas Fleischer
d273ee5eb2 Use the official provider list to detect duplicates
Instead of automatically adding packages from the official binary
repositories to the package blacklist, use the official provider list to
prevent users from uploading duplicates.

This does not only result in reduced disk usage but also has a nice
visible side effect. The error messages printed by the update hook now
look like

    error: package already provided by [community]: powerline-fonts

instead of

    error: package is blacklisted: powerline-fonts

which was confusing to most end users.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-05-18 09:22:44 +02:00
Lukas Fleischer
b2e97cdd1e Add repository information to official providers
When updating the list of packages provided by the official
repositories, also save the repository names.
2016-05-18 09:22:44 +02:00
Lukas Fleischer
b091fb7758 Add hard limit on the length of dependency lists
Introduce a configuration option max_depends which can be used to
specify a maximum number of (reverse) dependencies to display on the
package details pages.

Fixes FS#49059.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-05-10 07:25:10 +02:00
Lukas Fleischer
1e5578b92d Merge branch 'maint' 2016-03-19 09:54:27 +01:00
Mark Weiman
2ef5f8a5ff Change text of enable notifications link
Since notifications are sent for more than just comments, change the notify
link to more generic text.

Signed-off-by: Mark Weiman <mark.weiman@markzz.com>
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-03-18 23:30:48 +01:00
Lukas Fleischer
0108c64541 Resize the LastLoginIPAddress column
Make sure that all valid IPv6 addresses fit into the LastLoginIPAddress
field.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-03-15 18:01:15 +01:00
Lukas Fleischer
ff36b23153 Fix instructions for omitting "have" lines
In 002d348 (Describe how to omit "have" lines, 2015-11-14), we added
instructions on how to omit "have" lines originating from other package
repositories. Fix those instructions such that the HEAD ref of the
repository is transferred properly.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-03-15 17:58:45 +01:00
Lukas Fleischer
27ad06e353 Release 4.2.1
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-03-13 13:52:57 +01:00
Lukas Fleischer
3ec3dfb6aa Merge branch 'maint' 2016-03-13 13:17:15 +01:00
Lukas Fleischer
32c8d0c3f8 Store last login address as plain text
Directly store the information contained in $_SERVER['REMOTE_ADDR']
instead of using ip2long() which does not support IPv6 addresses. Note
that the LastLoginIPAddress field is designed to be used by the
administrator on rare occasions only (e.g. to fight spam) and is not
displayed anywhere.

Fixes FS#48557.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-03-13 11:47:30 +01:00
Lukas Fleischer
761952d424 Fix l10n of "more"
Use __() instead of _() to make the string translatable.

Fixes FS#48529.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-03-13 09:14:57 +01:00
Ian D. Scott
2dfa72131b Remove code referencing non-existent and unused file
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-03-13 09:14:25 +01:00
Eric Engestrom
7b13203b81 Limit comment height to 15 lines
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-03-13 09:14:25 +01:00
Lukas Fleischer
95140b880b Merge branch 'maint' 2016-03-01 18:30:58 +01:00
Lukas Fleischer
42f5c405c0 aurjson: Remove stray GROUP BY clause
The IDs of packages are unique, so there is no need to group search
results by package ID.

Note that the GROUP BY statement in question was introduced in commit
3447dfc (Support versioned RPC queries, 2014-04-28) for no apparent
reason and could even lead to errors in various DBMS.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-03-01 18:30:48 +01:00
Lukas Fleischer
4c15f02ecb popupdate: Avoid NULL entries in the popularity field
The popularity field is declared as "NOT NULL" in the database schema.
Fix the popularity update query such that it uses a popularity of 0.0
instead of NULL for packages with no votes.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-03-01 18:27:23 +01:00
Lukas Fleischer
6ec4a3589e Send notifications when changing ownership
Add a new option that makes it possible to subscribe to package
ownership changes (adoption/disownment).

Fixes FS#15412.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
2016-02-21 20:01:13 +01:00