set_hardware.php 13.5 KB
<? 
 /* 
 Copyright 2000, 2001, 2002, 2003, 2004, 2005 Dataprev - Empresa de Tecnologia e Informações da Previdência Social, Brasil

 Este arquivo é parte do programa CACIC - Configurador Automático e Coletor de Informações Computacionais

 O CACIC é um software livre; você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU como 
 publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença, ou (na sua opnião) qualquer versão.

 Este programa é distribuido na esperança que possa ser  util, mas SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
 MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes.

 Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "LICENCA.txt", junto com este programa, se não, escreva para a Fundação do Software
 Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
// Definição do nível de compressão (Default=máximo)
//$v_compress_level = '9';
$v_compress_level = '0';
 
require_once('../include/library.php');

// 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');

autentica_agente($key,$iv,$v_cs_cipher,$v_cs_compress);

$te_node_address 	= DeCrypt($key,$iv,$_POST['te_node_address']	,$v_cs_cipher, $v_cs_compress); 
$id_so_new         	= DeCrypt($key,$iv,$_POST['id_so']				,$v_cs_cipher, $v_cs_compress); 
$te_so           	= DeCrypt($key,$iv,$_POST['te_so']				,$v_cs_cipher, $v_cs_compress); 
$id_ip_rede     	= DeCrypt($key,$iv,$_POST['id_ip_rede']			,$v_cs_cipher, $v_cs_compress);
$te_ip 				= DeCrypt($key,$iv,$_POST['te_ip']				,$v_cs_cipher, $v_cs_compress); 
$te_nome_computador	= DeCrypt($key,$iv,$_POST['te_nome_computador']	,$v_cs_cipher, $v_cs_compress); 
$te_workgroup 		= DeCrypt($key,$iv,$_POST['te_workgroup']		,$v_cs_cipher, $v_cs_compress); 

/* 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 <> '')
	{ 
	$id_so = inclui_computador_caso_nao_exista(	$te_node_address, 
												$id_so_new, 
												$te_so, 										
												$id_ip_rede, 
												$te_ip, 
												$te_nome_computador, 
												$te_workgroup);										

	conecta_bd_cacic();

	/* A consulta abaixo é usada para identificar se é um atualização das informações de hardware 
	   ou uma inclusão. Apenas são notificadas as alterações de hardware.
	 Atenção: não use o count (*) - Com espaço entre o count e o (*)				 */
	// Atualização das informações de hardware (e não inclusão).  
	$query = "SELECT COUNT(*) 
			  FROM historico_hardware 
			  WHERE te_node_address = '" . $te_node_address . "'
			  AND id_so = '" . $id_so . "'";
	$result = mysql_query($query);
	if (mysql_num_rows($result) > 0) 
		{  
		$v_dados_rede = getDadosRede();
	    // Agora, verifica se os administradores deverão ser notificados da alteração na configuração de hardware.
	  	if (trim($destinatarios = get_valor_campo('configuracoes_locais', 'te_notificar_mudanca_hardware','id_local='.$v_dados_rede['id_local'])) <> '') 
			{
	        /* Consulto todos os hardwares que foram selecionados para notificacao. Isso é setado pelo administrador na página de 'Configurações Gerais'.*/ 
			$query = "SELECT 	nm_campo_tab_hardware, te_desc_hardware
					  FROM 		descricao_hardware 
					  WHERE 	te_locais_notificacao_ativada like '%,".$v_dados_rede['id_local'].",%'";
			$result_hardwares_selecionados = mysql_query($query) or die('Ocorreu um erro durante a consulta à tabela descricao_hardware.');
	
			/* Agora seleciono as colunas que serão consultadas na tabela 'computadores', para verificar as 
				configurações de hardware atuais. 
				Aproveito esse mesmo loop para criar um array que tem nm_campo_tab_hardware => te_desc_hardware.
			*/ 
			while($campos_hardwares_selecionados = mysql_fetch_array($result_hardwares_selecionados)) 
				{
				$sql_aux = $sql_aux . $campos_hardwares_selecionados['nm_campo_tab_hardware'] . ','; 
				$descricao_campo[$campos_hardwares_selecionados[nm_campo_tab_hardware]] = $campos_hardwares_selecionados[te_desc_hardware];
				}
			$sql_aux = substr($sql_aux, 0, strlen($sql_aux)-1);	 // Tiro a última vírgula
	
				/* Agora identifico quais são as configurações de hardware atualmente armazenadas no BD. */ 
			$query = 'SELECT 	' . $sql_aux . " 
					  FROM 		computadores
					  WHERE 	te_node_address = '" . $te_node_address . "' AnD 
								id_so = '" . $id_so . "'";
			$result = mysql_query($query);
			$campos = mysql_fetch_array($result);
	
			// Varre todos os campos e verifica quais foram os que sofreram alterações, para montar o e-mail.
			$cont_aux = 0;
			$campos_alterados = '';
			for ($i=0; $i < mysql_num_fields($result); $i++) 
				{
				$nome_campo = mysql_field_name($result, $i); 
				$tam_campo = mysql_field_len($result, $i); 
				if (($campos[$nome_campo] <> substr(DeCrypt($key,$iv,$_POST[$nome_campo],$v_cs_cipher,$v_cs_compress), 0, $tam_campo)) && ($nome_campo != 'dt_hr_alteracao') && ($nome_campo != 'te_cpu_freq') ) 
					{
					$cabecalho_campo = $descricao_campo[$nome_campo] . ' (' . $nome_campo . ')';
					$campos_alterados =  $campos_alterados . $cabecalho_campo . "\n" . str_repeat('-', strlen($cabecalho_campo)) .  "\nValor Anterior.: " . $campos[$nome_campo] . "\nNovo Valor.....: " . DeCrypt($key,$iv,$_POST[$nome_campo],$v_cs_cipher,$v_cs_compress) . "\n\n";
					$cont_aux++;
					}
				}
					
			//Recupero informações sobre o computador, para montar o cabeçalho do e-mail.
			$query = "SELECT 	te_nome_computador, id_ip_rede, te_ip 
					  FROM 		computadores 
					  WHERE 	te_node_address = '" . $te_node_address . "' AND 
								id_so = '" . $id_so . "'";
			$result = mysql_query($query);
	
			 if ($cont_aux > 0) 
				{ 
				$corpo_mail = "Prezado administrador,\n		  
	Foi identificada uma alteração na configuração de hardware do seguinte computador:\n
	Nome...........: ". mysql_result( $result, 0, "te_nome_computador" ) ." 
	Endereço TCP/IP: ". mysql_result( $result, 0, "te_ip" ) . "
	Rede...........: ". mysql_result( $result, 0, "id_ip_rede" ) ."\n
	As configurações que sofreram alterações estão relacionadas abaixo:\n\n" . 
	$campos_alterados .
	"\n\nPara visualizar mais informações sobre esse computador, acesse o endereço\nhttp://" .
	$_SERVER['SERVER_ADDR'] . '/cacic2/relatorios/computador/computador.php?te_node_address=' . $te_node_address . '&id_so=' . $id_so .
	"\n\n________________________________________________
	CACIC - " . date('d/m/Y H:i') . 'h
	Desenvolvido pelo Escritório da Dataprev do ES';
	
				// Manda mail para os administradores.
				mail("$destinatarios", "Alteracao de Hardware Detectada", "$corpo_mail", "From: cacic@{$_SERVER['SERVER_NAME']}");
	
				//echo $corpo_mail;
				//Simulação de agente em browser.  É necessário inibir a linha autentica_agente() no início do script.
				
				// Inclui as informações do novo hardware no histórico e atualiza as informações do computador.
				$query = "INSERT INTO historico_hardware 
														(te_node_address,
															id_so,
															dt_hr_alteracao,
															te_placa_rede_desc,
															te_mem_ram_desc,
															qt_mem_ram,
															te_cpu_serial,
															te_cpu_fabricante,
															te_cpu_desc,
															te_cpu_freq,
															te_bios_desc,
															te_bios_data,
															te_bios_fabricante,
															te_placa_mae_desc,
															te_placa_mae_fabricante,
															qt_placa_video_mem,
															qt_placa_video_cores,
															te_placa_video_desc,
															te_placa_video_resolucao,
															te_placa_som_desc,
															te_cdrom_desc,
															te_teclado_desc,
															te_mouse_desc,
															te_modem_desc)											
						 VALUES ('" . $te_node_address . "', 
								 '" . $id_so . "',
															NOW(),
															'" . DeCrypt($key,$iv,$_POST['te_placa_rede_desc']		,$v_cs_cipher,$v_cs_compress) . "', 
															'" . DeCrypt($key,$iv,$_POST['te_mem_ram_desc']			,$v_cs_cipher,$v_cs_compress) . "', 
															'" . DeCrypt($key,$iv,$_POST['qt_mem_ram']				,$v_cs_cipher,$v_cs_compress) . "', 
															'" . DeCrypt($key,$iv,$_POST['te_cpu_serial']			,$v_cs_cipher,$v_cs_compress) . "', 
															'" . DeCrypt($key,$iv,$_POST['te_cpu_fabricante']		,$v_cs_cipher,$v_cs_compress) . "', 
															'" . DeCrypt($key,$iv,$_POST['te_cpu_desc']				,$v_cs_cipher,$v_cs_compress) . "', 
															'" . DeCrypt($key,$iv,$_POST['te_cpu_freq']				,$v_cs_cipher,$v_cs_compress) . "',
															'" . DeCrypt($key,$iv,$_POST['te_bios_desc']			,$v_cs_cipher,$v_cs_compress) . "',
															'" . DeCrypt($key,$iv,$_POST['te_bios_data']			,$v_cs_cipher,$v_cs_compress) . "',
															'" . DeCrypt($key,$iv,$_POST['te_bios_fabricante']		,$v_cs_cipher,$v_cs_compress) . "',
															'" . DeCrypt($key,$iv,$_POST['te_placa_mae_desc']		,$v_cs_cipher,$v_cs_compress) . "',
															'" . DeCrypt($key,$iv,$_POST['te_placa_mae_fabricante']	,$v_cs_cipher,$v_cs_compress) . "',
															'" . DeCrypt($key,$iv,$_POST['qt_placa_video_mem']		,$v_cs_cipher,$v_cs_compress) . "',
															'" . DeCrypt($key,$iv,$_POST['qt_placa_video_cores']	,$v_cs_cipher,$v_cs_compress) . "',
															'" . DeCrypt($key,$iv,$_POST['te_placa_video_desc']		,$v_cs_cipher,$v_cs_compress) . "',
															'" . DeCrypt($key,$iv,$_POST['te_placa_video_resolucao'],$v_cs_cipher,$v_cs_compress) . "',
															'" . DeCrypt($key,$iv,$_POST['te_placa_som_desc']		,$v_cs_cipher,$v_cs_compress) . "',
															'" . DeCrypt($key,$iv,$_POST['te_cdrom_desc']			,$v_cs_cipher,$v_cs_compress) . "',
															'" . DeCrypt($key,$iv,$_POST['te_teclado_desc']			,$v_cs_cipher,$v_cs_compress) . "',
															'" . DeCrypt($key,$iv,$_POST['te_mouse_desc']			,$v_cs_cipher,$v_cs_compress) . "',
															'" . DeCrypt($key,$iv,$_POST['te_modem_desc']			,$v_cs_cipher,$v_cs_compress) . "')";																						
				$result = mysql_query($query);
				
				}
			}
		}
	
	
	// Lembre-se de que o computador já existe. Ele é criado durante a obtenção das configurações, no arquivo get_config.php.
	$query = "UPDATE computadores 
											SET	te_placa_rede_desc       			 = '" . DeCrypt($key,$iv,$_POST['te_placa_rede_desc']		,$v_cs_cipher,$v_cs_compress) . "', 
															te_mem_ram_desc          = '" . DeCrypt($key,$iv,$_POST['te_mem_ram_desc']			,$v_cs_cipher,$v_cs_compress) . "', 
															qt_mem_ram               = '" . DeCrypt($key,$iv,$_POST['qt_mem_ram']				,$v_cs_cipher,$v_cs_compress) . "',
															te_cpu_serial            = '" . DeCrypt($key,$iv,$_POST['te_cpu_serial']			,$v_cs_cipher,$v_cs_compress) . "',
															te_cpu_fabricante        = '" . DeCrypt($key,$iv,$_POST['te_cpu_fabricante']		,$v_cs_cipher,$v_cs_compress) . "',
															te_cpu_desc              = '" . DeCrypt($key,$iv,$_POST['te_cpu_desc']				,$v_cs_cipher,$v_cs_compress) . "',
															te_cpu_freq              = '" . DeCrypt($key,$iv,$_POST['te_cpu_freq']				,$v_cs_cipher,$v_cs_compress) . "',
															te_bios_desc             = '" . DeCrypt($key,$iv,$_POST['te_bios_desc']				,$v_cs_cipher,$v_cs_compress) . "',
															te_bios_data             = '" . DeCrypt($key,$iv,$_POST['te_bios_data']				,$v_cs_cipher,$v_cs_compress) . "',
															te_bios_fabricante       = '" . DeCrypt($key,$iv,$_POST['te_bios_fabricante']		,$v_cs_cipher,$v_cs_compress) . "',
															te_placa_mae_desc        = '" . DeCrypt($key,$iv,$_POST['te_placa_mae_desc']		,$v_cs_cipher,$v_cs_compress) . "',
															te_placa_mae_fabricante  = '" . DeCrypt($key,$iv,$_POST['te_placa_mae_fabricante']	,$v_cs_cipher,$v_cs_compress) . "',
															qt_placa_video_mem       = '" . DeCrypt($key,$iv,$_POST['qt_placa_video_mem']		,$v_cs_cipher,$v_cs_compress) . "',
															qt_placa_video_cores     = '" . DeCrypt($key,$iv,$_POST['qt_placa_video_cores']		,$v_cs_cipher,$v_cs_compress) . "',
															te_placa_video_desc      = '" . DeCrypt($key,$iv,$_POST['te_placa_video_desc']		,$v_cs_cipher,$v_cs_compress) . "',
															te_placa_video_resolucao = '" . DeCrypt($key,$iv,$_POST['te_placa_video_resolucao']	,$v_cs_cipher,$v_cs_compress) . "',
															te_placa_som_desc        = '" . DeCrypt($key,$iv,$_POST['te_placa_som_desc']		,$v_cs_cipher,$v_cs_compress) . "',
															te_cdrom_desc            = '" . DeCrypt($key,$iv,$_POST['te_cdrom_desc']			,$v_cs_cipher,$v_cs_compress) . "',
															te_teclado_desc          = '" . DeCrypt($key,$iv,$_POST['te_teclado_desc']			,$v_cs_cipher,$v_cs_compress) . "',
															te_mouse_desc            = '" . DeCrypt($key,$iv,$_POST['te_mouse_desc']			,$v_cs_cipher,$v_cs_compress) . "',
															te_modem_desc            = '" . DeCrypt($key,$iv,$_POST['te_modem_desc']			,$v_cs_cipher,$v_cs_compress) . "' 
									WHERE te_node_address          = '" . $te_node_address . "' and
														 id_so                    = '" . $id_so . "'";
	$result = mysql_query($query);
	echo '<?xml version="1.0" encoding="iso-8859-1" ?><STATUS>OK</STATUS>';	
	}
else
	echo '<?xml version="1.0" encoding="iso-8859-1" ?><STATUS>Chave (TE_NODE_ADDRESS + ID_SO) Inválida</STATUS>';
?>