Exemplo n.º 1
0
 public function __construct(\lib\Webos $webos, \lib\Authorization $auth, $cmdText, Terminal $terminal)
 {
     $cmdText = trim($cmdText);
     $this->cmdText = $cmdText;
     $this->terminal = $terminal;
     $arrayCmd = explode(' ', $cmdText);
     $this->cmd = $arrayCmd[0];
     if (preg_match('#^".+"$#', $this->cmd)) {
         $this->cmd = preg_replace('#^"(.+)"$#', '$1', $this->cmd);
     }
     unset($arrayCmd[0]);
     $args = implode(' ', $arrayCmd);
     $this->arguments = new CmdArguments($webos);
     $this->arguments->setArguments($args);
     $path = null;
     if (preg_match('#^[\\.~]?/#', $this->cmd)) {
         if ($webos->managers()->get('File')->exists($this->terminal->getAbsoluteLocation($this->cmd))) {
             $file = $webos->managers()->get('File')->get($this->terminal->getAbsoluteLocation($this->cmd));
             if (!$file->isDir() && in_array($file->extension(), $this->extensions)) {
                 $path = $file->path();
             }
         }
     }
     foreach ($this->directories as $dir) {
         $dirContents = $webos->managers()->get('File')->get($dir)->contents();
         foreach ($dirContents as $file) {
             if (!$file->isDir() && in_array($file->extension(), $this->extensions)) {
                 if ($file->filename() == $this->cmd || $file->basename() == $this->cmd) {
                     $path = $file;
                 }
             }
         }
     }
     if (empty($path)) {
         throw new \InvalidArgumentException('"' . $this->cmd . '" : commande introuvable');
     }
     //On appelle le constructeur du parent.
     parent::__construct($webos, $auth, $path);
 }
 /**
  * Initialise la requete.
  */
 public function __construct(ServerCallGroupRequest $httpRequest, ServerCallGroupResponse $httpResponse)
 {
     parent::__construct();
     //On appelle le constructeur parent
     //On initialise la requete et la reponse HTTP
     $this->httpRequest = $httpRequest;
     $this->httpResponse = $httpResponse;
     foreach ($this->httpRequest->getRequests() as $index => $request) {
         try {
             $this->serverCalls[$index] = new ServerCall($request, $this->httpResponse->getServerCallResponse($index));
         } catch (Exception $e) {
             //En cas d'erreur
             Error::catchException($e);
         }
     }
 }
 /**
  * Initialise la requete.
  */
 public function __construct(ServerCallRequest $httpRequest, ServerCallResponse $httpResponse)
 {
     parent::__construct();
     //On appelle le constructeur parent
     //On initialise la requete et la reponse HTTP
     $this->httpRequest = $httpRequest;
     $this->httpResponse = $httpResponse;
     //Classe demandee dans la requete
     $class = $this->getHTTPRequest()->getClass();
     if (!class_exists('\\lib\\controllers\\' . $class)) {
         //On verifie que la classe existe
         throw new \InvalidArgumentException('La classe "' . $class . '" spécifiée dans la requête HTTP n\'existe pas');
     }
     //Et qu'elle herite bien de ServerCallComponent
     if (!in_array('lib\\ServerCallComponent', class_parents('\\lib\\controllers\\' . $class))) {
         throw new \InvalidArgumentException('La classe "' . $class . '" spécifiée dans la requête HTTP ne peut pas être appellée comme action d\'administration');
     }
     //Si un mot de passe et un nom d'utilisateur sont specifies dans la requete
     //On tente d'executer l'action demandee avec l'utilisateur specifie
     if ($this->getHTTPRequest()->getPassword() != null && $this->getHTTPRequest()->getUsername() != null) {
         $this->user = new User($this->getHTTPRequest()->getUsername(), $this->getHTTPRequest()->getPassword());
     }
     if ($this->getHTTPRequest()->getPid() != null && $this->getHTTPRequest()->getKey() != null) {
         $process = Process::get($this->getHTTPRequest()->getPid());
         if ($process->getKey() == $this->getHTTPRequest()->getKey()) {
             throw new RuntimeException('Clef du processus #' . $this->getHTTPRequest()->getPid() . ' invalide');
         }
         if (!$process->getAuthorization()->check($this->getHTTPRequest())) {
             throw new RuntimeException('Vous n\'avez pas les droits requis pour effectuer cette action (module : "' . $class . '"; action : "' . $this->getHTTPRequest()->getMethod() . '"; arguments: "' . implode('", "', $this->getHTTPRequest()->getArguments()) . '")');
         }
         $this->process = $process;
     } else {
         //On cree l'autorisation d'executer l'action
         $authorization = new Authorization($this, $this->user);
         //Si on n'a pas les droits suffisants pour executer la requete demandee
         if (!$authorization->check($this->getHTTPRequest())) {
             throw new RuntimeException('Vous n\'avez pas les droits requis pour effectuer cette action (module : "' . $class . '"; action : "' . $this->getHTTPRequest()->getMethod() . '"; arguments: "' . implode('", "', $this->getHTTPRequest()->getArguments()) . '")');
         }
         //On cree le processus de l'action
         $this->process = new models\ServerCallProcess($this, $authorization, $this->getHTTPRequest()->getClass(), $this->getHTTPRequest()->getMethod());
     }
 }