/**
  * check database connection based on provided setting
  */
 public function checkConnection()
 {
     $success = false;
     $message = '';
     $config = $this->getPostConfiguration();
     try {
         $this->makeConnection($config);
         /**
          * Just trying to show tables with current connection
          */
         switch ($config['driver']) {
             case 'mysql':
                 $tables = Capsule::select('show tables');
                 break;
             case 'sqlite':
                 $tables = Capsule::select("SELECT * FROM sqlite_master WHERE type='table'");
                 break;
             case 'sqlsrv':
                 $tables = Capsule::select("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'");
                 break;
             case 'pgsql':
                 $tables = Capsule::select("SELECT * FROM pg_catalog.pg_tables");
                 break;
         }
         $success = true;
         $message = 'Successfully connected!';
     } catch (Exception $e) {
         $success = false;
         $message = $e->getMessage();
     }
     Response::headers()->set('Content-Type', 'application/json');
     Response::setBody(json_encode(array('success' => $success, 'message' => $message, 'config' => $config)));
 }
Example #2
0
 public static function dispatch()
 {
     $url = new Url();
     $uri = $url->getPath();
     foreach (array_reverse(self::$routes, true) as $route => $class) {
         if (preg_match("~^{$route}\$~", $uri, $params)) {
             Router::$current = $class;
             $return = call_user_func_array(array('Controller', 'dispatch'), array_merge(array($class), array_slice($params, 1)));
             if (!(false === $return)) {
                 $vars = get_class_vars($class);
                 $type = 'text/html';
                 if (isset($vars['type'])) {
                     $type = $vars['type'];
                 }
                 # PHP >= 5.3
                 # if ( isset($class::$type) )
                 #     $type = $class::$type;
                 //Response::setHeader('Content-Type', 'application/xhtml+xml');
                 Response::setHeader('Content-Type', "{$type};charset=UTF-8");
                 Response::setBody($class, $return);
                 return;
             }
             Router::$current = null;
         }
     }
     if (Response::getHttpResponseCode() == 200) {
         $class = 'Error404';
         $return = Controller::dispatch($class);
         Response::setHeader('Content-Type', 'text/html;charset=UTF-8');
         Response::setBody($class, $return);
         //Response::setHeader('HTTP/1.0 404 Not Found');
         //Response::setHttpResponseCode(404);
         //Response::setBody('404', 'Error 404');
     }
 }
Example #3
0
 /**
  * Sets the response body and status code header
  *
  * @param mixed $data
  * @param integer $status
  * @return void
  */
 protected function respond($data, $status = null)
 {
     if ($this->performedRespond) {
         throw new DoubleRespond();
     }
     $this->response->setStatus(!empty($status) ? $status : $this->status);
     $this->response->setBody($data);
     $this->performedRespond = true;
 }
 public function response($code = 200, $headers = array())
 {
     $response = new Response();
     $body = json_encode(['success' => $this->success, 'data' => $this->data]);
     $defaultOptions = ['Content-Type' => 'application/json', 'Content-Length' => strlen($body)];
     $finalHeaders = array_merge($defaultOptions, $headers);
     $response->setHeaders($finalHeaders);
     $response->setBody($body);
     $response->respondWith($code);
     return $response;
 }
Example #5
0
 private function ConvertCurlResponse($response, $ch)
 {
     $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
     $header = substr($response, 0, $header_size);
     $body = substr($response, $header_size);
     $r = new Response();
     $r->setHeaders($this->http_parse_headers($header));
     $r->setHttpCode(curl_getinfo($ch, CURLINFO_HTTP_CODE));
     $r->setBody($body);
     return $r;
 }
Example #6
0
 public static function error($errno)
 {
     if (isset(self::$errors[$errno])) {
         Response::setHeader('Status', self::$errors[$errno]['Status']);
         if (isset(self::$errors[$errno]['Class'])) {
             self::instance(self::$errors[$errno]['Class']);
         } else {
             Response::setHeader('Content-Type', 'text/plain');
             Response::setBody(self::$errors[$errno]['Status']);
         }
     }
 }
Example #7
0
    function testToString()
    {
        $response = new Response(200, ['Content-Type' => 'text/xml']);
        $response->setBody('foo');
        $expected = <<<HI
HTTP/1.1 200 OK
Content-Type: text/xml

foo
HI;
        $this->assertEquals($expected, (string) $response);
    }
Example #8
0
function Auth()
{
    if (!Sentry::check()) {
        if (Request::isAjax()) {
            Response::headers()->set('Content-Type', 'application/json');
            Response::setBody(json_encode(array('success' => false, 'message' => 'Session expired or unauthorized access.', 'code' => 401)));
            App::stop();
        } else {
            $redirect = Request::getResourceUri();
            Response::redirect(App::urlFor('login') . '?redirect=' . base64_encode($redirect));
        }
    }
}
Example #9
0
 public static function outputError($exception)
 {
     if (PHP_SAPI == 'cli') {
         echo $exception->getMessage() . "\nFile: " . $exception->getFile() . ' on line ' . $exception->getLine() . "\n\n" . $exception->getTraceAsString() . "\n";
         // exit with an error code
         exit(1);
     }
     // Write the error to log file
     @error_log('Error 404 Page Not Found: ' . $_SERVER['REQUEST_URI']);
     $response = new Response();
     $response->setStatusCode(404);
     $response->setBody(Controller::outputError('errors/404', ['message' => $exception->getMessage()]));
     return $response;
 }
Example #10
0
 /**
  * @runInSeparateProcess
  *
  * Unfortunately we have no way of testing if the HTTP response code got
  * changed.
  */
 function testSend()
 {
     if (!function_exists('xdebug_get_headers')) {
         $this->markTestSkipped('XDebug needs to be installed for this test to run');
     }
     $response = new Response(204, ['Content-Type', 'text/xml']);
     $response->setBody('foo');
     ob_start();
     Sapi::sendResponse($response);
     $headers = xdebug_get_headers();
     $result = ob_get_clean();
     header_remove();
     $this->assertEquals(["0: Content-Type", "1: text/xml"], $headers);
     $this->assertEquals('foo', $result);
 }
Example #11
0
 private function doExecute($curlHandle, Request $request)
 {
     curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10);
     curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($curlHandle, CURLOPT_HEADER, true);
     curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Accept: ' . $request->getHttpAccept()));
     $res = curl_exec($curlHandle);
     $info = curl_getinfo($curlHandle);
     $response = new Response();
     $response->setStatus($info['http_code']);
     if (false !== $res) {
         $response->setHeaders(substr($res, 0, $info['header_size']));
         $response->setBody(substr($res, -$info['download_content_length']));
     }
     return $response;
 }
Example #12
0
 /**
  * check database connection based on provided setting
  */
 public function checkConnection()
 {
     $success = false;
     $message = '';
     $config = $this->getPostConfiguration();
     try {
         $this->makeConnection($config);
         $tables = Capsule::select('show tables');
         $success = true;
         $message = 'Successfully connected!';
     } catch (Exception $e) {
         $success = false;
         $message = $e->getMessage();
     }
     Response::headers()->set('Content-Type', 'application/json');
     Response::setBody(json_encode(array('success' => $success, 'message' => $message, 'config' => $config)));
 }
Example #13
0
 /**
  * @runInSeparateProcess
  *
  * Unfortunately we have no way of testing if the HTTP response code got
  * changed.
  */
 function testSend()
 {
     if (!function_exists('xdebug_get_headers')) {
         $this->markTestSkipped('XDebug needs to be installed for this test to run');
     }
     $response = new Response(204, ['Content-Type' => 'text/xml;charset=UTF-8']);
     // Second Content-Type header. Normally this doesn't make sense.
     $response->addHeader('Content-Type', 'application/xml');
     $response->setBody('foo');
     ob_start();
     Sapi::sendResponse($response);
     $headers = xdebug_get_headers();
     $result = ob_get_clean();
     header_remove();
     $this->assertEquals(["Content-Type: text/xml;charset=UTF-8", "Content-Type: application/xml"], $headers);
     $this->assertEquals('foo', $result);
 }
Example #14
0
 public static function outputError($message = null, $file = false, $line = false, $trace = false)
 {
     // Message for log
     $errorMessage = 'Error ' . $message . ' in ' . $file . ' line: ' . $line;
     // Write the error to log file
     @error_log($errorMessage);
     // Just output the error if the error source for view file or if in cli mode.
     if (PHP_SAPI == 'cli') {
         exit($errorMessage);
     }
     $code = [];
     if (!$file) {
         goto constructViewData;
     }
     $fileString = file_get_contents($file);
     $arrLine = explode("\n", $fileString);
     $totalLine = count($arrLine);
     $getLine = array_combine(range(1, $totalLine), array_values($arrLine));
     $startIterate = $line - 5;
     $endIterate = $line + 5;
     if ($startIterate < 1) {
         $startIterate = 1;
     }
     if ($endIterate > $totalLine) {
         $endIterate = $totalLine;
     }
     for ($i = $startIterate; $i <= $endIterate; $i++) {
         $html = '<span style="margin-right:10px;background:#CFCFCF;">' . $i . '</span>';
         if ($line == $i) {
             $html .= '<span style="color:#DD0000">' . htmlentities($getLine[$i]) . "</span>\n";
         } else {
             $html .= htmlentities($getLine[$i]) . "\n";
         }
         $code[] = $html;
     }
     constructViewData:
     $data = ['message' => $message, 'file' => $file, 'line' => $line, 'code' => $code, 'trace' => $trace];
     $response = new Response();
     $response->setStatusCode(500);
     $response->setBody(Controller::outputError('errors/500', $data));
     return $response;
 }
Example #15
0
 public static function runApp()
 {
     if (!Request::isАuthorized()) {
         Response::setCode(401);
         return;
     }
     $matchedResource = Router::getMatchedRouterResource(Request::getMethod(), Request::getCleanRequestUrl());
     if ($matchedResource === null) {
         Response::setCode(404);
         return;
     }
     try {
         $response = self::executeResoruceAction($matchedResource[0], $matchedResource[1], Router::getMachedRouteParameters());
         if ($response === false) {
             Response::setCode(404);
         } else {
             Response::setBody($response);
         }
     } catch (\Exception $e) {
         Response::setCode(500);
     }
 }
 private static function startDispatch()
 {
     $buffering = !IN_CLI && self::$outputBuffer;
     if ($buffering) {
         ob_start();
     }
     try {
         self::dispatch();
         $controllerPath = self::$request->getControllerPath();
         $actionFile = self::$request->getActionFile();
     } catch (Exception $e) {
         if (IN_CLI) {
             throw $e;
             return;
         }
         $controllerPath = 'error';
         self::$request->setUserParam('exception', $e);
         $controller = new ErrorController();
         if ($e instanceof PageNotFoundException) {
             $actionFile = 'page-not-found';
             self::$response->setHttpResponseCode(404);
             $controller->pageNotFoundAction();
         } else {
             $actionFile = 'internal-error';
             self::$response->setHttpResponseCode(500);
             $controller->internalErrorAction();
         }
     }
     if (self::$shouldRender && !self::$response->isRedirect()) {
         self::$view->render($controllerPath, $actionFile);
     }
     if ($buffering && !self::$response->isRedirect()) {
         self::$response->setBody(ob_get_clean());
     }
     self::$response->sendResponse();
 }
Example #17
0
 /**
  * Vérification de la connection sur base des informations fournies
  */
 public function checkConnection()
 {
     $success = false;
     $message = '';
     $config = $this->getPostConfiguration();
     try {
         $this->makeConnection($config);
         /**
          * Essaie de montrer les tables !
          */
         switch ($config['driver']) {
             case 'mysql':
                 $tables = Capsule::select('show tables');
                 break;
         }
         $success = true;
         $message = 'Connexion établie avec succés !';
     } catch (Exception $e) {
         $success = false;
         $message = $e->getMessage();
     }
     Response::headers()->set('Content-Type', 'application/json');
     Response::setBody(json_encode(array('success' => $success, 'message' => $message, 'config' => $config)));
 }
Example #18
0
<?php

/**
 * Sample group routing with user check in middleware
 */
Route::group('/admin', function () {
    if (!Sentry::check()) {
        if (Request::isAjax()) {
            Response::headers()->set('Content-Type', 'application/json');
            Response::setBody(json_encode(array('success' => false, 'message' => 'Session expired or unauthorized access.', 'code' => 401)));
            App::stop();
        } else {
            $redirect = Request::getResourceUri();
            Response::redirect(App::urlFor('login') . '?redirect=' . base64_encode($redirect));
        }
    }
}, function () use($app) {
    /** sample namespaced controller */
    Route::get('/', 'Admin\\AdminController:index')->name('admin');
    foreach (Module::getModules() as $module) {
        $module->registerAdminRoute();
    }
});
Route::get('/login', 'Admin\\AdminController:login')->name('login');
Route::get('/logout', 'Admin\\AdminController:logout')->name('logout');
Route::post('/login', 'Admin\\AdminController:doLogin');
/** Route to documentation */
Route::get('/doc(/:page+)', 'DocController:index');
foreach (Module::getModules() as $module) {
    $module->registerPublicRoute();
}
 public function create($request)
 {
     if (Session::isActive()) {
         $req = $request->getParameters();
         if (isset($req['members'], $req['creator'], $req['subject']) && !empty($req['members']) && !empty($req['creator'])) {
             $membersStr = Utils::secure($req['members']);
             $creator = Utils::secure($req['creator']);
             $subject = Utils::secure($req['subject']);
             $subject = !empty($subject) ? $subject : 'Sans titre';
             if ($sender = UserChannel::find($creator)) {
                 if (Utils::stringStartsWith($membersStr, ';')) {
                     $membersStr = substr_replace($membersStr, '', 0, 1);
                 }
                 if (Utils::stringEndsWith($membersStr, ';')) {
                     $membersStr = substr_replace($membersStr, '', -1);
                 }
                 $membersStr = preg_replace('/\\s+/', '', $membersStr);
                 $membersIdsFinal = ';';
                 if (strpos($membersStr, ';')) {
                     foreach (explode(';', $membersStr) as $destId) {
                         if ($dest = UserChannel::find_by_name($destId)) {
                             $membersIdsFinal .= $dest->id . ';';
                         } else {
                             $response = new Response(500);
                             $response->setBody('Error: Le destinataire <' . $destId . '> n\'existe pas !');
                             return $response;
                         }
                     }
                 } else {
                     if ($chann = UserChannel::find_by_name($membersStr)) {
                         $membersIdsFinal .= $chann->id . ';';
                     } else {
                         $response = new Response(500);
                         $response->setBody('Error: les destinataires doivent être séparés par un \';\' !');
                         return $response;
                     }
                 }
                 if ($membersIdsFinal != ';') {
                     $membersIdsFinal .= $sender->id . ';';
                     Conversation::createNew($subject, $sender, $membersIdsFinal);
                     return new Response(200);
                 }
             }
         }
     }
     return new Response(500);
 }
Example #20
0
 /**
  * 处理异常
  *
  * @param Exception $e
  */
 public static function handleException(\Exception $e)
 {
     restore_error_handler();
     restore_exception_handler();
     // clean buffer
     if (!headers_sent()) {
         ob_get_level() and ob_clean();
     }
     $response = new Response();
     try {
         $status = $e instanceof \Lime\Exception\NotFoundException ? 404 : 500;
         $response->setStatus($status);
         $response->setBody($status == 404 ? static::notFound($e) : static::error($e));
         $response->respond();
     } catch (\Exception $e) {
         /* 异常处理中出错的最后处理 */
         ob_get_level() and ob_clean();
         header('Content-Type: text/plain; charset=UTF-8', true, 500);
         echo static::text($e);
     }
     exit(1);
 }
Example #21
0
 public function destroy($id, $request)
 {
     $comment = Comment::exists($id) ? Comment::find($id) : false;
     if (Session::isActive() && (Session::get()->isModerator() || Session::get()->isAdmin() || $comment && $comment->getVideo()->getAuthor()->belongToUser(Session::get()->id) || $comment && $comment->getAuthor()->belongToUser(Session::get()->id))) {
         $comment->erase(Session::get());
         $response = new Response(200);
         $response->setBody("done");
         return $response;
     }
     $response = new Response(500);
     $response->setBody("error");
     return $response;
 }
Example #22
0
            $error = 'invalid parameter';
            $error_description = 'invalid parameter scope check the documentation';
            $http_code = 406;
        }
    }
}
if (!empty($server->request('nonce'))) {
    $nonce = $server->request('nonce');
    if ($nonce > time()) {
        $error = 'invalid request';
        $error_description = 'request expired or corrupted';
        $http_code = 400;
    }
}
if ($error) {
    $response->setBody(array('error' => $error, 'error_description' => $error_description));
    $response->setStatutCode($http_code);
    $response->send();
} else {
    if (!$server->userIsConnected()) {
        header('location:login.php?next=' . urlencode($_SERVER['REQUEST_URI']));
    }
    $user_id = $_SESSION['user_id'];
    $code = $server->checkReadyCode($client_id, $user_id);
    if ($code) {
        $params = array('code' => $code, 'state' => $state);
        $url_info = parse_url($redirect_uri);
        if (empty($url_info['query'])) {
            $redirect_uri .= '?';
        } else {
            $redirect_uri .= '&';
Example #23
0
 public function run()
 {
     $response = null;
     list($route_mask, $service_name) = $this->findServiceRoute();
     if (null !== $route_mask) {
         $response = $this->executeServiceRoute($route_mask, $service_name);
         if (null !== $response) {
             $response->generation_time = $this->getTimer();
             $response->generation_mem = $this->getMemory();
             if ($this->application->passport->is_auth()) {
                 $response->setHeader('User access token: ' . $this->application->passport->getSessionToken());
             }
             $response->output($service_name, $route_mask);
             $this->stop();
         }
     }
     // Статичная страница
     /** @var \Service\Pages\Model_Factory $pages_factory */
     $pages_factory = $this->service_factory->factoryPages;
     if (null !== $pages_factory) {
         $url = $this->request->url->toString(false);
         $page = $pages_factory->pages->getBySlug($url);
         if (null !== $page) {
             $service_name = 'Pages';
             $route_mask = new \Service\Pages\Router_Client_Page();
             $route_mask->found_variables[\Service\Pages\Model_Pages_Page::FIELD_SLUG] = $url;
             $response = $this->executeServiceRoute($route_mask, $service_name);
             if (null !== $response) {
                 $response->generation_time = $this->getTimer();
                 $response->generation_mem = $this->getMemory();
                 $response->output($service_name, $route_mask);
                 $this->stop();
             }
         }
     }
     // Есть стандартная страница ошибки
     $this->request->url->path = '/404.html';
     list($route_mask, $service_name) = $this->findServiceRoute();
     if (null !== $route_mask) {
         $response = $this->executeServiceRoute($route_mask, $service_name);
         if (null !== $response) {
             $response->setStatus(Response::HTTP_404_Not_Found);
             $response->generation_time = $this->getTimer();
             $response->generation_mem = $this->getMemory();
             $response->output();
             $this->stop();
         }
     }
     // Нет стандартной страницы ошибки
     $response = new Response();
     $response->setStatus(Response::HTTP_404_Not_Found);
     $response->setBody('Nothing found');
     $response->generation_time = $this->getTimer();
     $response->generation_mem = $this->getMemory();
     $response->output();
     $this->stop();
 }
Example #24
0
 /**
  * @runInSeparateProcess
  * @depends testSend
  */
 function testSendLimitedByContentLengthStream()
 {
     $response = new Response(200, ['Content-Length' => 19]);
     $body = fopen('php://memory', 'w');
     fwrite($body, 'Ignore this. Send this sentence. Ignore this too.');
     rewind($body);
     fread($body, 13);
     $response->setBody($body);
     ob_start();
     Sapi::sendResponse($response);
     $result = ob_get_clean();
     header_remove();
     $this->assertEquals('Send this sentence.', $result);
 }