Ejemplo n.º 1
0
 public function run()
 {
     ob_start();
     error_reporting(E_ALL ^ E_NOTICE);
     if (defined('COMACO_LOG')) {
         $log = 'contao-management-console';
         if (defined('COMACO_LOG_NAME')) {
             $log = COMACO_LOG_NAME;
         }
         $logger = new Logger($log);
         $logger->pushHandler(new StreamHandler(COMACO_LOG, COMACO_LOG_LEVEL));
     } else {
         $logger = null;
     }
     if (isset($_GET['ping'])) {
         header('Content-Type: text/plain; charset=utf-8');
         echo 'pong';
         exit;
     }
     $settings = new Settings();
     if (defined('COMACO_CONTAO_PATH')) {
         $settings->setPath(COMACO_CONTAO_PATH);
     }
     if (defined('COMACO_RSA_LOCAL_PRIVATE_KEY')) {
         $settings->setRsaLocalPrivateKey(COMACO_RSA_LOCAL_PRIVATE_KEY);
     }
     if (defined('COMACO_RSA_REMOTE_PUBLIC_KEY')) {
         $settings->setRsaRemotePublicKey(COMACO_RSA_REMOTE_PUBLIC_KEY);
     }
     $factory = new EndpointFactory();
     $endpoint = $factory->createEndpoint($settings);
     $transport = new HttpServer('application/json');
     if ($logger) {
         $transport->setLogger($logger);
     }
     $encoder = new JsonRpc20Encoder();
     if ($logger) {
         $encoder->setLogger($logger);
     }
     if ($settings->isEncryptionEnabled()) {
         $encoder = new RsaEncoder($encoder, $settings->getRsaRemotePublicKey(), $settings->getRsaLocalPrivateKey());
     }
     $server = new Server($transport, $encoder, $endpoint);
     try {
         $server->handle();
     } catch (Exception $e) {
         if ($logger && $logger->isHandling(Logger::ERROR)) {
             $logger->addError($e->getMessage());
         }
         ob_start();
         while (ob_end_clean()) {
         }
         header('HTTP/1.0 500 Internal Server Error');
         header("Status: 500 Internal Server Error");
         header('Content-Type: text/plain; charset=utf-8');
         echo '500 Internal Server Error';
     }
     exit;
 }
 protected function createSettings(InputInterface $input)
 {
     $settings = new Settings();
     $settings->setPath($input->getArgument('target'));
     $privateKeyFile = $input->getOption('private-key');
     if (!empty($privateKeyFile)) {
         $settings->setRsaLocalPrivateKey(file_get_contents($privateKeyFile));
     }
     $publicKeyFile = $input->getOption('public-key');
     if (!empty($publicKeyFile)) {
         $settings->setRsaRemotePublicKey(file_get_contents($publicKeyFile));
     }
     return $settings;
 }
 protected function prepareLocalconfig()
 {
     if ($this->localconfig !== null) {
         return true;
     }
     if ($this->prepareFilesystemAccess()) {
         $localconfigFile = $this->contaoInstallation->getFile('system/config/localconfig.php');
         if (!$localconfigFile->exists()) {
             $this->errors[] = sprintf('system/config/localconfig.php is missing, maybe %s is not a contao installation or not configured yet?!', $this->settings->getPath());
         } else {
             $this->localconfig = $localconfigFile->getContents();
             return true;
         }
     }
     return false;
 }
 /**
  * @param Settings $settings
  *
  * @return \RemoteObjects\Client|\stdClass
  */
 public function createEndpoint(Settings $settings)
 {
     $url = parse_url($settings->getPath());
     // local call
     if (empty($url['scheme']) || $url['scheme'] == 'file') {
         $endpoint = new Endpoint($settings);
     } else {
         $transport = new CurlClient($settings->getPath());
         $encoder = new JsonRpc20Encoder();
         if ($settings->isEncryptionEnabled()) {
             $encoder = new RsaEncoder($encoder, $settings->getRsaRemotePublicKey(), $settings->getRsaLocalPrivateKey());
         }
         $client = new Client($transport, $encoder);
         $endpoint = $client->castAsRemoteObject();
     }
     return $endpoint;
 }