summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Fleischer <archlinux@cryptocrack.de>2012-07-13 22:49:37 +0200
committerLukas Fleischer <archlinux@cryptocrack.de>2012-07-15 18:16:26 +0200
commiteb22bcc7548d1b1025a3832aa4555792729d11b0 (patch)
treef0d4dfdcb1ae977c4eb7f4e8e359dbc4b07cf8c3
parentf3ce74c714e3460bb3e3e786f626e397d3139062 (diff)
downloadaur-eb22bcc7548d1b1025a3832aa4555792729d11b0.tar.gz
aur-eb22bcc7548d1b1025a3832aa4555792729d11b0.tar.xz
Add routing front/back ends
This adds a URL mapping library that can be used to implement virtual paths. Also, "web/html/index.php" is moved to "web/html/home.php" and "web/html/index.php" becomes a routing front end that maps virtual paths to corresponding files. To enable the virtual path feature, all requests need to be redirected to the "index.php" routing script. If you use lighttpd, following rewrite rule can be used: url.rewrite = ( "^(.*)$" => "/index.php/$1" ) A similar rule can be used for Apache (using mod_rewrite). Note that the current routing front end only works if PATH_INFO is provided. Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
-rw-r--r--web/html/home.php123
-rw-r--r--web/html/index.php152
-rw-r--r--web/lib/config.inc.php.proto4
-rw-r--r--web/lib/routing.inc.php39
4 files changed, 198 insertions, 120 deletions
diff --git a/web/html/home.php b/web/html/home.php
new file mode 100644
index 00000000..48f5e00a
--- /dev/null
+++ b/web/html/home.php
@@ -0,0 +1,123 @@
+<?php
+
+set_include_path(get_include_path() . PATH_SEPARATOR . '../lib');
+
+include_once("aur.inc.php");
+set_lang();
+check_sid();
+
+include_once('stats.inc.php');
+
+html_header( __("Home") );
+
+$dbh = db_connect();
+
+?>
+
+<div id="content-left-wrapper">
+ <div id="content-left">
+ <div id="intro" class="box">
+ <h2>AUR <?php print __("Home"); ?></h2>
+ <p>
+ <?php
+ echo __(
+ 'Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU Guidelines%s for more information.',
+ '<a href="http://wiki.archlinux.org/index.php/AUR_User_Guidelines">',
+ '</a>',
+ '<a href="http://wiki.archlinux.org/index.php/AUR_Trusted_User_Guidelines">',
+ '</a>'
+ );
+ ?>
+ </p>
+ <p>
+ <?php
+ echo __(
+ 'Contributed PKGBUILDs %smust%s conform to the %sArch Packaging Standards%s otherwise they will be deleted!',
+ '<b>', '</b>',
+ '<a href="http://wiki.archlinux.org/index.php/Arch_Packaging_Standards">',
+ '</a>'
+ );
+ ?>
+ </p>
+ <p>
+ <?php echo __('Remember to vote for your favourite packages!'); ?>
+ <?php echo __('Some packages may be provided as binaries in [community].'); ?>
+ </p>
+ <p>
+ <h4><?php echo __('Discussion') ?></h4>
+ <?php
+ echo __(
+ 'General discussion regarding the Arch User Repository (AUR) and Trusted User structure takes place on %saur-general%s. This list can be used for package orphan requests, merge requests, and deletion requests. For discussion relating to the development of the AUR, use the %saur-dev%s mailing list.',
+ '<a href="http://mailman.archlinux.org/mailman/listinfo/aur-general">',
+ '</a>',
+ '<a href="http://mailman.archlinux.org/mailman/listinfo/aur-dev">',
+ '</a>'
+ );
+ ?>
+ </p>
+ <h4><?php echo __('Bug Reporting') ?></h4>
+ <?php
+ echo __(
+ 'If you find a bug in the AUR, please fill out a bug report on our %sbug tracker%s. Use the tracker to report bugs in the AUR %sonly%s. To report packaging bugs contact the package maintainer or leave a comment on the appropriate package page.',
+ '<a href="https://bugs.archlinux.org/index.php?project=2">',
+ '</a>',
+ '<strong>',
+ '</strong>'
+ );
+ ?>
+ </p>
+
+ <div class="important">
+ <b><?php echo __('DISCLAIMER') ?> :</b>
+ <br />
+ <?php echo __('Unsupported packages are user produced content. Any use of the provided files is at your own risk.'); ?>
+ </div>
+ </div>
+ <?php if (!empty($_COOKIE["AURSID"])): ?>
+ <div id="pkg-updates" class="widget box">
+ <table>
+ <tr>
+ <td class="pkg-name">
+ <?php
+ $userid = uid_from_sid($_COOKIE["AURSID"]);
+ user_table($userid, $dbh);
+ ?>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <?php endif; ?>
+ </div>
+</div>
+<div id="content-right">
+ <div id="pkgsearch" class="widget">
+ <form id="pkgsearch-form" method="get" action="packages.php">
+ <fieldset>
+ <label for="pkgsearch-field">Package Search:</label>
+ <input type="hidden" name="O" value="0" />
+ <input type="text" name="K" size="30" value="<?php if (isset($_REQUEST["K"])) { print stripslashes(trim(htmlspecialchars($_REQUEST["K"], ENT_QUOTES))); } ?>" maxlength="35" />
+ </fieldset>
+ </form>
+ </div>
+ <div id="pkg-updates" class="widget box">
+ <table>
+ <tr>
+ <td class="pkg-name">
+ <?php updates_table($dbh); ?>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id="pkg-updates" class="widget box">
+ <table>
+ <tr>
+ <td class="pkg-name">
+ <?php general_stats_table($dbh); ?>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+</div>
+<?php
+html_footer(AUR_VERSION);
diff --git a/web/html/index.php b/web/html/index.php
index 48f5e00a..b0f346da 100644
--- a/web/html/index.php
+++ b/web/html/index.php
@@ -1,123 +1,35 @@
<?php
-
set_include_path(get_include_path() . PATH_SEPARATOR . '../lib');
-include_once("aur.inc.php");
-set_lang();
-check_sid();
-
-include_once('stats.inc.php');
-
-html_header( __("Home") );
-
-$dbh = db_connect();
-
-?>
-
-<div id="content-left-wrapper">
- <div id="content-left">
- <div id="intro" class="box">
- <h2>AUR <?php print __("Home"); ?></h2>
- <p>
- <?php
- echo __(
- 'Welcome to the AUR! Please read the %sAUR User Guidelines%s and %sAUR TU Guidelines%s for more information.',
- '<a href="http://wiki.archlinux.org/index.php/AUR_User_Guidelines">',
- '</a>',
- '<a href="http://wiki.archlinux.org/index.php/AUR_Trusted_User_Guidelines">',
- '</a>'
- );
- ?>
- </p>
- <p>
- <?php
- echo __(
- 'Contributed PKGBUILDs %smust%s conform to the %sArch Packaging Standards%s otherwise they will be deleted!',
- '<b>', '</b>',
- '<a href="http://wiki.archlinux.org/index.php/Arch_Packaging_Standards">',
- '</a>'
- );
- ?>
- </p>
- <p>
- <?php echo __('Remember to vote for your favourite packages!'); ?>
- <?php echo __('Some packages may be provided as binaries in [community].'); ?>
- </p>
- <p>
- <h4><?php echo __('Discussion') ?></h4>
- <?php
- echo __(
- 'General discussion regarding the Arch User Repository (AUR) and Trusted User structure takes place on %saur-general%s. This list can be used for package orphan requests, merge requests, and deletion requests. For discussion relating to the development of the AUR, use the %saur-dev%s mailing list.',
- '<a href="http://mailman.archlinux.org/mailman/listinfo/aur-general">',
- '</a>',
- '<a href="http://mailman.archlinux.org/mailman/listinfo/aur-dev">',
- '</a>'
- );
- ?>
- </p>
- <h4><?php echo __('Bug Reporting') ?></h4>
- <?php
- echo __(
- 'If you find a bug in the AUR, please fill out a bug report on our %sbug tracker%s. Use the tracker to report bugs in the AUR %sonly%s. To report packaging bugs contact the package maintainer or leave a comment on the appropriate package page.',
- '<a href="https://bugs.archlinux.org/index.php?project=2">',
- '</a>',
- '<strong>',
- '</strong>'
- );
- ?>
- </p>
-
- <div class="important">
- <b><?php echo __('DISCLAIMER') ?> :</b>
- <br />
- <?php echo __('Unsupported packages are user produced content. Any use of the provided files is at your own risk.'); ?>
- </div>
- </div>
- <?php if (!empty($_COOKIE["AURSID"])): ?>
- <div id="pkg-updates" class="widget box">
- <table>
- <tr>
- <td class="pkg-name">
- <?php
- $userid = uid_from_sid($_COOKIE["AURSID"]);
- user_table($userid, $dbh);
- ?>
- </td>
- </tr>
- </table>
- </div>
- <?php endif; ?>
- </div>
-</div>
-<div id="content-right">
- <div id="pkgsearch" class="widget">
- <form id="pkgsearch-form" method="get" action="packages.php">
- <fieldset>
- <label for="pkgsearch-field">Package Search:</label>
- <input type="hidden" name="O" value="0" />
- <input type="text" name="K" size="30" value="<?php if (isset($_REQUEST["K"])) { print stripslashes(trim(htmlspecialchars($_REQUEST["K"], ENT_QUOTES))); } ?>" maxlength="35" />
- </fieldset>
- </form>
- </div>
- <div id="pkg-updates" class="widget box">
- <table>
- <tr>
- <td class="pkg-name">
- <?php updates_table($dbh); ?>
- </td>
- </tr>
- </table>
- </div>
- <div id="pkg-updates" class="widget box">
- <table>
- <tr>
- <td class="pkg-name">
- <?php general_stats_table($dbh); ?>
- </td>
- </tr>
- </table>
- </div>
-
-</div>
-<?php
-html_footer(AUR_VERSION);
+include_once("config.inc.php");
+include_once("routing.inc.php");
+
+$path = rtrim($_SERVER['PATH_INFO'], '/');
+
+if (get_route($path) !== NULL) {
+ include get_route($path);
+} else {
+ switch ($path) {
+ case "/css/archweb.css":
+ case "/css/aur.css":
+ case "/css/archnavbar/archnavbar.css":
+ header("Content-Type: text/css");
+ include "./$path";
+ break;
+ case "/css/archnavbar/archlogo.gif":
+ case "/images/new.gif":
+ header("Content-Type: image/gif");
+ include "./$path";
+ break;
+ case "/css/archnavbar/archlogo.png":
+ case "/images/AUR-logo-80.png":
+ case "/images/AUR-logo.png":
+ case "/images/favicon.ico":
+ case "/images/feed-icon-14x14.png":
+ case "/images/titlelogo.png":
+ case "/images/x.png":
+ header("Content-Type: image/png");
+ include "./$path";
+ break;
+ }
+}
diff --git a/web/lib/config.inc.php.proto b/web/lib/config.inc.php.proto
index 1e2699e3..fee1022a 100644
--- a/web/lib/config.inc.php.proto
+++ b/web/lib/config.inc.php.proto
@@ -51,3 +51,7 @@ $DISABLE_HTTP_LOGIN = true;
# Web URL used in email links and absolute redirects, no trailing slash
$AUR_LOCATION = "http://localhost";
+
+# Use virtual URLs -- to enable this feature, you also need to tell your web
+# server to redirect all requests to "/index.php/$uri".
+$USE_VIRTUAL_URLS = true;
diff --git a/web/lib/routing.inc.php b/web/lib/routing.inc.php
new file mode 100644
index 00000000..0d940a23
--- /dev/null
+++ b/web/lib/routing.inc.php
@@ -0,0 +1,39 @@
+<?php
+
+$ROUTES = array(
+ '' => 'home.php',
+ '/index.php' => 'home.php',
+ '/packages' => 'packages.php',
+ '/register' => 'account.php',
+ '/accounts' => 'account.php',
+ '/login' => 'login.php',
+ '/logout' => 'logout.php',
+ '/passreset' => 'passreset.php',
+ '/rpc' => 'rpc.php',
+ '/rss' => 'rss.php',
+ '/submit' => 'pkgsubmit.php',
+ '/tu' => 'tu.php',
+ '/voters' => 'voters.php',
+ '/addvote' => 'addvote.php',
+);
+
+function get_route($path) {
+ global $ROUTES;
+
+ if (isset($ROUTES[$path])) {
+ return $ROUTES[$path];
+ } else {
+ return NULL;
+ }
+}
+
+function get_uri($path) {
+ global $USE_VIRTUAL_URLS;
+ global $ROUTES;
+
+ if ($USE_VIRTUAL_URLS) {
+ return $path;
+ } else {
+ return get_route($path);
+ }
+}