private void ActualizarEquipoRegistrado()
        {
            try
            {
                ManejadorDB             manejadorOtro    = new ManejadorDB();
                _sis_EquiposRegistrados equipoRegistrado = manejadorOtro.Cargar <_sis_EquiposRegistrados>(_sis_EquiposRegistrados.ConsultaPorNombreEquipo, new List <object>()
                {
                    Environment.MachineName
                });
                if (equipoRegistrado == null)
                {
                    equipoRegistrado = new _sis_EquiposRegistrados();
                }
                equipoRegistrado.Manejador             = manejadorOtro;
                equipoRegistrado.SNombreEquipo         = Environment.MachineName;
                equipoRegistrado.UltimoUsuarioConexion = usuario;
                equipoRegistrado.BEstaBloqueado        = false;
                equipoRegistrado.BEstaConectado        = false;
                equipoRegistrado.EsModificado          = true;
                manejadorOtro.Guardar(equipoRegistrado);

                usuario.Manejador = manejadorOtro;
                usuario.BEstaConectadoAlSistema = false;
                usuario.EsModificado            = true;
                manejadorOtro.Guardar(usuario);
            }
            catch (Exception ex)
            {
                //Dispatcher.Invoke(new Action(() =>
                //{
                //    HerramientasWindow.MensajeError(ex, "Error: " + ex.Message, "Error al actualizar la información del equipo.");
                //}));
            }
        }
示例#2
0
        private void AgregarLoginFallido()
        {
            try
            {
                _sis_AccesoFallido acceso = manejador.CrearObjeto <_sis_AccesoFallido>();
                acceso.SIPEquipo             = ipLocal;
                acceso.SIpInternet           = ipInternet;
                acceso.SNombreEquipo         = Environment.MachineName;
                acceso.SUsuarioWindows       = Environment.UserName;
                acceso.SUsuarioRegistrado    = txt_usuario.Text;
                acceso.SContrasenaRegistrada = txt_contraseña.Text;
                acceso.EsModificado          = true;
                manejador.Guardar(acceso);

                accesosFallidos.Add(acceso);

                if (accesosFallidos.Count > 2)
                {
                    Bitmap fotoUsuario = HerramientasWindow.ObtenerFotoDeWebCam();
                    _sis_LimiteAccesosFallidosAlcanzado limite = manejador.CrearObjeto <_sis_LimiteAccesosFallidosAlcanzado>();

                    limite.AccesosFallidos           = accesosFallidos;
                    limite.FotoPantalla              = manejador.CrearObjeto <_sis_ImagenAsociada>();
                    limite.FotoPantalla.EsModificado = true;
                    limite.FotoPantalla.Imagen       = HerramientasWindow.ComprimirImagen(HerramientasWindow.ObtenerFotoPantalla(this), 1000, 600, System.Drawing.Imaging.ImageFormat.Jpeg);
                    limite.FotoWebCam = manejador.CrearObjeto <_sis_ImagenAsociada>();
                    limite.FotoWebCam.EsModificado = true;
                    limite.FotoWebCam.Imagen       = HerramientasWindow.ComprimirImagen(fotoUsuario, 600, 400, System.Drawing.Imaging.ImageFormat.Jpeg);
                    limite.EsModificado            = true;
                    Bitmap emailFotoPantalla = limite.FotoPantalla.Imagen;
                    Bitmap emailFotoWebcam   = limite.FotoWebCam.Imagen;
                    manejador.Guardar(limite);
                    accesosFallidos.Clear();

                    List <_sis_Usuario> usuariosAdmins = manejador.CargarLista <_sis_Usuario>(_sis_Usuario.consultaPorUsuariosAdministradores);
                    String emails = "";
                    foreach (_sis_Usuario us in usuariosAdmins)
                    {
                        if (!us.SEmail.Trim().Equals(""))
                        {
                            emails += us.SEmail + "; ";
                        }
                    }
                    if (!emails.Trim().Equals(""))
                    {
                        emails = emails.Substring(0, emails.Length - 2);
                    }
                    if (!emails.Trim().Equals(""))
                    {
                        String detallesTecnicos = @"<p><strong>Detalles t&eacute;cnicos:</strong></p>

                    <ul>
	                    <li>IP(LAN|WAN): "     + ipLocal + "|" + ipInternet + @"</li>
	                    <li>Nombre equipo: "     + acceso.SNombreEquipo + @"</li>
	                    <li>Hora del evento: "     + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @"</li>
	                    <li>Sesión Windows: "     + acceso.SUsuarioWindows + @"</li>
                        <li>Usuario registrado: " + acceso.SUsuarioRegistrado + @"</li>
                    </ul>";

                        String  mensaje = @"
                    <h2><strong>Detecci&oacute;n de intruso en el sistema.</strong></h2>

                    <blockquote>
                    <p><em>Verificar archivos adjuntos.</em></p>
                    </blockquote>
                    ";
                        Adjunto adj1    = null;
                        Adjunto adj2    = null;
                        if (emailFotoPantalla != null)
                        {
                            adj1 = new Adjunto();
                            adj1.NombreArchivo = "fotoPantalla.jpg";
                            adj1.Stream        = Herramientas.WPF.Utilidades.BitmapToStream(emailFotoPantalla);
                        }
                        if (emailFotoWebcam != null)
                        {
                            adj2 = new Adjunto();
                            adj2.NombreArchivo = "fotoWebcam.jpg";
                            adj2.Stream        = Herramientas.WPF.Utilidades.BitmapToStream(emailFotoWebcam);
                        }
                        List <Adjunto> adjuntos = new List <Adjunto>();
                        adjuntos.Add(adj1);
                        adjuntos.Add(adj2);
                        try
                        {
                            EmailFormatos.EnviarMailAtencion(mensaje, "Intento de acceso no permitido detectado", detallesTecnicos, null, emails, adjuntos);
                        }
                        catch { }
                    }
                    fotoUsuario = null;
                    conteoRegistrosLimite++;

                    if (conteoRegistrosLimite == 2)
                    {
                        _sis_EquiposRegistrados equipoRegistrado = manejador.Cargar <_sis_EquiposRegistrados>(_sis_EquiposRegistrados.ConsultaPorNombreEquipo, new List <object>()
                        {
                            Environment.MachineName
                        });
                        if (equipoRegistrado == null)
                        {
                            equipoRegistrado = manejador.CrearObjeto <_sis_EquiposRegistrados>();
                        }

                        equipoRegistrado.SNombreEquipo         = Environment.MachineName;
                        equipoRegistrado.SUltimaIPConexion     = ipLocal;
                        equipoRegistrado.UltimoUsuarioConexion = usuario;
                        equipoRegistrado.BEstaBloqueado        = true;
                        equipoRegistrado.BEstaConectado        = false;
                        equipoRegistrado.EsModificado          = true;
                        manejador.Guardar(equipoRegistrado);
                        HerramientasWindow.MensajeAdvertencia("Por seguridad se ha bloqueado el equipo. Favor de contactar al administrador del Sistema.", "Bloqueo de seguridad");
                    }
                }
            }
            catch (Exception ex)
            {
                HerramientasWindow.MensajeError(ex, "Error: " + ex.Message, "Error");
            }
        }
示例#3
0
        private void btn_iniciar_MouseDown(object sender, MouseButtonEventArgs e)
        {
            try
            {
                lnLogin.VerificarExistenciaDeUsuarioAdmin();
                usuario = lnLogin.ValidarAcceso(txt_usuario.Text.Trim(), txt_contraseña.Text.Trim());

                if (usuario != null)
                {
                    if (ModoBloqueo)
                    {
                        if (UsuarioBloqueo.Cuenta.Equals(usuario.Cuenta) && UsuarioBloqueo.Contrasena.Equals(HerramientasWindow.EncriptarConAES(txt_contraseña.Text)))
                        {
                            p.ReiniciarAutobloqueo();
                        }
                        else
                        {
                            HerramientasWindow.Mensaje("Verificar datos de acceso para el usuario que bloqueó el sistema.", "Verificar datos");
                            AgregarLoginFallido();
                            txt_contraseña.Text = "";
                            return;
                        }
                    }

                    if (usuario.Contrasena != null && !usuario.Contrasena.Equals(HerramientasWindow.EncriptarConAES(txt_contraseña.Text)))
                    {
                        MostrarMensaje();//HerramientasWindow.Mensaje("Usuario o contraseña invalidos.", "Verificar datos");
                        AgregarLoginFallido();
                        txt_contraseña.Text = "";
                        return;
                    }

                    if (datosSistema != null && datosSistema.BUsarProteccionDeCuentasEnLogin && !ModoBloqueo && usuario.BEstaConectadoAlSistema)
                    {
                        if (usuario.EsAdministradorDeSistema || (usuario.RolSistema != null && usuario.RolSistema.EsAdministradorDeSistema))
                        {
                            usuario.SMensajeDeIntentoDeConexionEnOtroEquipo = "Se realizó una conexión desde el equipo '" + Environment.MachineName + "' con tu usuario y contraseña correctos, esta conexión se cerrará.";
                            usuario.EsModificado = true;
                            manejador.Guardar(usuario);
                            HerramientasWindow.Mensaje("Se detectó que la cuenta estaba iniciada en otro equipo. Se iniciará la conexión en cuanto se haya finalizado la sesión encontrada despues de dar clic en aceptar. \nContinuar...", "Cuenta iniciada previamente");


                            while (true)
                            {
                                usuario = manejador.Cargar <_sis_Usuario>(_sis_Usuario.consultaPorID, new List <Object>()
                                {
                                    usuario.Id
                                });
                                if (usuario.SMensajeDeIntentoDeConexionEnOtroEquipo != null && !usuario.SMensajeDeIntentoDeConexionEnOtroEquipo.Equals(""))
                                {
                                    //HerramientasWindow.Mensaje("Aún no se ha cerrado la conexión en el otro equipo, por favor vuelva a intentar.", "Cuenta iniciada previamente");
                                    Thread.Sleep(500);
                                }
                                else
                                {
                                    break;
                                }
                            }

                            //return;
                        }
                        else
                        {
                            usuario.SMensajeDeIntentoDeConexionEnOtroEquipo = "Se intentó una conexión desde el equipo '" + Environment.MachineName + "' con tu usuario y contraseña correctos, verificar conexión.";
                            usuario.EsModificado = true;
                            manejador.Guardar(usuario);
                            HerramientasWindow.Mensaje("Actualmente la cuenta se encuentra iniciada en otro equipo, se ha enviado un mensaje de aviso a la cuenta.", "Cuenta iniciada previamente");
                            return;
                        }
                    }

                    if (!usuario.Cuenta.Equals("administrador") && usuario.BEstaDesactivado)
                    {
                        HerramientasWindow.Mensaje("Actualmente tu cuenta está desactivada, favor de contactar con el administrador de Sistemas.", "Cuenta desactivada");
                        return;
                    }

                    _sis_EquiposRegistrados equipoRegistrado = manejador.Cargar <_sis_EquiposRegistrados>(_sis_EquiposRegistrados.ConsultaPorNombreEquipo, new List <object>()
                    {
                        Environment.MachineName
                    });
                    if (equipoRegistrado != null && equipoRegistrado.BEstaBloqueado && !usuario.EsAdministradorDeSistema)
                    {
                        HerramientasWindow.MensajeAdvertenciaAlta("El equipo actual se encuentra bloqueado, favor de contactar al administrador del Sistema.", "Equipo bloqueado");
                        return;
                    }
                    variablesData.GuardarValorVariable("ultimo_usuario", txt_usuario.Text);
                    variablesData.ActualizarArchivo();

                    accesosFallidos.Clear();
                    if (p == null)
                    {
                        p = new Principal(usuario, manejadorPrincipal);
                        p.seCerroSistema += p_seCerroSistema;
                    }

                    Hide();
                    ActualizarEquipoRegistrado();
                    //Thread actualizarEquipoRegistrado = new Thread(ActualizarEquipoRegistrado);
                    //actualizarEquipoRegistrado.Start();

                    usuario.BEstaConectadoAlSistema = true;
                    usuario.EsModificado            = true;
                    manejador.Guardar(usuario);

                    p.Show();
                    cargarCaracteristicasVisualesDeServidor();
                }
                else
                {
                    //MostrarMensaje();
                    AgregarLoginFallido();
                    txt_contraseña.Text = "";
                    if (conteoRegistrosLimite > 2)
                    {
                        HerramientasWindow.MensajeAdvertenciaAlta("El equipo se bloqueará, favor de contactar al administrador.", "Equipo bloqueado");
                    }
                }
            }
            catch (Exception ex)
            {
                HerramientasWindow.MensajeError(ex, "Error: " + ex.Message, "Error");
            }
        }