ninestat/src/ninestat-1.0/src/Cadoles/CoreBundle/Controller/ApiController.php

108 lines
3.9 KiB
PHP

<?php
namespace Cadoles\CoreBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Response;
use Cadoles\CoreBundle\Entity\Server;
use Cadoles\CoreBundle\Entity\ServerApplication;
class ApiController extends Controller
{
private $fgdebug = false;
public function apiAction(Request $request)
{
if($this->fgdebug) {
echo "<br>";
echo "IDSERVER = ".$request->request->get("idserver")."<br>";
echo "IDLOCAL = ".$request->request->get("idlocal")."<br>";
echo "NAME = ".$request->request->get("name")."<br>";
echo "MODULE = ".$request->request->get("module")."<br>";
echo "VERSION = ".$request->request->get("version")."<br>";
echo "URL = ".$request->request->get("url")."<br><br>";
echo "APPS = ".$request->request->get("apps")."<br><br>";
}
$idserver = $request->request->get("idserver");
$idlocal = $request->request->get("idlocal");
$name = $request->request->get("name");
$module = $request->request->get("module");
$version = $request->request->get("version");
$url = "https://".$request->request->get("url");
$apps = explode(";",$request->request->get("apps"));
$now = new \DateTime();
// Création / Modification du server appelant
$em = $this->getDoctrine()->getManager();
$server=$em->getRepository('CadolesCoreBundle:Server')->findOneBy(["idserver"=>$idserver]);
if(!$server) {
$server=new Server();
}
$server->setIdserver($idserver);
$server->setIdlocal($idlocal);
$server->setName($name);
$server->setModule($module);
$server->setVersion($version);
$server->setUrl($url);
$server->setUpdatedate($now);
// Sauvegarde
$em->persist($server);
$em->flush();
// On supprime tt les apps du serveur pour remettre à jour les apps associées au serveur
$entityapps=$em->getRepository('CadolesCoreBundle:ServerApplication')->findBy(["server"=>$server]);
foreach($entityapps as $entity) {
$em->remove($entity);
$em->flush();
}
// Décryptage des paquets envole entrant
$tbapps=[];
if($this->fgdebug) echo "APPLICATIONS<br>";
foreach($apps as $app) {
$tmp=explode("-",$app);
if($tmp[1]=="sacoche")
$tbapps["eole-sacoche"]=$app;
else {
$tmpname="";
for($i=0;$i<count($tmp)-2;$i++) {
$tmpname.=$tmp[$i];
if(($i+1)<(count($tmp)-2)) $tmpname.="-";
}
if($this->fgdebug) echo $tmpname."<br>";
$tbapps["$tmpname"]=$app;
}
}
// Pour chaque apps
foreach($tbapps as $package => $version) {
$application=$em->getRepository('CadolesCoreBundle:Application')->findOneBy(["package"=>$package]);
if($application) {
$serveurapplication=$em->getRepository('CadolesCoreBundle:ServerApplication')->findOneBy(["server"=>$server,"application"=>$application]);
if(!$serveurapplication) {
$serveurapplication=new ServerApplication();
$serveurapplication->setServer($server);
$serveurapplication->setApplication($application);
}
$serveurapplication->setVersion($version);
$serveurapplication->setUpdatedate($now);
// Sauvegarde
$em->persist($serveurapplication);
$em->flush();
}
}
return new Response();
}
}