Example #1
0
        /*
         * Método para añadir una base de datos
         * */
        public bool addDatabase(string tipoBBDD, string nombreBBDD, string usuarioDatabase, string passwordDatabase)
        {
            if (this._databasesPropias.ContainsKey(tipoBBDD) &&
                devuelveTupla(tipoBBDD, nombreBBDD) != null)
            {
                return(false);
            }

            try
            {
                using (StreamWriter w = File.AppendText(Constants.ConfigFileDatabases))
                {
                    if (usuarioDatabase == null)
                    {
                        w.WriteLine(tipoBBDD + "*" + nombreBBDD + ";");
                    }
                    else
                    {
                        string content         = tipoBBDD + "*" + nombreBBDD + "|" + usuarioDatabase + "*";
                        byte[] passwordEncrypt = Cripto.EncryptStringToBytes(this._symmetric, passwordDatabase);
                        w.Write(content);
                        w.Write(Convert.ToBase64String(passwordEncrypt));
                        w.WriteLine(";");
                    }

                    if (this._databasesPropias.ContainsKey(tipoBBDD))
                    {
                        Tuple <string, string, string> tupla = new Tuple <string, string, string>(nombreBBDD, usuarioDatabase, passwordDatabase);
                        this._databasesPropias[tipoBBDD].Add(tupla);
                    }
                    else
                    {
                        List <Tuple <string, string, string> > aux   = new List <Tuple <string, string, string> >();
                        Tuple <string, string, string>         tupla = new Tuple <string, string, string>(nombreBBDD, usuarioDatabase, passwordDatabase);
                        aux.Add(tupla);
                        this._databasesPropias.Add(tipoBBDD, aux);
                    }

                    return(true);
                }
            }catch (Exception) {
                return(false);
            }
        }
Example #2
0
        /*
         * Método para modificar la base de datos
         * */
        public bool ModifyDatabase(List <string> bbdd, string nuevoTipoBBDD, string nuevoNombreBBDD, string nuevoUserDatabase, string nuevoPasswordDatabase)
        {
            if (!this._databasesPropias.ContainsKey(bbdd[0]) ||
                !this._databasesPropias[bbdd[0]].Contains(devuelveTupla(bbdd[0], bbdd[1])))
            {
                return(false);
            }

            if (!File.Exists(Constants.ConfigFileDatabases))
            {
                throw new Exception("No hay archivo de configuración");
            }

            string tempFile = Constants.CONFIG + "temp.txt";

            string[] lines       = File.ReadAllLines(Constants.ConfigFileDatabases);
            string   lineExactly = null;

            foreach (string linea in lines)
            {
                if (linea.StartsWith(bbdd[0] + "*" + bbdd[1] + "|") || linea.StartsWith(bbdd[0] + "*" + bbdd[1] + ";"))
                {
                    lineExactly = linea;
                }
            }

            string line = null, lineToWrite;

            if (nuevoUserDatabase == null)
            {
                lineToWrite = nuevoTipoBBDD + "*" + nuevoNombreBBDD + ";";
            }
            else
            {
                byte[] passwordEncrypt = Cripto.EncryptStringToBytes(this._symmetric, nuevoPasswordDatabase);
                lineToWrite = nuevoTipoBBDD + "*" + nuevoNombreBBDD + "|" + nuevoUserDatabase + "*" + Convert.ToBase64String(passwordEncrypt) + ";";
            }
            //Escribo en un archivo temporal mientras que leo
            using (StreamReader reader = new StreamReader(Constants.ConfigFileDatabases))
                using (StreamWriter writer = new StreamWriter(tempFile))
                {
                    while ((line = reader.ReadLine()) != null)
                    {
                        //Sustituyo la linea que he modificado
                        if (line == lineExactly)
                        {
                            writer.WriteLine(lineToWrite);
                        }
                        else
                        {
                            writer.WriteLine(line);
                        }
                    }
                }

            //Borro el original,copio creando el original y borro el temporal
            File.Delete(Constants.ConfigFileDatabases);
            File.Copy(tempFile, Constants.ConfigFileDatabases);
            File.Delete(tempFile);

            return(true);
        }