function coreHandler(\HTRouter\Request $request) { // Since we don't actually use handlers, this just checks to see if filename is an // actual file. If not, we create a 404. // Check if the status has been set correctly. If so, don't modify our status $status = $request->getStatus(); if ($status != \HTrouter::STATUS_HTTP_OK) { return \HTRouter::STATUS_DECLINED; } // From this point, we know that the filename is the one we need. So we can check // for existence. $path = $request->getDocumentRoot() . $request->getFilename(); if (is_dir($path)) { // Is it a directory. We are not allowed to view it! $request->setStatus(\HTROuter::STATUS_HTTP_FORBIDDEN); return \HTROuter::STATUS_OK; } if (!is_readable($path)) { // Is the file not viewable or existing? Not found! $request->setStatus(\HTROuter::STATUS_HTTP_NOT_FOUND); return \HTROuter::STATUS_OK; } // Next handler return \HTROuter::STATUS_DECLINED; }
/** * Outputs an error message generated from the current request. * * @param HTRouter\Request $request */ protected function _print_error(\HTRouter\Request $request) { echo <<<EOH <html> <head> <title>HTRouter error code: {$request->getStatus()} - {$request->getStatusLine()} </title> </head> <body> <h1>{$request->getStatus()} - {$request->getStatusLine()}</h1> <table> <tr><td>Uri</td><td>:</td><td>{$request->getUri()}<td></tr> <tr><td>DocRoot</td><td>:</td><td>{$request->getDocumentRoot()}<td></tr> <tr><td>Filename</td><td>:</td><td>{$request->getFilename()}<td></tr> </table> </body> </html> EOH; }
function fixUp(\HTRouter\Request $request) { if ($this->getConfig()->get("RewriteEngine") == false) { return \HTRouter::STATUS_DECLINED; } // Temp save $oldFilename = $request->getFilename(); if (!$request->getFilename()) { $request->setFilename($request->getUri()); } $ruleStatus = $this->_applyRewrites(); if ($ruleStatus) { if ($ruleStatus == self::ACTION_STATUS) { $n = $request->getStatus(); $request->setStatus(\HTROUTER::STATUS_HTTP_OK); return $n; } if (($skip = $this->_is_absolute_url($request->getFilename())) > 0) { if ($ruleStatus == self::ACTION_NOESCAPE) { $request->setFilename(urlencode($request->getFilename(), $skip)); } // Add query string if needed if ($request->getArgs()) { if ($ruleStatus == self::ACTION_NOESCAPE) { $request->setFilename($request->getFilename() . "?" . $request->getQueryString()); } else { $request->setFilename($request->getFilename() . "?" . urlencode($request->getQueryString())); } } // Is this a redirect? if ($request->getStatus() >= 300 && $request->getStatus() < 400) { $n = $request->getStatus(); $request->setStatus(\HTRouter::STATUS_HTTP_OK); } else { // No redirect, but we need to redir anyway.. $n = \HTRouter::STATUS_HTTP_MOVED_TEMPORARILY; } // The filename is the URI to redirect.. strange, I know... $request->appendOutHeaders("Location", $request->getFilename()); return $n; } elseif (substr($request->getFilename(), 0, 12) == "passthrough:") { // Starts with passthrough? Let's pass $request->setUri(substr($request->getFilename(), 13)); return \HTRouter::STATUS_DECLINED; } else { // Local path if ($oldFilename == $request->getFilename()) { // Rewrite to the same name. Prevent deadlocks return \HTRouter::STATUS_HTTP_OK; } } } else { $request->getFilename($oldFilename); return \HTRouter::STATUS_DECLINED; } return \HTRouter::STATUS_DECLINED; }