about summary refs log tree commit diff stats
path: root/wiki/index.php
diff options
context:
space:
mode:
authorahriman <ahriman@falte.red>2018-12-03 19:22:25 -0500
committerahriman <ahriman@falte.red>2018-12-03 19:22:25 -0500
commit0ae8cbf5c0b1a198b963490985b7738392ebcb97 (patch)
treeb2c77ae72c6b717e2b97492065196ac5ffb2d9e2 /wiki/index.php
parentf57f6cc5a2d159f90168d292437dc4bd8cd7f934 (diff)
downloadsite-0ae8cbf5c0b1a198b963490985b7738392ebcb97.tar.gz
installed dokuwiki, added to navbar, updated news
Diffstat (limited to 'wiki/index.php')
-rw-r--r--wiki/index.php68
1 files changed, 68 insertions, 0 deletions
diff --git a/wiki/index.php b/wiki/index.php
new file mode 100644
index 0000000..689ce17
--- /dev/null
+++ b/wiki/index.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Forwarder/Router to doku.php
+ *
+ * In normal usage, this script simply redirects to doku.php. However it can also be used as a routing
+ * script with PHP's builtin webserver. It takes care of .htaccess compatible rewriting, directory/file
+ * access permission checking and passing on static files.
+ *
+ * Usage example:
+ *
+ *   php -S localhost:8000 index.php
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Andreas Gohr <andi@splitbrain.org>
+ */
+if(php_sapi_name() != 'cli-server') {
+    header("Location: doku.php");
+    exit;
+}
+
+# ROUTER starts below
+
+# avoid path traversal
+$_SERVER['SCRIPT_NAME'] = str_replace('/../', '/', $_SERVER['SCRIPT_NAME']);
+
+# routing aka. rewriting
+if(preg_match('/^\/_media\/(.*)/', $_SERVER['SCRIPT_NAME'], $m)) {
+    # media dispatcher
+    $_GET['media'] = $m[1];
+    require $_SERVER['DOCUMENT_ROOT'] . '/lib/exe/fetch.php';
+
+} else if(preg_match('/^\/_detail\/(.*)/', $_SERVER['SCRIPT_NAME'], $m)) {
+    # image detail view
+    $_GET['media'] = $m[1];
+    require $_SERVER['DOCUMENT_ROOT'] . '/lib/exe/detail.php';
+
+} else if(preg_match('/^\/_media\/(.*)/', $_SERVER['SCRIPT_NAME'], $m)) {
+    # exports
+    $_GET['do'] = 'export_' . $m[1];
+    $_GET['id'] = $m[2];
+    require $_SERVER['DOCUMENT_ROOT'] . '/doku.php';
+
+} elseif($_SERVER['SCRIPT_NAME'] == '/index.php') {
+    # 404s are automatically mapped to index.php
+    if(isset($_SERVER['PATH_INFO'])) {
+        $_GET['id'] = $_SERVER['PATH_INFO'];
+    }
+    require $_SERVER['DOCUMENT_ROOT'] . '/doku.php';
+
+} else if(file_exists($_SERVER['DOCUMENT_ROOT'] . $_SERVER['SCRIPT_NAME'])) {
+    # existing files
+
+    # access limitiations
+    if(preg_match('/\/([\._]ht|README$|VERSION$|COPYING$)/', $_SERVER['SCRIPT_NAME']) or
+        preg_match('/^\/(data|conf|bin|inc)\//', $_SERVER['SCRIPT_NAME'])
+    ) {
+        die('Access denied');
+    }
+
+    if(substr($_SERVER['SCRIPT_NAME'], -4) == '.php') {
+        # php scripts
+        require $_SERVER['DOCUMENT_ROOT'] . $_SERVER['SCRIPT_NAME'];
+    } else {
+        # static files
+        return false;
+    }
+}
+# 404