/* * 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); } }
/* * 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); }