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; }
/** * Método responsável por verificar e e enviar os Hashes ao Agente CACIC * @param Symfony\Component\HttpFoundation\Request $request */ public function updateAction(Request $request) { $logger = $this->get('logger'); OldCacicHelper::autenticaAgente($request); $strNetworkAdapterConfiguration = OldCacicHelper::deCrypt($request, $request->get('NetworkAdapterConfiguration')); $te_node_address = TagValueHelper::getValueFromTags('MACAddress', $strNetworkAdapterConfiguration); $netmask = TagValueHelper::getValueFromTags('IPSubnet', $strNetworkAdapterConfiguration); $ip_computador = $request->get('te_ip_computador'); if (empty($ip_computador)) { $ip_computador = TagValueHelper::getValueFromTags('IPAddress', $strNetworkAdapterConfiguration); } if (empty($ip_computador) or $ip_computador == '127.0.0.1') { $ip_computador = $request->getClientIp(); } /** * Caso não tenha encontrado, tenta pegar a variável da requisição */ if (empty($te_node_address)) { $te_node_address = $request->get('te_node_address'); } if (empty($netmask)) { $netmask = $request->get('netmask'); } /** * Executa atualização forçada se algum dos parâmetros obrigatórios estiver vazio */ $rede = $this->getDoctrine()->getRepository('CacicCommonBundle:Rede')->getDadosRedePreColeta($ip_computador, $netmask); $local = $rede->getIdLocal(); $configs = $this->getDoctrine()->getRepository('CacicCommonBundle:ConfiguracaoLocal')->listarPorLocal($local->getIdLocal()); $rede = $this->getDoctrine()->getRepository('CacicCommonBundle:Rede')->getDadosRedePreColeta($ip_computador, $netmask); $redes_versoes_modulos = $this->getDoctrine()->getRepository('CacicCommonBundle:RedeVersaoModulo')->findBy(array('idRede' => $rede->getIdRede())); $nm_user_login_updates = OldCacicHelper::enCrypt($request, $rede->getNmUsuarioLoginServUpdates()); $senha_serv_updates = OldCacicHelper::enCrypt($request, $rede->getTeSenhaLoginServUpdates()); $logger->debug("Teste de Conexão GET-UPDATE! Ip do computador: {$ip_computador} Máscara da rede: {$netmask} MAC Address: {$te_node_address}"); $response = new Response(); $response->headers->set('Content-Type', 'xml'); return $this->render('CacicWSBundle:Default:update.xml.twig', array('configs' => $configs, 'rede' => $rede, 'redes_versoes_modulos' => $redes_versoes_modulos, 'main_program' => OldCacicHelper::CACIC_MAIN_PROGRAM_NAME . '.exe', 'folder_name' => OldCacicHelper::CACIC_LOCAL_FOLDER_NAME, 'nm_user_login_updates' => $nm_user_login_updates, 'senha_serv_updates' => $senha_serv_updates, 'cs_compress' => $request->get('cs_compress'), 'cs_cipher' => $request->get('cs_cipher'), 'ws_folder' => OldCacicHelper::CACIC_WEB_SERVICES_FOLDER_NAME), $response); }
/** * Método responsável por enviar as configurações de Patrimônio necessarias ao Agente CACIC * @param Symfony\Component\HttpFoundation\Request $request */ public function mapaAction(Request $request) { $logger = $this->get('logger'); $em = $this->getDoctrine()->getManager(); OldCacicHelper::autenticaAgente($request); $strNetworkAdapterConfiguration = OldCacicHelper::deCrypt($request, $request->get('NetworkAdapterConfiguration')); $strComputerSystem = OldCacicHelper::deCrypt($request, $request->get('ComputerSystem')); $strOperatingSystem = OldCacicHelper::deCrypt($request, $request->request->get('OperatingSystem')); $te_node_address = TagValueHelper::getValueFromTags('MACAddress', $strNetworkAdapterConfiguration); $netmask = TagValueHelper::getValueFromTags('IPSubnet', $strNetworkAdapterConfiguration); $te_so = $request->get('te_so'); $ultimo_login = TagValueHelper::getValueFromTags('UserName', $strComputerSystem); $ip_computador = $request->get('te_ip_computador'); $versaoAgente = $request->get('te_versao_cacic'); if (empty($ip_computador)) { $ip_computador = TagValueHelper::getValueFromTags('IPAddress', $strNetworkAdapterConfiguration); } if (empty($ip_computador)) { $ip_computador = $request->getClientIp(); } // Caso não tenha encontrado, tenta pegar a variável da requisição if (empty($te_node_address)) { $te_node_address = $request->get('te_node_address'); } if (empty($netmask)) { $netmask = $request->get('netmask'); } //vefifica se existe SO coletado se não, insere novo SO $so = $em->getRepository('CacicCommonBundle:So')->createIfNotExist($te_so); $rede = $em->getRepository('CacicCommonBundle:Rede')->getDadosRedePreColeta($ip_computador, $netmask); // Retorna falso por padrão $modPatrimonio = "false"; if (empty($te_node_address) || empty($so)) { $this->get('logger')->error("Erro na operação de getMapa. IP = {$ip_computador} Máscara = {$netmask}. MAC = {$te_node_address}. SO = {$te_so}"); $response = new Response(); $response->headers->set('Content-Type', 'xml'); return $this->render('CacicWSBundle:Default:mapa.xml.twig', array('mensagem' => "", 'modPatrimonio' => "false"), $response); } $computador = $em->getRepository('CacicCommonBundle:Computador')->getComputadorPreCole($request, $te_so, $te_node_address, $rede, $so, $ip_computador); $idComputador = $computador->getIdComputador(); $logger->debug("Teste de Conexão GET-MAPA ! Ip do computador: {$ip_computador} Máscara da rede: {$netmask} MAC Address: {$te_node_address} ID Computador: {$idComputador}"); $patr = $em->getRepository('CacicCommonBundle:AcaoRede')->findOneBy(array('rede' => $rede->getIdRede(), 'acao' => 'col_patr')); /** * Se o módulo estiver habilitado, verifica se existe coleta de patrimônio */ if (!empty($patr)) { $result = $em->getRepository('CacicCommonBundle:ComputadorColeta')->getDadosColetaComputador($computador, 'Patrimonio'); /** * Caso não exista nenhuma coleta, envia "true" para o agente. */ if (empty($result)) { $logger->debug("COLETA DE PATRIMÔNIO INEXISTENTE!!! COLETANDO..."); $modPatrimonio = "true"; } } /** * Força coleta do patrimônio */ $forcaPatrimonio = $computador->getForcaPatrimonio(); if ($forcaPatrimonio == "S") { $logger->debug("COLETA FORÇADA DE PATRIMÔNIO: {$forcaPatrimonio}"); $modPatrimonio = "true"; $computador->setForcaPatrimonio('N'); $em->persist($computador); } $em->flush(); /** * Mensagem a ser exibida na tela de Pop-Up do patrimônio */ $mensagem = $em->getRepository('CacicCommonBundle:ConfiguracaoPadrao')->findOneBy(array('idConfiguracao' => 'msg_popup_patrimonio')); if (!empty($mensagem)) { $mensagem = $mensagem->getVlConfiguracao(); } else { $mensagem = "Pop-up de patrimônio"; } //$mensagem = implode('',$mensagem); $logger->debug("RESULTADO DO PATRIMÔNIO: {$modPatrimonio}"); // Retorna patrimônio $response = new Response(); $response->headers->set('Content-Type', 'xml'); return $this->render('CacicWSBundle:Default:mapa.xml.twig', array('mensagem' => $mensagem, 'modPatrimonio' => $modPatrimonio), $response); }
/** * Processa parâmetros da coleta de software * * @param $strNewClassValues * @param $arrCollectsDefClasses * @param $strCollectType * @param $strClassName */ public function coletaSoftware($strNewClassValues, $arrCollectsDefClasses, $strCollectType, $strClassName, $computador) { $logger = $this->get('logger'); // Primeiro preciso pegar todas as tags que forem software $arrSoftware = TagValueHelper::getSoftwareTags($strNewClassValues); // Agora insere cada registro de software individualmente foreach ($arrSoftware as $software) { // Armazeno todas as propriedades dessa classe enviadas pela requisição $arrTags = TagValueHelper::getTagsFromValues($software); // Crio um array multidimensional com as tags e os valores foreach ($arrTags as $tagNames) { // Essa função garante que só serão retornados caracteres com UTF8 Válido $texto = TagValueHelper::UTF8Sanitize(TagValueHelper::getValueFromTags($tagNames, $software)); $arrTagsNames[$tagNames] = $texto; } // Para software, cada identificador será uma propriedade $softwareName = $arrTagsNames['IDSoftware']; // Remove o IDSoftware do array unset($arrTagsNames['IDSoftware']); // Armazeno o IDSoftware como Propriedade $idClassProperty = $arrCollectsDefClasses[$strCollectType][$strClassName][$softwareName]['idClassProperty']; // Se o IDSoftware não existir, cria if (empty($idClassProperty)) { $logger->debug("Software {$softwareName} não encontrado. Adicionando um novo software"); // Pega o Id da classe $idClass = $this->getDoctrine()->getRepository('CacicCommonBundle:Classe')->findOneBy(array('nmClassName' => $strClassName)); $property = new ClassProperty(); $property->setNmPropertyName($softwareName); $property->setTePropertyDescription($arrTagsNames['DisplayName']); // Referência à classe $property->setIdClass($idClass); // Grava a propriedade nova $this->getDoctrine()->getManager()->persist($property); $this->getDoctrine()->getManager()->flush(); // Retorna o novo ID $idClassProperty = $property->getIdClassProperty(); } // Chama função que grava a propriedade $this->gerColsSetProperty('IDSoftware', $software, $idClassProperty, $computador); // Agora gravo todas as propriedades para o software na tabela propriedade_software $propriedadeSoftware = $this->getDoctrine()->getRepository('CacicCommonBundle:PropriedadeSoftware')->findOneBy(array('classProperty' => $idClassProperty, 'computador' => $computador)); $classPropertyObject = $this->getDoctrine()->getRepository('CacicCommonBundle:ClassProperty')->findOneBy(array('idClassProperty' => $idClassProperty)); if (empty($propriedadeSoftware)) { // Se não tiver nome coloco o ID Software no nome if (empty($arrTagsNames['DisplayName'])) { $nmSoftware = $softwareName; } else { $nmSoftware = $arrTagsNames['DisplayName']; } $softwareObject = $this->getDoctrine()->getRepository('CacicCommonBundle:Software')->findOneBy(array('nmSoftware' => $nmSoftware)); if (empty($softwareObject)) { $softwareObject = new Software(); // Se não tiver nome coloco o ID Software no nome if (empty($arrTagsNames['DisplayName'])) { $softwareObject->setNmSoftware($softwareName); } else { $softwareObject->setNmSoftware($arrTagsNames['DisplayName']); } // Grava software recém inserido $this->getDoctrine()->getManager()->persist($softwareObject); $this->getDoctrine()->getManager()->flush(); } // Depois adiciono as propriedades $propriedadeSoftware = new PropriedadeSoftware(); $propriedadeSoftware->setClassProperty($classPropertyObject); $propriedadeSoftware->setComputador($computador); // Ajusta valores coletados $propriedadeSoftware->setDisplayName($arrTagsNames['DisplayName']); $propriedadeSoftware->setDisplayVersion($arrTagsNames['DisplayVersion']); $propriedadeSoftware->setURLInfoAbout($arrTagsNames['URLInfoAbout']); $propriedadeSoftware->setSoftware($softwareObject); // Grava no banco de dados $this->getDoctrine()->getManager()->persist($propriedadeSoftware); $this->getDoctrine()->getManager()->flush(); } else { // Se não tiver nome coloco o ID Software no nome if (empty($arrTagsNames['DisplayName'])) { $nmSoftware = $softwareName; } else { $nmSoftware = $arrTagsNames['DisplayName']; } // Adiciona referência à tabela de softwares $softwareObject = $this->getDoctrine()->getRepository('CacicCommonBundle:Software')->findOneBy(array('nmSoftware' => $nmSoftware)); if (empty($softwareObject)) { $softwareObject = new Software(); // Se não tiver nome coloco o ID Software no nome if (empty($arrTagsNames['DisplayName'])) { $softwareObject->setNmSoftware($softwareName); } else { $softwareObject->setNmSoftware($arrTagsNames['DisplayName']); } // Grava software recém inserido $this->getDoctrine()->getManager()->persist($softwareObject); $this->getDoctrine()->getManager()->flush(); } // Ajusta valores coletados $propriedadeSoftware->setDisplayName($arrTagsNames['DisplayName']); $propriedadeSoftware->setDisplayVersion($arrTagsNames['DisplayVersion']); $propriedadeSoftware->setURLInfoAbout($arrTagsNames['URLInfoAbout']); $propriedadeSoftware->setSoftware($softwareObject); // Salva valor da coleta $this->getDoctrine()->getManager()->persist($propriedadeSoftware); $this->getDoctrine()->getManager()->flush(); } } }