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()); } }