getCss)) $gt_html->addCss($php_self_dir."/css/htmgem.css"); // No URL Rewritting assumed echo \htmgem\html\getHtmlWithMenu($gt_html, $scheme, $domain, $php_self, "$php_self?url="); } exit(); } $url = \htmgem\resolve_path( // Some webservers (Apache) don't add the slash // while others (Nginx) do… ( $url[0] == "/" ? "" : "/" ) . $url ); if (!preg_match("/\.gmi$/", $url)) { if ($url[-1] == "/") $url = $url."index.gmi"; else $url = $url."/index.gmi"; } # Removes the headling and trailling slashes, to be sure there's not any. $filePath = rtrim($_SERVER['DOCUMENT_ROOT'], "/")."/".ltrim($url, "/"); switch(true) { case !realPath($filePath): case strpos($filePath, $documentRoot)!==0: # not in web directory $go404 = true; // Says 404 even if the file exists to not give any information. break; default: $go404 = false; } /* 404 page */ if ($go404) { error_log("HtmGem: 404 $url $filePath"); http_response_code(404); $page404 = \htmgem\html\get404GmiPage($url); $gt_html = new \htmgem\GemTextTranslate_html($page404); if (empty($gt_html->getCss)) $gt_html->addCss($php_self_dir."/css/htmgem.css"); if ($urlRewriting) echo \htmgem\html\getHtmlWithMenu($gt_html, $scheme, $domain, $url); else echo \htmgem\html\getHtmlWithMenu($gt_html, $scheme, $domain, $url, "$php_self?url="); exit(); } # to false only if textDecoration=0 in the URL $gt_htmlextDecoration = "0" != @$_REQUEST['textDecoration']; $fileContents = @file_get_contents($filePath); \htmgem\io\convertToUTF8($fileContents); /* CSS and special style management */ $style = @$_REQUEST['style']; if ("source" == $style) { $basename = basename($filePath); header("Cache-Control: public"); header("Content-Disposition: attachment; filename=$basename"); header("Content-Type: text/plain"); header("Content-Transfer-Encoding: binary"); header('Content-Length: ' . filesize($filePath)); echo $fileContents; exit(); } elseif ("pre" == $style) { # Gets the page title: the first occurrence with # at the line start mb_ereg("#\s*([^\n]+)\n", $fileContents, $matches); $page_title = @$matches[1]; $fileContents = htmlspecialchars($fileContents, ENT_HTML5|ENT_QUOTES, "UTF-8", true); echo << $page_title
$fileContents
EOL; exit(); } if ($urlRewriting) $gt_html = new \htmgem\GemTextTranslate_html($fileContents, $gt_htmlextDecoration); else $gt_html = new \htmgem\GemTextTranslate_html($fileContents, $gt_htmlextDecoration, "$php_self?url=", dirname($url)); if ("none" == $style) { #$gt_html->addCss(""); } elseif ("/" == @$style[0]) { $gt_html->addCss($style); } elseif (empty($style)) { $parts = pathinfo($filePath); $localCss = $parts["filename"].".css"; $localCssFilePath = $parts["dirname"]."/".$localCss; if (file_exists($localCssFilePath)) { # Warning, using htmhem.php?url=… will make $localCss not found # as the path is relative to htmgem.php and not / ! $gt_html->addCss($localCss); } else { // No local style $gt_html->addCss($php_self_dir."/css/htmgem.css"); } } else { #TODO: regex check for $style $gt_html->addCss("$php_self_dir/css/$style.css"); } if ($urlRewriting) echo \htmgem\html\getHtmlWithMenu($gt_html, $scheme, $domain, $url); else echo \htmgem\html\getHtmlWithMenu($gt_html, $scheme, $domain, $url, "$php_self?url="); ?>