protected function execute(InputInterface $input, OutputInterface $output) { $name = $input->getArgument('name'); $text = "Olá {$name}"; // Conexão e execução do arquivo $cacicHelper = new OldCacicHelper($this->getContainer()->get('kernel')); $rootDir = $cacicHelper->getRootDir(); $demo = $rootDir . "/src/Cacic/CommonBundle/Resources/data/demo.sql"; $container = $this->getContainer(); // Carrega configurações do banco de dados $dbhost = $container->getParameter('database_host'); $db = $container->getParameter('database_name'); $port = $container->getParameter('database_port'); $user = $container->getParameter('database_user'); $pass = $container->getParameter('database_password'); // A única forma que encontrei foi executar manualmente o psql $exec_string = "psql -f {$demo} -U {$user} -d {$db} "; if (!empty($dbhost)) { $exec_string .= "-h {$dbhost} "; } if (!empty($port)) { $exec_string .= "-p {$port} "; } if (!empty($pass)) { // Tem que passar a senha como variável $exec("PG_PASSWORD={$pass}"); } // Manda executar o psql exec($exec_string); $force = $input->getOption('force'); $output->writeln($text); }
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; }
public function modulosNeoArray(Request $request, $nmModulos = null) { $logger = $this->get('logger'); // Abre e faz o parsing do arquivo $cacic_helper = new Helper\OldCacicHelper($this->container->get('kernel')); $iniFile = $cacic_helper->iniFile(); //$itemArray = parse_ini_file($iniFile); //$teste = parse_ini_file($iniFile, true); // Varre o diretório em busca dos módulos $rootDir = $this->container->get('kernel')->getRootDir(); $webDir = $rootDir . "/../web/"; $downloadsDir = $webDir . "downloads/"; $cacicDir = $downloadsDir . "cacic/"; $linuxDir = $cacicDir . "linux/"; $windowsDir = $cacicDir . "windows/"; $outrosDir = $downloadsDir . "outros/"; // Constrói array de arquivos e hashes $saida = array(); $base_url = $request->getBaseUrl(); $base_url = preg_replace('/\\/app.*.php/', "", $base_url); // Verifica se diretório existe $current_dir = $cacicDir . "current"; if (!file_exists($current_dir)) { $this->get('session')->getFlashBag()->add('notice', 'Não foi possível encontrar o diretório dos Agentes. Faça upload dos agentes.'); $logger->info("Não foi possível encontrar o diretório dos Agentes. Faça upload dos agentes."); return array(); } // Primeiro tratamos agentes Linux // A regra é que o agente mais atual estará na pasta current $current = basename(readlink($current_dir)); $finder = new Finder(); $finder->depth('== 0'); $finder->directories()->in($cacicDir); foreach ($finder as $version) { if ($version->getFileName() == 'current') { $tipos = new Finder(); $tipos->depth('== 0'); $tipos->directories()->in($version->getRealPath()); foreach ($tipos as $tipo_so) { // Aqui considera somente a última versão $agentes = new Finder(); $agentes->depth('== 0'); $agentes->files()->in($tipo_so->getRealPath()); foreach ($agentes as $file) { $filename = 'cacic/' . $version->getFileName() . '/' . $tipo_so->getFileName() . "/" . $file->getFileName(); if (!empty($nmModulos)) { // Filtra por nome de módulo if (!in_array($filename, $nmModulos)) { continue; } } $saida[$tipo_so->getFileName()][$file->getFileName()] = array('name' => $file->getFileName(), 'download_url' => $base_url . '/downloads/cacic/' . $version->getFileName() . '/' . $tipo_so->getFileName() . "/" . $file->getFileName(), 'hash' => md5_file($file->getRealPath()), 'size' => $file->getSize(), 'filename' => $filename, 'versao' => $current, 'tipoSo' => $tipo_so->getFileName()); } } } else { continue; } } // Retorna o array com todos os resultados return $saida; }
public function camelCaseToUnderscoreFilter($string) { return OldCacicHelper::camelCaseToUnderscore($string); }
/** * 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); }
/** * 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); }
public function getTest(Request $request) { $iniFile = $this->iniFile(); if ($iniFile) { $arrVersionsAndHashes = parse_ini_file($iniFile); return array('INSTALLCACIC.EXE_HASH' => OldCacicHelper::EnCrypt($request, $arrVersionsAndHashes['installcacic.exe_HASH'], true), 'MainProgramName' => OldCacicHelper::CACIC_MAIN_PROGRAM_NAME . '.exe', 'LocalFolderName' => OldCacicHelper::CACIC_LOCAL_FOLDER_NAME); } else { error_log("ERRO: Arquivo .ini de configuração dos binários não encontrado"); } }
/** * Método responsável por informar e coletar informações sobre dispositivos USB plugados na estação * @param Request $request */ public function gerColsSetUsbDetectAction(Request $request) { OldCacicHelper::autenticaAgente($request); $strNetworkAdapterConfiguration = OldCacicHelper::deCrypt($request, $request->get('NetworkAdapterConfiguration')); $data = new \DateTime('NOW'); $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(); } $rede = $this->getDoctrine()->getRepository('CacicCommonBundle:Rede')->getDadosRedePreColeta($ip_computador, $netmask); $te_node_address = TagValueHelper::getValueFromTags('MACAddress', $strNetworkAdapterConfiguration); $te_so = $request->get('te_so'); $so = $this->getDoctrine()->getRepository('CacicCommonBundle:So')->findOneBy(array('teSo' => $te_so)); $computador = $this->getDoctrine()->getRepository('CacicCommonBundle:Computador')->getComputadorPreCole($request, $te_so, $te_node_address, $rede, $so, $ip_computador); $local = $computador->getIdRede()->getIdLocal(); $te_usb_info = OldCacicHelper::deCrypt($request, $request->get('te_usb_info')); if ($te_usb_info != '') { $arrUsbInfo = explode('_', $te_usb_info); $arrTeUsbFilter = $this->getDoctrine()->getRepository('CacicCommonBundle:ConfiguracaoLocal')->listarNotificacaoPropertyLocal($local->getIdLocal(), 'te_usb_filter'); $arrTeNotificarUtilizacaoUSB = $this->getDoctrine()->getRepository('CacicCommonBundle:ConfiguracaoLocal')->listarNotificacaoPropertyLocal($rede->getIdLocal(), 'te_notificar_utilizacao_usb'); $arrVendorData = $this->getDoctrine()->getRepository('CacicCommonBundle:UsbVendor ')->findBy(array('idVendor' => $arrUsbInfo[2])); if (empty($arrVendorData)) { $usb_vendor = new UsbVendor(); $usb_vendor->setIdUsbVendor($arrUsbInfo[2]); $usb_vendor->setNmUsbVendor('Fabricante de Dispositivos USB Desconhecido'); $arrVendorData = $usb_vendor; } $arrDeviceData = $this->getDoctrine()->getRepository('CacicCommonBundle:UsbDevice')->findBy(array('idDevice' => $arrUsbInfo[3], 'idVendor' => $arrUsbInfo[2])); if (empty($arrDeviceData)) { $usb_device = new UsbDevice(); $usb_device->setIdUsbVendor($arrVendorData); $usb_device->setIdDevice($arrUsbInfo[3]); $usb_device->setNmUsbDevice('Dispositivo USB Desconhecido'); $arrDeviceData = $usb_device; } $usb_log = new UsbLog(); $usb_log->setIdComputador($computador); $usb_log->getCsEvent($arrUsbInfo[0]); $usb_log->setDtEvent($arrUsbInfo[1]); $usb_log->setIdUsbDevice($arrDeviceData); if (trim($arrTeUsbFilter[0]['teUsbFilter']) != '' && trim($arrTeNotificarUtilizacaoUSB[0]['teNotificarUtilizacaoUsb']) != '') { $arrUSBfilter = explode('#', $arrTeUsbFilter[0]['te_usb_filter']); $strUSBkey = $arrUsbInfo[2] . "." . $arrUsbInfo[3]; $indexOf = array_search($strUSBkey, $arrUSBfilter); if ($indexOf != -1) { $strCorpoMail = ''; $strCorpoMail .= " Prezado administrador,\n\n"; $strCorpoMail .= " foi " . ($arrUsbInfo[0] == 'I' ? 'inserido' : 'removido') . " o dispositivo '(" . $arrVendorData[0]['id_vendor'] . ")" . $arrVendorData[0]['nm_vendor'] . " / (" . $arrDeviceData[0]['id_device'] . ")" . $arrDeviceData[0]['nm_device'] . ($arrUsbInfo[0] == 'I' ? 'n' : 'd') . "a esta��o de trabalho abaixo:\n\n"; $strCorpoMail .= " Nome...........: " . $computador->getNmComputador() . "\n"; $strCorpoMail .= " Endereço IP: " . $computador->getTeIpComputador() . "\n"; $strCorpoMail .= " Rede............: " . $rede['nmRede'] . " ('" . $rede['teIpRede'] . "')\n"; $strCorpoMail .= "\n\nPara visualizar mais informações sobre esse computador, acesse o endereço\nhttp://"; $strCorpoMail .= CACIC_PATH . '/relatorios/computador/computador.php?id_computador=' . $computador->getIdComputador(); $strCorpoMail .= "\n\n\n________________________________________________\n"; $strCorpoMail .= "CACIC - " . date('d/m/Y H:i') . "h \n"; // Manda mail para os administradores. //TODO verificar Boas Praticas mail($arrTeNotificarUtilizacaoUSB[0]['te_notificar_utilizacao_usb'], "[Sistema CACIC] ".($arrUsbInfo[0] == 'I'?'Inser��o':'Remo��o')." de Dispositivo USB Detectada", "$strCorpoMail", "From: cacic@{$_SERVER['SERVER_NAME']}"); } } $nm_device = OldCacicHelper::enCrypt($request, '(' . $arrVendorData[0]['id_vendor'] . ')' . $arrVendorData[0]['nm_vendor'] . ' - (' . $arrDeviceData[0]['id_device'] . ')' . $arrDeviceData[0]['nm_device']); } $this->getDoctrine()->getManager()->flush(); //persistencia dos dados no BD $response = new Response(); $response->headers->set('Content-Type', 'xml'); $cacic_helper = new OldCacicHelper($this->get('kernel')); return $this->render('CacicWSBundle:Coleta:setusb.xml.twig', array('configs' => $cacic_helper->getTest($request), 'computador' => $computador, 'rede' => $rede, 'ws_folder' => OldCacicHelper::CACIC_WEB_SERVICES_FOLDER_NAME, 'cs_cipher' => $request->get('cs_cipher'), 'cs_compress' => $request->get('cs_compress'), 'status' => 'OK', 'nm_device' => $nm_device), $response); }