Exemplo n.º 1
0
 public function getComputadorPreCole(Request $request, $te_so, $te_node_adress, $rede, $so, $ip_computador)
 {
     //recebe dados via POST, deCripata dados, e attribui a variaveis
     $computer_system = OldCacicHelper::deCrypt($request, $request->request->get('ComputerSystem'), true);
     $network_adapter = OldCacicHelper::deCrypt($request, $request->request->get('NetworkAdapterConfiguration'), true);
     $operating_system = OldCacicHelper::deCrypt($request, $request->request->get('OperatingSystem'), true);
     $te_versao_cacic = $request->request->get('te_versao_cacic');
     $te_versao_gercols = $request->request->get('te_versao_gercols');
     $data = new \DateTime('NOW');
     //armazena data Atual
     //vefifica se existe SO coletado se não, insere novo SO
     $computador = $this->findOneBy(array('teNodeAddress' => $te_node_adress, 'idSo' => $so->getIdSo()));
     //inserção de dado se for um novo computador
     if (empty($computador)) {
         $computador = new Computador();
         $computador->setTeNodeAddress($te_node_adress);
         $computador->setIdSo($so);
         $computador->setIdRede($rede);
         $computador->setDtHrInclusao($data);
         $computador->setTePalavraChave($request->get('PHP_AUTH_PW'));
         $computador->setAtivo(true);
         $this->getEntityManager()->persist($computador);
     }
     // Atualiza subrede se houve mudança de subrede para o computador
     #if ($computador->getIdRede() != $rede) {
     #error_log("Atualizando subrede paara o computador ".$computador->getTeIpComputador()." Antiga: ".$computador->getIdRede()->getNmRede()." | Nova: ".$rede->getNmRede());
     #    $computador->setIdRede($rede);
     #}
     $computador->setDtHrUltAcesso($data);
     $computador->setTeVersaoCacic($te_versao_cacic);
     $computador->setTeVersaoGercols($te_versao_gercols);
     $computador->setTeUltimoLogin(TagValueHelper::getValueFromTags('UserName', $computer_system));
     $computador->setTeIpComputador($ip_computador);
     $computador->setNmComputador(TagValueHelper::getValueFromTags('Caption', $computer_system));
     $computador->setAtivo(true);
     $this->getEntityManager()->persist($computador);
     $acoes = $this->getEntityManager()->getRepository('CacicCommonBundle:Acao')->findAll();
     //inserção ações de coleta a nova maquina
     foreach ($acoes as $acao) {
         $acao_so = $this->getEntityManager()->getRepository('CacicCommonBundle:AcaoSo')->findBy(array('rede' => $rede, 'so' => $so, 'acao' => $acao));
         if (empty($acao_so)) {
             $acao_so = new AcaoSo();
             $acao_so->setRede($rede);
             $acao_so->setSo($so);
             $acao_so->setAcao($acao);
             $this->getEntityManager()->persist($acao_so);
         }
     }
     //persistir dados
     $this->getEntityManager()->flush();
     return $computador;
 }
Exemplo n.º 2
0
 /**
  * Identifica coleta do computador
  *
  * @return string
  */
 public function __toString()
 {
     return $this->classProperty . ": " . $this->teClassPropertyValue . "| Computador:" . $this->computador->getIdComputador();
 }
 /**
  *
  * Tela de importação de arquivo CSV com registros de Computadores
  */
 public function importarcsvAction(Request $request)
 {
     $form = $this->createFormBuilder()->add('arquivocsv', 'file', array('label' => 'Arquivo', 'attr' => array('accept' => '.csv')))->getForm();
     if ($request->isMethod('POST')) {
         $form->bindRequest($request);
         if ($form['arquivocsv']->getData() instanceof \Symfony\Component\HttpFoundation\File\UploadedFile) {
             // Executa a importação do arquivo - grava no diretório web/upload/migracao
             $dirMigracao = realpath(dirname(__FILE__) . '/../../../../web/upload/migracao/');
             $fileName = 'Comp_U' . $this->getUser()->getIdUsuario() . 'T' . time() . '.csv';
             $form['arquivocsv']->getData()->move($dirMigracao, $fileName);
             $em = $this->getDoctrine()->getManager();
             // Abre o arquivo salvo e começa a rotina de importação dos dados do CSV
             $csv = file($dirMigracao . '/' . $fileName);
             foreach ($csv as $k => $v) {
                 // Valida a linha
                 $v = explode(';', trim(str_replace(array('"', '\\N'), '', $v)));
                 if (count($v) != 13) {
                     continue;
                 }
                 $so = $this->getDoctrine()->getRepository('CacicCommonBundle:So')->find((int) $v[1]);
                 $rede = $this->getDoctrine()->getRepository('CacicCommonBundle:Rede')->findOneByTeIpRede($v[2]);
                 $comp = new Computador();
                 if ($so) {
                     $comp->setIdSo($so);
                 }
                 if ($rede) {
                     $comp->setIdRede($rede);
                 }
                 $comp->setTeNodeAddress($v[0]);
                 $comp->setTePalavraChave($v[3]);
                 $comp->setTeIpComputador($v[4]);
                 $comp->setDtHrInclusao($v[5] ? new \Datetime($v[5]) : null);
                 $comp->setDtHrUltAcesso($v[6] ? new \Datetime($v[6]) : null);
                 $comp->setTeVersaoCacic($v[7]);
                 $comp->setTeVersaoGercols($v[8]);
                 $comp->setDtHrColetaForcadaEstacao($v[9] ? new \Datetime($v[9]) : null);
                 $comp->setTeNomesCurtosModulos($v[10]);
                 $comp->setIdConta($v[11]);
                 $comp->setNmComputador($v[12]);
                 $em->persist($comp);
             }
             $em->flush();
             // Persiste os dados dos Computadores
             $this->get('session')->getFlashBag()->add('success', 'Importação realizada com sucesso!');
         } else {
             $this->get('session')->getFlashBag()->add('error', 'Arquivo CSV inválido!');
         }
         return $this->redirect($this->generateUrl('cacic_migracao_computador'));
     }
     return $this->render('CacicCommonBundle:Computador:importarcsv.html.twig', array('form' => $form->createView()));
 }
Exemplo n.º 4
0
 /**
  * Função para identificar o computador
  *
  * @param $dados JSON da requisitção
  * @param Request $request
  * @return Computador|null|object Computador identificado
  */
 public function getComputador($dados, Request $request)
 {
     $logger = $this->get('logger');
     $em = $this->getDoctrine()->getManager();
     $so_json = $dados['computador']['operatingSystem'];
     $rede_json = $dados['computador']['networkDevices'];
     // Eduardo: 2015-02-05
     // Verifica o caso da rede aparecer vazia
     $rede1 = @$rede_json[0];
     if (empty($rede1)) {
         $logger->error("COMPUTADOR: erro na identificação da rede. JSON sem informações de rede válidas. IP do computador: " . $request->getClientIp());
         $logger->error(print_r($dados, true));
         return null;
     }
     // Eduardo: 2015-05-18
     // Verifica se o nome do SO existe e não é vazio
     if (empty($so_json)) {
         $logger->error("COMPUTADOR: SO não identificado! JSON não enviou o SO");
         $logger->error(print_r($so_json, true));
         return null;
     }
     $nomeOs = @$so_json['nomeOs'];
     if (empty($nomeOs)) {
         $logger->error("COMPUTADOR: SO vazio! So com nome vazio enviado.");
         $logger->error(print_r($so_json, true));
         return null;
     }
     $te_node_address = $rede1['mac'];
     $ip_computador = $rede1['ipv4'];
     $netmask = $rede1['netmask_ipv4'];
     $usuario = $dados['computador']['usuario'];
     $nmComputador = $dados['computador']['nmComputador'];
     $versaoAgente = $dados['computador']['versaoAgente'];
     // Atualiza versão do GerCols se existir
     if (array_key_exists('versaoGercols', $dados['computador'])) {
         $versaoGercols = $dados['computador']['versaoGercols'];
     } else {
         $versaoGercols = null;
     }
     // TESTES: Se IP for vazio, tenta pegar da conexão
     if (empty($ip_computador) || $ip_computador == '127.0.0.1') {
         $ip_computador = $request->getClientIp();
     }
     // Pega rede e SO
     $rede = $em->getRepository('CacicCommonBundle:Rede')->getDadosRedePreColeta($ip_computador, $netmask);
     $so = $em->getRepository('CacicCommonBundle:So')->createIfNotExist($nomeOs);
     $tipo = $so->getTipo();
     if (array_key_exists('tipo', $so_json)) {
         if (!empty($so_json['tipo'])) {
             $tipo_so = $em->getRepository('CacicCommonBundle:TipoSo')->createIfNotExist($so_json['tipo']);
         } else {
             // Se não encontrar o tipo considera Windows como padrão
             $tipo_so = $em->getRepository("CacicCommonBundle:TipoSo")->findOneBy(array('tipo' => 'windows'));
         }
         $so->setTipo($tipo_so);
         $em->persist($so);
     } elseif (empty($tipo)) {
         // Considera Windows por padrão
         $tipo_so = $em->getRepository("CacicCommonBundle:TipoSo")->findOneBy(array('tipo' => 'windows'));
         $so->setTipo($tipo_so);
         $em->persist($so);
     }
     // Regra: MAC e SO são únicos e não podem ser nulos
     // Se SO ou MAC forem vazios, tenta atualizar forçadamente
     if (empty($te_node_address) || empty($so)) {
         $logger->error("COMPUTADOR: Erro na identificação do computador. IP = {$ip_computador} Máscara = {$netmask}. MAC = {$te_node_address}. SO =" . $nomeOs);
         return null;
     }
     $computador = $em->getRepository('CacicCommonBundle:Computador')->findOneBy(array('teNodeAddress' => $te_node_address, 'idSo' => $so));
     $data = new \DateTime('NOW');
     //armazena data Atual
     //2 - Insere computador que não existe
     if (empty($computador)) {
         $logger->debug("Inserindo novo computador para MAC = {$te_node_address} e SO = " . $so_json['nomeOs']);
         $computador = new Computador();
         $computador->setTeNodeAddress($te_node_address);
         $computador->setIdSo($so);
         $computador->setIdRede($rede);
         $computador->setDtHrInclusao($data);
         $computador->setTeIpComputador($ip_computador);
         $computador->setDtHrUltAcesso($data);
         $computador->setTeVersaoCacic($versaoAgente);
         $computador->setTeVersaoGercols($versaoGercols);
         $computador->setNmComputador($nmComputador);
         $computador->setAtivo(true);
         if (!empty($usuario) or $usuario != "0") {
             $computador->setTeUltimoLogin($usuario);
         }
         $em->persist($computador);
     } else {
         $logger->debug("Atualizando hora de último acesso do computador para MAC = {$te_node_address} e SO = " . $so_json['nomeOs']);
         $computador->setIdSo($so);
         $computador->setIdRede($rede);
         $computador->setDtHrUltAcesso($data);
         $computador->setTeIpComputador($ip_computador);
         $computador->setTeUltimoLogin($usuario);
         $computador->setTeVersaoCacic($versaoAgente);
         $computador->setTeVersaoGercols($versaoGercols);
         $computador->setNmComputador($nmComputador);
         $computador->setAtivo(true);
         //Atualiza hora de inclusão
         $em->persist($computador);
     }
     return $computador;
 }