private void btConfigurar_Click(object sender, EventArgs e) { //Iniciar y referenciar los datos de configuración FConfigurar ventanaConfigurar = new FConfigurar(); ventanaConfigurar.entradaDatos = Datos.configuracionInicial; //Mostrar ventana if (ventanaConfigurar.ShowDialog() == System.Windows.Forms.DialogResult.OK) { //Obtener datos nuevos y guardar Datos.configuracionInicial = ventanaConfigurar.salidaDatos; accesoArchivos.GuardarArchivoConfiguracionInicial(Datos.rutaArchivoConfiguracion); //Actualizar reloj try { reloj.Interval = Datos.configuracionInicial.frecuenciaMs; } catch (Exception ex) { //Log reloj.Interval = 1000; ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "FPrincipal.cs", "btConfigurar_Click", "El valor de frecuenciano es correcto, " + Datos.configuracionInicial.frecuenciaMs.ToString() + ": " + ex.Message); } } }
//Actualiza la colección para que muestre solo los dispositivos conectados, con la MAC y Descripción private void ActualizarBaseDatosMongo(List <MacDispositivo> lsDispositivos) { try { //Mostrar msj de BD msjActualizandoBD.Visible = true; controlMongo.eliminarColeccion(); controlMongo.InsertarMuchosDocumentos(lsDispositivos); //Mostrar msj de BD msjActualizandoBD.Visible = false; } catch (Exception ex) { //Error ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "FPrincipal.cs", "ActualizarBaseDatosMongo", "Error al intentar insertar documentos a la Base de Datos Mongo: " + ex.Message); chGuardarBD.Checked = false; MessageBox.Show("Error al intentar actualizar la BD, se va a desactivar la opción de mantener actualizado la Base de Datos."); //Mostrar msj de BD msjActualizandoBD.Visible = false; } }
private void Form1_Load(object sender, EventArgs e) { //Silenciar aplicación try { CoInternetSetFeatureEnabled(FEATURE_DISABLE_NAVIGATION_SOUNDS, SET_FEATURE_ON_PROCESS, true); } catch (Exception) { } String msjLog; //Inicializar Log if (!ControlLog.Inicializar(Datos.rutaArchivoLog, out msjLog)) { MessageBox.Show("No se pudo inicializar el control de Log: " + msjLog); } //Inicializar memoria compartida memoriaCompartida = new MemoriaCompartida(Datos.nombreMemoriaCompartida, Datos.nombreMutexCompartido, Datos.capacidadMemoriaCompartida); if (!memoriaCompartida.IniciarConexion(ref msjLog)) { //Error ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "FPrincipal.cs", "Form1_Load", "Error al inicializar la memoria compartida: " + msjLog); MessageBox.Show("Error al inicializar la memoria compartida: " + msjLog); } //Inicalizar control de acceso a MongoDB controlMongo = new ControlMongo(Datos.mongoUrlConexion, Datos.mongoNombreBaseDatos, Datos.mongoNombreColeccion); try { controlMongo.inicializar(); } catch (Exception ex) { //Error ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "FPrincipal.cs", "Form1_Load", "Error al inicializar la conexión con la Base de Datos Mongo: " + ex.Message); MessageBox.Show("Error al inicializar la conexión con la Base de Datos de Mongo " + ex.Message); } //Obtener datos de configuración del usuario Datos.configuracionInicial = accesoArchivos.CargarArchivoConfiguracionInicial(Datos.rutaArchivoConfiguracion); //Obtener datos de nombres de dispositivos accesoArchivos.cargarNombresDispositivos(); //Inicializar objeto que accede al control WebBrowser controlWeb = new ControlWeb(web); //Actualizar frecuencia del reloj reloj.Interval = Datos.configuracionInicial.frecuenciaMs; //Ir a página principal controlWeb.navegarHome(); //Iniciar reloj reloj.Start(); }
//Guarda el archivo de configuración inicial de la aplicación con el nombre de archivo indicado public void GuardarArchivoConfiguracionInicial(String nombreArchivo) { try { XmlSerializer serializadorXml = new XmlSerializer(typeof(ConfiguracionInicial)); StreamWriter writer = new StreamWriter(nombreArchivo); serializadorXml.Serialize(writer, Datos.configuracionInicial); writer.Close(); } catch (Exception ex) { //Log ControlLog.EscribirLog(ControlLog.TipoGravedad.ERROR, "AccesoArchivos.cs", "GuardarArchivoConfiguracionInicial", "Error al intentar guardar el archivo de configuración en '" + nombreArchivo + "': " + ex.Message); } }
//Inicia el ciclo para llegar a la vista buscada (Estadísticas) public void iniciarNavegacion() { try { //Comenzar desde la página inicial navegarHome(); //Luego de completarse la carga de la página continuar con el logueo accionWeb = FuenteMacs.FPrincipal.AccionWeb.LoginRouter; } catch (Exception ex) { //Evitar un posible bucle infinito accionWeb = FuenteMacs.FPrincipal.AccionWeb.ninguna; ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "ControlWeb.cs", "iniciarNavegacion", "Error al intentar reiniciar la navegación web: " + ex.Message); } }
//Carga del archivo la lista de MACs junto a descripciones de que equipo se trata public void cargarNombresDispositivos() { string[] lineas = new string[0]; string ruta = Datos.configuracionInicial.rutaArchivoDispositivos; //Cargar archivo try { if (!(File.Exists(ruta))) { //No se encontró el archivo ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "AccesoArchivos.cs", "cargarNombresDispositivos", "No se encontró el archivo de dispositivos '" + ruta); return; } lineas = System.IO.File.ReadAllLines(ruta); } catch (Exception ex) { ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "AccesoArchivos.cs", "cargarNombresDispositivos", "Se produjo un error en la lectura del archivo de dispositivos: " + ex.Message); return; } //Recorrer los registros foreach (string registro in lineas) { string registroAct = registro.Trim(); string[] registroArr; //Registro no vacio if (registroAct != string.Empty) { registroArr = registroAct.Split('\t'); //Valores no vacios if (registroArr.Length > 1 && registroArr[0].Trim() != string.Empty && registroArr[0].Trim() != string.Empty) { //Añadir a la lista Datos.descripcionDispositivos.Add(registroArr[0].Trim(), registroArr[1].Trim()); } } } }
//Carga el archivo de configuración inicial de la aplicación con el nombre de archivo indicado public ConfiguracionInicial CargarArchivoConfiguracionInicial(String nombreArchivo) { ConfiguracionInicial nuevoObjeto = null; XmlSerializer serializadorXml = new XmlSerializer(typeof(ConfiguracionInicial)); StreamReader reader = new StreamReader(nombreArchivo); try { nuevoObjeto = (ConfiguracionInicial)serializadorXml.Deserialize(reader); reader.Close(); } catch (Exception ex) { //Log ControlLog.EscribirLog(ControlLog.TipoGravedad.ERROR, "AccesoArchivos.cs", "CargarArchivoConfiguracionInicial", "Error al intentar cargar el archivo de configuración '" + nombreArchivo + "': " + ex.Message); } return(nuevoObjeto); }
private void btObenerDatosWireless_Click(object sender, EventArgs e) { List <String> lsMac; List <MacDispositivo> lsObjMac; String cadenaMemoria; String msjLog = String.Empty; //Intentar obtener lista de MACs lsMac = controlWeb.obtenerListaMac(); if (lsMac != null) { //Mapear a objetos lsObjMac = mapearObjetoMacDispositivo(lsMac); //Actualizar ListBox lsConectados.Items.Clear(); foreach (var item in lsObjMac) { lsConectados.Items.Add(item); } //Cantidad de conectados y última actualización lbCant.Text = lsConectados.Items.Count.ToString(); lbUltimaAct.Text = DateTime.Now.ToLongTimeString(); //Formatear para guardar en memoria cadenaMemoria = FormatearCadenaParaMemoria(lsMac); //Actualizar archivo en memoria if (!memoriaCompartida.EscribirEnMemoria(cadenaMemoria, ref msjLog)) { //Error ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "FPrincipal.cs", "btObenerDatosWireless_Click", "Error al actualizar la memoria compartida: " + msjLog); } //Actualizar Base de Datos MongoDB if (chGuardarBD.Checked) { ActualizarBaseDatosMongo(lsObjMac); } } }
//Loguear public void loginRouter() { try { //Llenar datos para loguearse _web.Document.GetElementById("userName").SetAttribute("value", Datos.configuracionInicial.usuario); _web.Document.GetElementById("pcPassword").SetAttribute("value", Datos.configuracionInicial.pass); _web.Document.GetElementById("loginBtn").InvokeMember("click"); //Luego de completarse la carga de la página continuar con yendo al menú Wireless accionWeb = FuenteMacs.FPrincipal.AccionWeb.MenuWireless; } catch (Exception ex) { //Evitar un posible bucle infinito accionWeb = FuenteMacs.FPrincipal.AccionWeb.ninguna; ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "ControlWeb.cs", "loginRouter", "Error de logueo del router: " + ex.Message); } }
public void menuWirelessStatistics() { try { //Buscar el frame correspondiente donde se encuentra los botones a partir del name HtmlWindowCollection frame = _web.Document.Window.Frames; //Buscar el botón Wireless por ID y ejecutar el click frame[1].Document.GetElementById("a12").InvokeMember("click"); //Luego de completarse la carga de la página terminar ciclo de ejecución accionWeb = FuenteMacs.FPrincipal.AccionWeb.ninguna; } catch (Exception ex) { //Evitar un posible bucle infinito accionWeb = FuenteMacs.FPrincipal.AccionWeb.ninguna; ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "ControlWeb.cs", "menuWirelessStatistics", "Error al intentar acceder a la vista de WirelessStatistics: " + ex.Message); } }
private void FPrincipal_FormClosing(object sender, FormClosingEventArgs e) { //Cerrar Log ControlLog.CerrarArchivo(); }
//Intenta obtener la lista de MACs public List <String> obtenerListaMac() { try { List <String> lsMac = new List <string>(); //Buscar el frame correspondiente donde se encuentra los botones a partir del name HtmlWindowCollection frame = _web.Document.Window.Frames; //Buscar la tabla que contiene los datos de las estadísticas HtmlElement tabla = frame[2].Document.GetElementsByTagName("TBODY")[1]; //Obtener las filas HtmlElementCollection filas = tabla.GetElementsByTagName("tr"); //Verificar que la tabla es correcta, verificando el título de la misma if (filas[0].GetElementsByTagName("td")[1].InnerText == "MAC Address") { //Recorrer las filas, excepto el primero q son los títulos, y obtener cada una de las MACs for (int i = 1; i < filas.Count; i++) { //Obtener la segunda columna, que es donde esta la MAC y añadir a la lista lsMac.Add(filas[i].GetElementsByTagName("td")[1].InnerText); } //Reiniciar contador reintentos = Datos.cantidadReintentosAnteFallo; return(lsMac); } else { //La vista no es la correcta, muy probablemente //Reducir el número de reintentos reintentos--; if (reintentos == 0) { //Volver a navegar desde el inicio, reiniciar contador reintentos = Datos.cantidadReintentosAnteFallo; iniciarNavegacion(); } ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "ControlWeb.cs", "obtenerListaMac", "Error al intentar leer las direcciones Macs de la web, la tabla leida no es la correcta, título leido: " + filas[0].GetElementsByTagName("td")[1].InnerText); return(null); } } catch (Exception ex) { //Reducir el número de reintentos reintentos--; if (reintentos == 0) { //Volver a navegar desde el inicio, reiniciar contador reintentos = Datos.cantidadReintentosAnteFallo; iniciarNavegacion(); } ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "ControlWeb.cs", "obtenerListaMac", "Error al intentar leer las direcciones Macs de la web: " + ex.Message); return(null); } }