public static List <Modelo.Ip> RecuperarTodasLasIps() { List <Modelo.Ip> _lista = new List <Modelo.Ip>(); string strSQL = @" SELECT L.ip_user , IFNULL(ip.ip, '') AS ip FROM (SELECT ip_user FROM sensor.sc_log GROUP BY ip_user) AS L LEFT JOIN (SELECT ip FROM ips GROUP BY ip) AS ip ON ip.ip = L.ip_user "; MySqlConnection MyConn = DbConexion.ObtenerConexion(); MySqlCommand _comando = new MySqlCommand(strSQL, MyConn); MySqlDataReader _reader = _comando.ExecuteReader(); while (_reader.Read()) { Modelo.Ip pIp = new Modelo.Ip(); pIp.Ip_User = _reader.GetString(0); pIp.IP = _reader.GetString(1); _lista.Add(pIp); } MyConn.Close(); return(_lista); }
public static int Agregar(Modelo.Ip pI) { int retorno = 0; string strSQL = ""; strSQL = strSQL + " INSERT INTO sensor.ips "; strSQL = strSQL + " (ip, isp, country, latitud, longitud, zona, ciudad, continente "; strSQL = strSQL + " ) VALUES "; strSQL = strSQL + "('" + pI.IP + "', '" + pI.Isp + "', '" + pI.Country + "', '" + pI.Latitud + "', '" + pI.Longitud + "', '" + pI.Zona + "', '" + pI.Ciudad + "', '" + pI.Continente + "'"; strSQL = strSQL + " )"; MySqlConnection MyConn = new MySqlConnection(); MyConn = DbConexion.ObtenerConexion(); MySqlCommand _comando = new MySqlCommand(String.Format(strSQL), MyConn); retorno = _comando.ExecuteNonQuery(); MyConn.Close(); return(retorno); }
private void ChequearIps() { try { string contenido_url = ""; foreach (Modelo.Ip oIp in Controlador.IpsDAL.RecuperarTodasLasIps()) { if (oIp.IP == "") //significa que estea IP no esta dada de alta en la tabla IP, solo esta en la tabla LOG. { //Primero consulto los datos en la pagina de internet y luego los guardo en la tabla IP contenido_url = leerPaginaWeb("https://ip-address.us/lookup/" + oIp.Ip_User); if (contenido_url != "ERROR") { string[] ini; string[] fin = new string[] { "</dd>" }; string[] primer_corte; string[] segundo_corte; Modelo.Ip pIp = new Modelo.Ip(); pIp.IP = oIp.Ip_User; ini = new string[] { "ISP</dt> <dd>" }; primer_corte = contenido_url.Split(ini, StringSplitOptions.None); segundo_corte = primer_corte[Convert.ToInt32(1)].Split(fin, StringSplitOptions.None); pIp.Isp = segundo_corte[0].ToString(); ini = new string[] { "Country Name</dt> <dd>" }; primer_corte = contenido_url.Split(ini, StringSplitOptions.None); segundo_corte = primer_corte[Convert.ToInt32(1)].Split(fin, StringSplitOptions.None); pIp.Country = segundo_corte[0].ToString(); ini = new string[] { "Latitude</dt> <dd>" }; primer_corte = contenido_url.Split(ini, StringSplitOptions.None); segundo_corte = primer_corte[Convert.ToInt32(1)].Split(fin, StringSplitOptions.None); pIp.Latitud = segundo_corte[0].ToString(); ini = new string[] { "Longitude</dt> <dd>" }; primer_corte = contenido_url.Split(ini, StringSplitOptions.None); segundo_corte = primer_corte[Convert.ToInt32(1)].Split(fin, StringSplitOptions.None); pIp.Longitud = segundo_corte[0].ToString(); ini = new string[] { "Zone Name</dt> <dd>" }; primer_corte = contenido_url.Split(ini, StringSplitOptions.None); segundo_corte = primer_corte[Convert.ToInt32(1)].Split(fin, StringSplitOptions.None); pIp.Zona = segundo_corte[0].ToString(); ini = new string[] { "City Name</dt> <dd>" }; primer_corte = contenido_url.Split(ini, StringSplitOptions.None); segundo_corte = primer_corte[Convert.ToInt32(1)].Split(fin, StringSplitOptions.None); pIp.Ciudad = segundo_corte[0].ToString(); ini = new string[] { "Continent Name</dt> <dd>" }; primer_corte = contenido_url.Split(ini, StringSplitOptions.None); segundo_corte = primer_corte[Convert.ToInt32(1)].Split(fin, StringSplitOptions.None); pIp.Continente = segundo_corte[0].ToString(); int resultado; resultado = Controlador.IpsDAL.Agregar(pIp); //Si es Country != "Argentina" tengo que mandar email notificando un posible ataque if (pIp.Country != "Argentina") { //Notifico a todos los que tienen priviligio de administrador en la tabla USUARIOS (Y) foreach (Modelo.Usuario oUsuario in Controlador.UsuariosDAL.BuscarPrivAdmin()) { oSender.mMailTo = oUsuario.Email; oSender.mSubject = "Alerta Ataque Sensor Control"; string e_mail = ""; string msjs_pedido = ""; e_mail = "<p> Estimado, </p><p></p>"; msjs_pedido = msjs_pedido + "<p> Informamos que detectamos conexiones anormales.</p>"; msjs_pedido = msjs_pedido + "<li> IP: <strong>" + pIp.IP + "</strong> </li>"; msjs_pedido = msjs_pedido + "<li> ISP: <strong>" + pIp.Isp + "</strong> </li>"; msjs_pedido = msjs_pedido + "<li> Continente: <strong>" + pIp.Continente + "</strong> </li>"; msjs_pedido = msjs_pedido + "<li> País: <strong>" + pIp.Country + "</strong> </li>"; msjs_pedido = msjs_pedido + "<li> Ciudad: <strong>" + pIp.Ciudad + "</strong> </li>"; msjs_pedido = msjs_pedido + "<li> Zona: <strong>" + pIp.Zona + "</strong> </li>"; msjs_pedido = msjs_pedido + "<li> Latitud: <strong>" + pIp.Latitud + "</strong> </li>"; msjs_pedido = msjs_pedido + "<li> Longitud: <strong>" + pIp.Longitud + "</strong> </li>"; e_mail = e_mail + "</ul>" + msjs_pedido + "</ul>"; e_mail = e_mail + "<p></p><p> Muchas gracias. </p>"; e_mail = e_mail + "<p></p><p> Saludos, </p>"; oSender.mMsg = e_mail; oSender.redOSDE = redOSDE; oSender.Envio(); } } } } } } catch (Exception ex) { oLog.LogToFile(ex.ToString()); //MessageBox.Show(ex.ToString()); } }