From 7d617fbd3b11f20c7f3f0efa7e76b19da87ffb16 Mon Sep 17 00:00:00 2001 From: Nick White Date: Thu, 10 Sep 2009 21:42:47 +0100 Subject: Improve handling so symbolic links are no longer needed --- .gitignore | 1 - .htaccess | 6 ++++++ index.php | 25 ++++++++++++++++++++++++- 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100755 .htaccess diff --git a/.gitignore b/.gitignore index 36c6ef3..0b6bd61 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,5 @@ scripts/ *.gpg.asc # contains installation specific information -.htaccess robots.txt diff --git a/.htaccess b/.htaccess new file mode 100755 index 0000000..2509095 --- /dev/null +++ b/.htaccess @@ -0,0 +1,6 @@ +AddDefaultCharset utf-8 +AddHandler default-handler .py + +RewriteEngine On +RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f +RewriteRule . /index.php diff --git a/index.php b/index.php index 867b6d5..e0741d2 100644 --- a/index.php +++ b/index.php @@ -16,9 +16,32 @@ * along with this program. If not, see . */ +$contentpath = $_SERVER['DOCUMENT_ROOT'] . "/text/" . $_SERVER['REQUEST_URI']; + +if ( is_dir($contentpath) == TRUE ) + $contentpath .= 'index.php'; + +/* Sanitise */ +if (preg_match ( '/\.\./', $contentpath ) || /* don't go up the filesystem */ + preg_match ( '/[\'\"]/', $contentpath )|| /* string terminators */ + preg_match ( '/\\\0/', $contentpath ) ) /* null bytes */ + +{ + header('HTTP/1.0 500 Internal Error'); + echo "

Error

"; + exit (0); +} + +if ( ! is_file($contentpath) ) +{ + header('HTTP/1.0 404 Not Found'); + echo "

Not Found

"; + exit (0); +} + include($_SERVER['DOCUMENT_ROOT'] . "/includes/header.php"); -include($_SERVER['DOCUMENT_ROOT'] . "/text/" . $_SERVER['PHP_SELF']); +include($contentpath); xhtml_header($title); -- cgit v1.2.3