| 
								
							 | 
							
								<?php
							 | 
						
						
						
							| 
								
							 | 
							
								chdir(dirname(__FILE__).'/..');
							 | 
						
						
						
							| 
								
							 | 
							
								include('vendor/autoload.php');
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								register_shutdown_function('shutdown');
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								// Load config file if present, otherwise use default
							 | 
						
						
						
							| 
								
							 | 
							
								if(file_exists(dirname(__FILE__).'/../config.php')) {
							 | 
						
						
						
							| 
								
							 | 
							
								  require dirname(__FILE__).'/../config.php';
							 | 
						
						
						
							| 
								
							 | 
							
								} else {
							 | 
						
						
						
							| 
								
							 | 
							
								  class Config {
							 | 
						
						
						
							| 
								
							 | 
							
								    public static $cache = false;
							 | 
						
						
						
							| 
								
							 | 
							
								    public static $admins = [];
							 | 
						
						
						
							| 
								
							 | 
							
								  }
							 | 
						
						
						
							| 
								
							 | 
							
								}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								use Symfony\Component\HttpFoundation\Request;
							 | 
						
						
						
							| 
								
							 | 
							
								use Symfony\Component\HttpFoundation\Response;
							 | 
						
						
						
							| 
								
							 | 
							
								$router = new League\Route\RouteCollection;
							 | 
						
						
						
							| 
								
							 | 
							
								$templates = new League\Plates\Engine(dirname(__FILE__).'/../views');
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								$router->addRoute('GET', '/', 'Main::index');
							 | 
						
						
						
							| 
								
							 | 
							
								$router->addRoute('GET', '/parse', 'Parse::parse');
							 | 
						
						
						
							| 
								
							 | 
							
								$router->addRoute('POST', '/parse', 'Parse::parse');
							 | 
						
						
						
							| 
								
							 | 
							
								$router->addRoute('POST', '/token', 'Token::token');
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								$router->addRoute('GET', '/rels', 'Rels::fetch');
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								$router->addRoute('GET', '/cert', 'Certbot::index');
							 | 
						
						
						
							| 
								
							 | 
							
								$router->addRoute('GET', '/cert/auth', 'Certbot::start_auth');
							 | 
						
						
						
							| 
								
							 | 
							
								$router->addRoute('GET', '/cert/logout', 'Certbot::logout');
							 | 
						
						
						
							| 
								
							 | 
							
								$router->addRoute('GET', '/cert/redirect', 'Certbot::redirect');
							 | 
						
						
						
							| 
								
							 | 
							
								$router->addRoute('POST', '/cert/save-challenge', 'Certbot::save_challenge');
							 | 
						
						
						
							| 
								
							 | 
							
								$router->addRoute('GET', '/.well-known/acme-challenge/{token}', 'Certbot::challenge');
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								$dispatcher = $router->getDispatcher();
							 | 
						
						
						
							| 
								
							 | 
							
								$request = Request::createFromGlobals();
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								try {
							 | 
						
						
						
							| 
								
							 | 
							
								  $response = $dispatcher->dispatch($request->getMethod(), $request->getPathInfo());
							 | 
						
						
						
							| 
								
							 | 
							
								  $response->send();
							 | 
						
						
						
							| 
								
							 | 
							
								} catch(League\Route\Http\Exception\NotFoundException $e) {
							 | 
						
						
						
							| 
								
							 | 
							
								  $response = new Response;
							 | 
						
						
						
							| 
								
							 | 
							
								  $response->setStatusCode(404);
							 | 
						
						
						
							| 
								
							 | 
							
								  $response->setContent("Not Found\n");
							 | 
						
						
						
							| 
								
							 | 
							
								  $response->send();
							 | 
						
						
						
							| 
								
							 | 
							
								} catch(League\Route\Http\Exception\MethodNotAllowedException $e) {
							 | 
						
						
						
							| 
								
							 | 
							
								  $response = new Response;
							 | 
						
						
						
							| 
								
							 | 
							
								  $response->setStatusCode(405);
							 | 
						
						
						
							| 
								
							 | 
							
								  $response->setContent("Method not allowed\n");
							 | 
						
						
						
							| 
								
							 | 
							
								  $response->send();
							 | 
						
						
						
							| 
								
							 | 
							
								}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								function shutdown() {
							 | 
						
						
						
							| 
								
							 | 
							
								  $error = error_get_last();
							 | 
						
						
						
							| 
								
							 | 
							
								  if($error['type'] === E_ERROR) {
							 | 
						
						
						
							| 
								
							 | 
							
								    header('HTTP/1.1 500 Server Error');
							 | 
						
						
						
							| 
								
							 | 
							
								    header('X-PHP-Error-Type: '.$error['type']);
							 | 
						
						
						
							| 
								
							 | 
							
								    header('X-PHP-Error-Message: '.$error['message']);
							 | 
						
						
						
							| 
								
							 | 
							
								    header('Content-Type: application/json');
							 | 
						
						
						
							| 
								
							 | 
							
								    echo json_encode([
							 | 
						
						
						
							| 
								
							 | 
							
								      'error' => 'internal_error',
							 | 
						
						
						
							| 
								
							 | 
							
								      'error_code' => 500,
							 | 
						
						
						
							| 
								
							 | 
							
								      'error_description' => $error['message'],
							 | 
						
						
						
							| 
								
							 | 
							
								      'debug' => 'Please file an issue with any information you have about what caused this error: https://github.com/aaronpk/XRay/issues'
							 | 
						
						
						
							| 
								
							 | 
							
								    ]);
							 | 
						
						
						
							| 
								
							 | 
							
								    die();
							 | 
						
						
						
							| 
								
							 | 
							
								  }
							 | 
						
						
						
							| 
								
							 | 
							
								}
							 |