// Essas variáveis conterão os indicadores de criptografia e compactação $v_cs_cipher = (trim($_POST['cs_cipher']) <> ''?trim($_POST['cs_cipher']) : '4'); $v_cs_compress = (trim($_POST['cs_compress']) <> ''?trim($_POST['cs_compress']) : '4'); $strPaddingKey = ''; // O agente PyCACIC envia o valor "padding_key" para preenchimento da palavra chave para decriptação/encriptação if ($_POST['padding_key']) { // Valores específicos para trabalho com o PyCACIC - 04 de abril de 2008 - Rogério Lino - Dataprev/ES $strPaddingKey = $_POST['padding_key']; // A versão inicial do agente em Python exige esse complemento na chave... } autentica_agente($key,$iv,$v_cs_cipher,$v_cs_compress, $strPaddingKey); $v_dados_rede = getDadosRede(); $te_node_address = DeCrypt($key,$iv,$_POST['te_node_address'] ,$v_cs_cipher,$v_cs_compress, $strPaddingKey); $id_so_new = DeCrypt($key,$iv,$_POST['id_so'] ,$v_cs_cipher,$v_cs_compress, $strPaddingKey); $te_so = DeCrypt($key,$iv,$_POST['te_so'] ,$v_cs_cipher,$v_cs_compress, $strPaddingKey); $id_ip_rede = DeCrypt($key,$iv,$_POST['id_ip_rede'] ,$v_cs_cipher,$v_cs_compress, $strPaddingKey); $te_ip = DeCrypt($key,$iv,$_POST['te_ip'] ,$v_cs_cipher,$v_cs_compress, $strPaddingKey); $te_nome_computador = DeCrypt($key,$iv,$_POST['te_nome_computador'] ,$v_cs_cipher,$v_cs_compress, $strPaddingKey); $te_workgroup = DeCrypt($key,$iv,$_POST['te_workgroup'] ,$v_cs_cipher,$v_cs_compress, $strPaddingKey); /* Todas as vezes em que é feita a recuperação das configurações por um agente, é incluído o computador deste agente no BD, caso ainda não esteja inserido. */ if ($te_node_address <> '') { $arrSO = inclui_computador_caso_nao_exista( $te_node_address, $id_so_new,
echo '<body bgcolor='.($_SESSION['id_default_body_bgcolor']<>''?$_SESSION['id_default_body_bgcolor']:'#EBEBEB').' leftmargin="1" topmargin="0" '; if (!$_SESSION["id_grupo_usuarios"] || $_SESSION['id_grupo_usuarios']==3) { echo 'onLoad="SetaCampo('."'frm_nm_usuario_acesso'".');"'; } else if ($_SESSION["id_usuario"]) echo 'onLoad="SetaCampo('."'user_logged_in'".');"'; echo '>'; ?> <script language="JavaScript" type="text/javascript" src="include/cacic.js"></script> <script language="JavaScript" type="text/javascript" src="include/crypt.js"></script> <p class="menu"> <? if (!$_SESSION["id_usuario"]) { $v_dados_rede = getDadosRede(); // _SERVER["REMOTE_ADDR"]... PegaConfiguracoesLocais($v_dados_rede['id_local']); if ($v_dados_rede['id_ip_rede'] && $v_dados_rede['nm_local']) { $_SESSION["id_grupo_usuarios"] = 3; // Convidado $_SESSION["nm_usuario"] = ''; $_SESSION["menu_usuario"] = getMenu("menu_con.txt"); $_SESSION["id_usuario"] = 1; $_SESSION["id_local"] = $v_dados_rede['id_local']; $_SESSION["nm_local"] = $v_dados_rede['nm_local']; $_SESSION["sg_local"] = $v_dados_rede['sg_local']; $_SESSION["cs_nivel_administracao"] = 0; ?> <SCRIPT LANGUAGE="Javascript"> top.location = 'index.php';
function inclui_computador_caso_nao_exista($te_node_address, $id_so_new, $te_so_new, $id_ip_rede, $te_ip, $te_nome_computador, $te_workgroup) { $v_te_ip = $te_ip; // ...caso o IP esteja inválido, obtenho-o a partir de variável do servidor // Tudo bem! Ainda vou implementar usando expressões regulares!!! :) if (substr_count($v_te_ip, 'zf') > 0 || trim($v_te_ip) == '') { $v_te_ip = $_SERVER['REMOTE_ADDR']; } /* GravaTESTES('Library_iccne: Script Chamador: '.$_SERVER['REQUEST_URI']); GravaTESTES('Library_iccne: v_te_ip: '.$v_te_ip); GravaTESTES('Library_iccne: te_node_address: '.$te_node_address); GravaTESTES('Library_iccne: id_so_new: '.$id_so_new); GravaTESTES('Library_iccne: te_so_new: '.$te_so_new); GravaTESTES('Library_iccne: id_ip_rede: '.$id_ip_rede); GravaTESTES('Library_iccne: te_ip: '.$te_ip); GravaTESTES('Library_iccne: te_nome_computador: '.$te_nome_computador); GravaTESTES('Library_iccne: te_workgroup: '.$te_workgroup); */ $arrSO = getValores('so', 'id_so', 'id_so = ' . $id_so_new); $id_so = $arrSO['id_so']; $arrSO = getValores('so', 'te_so', 'te_so = "' . $te_so_new . '"'); $te_so = $arrSO['te_so']; conecta_bd_cacic(); if ($te_so == '' && $id_so != '' && $id_so != 0 && $te_so_new != '') { $te_so = $te_so_new; $query = 'UPDATE so SET te_so = "' . $te_so_new . '" WHERE id_so = ' . $id_so; $result = mysql_query($query); } elseif ($te_so != '' && ($id_so == '' || $id_so == 0)) { $query = 'SELECT id_so FROM so WHERE te_so = "' . $te_so . '"'; $result = mysql_query($query); $row = mysql_fetch_array($result); $id_so = $row['id_so']; } if ($te_so == '' && ($id_so == '' || $id_so == 0)) { if ($te_so_new != '' && ($id_so_new != '' && $id_so_new != 0) || $te_so_new != '') { if ($id_so == 0 || $id_so == '') { // Busco o último valor do Identificador Externo caso não tenha recebido valor para o ID Externo $querySEL = 'SELECT max(id_so) as MaxIdSo FROM so'; $resultSEL = mysql_query($querySEL); $rowSEL = mysql_fetch_array($resultSEL); $id_so = $rowSEL['MaxIdSo'] + 1; } else { $id_so = $id_so_new; } // Insiro a informação na tabela de Sistemas Operacionais incrementando o Identificador Externo $queryINS = 'INSERT INTO so(id_so,te_desc_so,sg_so,te_so) VALUES (' . $id_so . ',"S.O. a Cadastrar","Sigla a Cadastrar","' . $te_so_new . '")'; //GravaTESTES('Library_iccne_queryINS: '.$queryINS); $resultINS = mysql_query($queryINS); // Carrego os dados referente à rede da estação $v_dados_rede = getDadosRede(); // Verifico pelo local se há coletas configuradas e acrescento o S.O. à tabela de ações $querySEL = 'SELECT id_acao FROM acoes_so WHERE id_local = ' . $v_dados_rede['id_local'] . ' GROUP BY id_acao'; //GravaTESTES('Library_iccne_querySEL: '.$querySEL); $resultSEL = mysql_query($querySEL); // Caso existam ações configuradas para o local, incluo o S.O. para que também execute-as... $strInsereID = ''; while ($rowSEL = mysql_fetch_array($resultSEL)) { $strInsereID .= $strInsereID != '' ? ',' : ''; $strInsereID .= '(' . $v_dados_rede['id_local'] . ',' . $rowSEL['id_acao'] . ',' . $id_so . ')'; } if ($strInsereID != '') { $queryINS = 'INSERT INTO acoes_so(id_local, id_acao, id_so) VALUES ' . $strInsereID; $resultINS = mysql_query($queryINS); } } } $arrRetorno = array('id_so' => '', 'te_so' => ''); if ($id_so > 0 && $te_node_address != '') { $checa_existe = computador_existe($te_node_address, $id_so); if ($checa_existe == '0') { $query = 'INSERT INTO computadores (te_node_address, id_so, te_so, id_ip_rede, te_ip, te_nome_computador, te_workgroup, dt_hr_inclusao, dt_hr_ult_acesso) VALUES ("' . $te_node_address . '", "' . $id_so . '","' . $te_so . '", "' . $id_ip_rede . '","' . $v_te_ip . '","' . $te_nome_computador . '","' . $te_workgroup . '", NOW(), NOW())'; } elseif ($checa_existe == '2') { $query = 'UPDATE computadores SET id_ip_rede = "' . $id_ip_rede . '", te_ip = "' . $v_te_ip . '", te_so = "' . $te_so . '", te_nome_computador="' . $te_nome_computador . '", te_workgroup="' . $te_workgroup . '" WHERE te_node_address = "' . $te_node_address . '" AND id_so = "' . $id_so . '"'; } //GravaTESTES('Library_iccne_QUERY : '.$query); $result = mysql_query($query); $arrRetorno = array('id_so' => $id_so, 'te_so' => $te_so); // OK! O computador foi INCLUIDO/ATUALIZADO. // Removo qualquer registro de insucesso na instalação existente para o IP + SO (!!!) $query = 'DELETE FROM insucessos_instalacao WHERE te_ip = "' . $v_te_ip . '" AND te_so = "' . $te_so . '"'; // Talvez eu melhore esta cláusula mais tarde $result = mysql_query($query); } // ****************************************************************************************************************************** // ****************************************************************************************************************************** // Novo Conceito: // As estações poderão ter uma licença MS-Windows e n sabores de Linux // Desta forma, será customizada a ocupação do banco e será mantida a versão do S.O. mais atual para fins de Gestão de Licenças e // estatísticas // // Anderson Peterle - Dataprev/ES - 01/08/2008 12:04h // ****************************************************************************************************************************** // ****************************************************************************************************************************** $arrSO = getValores('so', 'in_mswindows', 'te_so = "' . $te_so_new . '"'); $in_mswindows = $arrSO['in_mswindows']; if ($in_mswindows == 'S') { $arrSO = getValores('so', 'id_so', 'te_so = "' . $te_so_new . '"'); $id_so = $arrSO['id_so']; if (ChecaSO($te_node_address, $id_so)) { //GravaTESTES('***** Forçando coletas ANVI COMP HARD MONI SOFT UNDI para a estação *****'); $query = ' UPDATE computadores SET dt_hr_coleta_forcada_estacao = now(), te_nomes_curtos_modulos="COMP#HARD#SOFT#ANVI#MONI#UNDI" WHERE te_node_address="' . $te_node_address . '" AND id_so=' . $id_so; $result = mysql_query($query); //GravaTESTES('======================================================================'); } } // ****************************************************************************************************************************** // ****************************************************************************************************************************** return $arrRetorno; }
} $boolAgenteLinux = (trim(DeCrypt($key,$iv,$_POST['AgenteLinux'],$v_cs_cipher,$v_cs_compress,$strPaddingKey)) <> ''?true:false); // Obtenho o IP da estação por meio da decriptografia... $v_id_ip_estacao = trim(DeCrypt($key,$iv,$_POST['id_ip_estacao'],$v_cs_cipher,$v_cs_compress,$strPaddingKey)); // ...caso o IP esteja inválido, obtenho-o a partir de variável do servidor if (substr_count($v_id_ip_estacao,'zf')>0 || trim($v_id_ip_estacao)=='') $v_id_ip_estacao = $_SERVER['REMOTE_ADDR']; $v_id_ip_estacao = $_SERVER['REMOTE_ADDR']; //LimpaTESTES(); $v_dados_rede = getDadosRede($v_id_ip_estacao); // Essa condição testa se foi o "chkcacic" chamado para instalação ou o "Gerente de Coletas" para validar IP da estação... if (trim(DeCrypt($key,$iv,$_POST['in_chkcacic'],$v_cs_cipher,$v_cs_compress,$strPaddingKey))=='chkcacic' || trim(DeCrypt($key,$iv,$_POST['in_teste'] ,$v_cs_cipher,$v_cs_compress,$strPaddingKey))=='OK') { $retorno_xml_values .= '<TE_REDE_OK>' . EnCrypt($key,$iv,($v_dados_rede['id_ip_rede'] <> ''?'S':'N'),$v_cs_cipher,$v_cs_compress,$v_compress_level,$strPaddingKey). '</TE_REDE_OK>'; if (trim(DeCrypt($key,$iv,$_POST['in_chkcacic'],$v_cs_cipher,$v_cs_compress,$strPaddingKey))=='chkcacic') { // Retorno as versões dos três principais agentes ao CHKCACIC para que sejam verificadas... $MainFolder = GetMainFolder(); $v_array_versoes_agentes = array(); if (file_exists($MainFolder . '/repositorio/versoes_agentes.ini')) { $v_array_versoes_agentes = parse_ini_file($MainFolder . '/repositorio/versoes_agentes.ini');