Compare commits
10 commits
d3eb3720f7
...
e04f1205be
Author | SHA1 | Date | |
---|---|---|---|
John Alanbrook | e04f1205be | ||
John Alanbrook | 06667852d1 | ||
John Alanbrook | e7a426994b | ||
John Alanbrook | aeed22a417 | ||
John Alanbrook | 7905c2264b | ||
John Alanbrook | 17e95b6d99 | ||
John Alanbrook | 506d2605ba | ||
John Alanbrook | 06de890360 | ||
John Alanbrook | 89c5ea41f4 | ||
John Alanbrook | de3c08baa7 |
3
Makefile
Normal file
3
Makefile
Normal file
|
@ -0,0 +1,3 @@
|
|||
install:
|
||||
@echo Installing into $(DESTDIR)
|
||||
@cp *.php $(DESTDIR)
|
1
jsmpeg.min.js
vendored
Normal file
1
jsmpeg.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
157
router.php
157
router.php
|
@ -1,31 +1,59 @@
|
|||
<?php
|
||||
|
||||
/* Aquinas v. 0.1 */
|
||||
|
||||
require "parsedown.php";
|
||||
|
||||
$tryuri = ltrim("$_SERVER[REQUEST_URI]", '/');
|
||||
$tryuri = strtok($tryuri, "?");
|
||||
|
||||
if (page_locked($tryuri)) {
|
||||
load_page("404");
|
||||
}
|
||||
|
||||
if (file_exists("site.json")) {
|
||||
$site = json_decode(file_get_contents("site.json"), true);
|
||||
} else {
|
||||
$site = file_get_contents("site.json");
|
||||
if (!$site) {
|
||||
echo "Need a site.json file to work!";
|
||||
return false;
|
||||
}
|
||||
|
||||
if (preg_match('/\.(?:jpg|png|webp|css|ico|js|ttf|woff|txt)/', $_SERVER["REQUEST_URI"])) {
|
||||
return false;
|
||||
$site = json_decode($site, true);
|
||||
|
||||
if (page_locked($tryuri)) {
|
||||
load_page("404");
|
||||
}
|
||||
|
||||
if ($tryuri == "router" || $tryuri == "parsedown") {
|
||||
load_page("404");
|
||||
}
|
||||
|
||||
$banned_ext = "php|json|md";
|
||||
|
||||
if (is_file($tryuri)) {
|
||||
if (preg_match("/\.(?:$banned_ext)/", $tryuri))
|
||||
load_page("404");
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
load_page($tryuri);
|
||||
|
||||
|
||||
/* HELPER FUNCTIONS START */
|
||||
/* Grab json from top */
|
||||
$c = file_get_contents($parsef);
|
||||
if ($c[0] == '{') {
|
||||
$json = substr($c, 0, strpos($c, '}')+1);
|
||||
$c = substr($c, strpos($c, '}')+1);
|
||||
|
||||
$obj = json_decode($json);
|
||||
}
|
||||
$parse = $pd->text($c);
|
||||
|
||||
function get_md_jsonhead($md) {
|
||||
$c = file_get_contents($md);
|
||||
|
||||
if ($c[0] != '{') return false;
|
||||
|
||||
return substr($c, 0, strpos($c, '}')+1);
|
||||
}
|
||||
|
||||
function get_path_content($path) {
|
||||
$fs = scandir($path);
|
||||
|
@ -34,12 +62,19 @@ function get_path_content($path) {
|
|||
for ($i = 2; $i < count($fs); $i++) {
|
||||
$f = "$path/$fs[$i]";
|
||||
if (!is_dir($f)) {
|
||||
if (pathinfo($f, PATHINFO_EXTENSION) == "json") {
|
||||
$ext = substr($f, strrpos($f, '.')+1);
|
||||
if ($ext == "json") {
|
||||
$titles[] = ["c" => json_decode(file_get_contents($f), true), "link" => uri_from_file($f)];
|
||||
} else if ($ext == "md") {
|
||||
$json = get_md_jsonhead($f);
|
||||
|
||||
if ($json) {
|
||||
$titles[] = ["c" => json_decode($json, true), "link" => uri_from_file($f)];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$fy = "$f/index.json";
|
||||
if (file_exists($fy) && !page_locked($fy)) $titles[] = ["c" => json_decode(file_get_contents($fy), true), "link" => uri_from_file($fy)];
|
||||
if (is_file($fy) && !page_locked($fy)) $titles[] = ["c" => json_decode(file_get_contents($fy), true), "link" => uri_from_file($fy)];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -52,44 +87,34 @@ function uri_from_file($file) {
|
|||
return substr($file, 0, -strlen($name)-1);
|
||||
}
|
||||
|
||||
if (!strcmp(substr($file, strrpos($file, '.')+1), "json")) {
|
||||
|
||||
return substr($file, 0, -5);
|
||||
}
|
||||
return "/".substr($file, 0, strrpos($file, '.'));
|
||||
}
|
||||
|
||||
function try_file($uri, $ext) {
|
||||
$tryuri = ltrim($uri, '/');
|
||||
$tryf = ltrim("$tryuri/index", '/');
|
||||
|
||||
if (is_file("$tryf.$ext")) return "$tryf.$ext";
|
||||
else if (is_file("$tryuri.$ext")) return "$tryuri.$ext";
|
||||
}
|
||||
|
||||
|
||||
function load_page($tryuri) {
|
||||
global $site;
|
||||
|
||||
$mainphp = "";
|
||||
$prehp = "";
|
||||
$jsonf = "";
|
||||
$parsef = "";
|
||||
|
||||
/* Looking for 3 things: a base, a content, and a template */
|
||||
|
||||
$tryf = "$tryuri/index";
|
||||
$tryf = ltrim($tryf, '/');
|
||||
$jsonf = try_file($tryuri, "json");
|
||||
$mainphp = try_file($tryuri, "php");
|
||||
$parsef = try_file($tryuri, "md");
|
||||
$prehp = try_file($tryuri, "prehp");
|
||||
|
||||
if (file_exists("$tryf.json")) {
|
||||
$jsonf = "$tryf.json";
|
||||
} else if (file_exists("$tryuri.json")) {
|
||||
$jsonf = "$tryuri.json";
|
||||
}
|
||||
|
||||
if (file_exists("$tryf.php")) {
|
||||
$mainphp = "$tryf.php";
|
||||
}
|
||||
else if (file_exists("$tryuri.php")) {
|
||||
$mainphp = "$tryuri.php";
|
||||
}
|
||||
|
||||
if (file_exists("$tryf.md")) {
|
||||
$parsef = "$tryf.md";
|
||||
} else if (file_exists("$tryuri.md")) {
|
||||
$parsef = "$tryuri.md";
|
||||
}
|
||||
|
||||
if (empty($mainphp) && empty($jsonf) && empty($parsef)) {
|
||||
if (empty($mainphp) && empty($jsonf) && empty($parsef) && empty($prehp)) {
|
||||
load_page("404");
|
||||
return;
|
||||
}
|
||||
|
@ -97,7 +122,7 @@ if (empty($mainphp) && empty($jsonf) && empty($parsef)) {
|
|||
if (empty($mainphp)) {
|
||||
|
||||
while ($tryuri != "") {
|
||||
if (file_exists("$tryuri/temp.php")) {
|
||||
if (is_file("$tryuri/temp.php")) {
|
||||
$mainphp = "$tryuri/temp.php";
|
||||
goto endmain;
|
||||
}
|
||||
|
@ -118,12 +143,23 @@ $obj = json_decode($file);
|
|||
|
||||
if (!empty($parsef)) {
|
||||
$pd = new Parsedown();
|
||||
$parse = $pd->text(file_get_contents($parsef));
|
||||
|
||||
/* Grab json from top */
|
||||
$c = file_get_contents($parsef);
|
||||
if ($c[0] == '{') {
|
||||
$json = substr($c, 0, strpos($c, '}')+1);
|
||||
$c = substr($c, strpos($c, '}')+1);
|
||||
|
||||
$obj = json_decode($json);
|
||||
}
|
||||
$parse = $pd->text($c);
|
||||
}
|
||||
|
||||
$page['title'] = $obj->title ?? $site['title'];
|
||||
$page['desc'] = $obj->desc ?? $site['desc'];
|
||||
|
||||
if (!empty($prehp)) include $prehp;
|
||||
|
||||
include "base.php";
|
||||
|
||||
$tt = microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'];
|
||||
|
@ -150,7 +186,7 @@ return $write;
|
|||
}
|
||||
|
||||
function page_locked($page) {
|
||||
if (file_exists("$page.lock" ))
|
||||
if (is_file("$page.lock" ))
|
||||
return true;
|
||||
|
||||
while ($page != "" && is_dir($page)) {
|
||||
|
@ -174,52 +210,54 @@ function page_locked($page) {
|
|||
|
||||
function p_img($src, $opts, $ext) {
|
||||
$src = ltrim($src, '/');
|
||||
$p = pathinfo($src);
|
||||
$p = substr($src, 0, strrpos($src, '.'));
|
||||
$o = str_replace([" ", "-"], "", $opts);
|
||||
if ($o == "") $o = "gen";
|
||||
return "/gen/$p[dirname]/$p[filename].$o.$ext";
|
||||
return "/gen/$p.$o.$ext";
|
||||
}
|
||||
|
||||
function sub_ext($src, $ext) {
|
||||
$stem = substr($src, 0, strrpos($src, '.'));
|
||||
return "$stem.$ext";
|
||||
}
|
||||
|
||||
/* Given a source image and options, creates the appropriate images
|
||||
* jpeg, webp, and avif for lossy, and png and lossless webp for lossless
|
||||
*/
|
||||
function gen_images($src, $opts = "", $lossy=0) {
|
||||
$ext = strtolower(substr($src, strrpos($src, '.')+1));
|
||||
$psrc = ltrim($src, '/');
|
||||
$path = pathinfo($psrc);
|
||||
|
||||
if ($lossy || in_array($path['extension'], ["jpg", "jpeg"])) {
|
||||
if ($lossy || in_array($ext, ["jpg", "jpeg"])) {
|
||||
$je = ltrim(p_img($src, $opts, "jpg"), '/');
|
||||
|
||||
$jpath = pathinfo($je);
|
||||
$genp = $jpath['dirname'];
|
||||
`mkdir -p $genp`;
|
||||
if (is_file($je)) return;
|
||||
|
||||
$gpath = substr($je, 0, strrpos($je, '/'));
|
||||
|
||||
`mkdir -p $gpath`;
|
||||
|
||||
`convert -quality 80 $opts $psrc $je`;
|
||||
|
||||
$we = ltrim(p_img($src, $opts, "webp"), '/');
|
||||
if (!file_exists($we)) {
|
||||
$we = sub_ext($je, "webp");
|
||||
`convert -quality 80 $opts $psrc $we`;
|
||||
}
|
||||
|
||||
$ae = ltrim(p_img($src, $opts, "avif"), '/');
|
||||
if (!file_exists($ae)) {
|
||||
$ae = sub_ext($je, "avif");
|
||||
`convert -quality 80 $opts $psrc $ae`;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if ($path['extension'] == "png") {
|
||||
if ($ext == "png") {
|
||||
$we = ltrim(p_img($src, $opts, "webp"), '/');
|
||||
|
||||
$wpath = pathinfo($we);
|
||||
$genp = $wpath['dirname'];
|
||||
`mkdir -p $genp`;
|
||||
if (is_file($we)) return;
|
||||
|
||||
$gpath = substr($we, 0, strrpos($we, '/'));
|
||||
`mkdir -p $gpath`;
|
||||
|
||||
if (!file_exists($we)) {
|
||||
`convert -define webp:lossless=true $opts $psrc $we`;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -260,7 +298,7 @@ function make_img($src, $opts="", $lossy=0) {
|
|||
|
||||
|
||||
function make_bkgd_img($src, $opts = "", $q=80) {
|
||||
$p = img_src($src);
|
||||
$p = $src;
|
||||
|
||||
gen_images($p, $opts);
|
||||
|
||||
|
@ -272,4 +310,3 @@ function make_bkgd_img($src, $opts = "", $q=80) {
|
|||
|
||||
|
||||
?>
|
||||
|
||||
|
|
Loading…
Reference in a new issue