Fix server, now returns files that are in the docs
folder
This commit is contained in:
parent
36c663ac41
commit
3e374c7585
12
index.php
12
index.php
@ -63,6 +63,18 @@ software, even if advised of the possibility of such damage.
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
if (php_sapi_name() === 'cli-server') {
|
||||||
|
// This file allows us to emulate Apache's "mod_rewrite"
|
||||||
|
// functionality from the built-in PHP web server.
|
||||||
|
$uri = urldecode(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
|
||||||
|
if ($uri !== '/' && file_exists(__DIR__ . $uri)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// When the built in server is used
|
||||||
|
// the script name is the file called
|
||||||
|
$_SERVER['SCRIPT_NAME'] = '/index.php';
|
||||||
|
}
|
||||||
|
|
||||||
require_once("vendor/autoload.php");
|
require_once("vendor/autoload.php");
|
||||||
|
|
||||||
\Todaymade\Daux\Daux::initConstants();
|
\Todaymade\Daux\Daux::initConstants();
|
||||||
|
@ -12,6 +12,10 @@ class Daux
|
|||||||
public $base_url = '';
|
public $base_url = '';
|
||||||
public $host;
|
public $host;
|
||||||
private $docs_path;
|
private $docs_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Tree\Entry
|
||||||
|
*/
|
||||||
public $tree;
|
public $tree;
|
||||||
public $options;
|
public $options;
|
||||||
private $mode;
|
private $mode;
|
||||||
|
32
libs/RawPage.php
Normal file
32
libs/RawPage.php
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<?php namespace Todaymade\Daux;
|
||||||
|
|
||||||
|
use Todaymade\Daux\Server\MimeType;
|
||||||
|
|
||||||
|
class RawPage implements Page
|
||||||
|
{
|
||||||
|
|
||||||
|
private $file;
|
||||||
|
|
||||||
|
public function __construct($filename)
|
||||||
|
{
|
||||||
|
$this->file = $filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getContent()
|
||||||
|
{
|
||||||
|
throw new Exception("you should not use this method to show a raw content");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function display()
|
||||||
|
{
|
||||||
|
header('Content-type: ' . MimeType::get($this->file));
|
||||||
|
|
||||||
|
// Transfer file in 1024 byte chunks to save memory usage.
|
||||||
|
if ($fd = fopen($this->file, 'rb')) {
|
||||||
|
while (!feof($fd)) {
|
||||||
|
print fread($fd, 1024);
|
||||||
|
}
|
||||||
|
fclose($fd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
81
libs/Server/MimeType.php
Normal file
81
libs/Server/MimeType.php
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
<?php namespace Todaymade\Daux\Server;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class MimeType
|
||||||
|
* @package Defr
|
||||||
|
* @author Dennis Fridrich <fridrich.dennis@gmail.com>
|
||||||
|
* @see http://www.php.net/mime_content_type
|
||||||
|
*/
|
||||||
|
class MimeType
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected static $mimeTypes = array(
|
||||||
|
'txt' => 'text/plain',
|
||||||
|
'htm' => 'text/html',
|
||||||
|
'html' => 'text/html',
|
||||||
|
'php' => 'text/html',
|
||||||
|
'css' => 'text/css',
|
||||||
|
'js' => 'application/javascript',
|
||||||
|
'json' => 'application/json',
|
||||||
|
'xml' => 'application/xml',
|
||||||
|
'swf' => 'application/x-shockwave-flash',
|
||||||
|
'flv' => 'video/x-flv',
|
||||||
|
// Images
|
||||||
|
'png' => 'image/png',
|
||||||
|
'jpe' => 'image/jpeg',
|
||||||
|
'jpeg' => 'image/jpeg',
|
||||||
|
'jpg' => 'image/jpeg',
|
||||||
|
'gif' => 'image/gif',
|
||||||
|
'bmp' => 'image/bmp',
|
||||||
|
'ico' => 'image/vnd.microsoft.icon',
|
||||||
|
'tiff' => 'image/tiff',
|
||||||
|
'tif' => 'image/tiff',
|
||||||
|
'svg' => 'image/svg+xml',
|
||||||
|
'svgz' => 'image/svg+xml',
|
||||||
|
// Archives
|
||||||
|
'zip' => 'application/zip',
|
||||||
|
'rar' => 'application/x-rar-compressed',
|
||||||
|
'exe' => 'application/x-msdownload',
|
||||||
|
'msi' => 'application/x-msdownload',
|
||||||
|
'cab' => 'application/vnd.ms-cab-compressed',
|
||||||
|
// Audio/video
|
||||||
|
'mp3' => 'audio/mpeg',
|
||||||
|
'qt' => 'video/quicktime',
|
||||||
|
'mov' => 'video/quicktime',
|
||||||
|
// Adobe
|
||||||
|
'pdf' => 'application/pdf',
|
||||||
|
'psd' => 'image/vnd.adobe.photoshop',
|
||||||
|
'ai' => 'application/postscript',
|
||||||
|
'eps' => 'application/postscript',
|
||||||
|
'ps' => 'application/postscript',
|
||||||
|
// MS Office
|
||||||
|
'doc' => 'application/msword',
|
||||||
|
'rtf' => 'application/rtf',
|
||||||
|
'xls' => 'application/vnd.ms-excel',
|
||||||
|
'ppt' => 'application/vnd.ms-powerpoint',
|
||||||
|
// Open Office
|
||||||
|
'odt' => 'application/vnd.oasis.opendocument.text',
|
||||||
|
'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
|
||||||
|
);
|
||||||
|
/**
|
||||||
|
* @param $filename
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function get($filename)
|
||||||
|
{
|
||||||
|
$pathInfo = pathinfo($filename);
|
||||||
|
$extension = strtolower($pathInfo['extension']);
|
||||||
|
if (array_key_exists($extension, self::$mimeTypes)) {
|
||||||
|
return self::$mimeTypes[$extension];
|
||||||
|
} elseif (function_exists('finfo_open') && is_file($filename)) {
|
||||||
|
$finfo = finfo_open(FILEINFO_MIME);
|
||||||
|
$mimetype = finfo_file($finfo, $filename);
|
||||||
|
finfo_close($finfo);
|
||||||
|
return $mimetype;
|
||||||
|
} else {
|
||||||
|
return 'application/octet-stream';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -3,8 +3,10 @@
|
|||||||
use Todaymade\Daux\Daux;
|
use Todaymade\Daux\Daux;
|
||||||
use Todaymade\Daux\Exception;
|
use Todaymade\Daux\Exception;
|
||||||
use Todaymade\Daux\MarkdownPage;
|
use Todaymade\Daux\MarkdownPage;
|
||||||
|
use Todaymade\Daux\RawPage;
|
||||||
use Todaymade\Daux\SimplePage;
|
use Todaymade\Daux\SimplePage;
|
||||||
use Todaymade\Daux\Tree\Directory;
|
use Todaymade\Daux\Tree\Directory;
|
||||||
|
use Todaymade\Daux\Tree\Raw;
|
||||||
|
|
||||||
class Server
|
class Server
|
||||||
{
|
{
|
||||||
@ -41,8 +43,9 @@ class Server
|
|||||||
$request = urldecode($request);
|
$request = urldecode($request);
|
||||||
$request_type = isset($query['method']) ? $query['method'] : '';
|
$request_type = isset($query['method']) ? $query['method'] : '';
|
||||||
if ($request == 'first_page') {
|
if ($request == 'first_page') {
|
||||||
$request = $this->daux->tree->first_page->uri;
|
$request = $this->daux->tree->getFirstPage()->getUri();
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ($request_type) {
|
switch ($request_type) {
|
||||||
case 'DauxEdit':
|
case 'DauxEdit':
|
||||||
if (!$this->daux->options['file_editor']) {
|
if (!$this->daux->options['file_editor']) {
|
||||||
@ -115,16 +118,21 @@ class Server
|
|||||||
|
|
||||||
private function getPage($request)
|
private function getPage($request)
|
||||||
{
|
{
|
||||||
$params = $this->params;
|
|
||||||
|
|
||||||
$file = $this->getFile($request);
|
$file = $this->getFile($request);
|
||||||
if ($file === false) {
|
if ($file === false) {
|
||||||
throw new NotFoundException('The Page you requested is yet to be made. Try again later.');
|
throw new NotFoundException('The Page you requested is yet to be made. Try again later.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($file instanceof Raw) {
|
||||||
|
return new RawPage($file->getPath());
|
||||||
|
}
|
||||||
|
|
||||||
|
$params = $this->params;
|
||||||
|
|
||||||
$params['request'] = $request;
|
$params['request'] = $request;
|
||||||
$params['file_uri'] = $file->value;
|
$params['file_uri'] = $file->value;
|
||||||
if ($request !== 'index') {
|
if ($request !== 'index') {
|
||||||
$params['entry_page'] = $file->first_page;
|
$params['entry_page'] = $file->getFirstPage();
|
||||||
}
|
}
|
||||||
return MarkdownPage::fromFile($file, $params);
|
return MarkdownPage::fromFile($file, $params);
|
||||||
}
|
}
|
||||||
|
@ -61,22 +61,27 @@ abstract class Entry
|
|||||||
$this->index_page = $index_page;
|
$this->index_page = $index_page;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Entry
|
||||||
|
*/
|
||||||
public function getFirstPage()
|
public function getFirstPage()
|
||||||
{
|
{
|
||||||
if ($this->first_page) {
|
if ($this->first_page) {
|
||||||
return $this->first_page;
|
return $this->first_page;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($this->value as $node) {
|
if ($this instanceof Directory) {
|
||||||
if ($node instanceof Content && $node->title != 'index') {
|
foreach ($this->value as $node) {
|
||||||
$this->first_page = $node;
|
if ($node instanceof Content && $node->title != 'index') {
|
||||||
return $node;
|
$this->first_page = $node;
|
||||||
|
return $node;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
foreach ($this->value as $node) {
|
||||||
foreach ($this->value as $node) {
|
if ($node instanceof Directory && $page = $node->getFirstPage()) {
|
||||||
if ($node instanceof Directory && $page = $node->getFirstPage()) {
|
$this->first_page = $page;
|
||||||
$this->first_page = $page;
|
return $page;
|
||||||
return $page;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user