Código PHP:
<?php
header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
header("Content-Type: text/xml; charset=utf-8");
header("Cache-Control: no-cache, must-revalidate" );
header("Pragma: no-cache" );
require('basededatos.php');
$xml = '<?xml version="1.0" ?><root>';
$last = (isset($_GET['last']) && $_GET['last'] != '') ? $_GET['last'] : 0;
$limit = '';
if ($last == 0 || $last == '0') {
$numlogs = mysql_query("SELECT seq FROM logs WHERE seq > " . $last);
$numlogs = mysql_num_rows($numlogs);
$logsamostrar = 1;
if ($numlogs > $logsamostrar) {
$limit = " LIMIT " . ($numlogs - $logsamostrar) . ', ' . $logsamostrar;
}
}
$sql = "SELECT seq,msg FROM logs WHERE seq > " . $last . $limit;
$resultado = mysql_query($sql);
$mensaje = mysql_fetch_row($resultado);
$cadena = $mensaje[1];
//Aquí realizo la obteción de los valores de las variables que envío, no lo puse para no poner tanto código...
$message_query = db_query($sql);
while($message_array = db_fetch_array($message_query)) {
$xml .= '<message id="' . $message_array['seq'] . '">';
$xml .= '<seq>' .htmlspecialchars($message_array['seq']) . '</seq>';
$xml .= '<host>' .htmlspecialchars($nombre) . '</host>';
$xml .= '<priority>' .htmlspecialchars($prioridad) . '</priority>';
$xml .= '<date>' .htmlspecialchars($fecha) . '</date>';
$xml .= '<time>' .htmlspecialchars($hora) . '</time>';
$xml .= '<id>' .htmlspecialchars($id) . '</id>';
$xml .= '<src>' .htmlspecialchars($fuente) . '</src>';
$xml .= '<interface>' . htmlspecialchars($interface) . '</interface>';
$xml .= '<interfaced>' .htmlspecialchars($interfaced) . '</interfaced>';
$xml .= '<dst>' .htmlspecialchars($dst) . '</dst>';
$xml .= '</message>';
}
$xml .= '</root>';
echo $xml;
$sql2 = mysql_query("SELECT seq FROM logs");
$logs = mysql_num_rows($sql2);
if(($last != 0 || $last != '0') && $logs > $_GET['last'] && $_GET['last'] != ''){
$query = "SELECT email,alerta,intrusion,virus,aweb,vtrafico,bloq,caida,vpncaida,sesiones,severidad".
" FROM config WHERE seq=1 ";
$config = mysql_query($query);
$salida = mysql_fetch_row($config);
if($salida[1]=="eventos"){
mailer(); //*********Si mando a llamar aqui la función "mailer()" ya no me actuliza el html. Aquí es mi problema.
}elseif($salida[1]=="severidad"){
}
//Inserción a logsfg
$inserta = "INSERT INTO logsfg (nombre,prioridad,fecha,hora,idlog,fuente,ifuente,destino,idestino,mensaje)".
" VALUES ('$nombre','$prioridad','$fecha','$hora','$id','$fuente','$interface','$dst','$interfaced','$cadena')";
$resultado = mysql_query($inserta);
//Termina Inserción a logsfg
}
function mailer(){
$nombre = "Yo";
$mail = "algún mail";
$empresa = "yo Corp";
$mensaje = "...";
$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";
$mensaje = "Este mensaje fue enviado por " . $nombre . ", de la empresa " . $empresa . " \r\n";
$mensaje .= "Su e-mail es: " . $mail . " \r\n";
$mensaje .= "Mensaje: " .$mensaje." \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());
$para = 'algun otro mail';
$asunto = 'Sistema de Análisis de Eventos';
mail($para, $asunto, utf8_decode($mensaje), $header);
}
?>
Código HTML:
var sendReq = getXmlHttpRequestObject(); var receiveReq = getXmlHttpRequestObject(); var sendDat = getXmlHttpRequestObject(); var lastMessage = 0; var mTimer; //Función para inicializar la página. function startSOC() { //Iniciar recibiendo Logs. getLogs(); } //Obtener los objetos XmlHttpRequest especificos del navegador. function getXmlHttpRequestObject() { if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else if(window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); } else { document.getElementById('estado').innerHTML = 'No se puede crear el objeto XmlHttpRequest.'; } } function getLogs() { receiveReq.open("GET", 'getLogs.php?logs=1&last=' + lastMessage, true); receiveReq.onreadystatechange = ReceiveLogs; receiveReq.send(null); } //Funcion para obtener los mensajes de logs. function ReceiveLogs() { var logs_div = document.getElementById('div_logs'); var xmldoc = receiveReq.responseXML; var message_nodes = xmldoc.getElementsByTagName("message"); var n_messages = message_nodes.length for (i = 0; i < n_messages; i++) { var seq_node = message_nodes[i].getElementsByTagName("seq"); var host_node = message_nodes[i].getElementsByTagName("host"); var priority_node = message_nodes[i].getElementsByTagName("priority"); var date_node = message_nodes[i].getElementsByTagName("date"); var time_node = message_nodes[i].getElementsByTagName("time"); var id_node = message_nodes[i].getElementsByTagName("id"); var src_node = message_nodes[i].getElementsByTagName("src"); var interface_node = message_nodes[i].getElementsByTagName("interface"); var interfaced_node = message_nodes[i].getElementsByTagName("interfaced"); var dst_node = message_nodes[i].getElementsByTagName("dst"); var seq = seq_node[0].firstChild.nodeValue; //Inserta el valor de los nodos en logs_div logs_div.innerHTML += "<div id='host'>" + host_node[0].firstChild.nodeValue + "</div>"; //Selección de color para el campo Prioridad switch(priority_node[0].firstChild.nodeValue){ case 'emergency': logs_div.innerHTML += "<div id='priority1'>Emergencia</div>"; break; case 'alert': logs_div.innerHTML += "<div id='priority2'>Alerta</div>"; break; case 'critical': logs_div.innerHTML += "<div id='priority3'>Critico</div>"; break; case 'error': logs_div.innerHTML += "<div id='priority4'>Eror</div>"; break; case 'warning': logs_div.innerHTML += "<div id='priority5'>Advertencia</div>"; break; case 'notice': logs_div.innerHTML += "<div id='priority6'>Notificación</div>"; break; case 'information': logs_div.innerHTML += "<div id='priority7'>Información</div>"; break; case 'debug': logs_div.innerHTML += "<div id='priority8'>Depuración</div>"; break; } logs_div.innerHTML += "<div id='date'>" + date_node[0].firstChild.nodeValue + "</div>"; logs_div.innerHTML += "<div id='time'>" + time_node[0].firstChild.nodeValue + "</div>"; logs_div.innerHTML += "<div id='id'>" + id_node[0].firstChild.nodeValue + "</div>"; logs_div.innerHTML += "<div id='src'>" + src_node[0].firstChild.nodeValue + "</div>"; logs_div.innerHTML += "<div id='interface'>" + interface_node[0].firstChild.nodeValue + "</div>"; logs_div.innerHTML += "<div id='interfaced'>" + interfaced_node[0].firstChild.nodeValue + "</div>"; logs_div.innerHTML += "<div id='dst'>" + dst_node[0].firstChild.nodeValue + "</div>"; logs_div.innerHTML += "<div id='mensaje'><a href='javascript:mensaje(" + seq + ")'>Mensaje</a></div><br>"; logs_div.scrollTop = logs_div.scrollHeight; lastMessage = (message_nodes[i].getAttribute('id')); } mTimer = setTimeout('getLogs();',1000); //Verifica cambios en la base de datos cada segundo. } function mensaje(seq){ window.open('mensaje.php?seq='+seq+'&action=monitoreo','mensaje','width=550,height=425,left=230,top=50','target=Mensaje'); }