From 8a6897e3fd2efceacf8d020dfbf8b742a68f96cd Mon Sep 17 00:00:00 2001 From: Jonas Kohl Date: Fri, 19 Jul 2024 17:20:26 +0200 Subject: Add development server and refactor building --- Makefile | 7 ++++++- common.php | 29 ++++++++++++++++++++++++++++ dev-server.php | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ expand.php | 21 ++------------------ 4 files changed, 97 insertions(+), 20 deletions(-) create mode 100644 common.php create mode 100644 dev-server.php diff --git a/Makefile b/Makefile index 83fe1ae..ae56b92 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ SRCFILES:=$(shell find src/pages/ -type f -name '*.php') HTMLTARGETS:=$(SRCFILES:src/pages/%.php=build/%.html) -.PHONY: build/static publish +.PHONY: build/static publish dev-server all: $(HTMLTARGETS) $(STATICFILES) build/static @@ -22,3 +22,8 @@ publish-http: rsync -avh ./build/ hozyro-srv:/var/www/hozyro --delete publish-all: publish publish-http + +dev-server: + @bash -c 'echo -e "\e[91mWARNING: This server should only be used for \ + development purposes! IT IS NOT PRODUCTION-SAFE! USE WITH CAUTION!\e[0m"' + php -S 127.0.0.1:19310 dev-server.php diff --git a/common.php b/common.php new file mode 100644 index 0000000..c505660 --- /dev/null +++ b/common.php @@ -0,0 +1,29 @@ +(.*?);i', + function(array $matches) use(&$title): string { + $title = $matches[1]; + return ""; + }, + $__page + ); + $page = SRCDIR . "/pages/" . bin2hex(random_bytes(8)) . ".tmp"; + file_put_contents($page, $__page); + unset($__page); + + ob_start(); + include SRCDIR . "/template.php"; + $output = ob_get_clean(); + if ($output === false) + $output = ""; + + if (is_file($page)) + unlink($page); + + return $output; +} diff --git a/dev-server.php b/dev-server.php new file mode 100644 index 0000000..dea55ab --- /dev/null +++ b/dev-server.php @@ -0,0 +1,60 @@ + "text/css", + "js" => "text/javascript", + ]; + $ext = pathinfo($filename, PATHINFO_EXTENSION); + $ext = strtolower($ext); + $mime = $mime_overrides[$ext] ?? mime_content_type($filename); + if ($mime === false) + $mime = DEFAULT_MIME_TYPE; + return $mime; +} + +$name = $_SERVER["REQUEST_URI"]; +$is_static = false; + +$name = ltrim($name, "/"); +if (str_starts_with($name, "static/")) + $is_static = true; +elseif (str_ends_with($name, ".html")) + $name = preg_replace('/\.html$/', "", $name); + +$include_file = FALLBACK_FILE; + +if ($is_static) { + $staticFile = STATIC_DIR . preg_replace(';^static/;', "", $name); + if (!is_file($staticFile)) { + $include_file = FALLBACK_FILE; + http_response_code(404); + } else { + $content_type = get_mime($staticFile); + $content_length = filesize($staticFile); + header("Content-Type: $content_type"); + header("Content-Length: $content_length"); + readfile($staticFile); + exit; + } +} else { + if ($name === "") + $include_file = DEFAULT_FILE; + else + $include_file = TEMPLATE_DIR . $name . ".php"; +} + +if (!is_file($include_file)) { + $include_file = FALLBACK_FILE; + http_response_code(404); +} + +echo hzcom_expand(file_get_contents($include_file)); diff --git a/expand.php b/expand.php index fb83625..bbe1a3b 100644 --- a/expand.php +++ b/expand.php @@ -1,21 +1,4 @@ (.*?);i', - function(array $matches) use(&$title): string { - $title = $matches[1]; - return ""; - }, - $__page -); -$page = SRCDIR . "/pages/" . bin2hex(random_bytes(8)) . ".tmp"; -file_put_contents($page, $__page); -unset($__page); - -include SRCDIR . "/template.php"; - -unlink($page); +require_once __DIR__ . "/common.php"; +echo hzcom_expand(file_get_contents("php://stdin")); -- cgit v1.2.3