Commit initial
This commit is contained in:
@ -0,0 +1,137 @@
|
||||
<?php
|
||||
|
||||
require_once $GLOBALS['app_path'].'Controller/ControllerSecureUserCam.php';
|
||||
require_once $GLOBALS['app_path'].'Model/ModelCamera.php';
|
||||
require_once $GLOBALS['app_path'].'Model/ModelUser.php';
|
||||
require_once $GLOBALS['app_path'].'Model/Entity/Camera.php';
|
||||
|
||||
|
||||
|
||||
class ControllerCamera extends ControllerSecureUserCam {
|
||||
|
||||
public function index()
|
||||
{
|
||||
$modelUser = new ModelUser();
|
||||
$user = $modelUser->getUserById($this->request->getSession()->getAttribute('user_id'));
|
||||
$modelCamera = new ModelCamera();
|
||||
$camera = $modelCamera->getCamera($this->request->getParameter('id'),$this->request->getSession()->getAttribute('user_id'));
|
||||
$headScript = '<script src="jwplayer/jwplayer.js"></script><script>jwplayer.key="xEPI8DEypoE2gSBetC0/Vecoos0JKOx8WLKNMw==";</script>';
|
||||
$this->generateView(array('camera' => $camera, 'headScript' => $headScript, 'user'=> $user));
|
||||
}
|
||||
|
||||
public function swapState()
|
||||
{
|
||||
$whereController = "default";
|
||||
$whereAction = null;
|
||||
if($this->request->existParameter('whereController'))
|
||||
$whereController = $this->request->getParameter('whereController');
|
||||
if($this->request->existParameter('whereAction'))
|
||||
$whereAction = $this->request->getParameter('whereAction');
|
||||
|
||||
if($this->request->existParameter('swap'))
|
||||
{
|
||||
$command = null;
|
||||
$modelUser = new ModelUser();
|
||||
$modelCamera = new ModelCamera();
|
||||
$camera = $modelCamera->getCamera($this->request->getParameter('id'),$this->request->getSession()->getAttribute('user_id'));
|
||||
$login = $this->request->getSession()->getAttribute('login');
|
||||
$password = $modelUser->getUserById($this->request->getSession()->getAttribute('user_id'))->getPassword();
|
||||
$swap = $this->request->getParameter('swap');
|
||||
|
||||
if($swap == 'enable' && $camera->getEnabled() == false)
|
||||
$command = "enable";
|
||||
else
|
||||
if($swap == 'disable' && $camera->getEnabled() == true)
|
||||
$command = 'disable';
|
||||
if($command != null)
|
||||
$this->sendCommand($login,$password,$camera->getId(),$command);
|
||||
}
|
||||
$this->redirect($whereController,$whereAction);
|
||||
}
|
||||
|
||||
public function delete()
|
||||
{
|
||||
$modelUser = new ModelUser();
|
||||
$modelUser->deleteCam($this->request->getSession()->getAttribute('user_id'),$this->request->getParameter('id'));
|
||||
$this->redirect('default','settings');
|
||||
}
|
||||
|
||||
private function sendCommand($login,$password,$camera_id,$command)
|
||||
{
|
||||
$s = socket_create(AF_INET,SOCK_STREAM,0);
|
||||
if($s == false)
|
||||
throw new Exception("Creation de socket echoue");
|
||||
$addr = gethostbyname(Configuration::get('host'));
|
||||
if($addr == Configuration::get('host'))
|
||||
{
|
||||
socket_close($s);
|
||||
throw new Exception("Recuperation IP impossible ");
|
||||
}
|
||||
$result = socket_connect($s,$addr,40550);
|
||||
if($result == false)
|
||||
{
|
||||
socket_close($s);
|
||||
throw new Exception("Connection socket échoue");
|
||||
}
|
||||
$str = $login.":".$password.":".$command.":".$camera_id; //Command = enable|disable|disconnect
|
||||
$buf = $str."\0";
|
||||
$size = socket_write($s,$buf,strlen($str)+1);
|
||||
if($size != strlen($buf))
|
||||
{
|
||||
socket_close($s);
|
||||
throw new Exception("Ecriture dans la socket impossible");
|
||||
}
|
||||
$data = "";
|
||||
$ret = socket_recv($s, $data, 1, MSG_WAITALL);
|
||||
while($ret == 1 && $data != "\0")
|
||||
{
|
||||
$buf .= $data;
|
||||
$data = "";
|
||||
$ret = socket_recv($s, $data, 1, MSG_WAITALL);
|
||||
}
|
||||
|
||||
if($ret != 1 && strlen($buf) == 0)
|
||||
{
|
||||
socket_close($s);
|
||||
throw new Exception('Erreur rien à lire dans la socket');
|
||||
}
|
||||
|
||||
socket_close($s);
|
||||
}
|
||||
|
||||
public function delayed()
|
||||
{
|
||||
$videos = array();
|
||||
$records_path = "Content/records/".$this->request->getParameter("id");
|
||||
if(file_exists($records_path))
|
||||
{
|
||||
$files = scandir($records_path);
|
||||
if($files != false)
|
||||
{
|
||||
$i = 0;
|
||||
foreach($files as $file)
|
||||
{
|
||||
$path = $records_path."/".$file;
|
||||
|
||||
if(is_file($path))
|
||||
{
|
||||
$regex_results = array();
|
||||
if(preg_match("/^([0-9]|[1-9][0-9]*)_([0-9]|[1-9][0-9]*)\.mp4$/",$file,$regex_results) == 1)
|
||||
{
|
||||
$videos[$i]["path"] = $path;
|
||||
$videos[$i]["begin"] = date('j/n/Y H:i:s',$regex_results[1]);
|
||||
$videos[$i]["end"] = date('j/n/Y H:i:s',$regex_results[2]);
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
$headScript = '<script src="jwplayer/jwplayer.js"></script><script>jwplayer.key="xEPI8DEypoE2gSBetC0/Vecoos0JKOx8WLKNMw==";</script>';
|
||||
$this->generateView(array('videos' => $videos, 'headScript' => $headScript));
|
||||
}
|
||||
else
|
||||
throw new Exception("Fichier '".$records_path."' inconnue");
|
||||
}
|
||||
else
|
||||
throw new Exception("Dossier '".$records_path."' inconnue");
|
||||
}
|
||||
}
|
@ -0,0 +1,76 @@
|
||||
<?php
|
||||
require_once $GLOBALS['app_path'].'Framework/Controller.php';
|
||||
require_once $GLOBALS['app_path'].'Model/ModelUser.php';
|
||||
|
||||
class ControllerConnexion extends Controller
|
||||
{
|
||||
private $modelUser;
|
||||
public function __construct()
|
||||
{
|
||||
$this->modelUser = new ModelUser();
|
||||
}
|
||||
public function index()
|
||||
{
|
||||
$this->generateView();
|
||||
}
|
||||
public function logOn()
|
||||
{
|
||||
if ($this->request->existParameter("login") && $this->request->existParameter("password")) {
|
||||
$login = $this->request->getParameter("login");
|
||||
$password = sha1($this->request->getParameter("password"));
|
||||
if ($this->modelUser->exist($login, $password))
|
||||
{
|
||||
$user = $this->modelUser->getUser($login, $password);
|
||||
$this->request->getSession()->setAttribute("user_id",
|
||||
$user->getId());
|
||||
$this->request->getSession()->setAttribute("login",
|
||||
$user->getLogin());
|
||||
|
||||
if($login == "root")
|
||||
$this->redirect('default','admin');
|
||||
else
|
||||
$this->redirect("default");
|
||||
}
|
||||
else
|
||||
$this->generateView(array('msgError' => 'Login ou mot de passe incorrects'),
|
||||
"index");
|
||||
}
|
||||
else
|
||||
throw new Exception("Action impossible : login ou mot de passe non défini");
|
||||
}
|
||||
|
||||
public function registration()
|
||||
{
|
||||
$this->generateView();
|
||||
}
|
||||
|
||||
public function register()
|
||||
{
|
||||
if ($this->request->existParameter("login") && $this->request->existParameter("password") && $this->request->existParameter("passwordBis")) {
|
||||
$login = $this->request->getParameter("login");
|
||||
$password = sha1($this->request->getParameter("password"));
|
||||
$passwordBis = sha1($this->request->getParameter("passwordBis"));
|
||||
if ($password == $passwordBis) {
|
||||
if(!$this->modelUser->exist($login,$password))
|
||||
{
|
||||
$this->modelUser->addUser($login, $password);
|
||||
$this->redirect("default");
|
||||
}
|
||||
else
|
||||
$this->generateView(array('msgError' => 'Utilisateur déja existant'),
|
||||
"registration");
|
||||
}
|
||||
else
|
||||
$this->generateView(array('msgError' => 'Les mots de passes doivent être identiques'),
|
||||
"registration");
|
||||
}
|
||||
else
|
||||
throw new Exception("Action impossible : login ou mot de passe non défini");
|
||||
}
|
||||
|
||||
public function disconnect()
|
||||
{
|
||||
$this->request->getSession()->destruct();
|
||||
$this->redirect("connexion");
|
||||
}
|
||||
}
|
@ -0,0 +1,150 @@
|
||||
<?php
|
||||
|
||||
require_once $GLOBALS['app_path'].'Controller/ControllerSecure.php';
|
||||
require_once $GLOBALS['app_path'].'Model/ModelCamera.php';
|
||||
require_once $GLOBALS['app_path'].'Model/Entity/Camera.php';
|
||||
require_once $GLOBALS['app_path'].'Model/ModelUser.php';
|
||||
|
||||
|
||||
|
||||
|
||||
class ControllerDefault extends ControllerSecure {
|
||||
|
||||
public function index()
|
||||
{
|
||||
$modelCamera = new ModelCamera();
|
||||
$cameras = $modelCamera->getAllCameraByUser($this->request->getSession()->getAttribute('user_id'));
|
||||
$this->generateView(array('cameras' => $cameras));
|
||||
}
|
||||
|
||||
public function settings()
|
||||
{
|
||||
$modelCamera = new ModelCamera();
|
||||
$modelUser = new ModelUser();
|
||||
$user_id = $this->request->getSession()->getAttribute('user_id');
|
||||
$user = $modelUser->getUserById($user_id);
|
||||
$cameras = $modelCamera->getAllCameraByUser($user_id);
|
||||
$this->generateView(array('cameras' => $cameras, 'user' => $user));
|
||||
}
|
||||
|
||||
public function updateLogin()
|
||||
{
|
||||
$messageInfo = "";
|
||||
$modelUser = new ModelUser();
|
||||
$modelCamera = new ModelCamera();
|
||||
$user_id = $this->request->getSession()->getAttribute('user_id');
|
||||
$user = $modelUser->getUserById($user_id);
|
||||
$cameras = $modelCamera->getAllCameraByUser($user_id);
|
||||
|
||||
if($this->request->existParameter('login'))
|
||||
{
|
||||
$login = $this->request->getParameter('login');
|
||||
if($user->getLogin() != $login)
|
||||
{
|
||||
if(!$modelUser->exist($login, $user->getPassword()))
|
||||
{
|
||||
$modelUser->update($user->getId(),$login,$user->getPassword());
|
||||
$messageInfo = "Modification effectué";
|
||||
}
|
||||
else
|
||||
$messageInfo = "Ce login existe déja";
|
||||
}
|
||||
else
|
||||
$messageInfo = "Ce Login est déja le vôtre";
|
||||
}
|
||||
else
|
||||
$messageInfo = "Login manquant";
|
||||
|
||||
$this->generateView(array('cameras' => $cameras, 'user' => $user, 'messageInfo' => $messageInfo ),'settings');
|
||||
}
|
||||
|
||||
public function updatePassword()
|
||||
{
|
||||
$messageInfo = "";
|
||||
$modelUser = new ModelUser();
|
||||
$modelCamera = new ModelCamera();
|
||||
$user_id = $this->request->getSession()->getAttribute('user_id');
|
||||
$user = $modelUser->getUserById($user_id);
|
||||
$cameras = $modelCamera->getAllCameraByUser($user_id);
|
||||
|
||||
if($this->request->existParameter('password') && $this->request->existParameter('passwordBis'))
|
||||
{
|
||||
$password = $this->request->getParameter('password');
|
||||
$passwordBis = $this->request->getParameter('passwordBis');
|
||||
if($password == $passwordBis)
|
||||
{
|
||||
if ($user->getPassword() != $password)
|
||||
{
|
||||
$modelUser->update($user->getId(), $user->getLogin(), $password);
|
||||
$messageInfo = "Modification effectué";
|
||||
}
|
||||
else
|
||||
$messageInfo = "Ce mot de passe est déja le vôtre";
|
||||
}
|
||||
else
|
||||
$messageInfo = "Les deux mot de passe doivent être les mêmes";
|
||||
}
|
||||
else
|
||||
$messageInfo = "Les deux champs mot de passe doivent être remplies";
|
||||
|
||||
$this->generateView(array('cameras' => $cameras, 'user' => $user, 'messageInfo' => $messageInfo ),'settings');
|
||||
}
|
||||
|
||||
public function addCam()
|
||||
{
|
||||
$messageInfo = "";
|
||||
$modelUser = new ModelUser();
|
||||
$modelCamera = new ModelCamera();
|
||||
$user_id = $this->request->getSession()->getAttribute('user_id');
|
||||
$user = $modelUser->getUserById($user_id);
|
||||
|
||||
if($this->request->existParameter('name') && $this->request->existParameter('camera_id'))
|
||||
{
|
||||
$name = $this->request->getParameter('name');
|
||||
$camera_id = $this->request->getParameter('camera_id');
|
||||
if($modelCamera->exist($camera_id))
|
||||
{
|
||||
if (!$modelUser->haveCam($user->getId(), $camera_id))
|
||||
{
|
||||
$modelUser->addCam($user->getId(), $camera_id, $name);
|
||||
$messageInfo = "Modification effectué";
|
||||
}
|
||||
else
|
||||
$messageInfo = "Vous avez déja accès à cette caméra";
|
||||
}
|
||||
else
|
||||
$messageInfo = "Le numéro de série ne correspond à aucune caméra";
|
||||
}
|
||||
else
|
||||
$messageInfo = "Les champs name et numéro de série doivent être remplies";
|
||||
|
||||
$cameras = $modelCamera->getAllCameraByUser($user_id);
|
||||
|
||||
$this->generateView(array('cameras' => $cameras, 'user' => $user, 'messageInfo' => $messageInfo ),'settings');
|
||||
}
|
||||
|
||||
public function admin()
|
||||
{
|
||||
if($this->request->getSession()->getAttribute('login') == "root")
|
||||
{
|
||||
$this->generateView();
|
||||
}
|
||||
else
|
||||
throw new Exception('Vous n\'avez pas accès à cette page');
|
||||
}
|
||||
|
||||
public function addCamAdmin()
|
||||
{
|
||||
if($this->request->getSession()->getAttribute('login') == "root")
|
||||
{
|
||||
$modelCamera = new ModelCamera();
|
||||
$id = uniqid("",false).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9);
|
||||
$product_key = sha1(strval(rand()));
|
||||
$modelCamera->addCamera($id,$product_key,0,0,"");
|
||||
$this->generateView(array("id"=>$id, "product_key"=>$product_key),"admin");
|
||||
}
|
||||
else
|
||||
throw new Exception('Vous n\'avez pas accès à cette page');
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
require_once $GLOBALS['app_path'].'Framework/Controller.php';
|
||||
|
||||
abstract class ControllerSecure extends Controller
|
||||
{
|
||||
public function executeAction($action)
|
||||
{
|
||||
if ($this->request->getSession()->existAttribute("user_id")) {
|
||||
parent::executeAction($action);
|
||||
}
|
||||
else {
|
||||
$this->redirect("connexion");
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
require_once $GLOBALS['app_path'].'Framework/Controller.php';
|
||||
|
||||
abstract class ControllerSecureUserCam extends Controller
|
||||
{
|
||||
public function executeAction($action)
|
||||
{
|
||||
if ($this->request->getSession()->existAttribute("user_id"))
|
||||
{
|
||||
$user_id = $this->request->getSession()->getAttribute("user_id");
|
||||
if($this->request->existParameter('id'))
|
||||
{
|
||||
$camera_id = $this->request->getParameter('id');
|
||||
$modelCamera = new ModelCamera();
|
||||
if($modelCamera->userCanAccessCam($user_id,$camera_id))
|
||||
parent::executeAction($action);
|
||||
else
|
||||
throw new Exception('Vous n\'avez pas accès à cette caméra');
|
||||
}
|
||||
else
|
||||
throw new Exception('Id caméra non spécifié');
|
||||
}
|
||||
else {
|
||||
$this->redirect("connexion");
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user