예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        //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;
            }
        }
예제 #3
0
        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();
        }
예제 #4
0
 //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);
     }
 }
예제 #5
0
        //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);
            }
        }
예제 #6
0
        //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());
                    }
                }
            }
        }
예제 #7
0
        //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);
        }
예제 #8
0
        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);
                }
            }
        }
예제 #9
0
        //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);
            }
        }
예제 #10
0
        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);
            }
        }
예제 #11
0
 private void FPrincipal_FormClosing(object sender, FormClosingEventArgs e)
 {
     //Cerrar Log
     ControlLog.CerrarArchivo();
 }
예제 #12
0
        //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);
            }
        }