コード例 #1
0
        public List <ConexionBDDto> EncontrarConexionesJava()
        {
            ExcluyeComentarios ExcCom = new ExcluyeComentarios();

            ErrLog.EscribeLogWS("Buscando conexiones a BD...");
            int NumLinea;
            List <ConexionBDDto> ListadoConexiones = new List <ConexionBDDto>();

            foreach (ArchivoDto archivo in ArchivosConfiguracionJava)
            {
                //si el nombre del archivo tiene numeros entonces exluimos el archivo porque es un duplicado
                Match m = Regex.Match(archivo.Nombre, @"\d+");
                if (m.Success || archivo.Nombre.ToLower().IndexOf("copy") >= 0)
                {
                    continue;
                }

                NumLinea = 1;
                VerCom.ComentarioBloque = "";

                using (StreamReader sr = new StreamReader(archivo.Ruta))
                {
                    while (sr.Peek() >= 0)
                    {
                        string linea       = sr.ReadLine().Trim();
                        string lineaCodigo = linea.ToLower();

                        if (!String.IsNullOrEmpty(lineaCodigo))
                        {
                            //lineaCodigo = ExcCom.BuscarComentario(lineaCodigo, archivo.Extension);
                            lineaCodigo = VerCom.BuscarComentario(lineaCodigo);

                            if (!string.IsNullOrEmpty(lineaCodigo) && lineaCodigo.IndexOf("jdbc") >= 0)
                            {
                                string nombreBd = "", nombreConexion = "";
                                Match  match = Regex.Match(lineaCodigo, @"jdbc:\w+:|jdbc\/\w+");
                                if (match.Success)
                                {
                                    string[] patrones = { @"database=\w+\s*\w+", @"databasename=\w+", @"jdbc\/\w+", @"[^jdbc]\/\w+[^\.{0}]" };
                                    int      index    = 0;
                                    foreach (var patron in patrones)
                                    {
                                        Match mat = Regex.Match(lineaCodigo, patron);
                                        if (mat.Success)
                                        {
                                            switch (index)
                                            {
                                            case 0:
                                                nombreBd = mat.Value;
                                                nombreBd = nombreBd.Replace("database", string.Empty).Replace("=", string.Empty).Trim();
                                                break;

                                            case 1:
                                                nombreBd = mat.Value;
                                                nombreBd = nombreBd.Replace("databasename", string.Empty).Replace("=", string.Empty).Trim();
                                                break;

                                            case 2:
                                                nombreConexion = mat.Value;
                                                break;

                                            case 3:
                                                nombreBd = mat.Value;
                                                nombreBd = nombreBd.Replace("/", string.Empty).Replace("\"", string.Empty).Trim();
                                                break;
                                            }
                                            //en el primer match true salimos
                                            break;
                                        }
                                        index++;
                                    }

                                    if (!string.IsNullOrEmpty(nombreBd) || !string.IsNullOrEmpty(nombreConexion))
                                    {
                                        if (!ListadoConexiones.Exists(x => x.BaseDatos == nombreBd && x.Nombre == nombreConexion))
                                        {
                                            ListadoConexiones.Add(new ConexionBDDto
                                            {
                                                BaseDatos = nombreBd,
                                                Jndi      = nombreConexion,
                                                Nombre    = nombreConexion
                                            });
                                        }
                                    }
                                }
                            }
                        }
                        NumLinea++;
                    }
                }
            }
            return(ListadoConexiones);
        }
コード例 #2
0
        //ConfigurationManager.AppSettings["pcsv"].ToString()
        public void GeneraSalida(int CveAplicacion, string Ruta, ProcesoDto pdto)
        {
            ControlLog         ErrLog   = new ControlLog();
            Entrada            Ent      = new Entrada();
            AplicacionDto      AppDto   = new AplicacionDto();
            ExcluyeComentarios ExcCom   = new ExcluyeComentarios();
            Procesos           Procesos = new Procesos();
            Salida             Salida   = new Salida();
            DataTable          configuracionDt;
            DataRow            configuracion;
            string             extensiones  = "";
            ProcesoAvanceDto   pdtoA        = new ProcesoAvanceDto();
            Proceso            proc         = new Proceso();
            string             TipoAnalisis = "BD";

            proc.SeteaAvance("En Proceso", "OK", "OK", "1", "--", "", "Iniciando Parseo BD", pdtoA, pdto);
            proc.ActualizaProcesoAvance(pdtoA, pdto);

            //Carga los datos de configuracion la ruta ya se trae, no se utiliza la de configuración
            using (configuracionDt = Consultas(1, CveAplicacion));
            {
                if (configuracionDt == null || configuracionDt.Rows.Count < 1)
                {
                    ErrLog.EscribeLogWS("No se encontraron los datos de configuración de la aplicación");
                    configuracion = null;
                }
                else
                {
                    configuracion = configuracionDt.Rows[0];
                }
            }

            //Determina que extensiones se deben leer deacuerdo al lenguaje
            DataTable LenguajeApp = ConsultaLenguaje(Convert.ToString(CveAplicacion));

            if (LenguajeApp == null || LenguajeApp.Rows.Count < 1)
            {
                ErrLog.EscribeLogWS("No se encontraron los datos de lenguaje de la Aplicación");
                LenguajeApp = null;
            }

            DataRow Lenguaje = LenguajeApp.Rows[0];

            //if (Lenguaje["Lenguaje"].ToString() == "ASP")
            extensiones = configuracion["Extensiones"].ToString();
            //else
            // extensiones = configuracion["ExtensionesJava"].ToString();

            String[] extArray = extensiones.ToLower().Split(',');


            //Validación
            if (String.IsNullOrEmpty(Convert.ToString(CveAplicacion)))
            {
                ErrLog.EscribeLogWS("No asigno la clave de la aplicación a analizar.");
                return;
            }

            //Obtiene todos los archivos de la ruta que deben leerse se cambio la ruta como parametro
            Ent.ListarArchivos(listaArchivos, Ruta, extArray, Convert.ToString(CveAplicacion));

            //Validación
            if (listaArchivos.Where(l => l.Extension == "java").Count() > 5)
            {
                AppDto.Tecnologia = "JAVA";
            }
            else if (listaArchivos.Where(l => l.Extension == "cs").Count() > 5)
            {
                AppDto.Tecnologia = "NET";
            }
            else if (listaArchivos.Where(l => l.Extension == "asp").Count() > 5)
            {
                AppDto.Tecnologia = "ASP";
            }
            else if (listaArchivos.Where(l => l.Extension == "sql").Count() > 5)
            {
                AppDto.Tecnologia = "Oracle";
            }
            else if (listaArchivos.Where(l => l.Extension == "frm").Count() > 5)
            {
                AppDto.Tecnologia = "Visual Basic 6";
            }

            AppDto.CveAplicacion = Convert.ToString(CveAplicacion);

            ////Obtiene lista de marcas de comentarios
            //Comentarios = Ent.CargarComentarios(configuracion["RutaComentarios"].ToString());
            //if (Comentarios == null || !Comentarios.Any())
            //{
            //    ErrLog.EscribeLogWS("El archivo de comentarios esta vacío");
            //    return;
            //}
            //ExcCom.Comentarios = Comentarios;
            //ErrLog.EscribeLogWS("El archivo de comentarios ha sido cargado.");

            //Carga las cadenas que no deben considerarse
            _CadenasAIgnorar = Ent.CargarAIgnorar();
            if (_CadenasAIgnorar == null || !_CadenasAIgnorar.Any())
            {
                ErrLog.EscribeLogWS("No se encontraron cadenas a Ignorar");
                return;
            }
            ErrLog.EscribeLogWS("Cargando cadenas a encontrar...");

            //Obtener las lineas que contienen palabras relacionadas con objetos de la BD
            if (TipoAnalisis == "BD")
            {
                _CadenasAEncontrar = Ent.CargarObjetosBD();
                if (_CadenasAEncontrar == null)
                {
                    ErrLog.EscribeLogWS("No hay cadenas a encontrar, verifique el inventario de objetos");
                    return;
                }
                ErrLog.EscribeLogWS("Las cadenas a encontrar han sido cargadas.");

                if (AppDto.Tecnologia == "NET" || AppDto.Tecnologia == "ASP")
                {
                    ConexionesBd = Ent.EncontrarConexionesNet();
                }

                if (AppDto.Tecnologia == "JAVA")
                {
                    ConexionesBd = Ent.EncontrarConexionesJava();
                }

                if (ConexionesBd == null || ConexionesBd.Count < 1)
                {
                    ErrLog.EscribeLogWS("Dentro de la aplicación no se encontraron conexiones a BD");
                }
                else
                {
                    ErrLog.EscribeLogWS("Se encontraron en la aplicación conexiones a BD");
                    ConexionesBd.ForEach(conexion =>
                    {
                        _CadenasAEncontrar.Add(new CadenaAEncontrarDto
                        {
                            Grupo        = conexion.BaseDatos,
                            NombreObjeto = conexion.Nombre,
                            TipoObjeto   = "ConexionBD",
                            TipoBusqueda = 0,
                            TipoObjetoID = 7
                        });
                    });
                    _CadenasAEncontrar = Procesos.ReordenarCadenas(_CadenasAEncontrar, ConexionesBd, AppDto);
                }
            }

            Ent.CargarCadenasDesdeBD(_CadenasAEncontrar, TipoAnalisis, AppDto);
            Parseador parser = new Parseador()
            {
                CadenasAIgnorar   = _CadenasAIgnorar,
                CadenasAEncontrar = _CadenasAEncontrar,
                RutaAnalisis      = Ruta,
                Comentarios       = Comentarios,
                ConexionesBd      = ConexionesBd
            };

            proc.SeteaAvance("En Proceso", "OK", "OK", "2", "--", "", "Guardando Datos", pdtoA, pdto);
            proc.ActualizaProcesoAvance(pdtoA, pdto);

            try
            {
                listaHallazgos = parser.ProcesarArchivos(listaArchivos, AppDto, pdto);
            }
            catch (Exception ex)
            {
                ErrLog.EscribeLogWS("Fallo el procesamiento de archivos: " + ex.Message + " " + ex.StackTrace);
                return;
            }
            StringBuilder csvSalida = new StringBuilder();

            try
            {
                csvSalida.AppendLine("AplicacionID" + separador + "ClaveAplicacion" + separador + "NumLinea" + separador + "Referencia" + separador + "ObjetoBDID" + separador +
                                     "Objeto" + separador + "TipoObjetoID" + separador + "TipoObjeto" + separador + "BaseDatosID" + separador + "BaseDatos" + separador + "Archivo" + separador
                                     + "Extension" + separador + "BibPadre" + separador + "ObjPadre");

                ErrLog.EscribeLogWS("Generando salida ...");

                List <string> resultado = new List <string>();
                resultado = Salida.GenerarSalida(separador, csvSalida, listaHallazgos);
                GuardaProcesoBD(pdtoA, pdto, resultado);
            }
            catch (Exception ex)
            {
                ErrLog.EscribeLogWS("Fallo en GenerarSalida " + ex.Message + " " + ex.StackTrace);
                return;
            }

            string rutaSalida = pathsalida + pdto.ProcesoID + ".csv";

            try
            {
                //Agregar la carga a la tabla
                File.WriteAllText(rutaSalida + "", csvSalida.ToString());
                ErrLog.EscribeLogWS("Salida CSV '" + rutaSalida + "' generada.");
            }
            catch (Exception ex)
            {
                ErrLog.EscribeLogWS("El archivo de salida CSV no pudo generarse: " + ex.Message);
                return;
            }
            finally
            {
                ErrLog.EscribeLogWS("Proceso terminado");
            }
        }
コード例 #3
0
        public List <ConexionBDDto> EncontrarConexionesNet()
        {
            ExcluyeComentarios ExcCom = new ExcluyeComentarios();
            int NumLinea;
            List <ConexionBDDto> ListadoConexiones = new List <ConexionBDDto>();

            foreach (ArchivoDto archivo in ArchivosConfiguracionNET)
            {
                //si el nombre del archivo tiene numeros entonces exluimos el archivo porque es un duplicado
                Match m = Regex.Match(archivo.Nombre, @"\d+");
                if (m.Success)
                {
                    continue;
                }

                if (archivo.Nombre.IndexOf("CambiaPwd") > -1)
                {
                    NumLinea = 0;
                }

                NumLinea = 1;
                VerCom.ComentarioBloque = "";

                using (StreamReader sr = new StreamReader(archivo.Ruta))
                {
                    while (sr.Peek() >= 0)
                    {
                        string linea       = sr.ReadLine().Trim();
                        string lineaCodigo = linea.ToLower();
                        if (!String.IsNullOrEmpty(lineaCodigo))
                        {
                            lineaCodigo = VerCom.BuscarComentario(lineaCodigo);

                            if (!string.IsNullOrEmpty(lineaCodigo))
                            {
                                string nombreBd = "", nombreConexion = "", nombreServidor = "";
                                if (lineaCodigo.IndexOf("connectionstring") >= 0)
                                {
                                    string[] patrones = { @"database\s*=\s*(\w+)", @"initial\s*catalog\s*=\s*(\w+)\s*(\w*)", "name\\s*=\\s*\"(\\w+)\"", @"server\s*=\s*\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", @"data source=\w+", @"provider=\w+" };
                                    int      index    = 0;
                                    foreach (var patron in patrones)
                                    {
                                        Match match = Regex.Match(lineaCodigo, patron);
                                        if (match.Success)
                                        {
                                            switch (index)
                                            {
                                            case 0:
                                                nombreBd = match.Value;
                                                nombreBd = nombreBd.Replace("database", string.Empty).Replace("=", string.Empty).Trim();
                                                break;

                                            case 1:
                                                nombreBd = match.Value;
                                                nombreBd = nombreBd.Replace("initial", string.Empty).Replace("catalog", string.Empty).Replace("=", string.Empty).Trim();
                                                break;

                                            case 2:
                                                nombreConexion = match.Value;
                                                nombreConexion = nombreConexion.Replace("name", string.Empty).Replace("=", string.Empty).Replace("\"", string.Empty).Trim();
                                                break;

                                            case 3:
                                                nombreServidor = match.Value;
                                                nombreServidor = nombreServidor.Replace("server", string.Empty).Replace("=", string.Empty).Trim();
                                                break;

                                            case 4:
                                                nombreBd = match.Value;
                                                nombreBd = nombreBd.Replace("data source", string.Empty).Replace("=", string.Empty).Trim();
                                                break;

                                            case 5:
                                                nombreConexion = match.Value;
                                                nombreConexion = nombreConexion.Replace("provider", string.Empty).Replace("=", string.Empty).Replace("\"", string.Empty).Trim();
                                                break;
                                            }
                                        }
                                        index++;
                                    }
                                    if (!string.IsNullOrEmpty(nombreBd) && !string.IsNullOrEmpty(nombreConexion))
                                    {
                                        if (!ListadoConexiones.Exists(x => x.BaseDatos == nombreBd && x.Nombre == nombreConexion))
                                        {
                                            ListadoConexiones.Add(new ConexionBDDto
                                            {
                                                BaseDatos = nombreBd,
                                                Nombre    = nombreConexion,
                                                Servidor  = nombreServidor
                                            });
                                        }
                                    }
                                }
                            }
                        }
                        NumLinea++;
                    }
                }
            }
            return(ListadoConexiones);
        }