private bool conexionSegunda() { string msg, response; PostBox post = new PostBox(this._source, this._destination, Constants.MENSAJE_CONEXION_B, this._keyPair, this._publicKeyClient, this._symmetricKey); msg = post.ProcesarEnvioConexion(); //Creo el cliente y le envio el mensaje Client c = new Client(); bool conexion = c.comprobarConexion(Constants.GATEKEEPER); if (conexion) { response = c.StartClient(msg, Constants.GATEKEEPER); //Proceso la respuesta post.ProcesarRespuestaConexion(response); this._connection = new PipeMessage(this._auxiliarConexion.MessageRequest, this._auxiliarConexion.MessageResponse, post.MessageRequest, post.MessageResponse, post.PublicKeyClient, this._symmetricKey); return(true); } else { return(false); } }
private void AddValues() { foreach (var neigh in this._messages) { foreach (var tupla in neigh.Value) { foreach (var dictMensaje in tupla.Item3) { PipeMessage p = dictMensaje.Value; Message enviado = p.MessageRequest; Message recibido = p.MessageResponse; this._messagesView.AppendValues(enviado.Source, enviado.Destination, enviado.MessageType, enviado.Db_type, enviado.Db_name); this._messagesView.AppendValues(recibido.Source, recibido.Destination, recibido.MessageType, recibido.Db_type, recibido.Db_name); if (p.MessageRequestConexion != null) { Message enviadoConexion = p.MessageRequestConexion; Message recibidoConexion = p.MessageResponseConexion; this._messagesView.AppendValues(enviadoConexion.Source, enviadoConexion.Destination, enviadoConexion.MessageType == null ? "" : enviadoConexion.MessageType, enviadoConexion.Db_type, enviadoConexion.Db_name); this._messagesView.AppendValues(recibidoConexion.Source, recibidoConexion.Destination, recibidoConexion.MessageType == null ? "" : recibidoConexion.MessageType, recibidoConexion.Db_type, recibidoConexion.Db_name); } } } } }
/* * Constructor del diálogo de conexión * */ public ConnectionDialog(string source, string destination, string db_type, string db_name, Cripto keyPair) { this.Build(); this._source = source; this._destination = destination; this._db_name = db_name; this._db_type = db_type; this._body = new XmlDocument(); this._typeOutPut = Constants.CANCEL; this._keyPair = keyPair; this._connection = new PipeMessage(); this._schema = new PipeMessage(); this._select = new PipeMessage(); buttonEsquema.Sensitive = false; buttonSelect.Sensitive = false; }
private Message BuscarMensaje(Tuple <string, string, string, string, string> tuplaBuscar) { Message m = null; foreach (var neigh in this._messages) { foreach (var tupla in neigh.Value) { foreach (var dictMensaje in tupla.Item3) { PipeMessage p = dictMensaje.Value; Message enviado = p.MessageRequest; Message recibido = p.MessageResponse; if (ComprobacionMensaje(tuplaBuscar, enviado)) { return(enviado); } else if (ComprobacionMensaje(tuplaBuscar, recibido)) { return(recibido); } if (p.MessageRequestConexion != null) { enviado = p.MessageRequestConexion; recibido = p.MessageResponseConexion; if (ComprobacionMensaje(tuplaBuscar, enviado)) { return(enviado); } else if (ComprobacionMensaje(tuplaBuscar, recibido)) { return(recibido); } } } } } return(m); }
/* * Constructor del diálogo de conexión * */ public ConnectionDialog(string source, string destination, string db_type, string db_name, PipeMessage pipeConexion, PipeMessage pipeSchema, Cripto keyPair) { this.Build(); this._source = source; this._destination = destination; this._db_name = db_name; this._db_type = db_type; this._body = new XmlDocument(); this._typeOutPut = Constants.CANCEL; this._keyPair = keyPair; this._connection = pipeConexion; this._schema = pipeSchema; this._select = new PipeMessage(); //Activar o desactivar los botones if (pipeConexion == null) { buttonEsquema.Sensitive = false; buttonSelect.Sensitive = false; } else { buttonConexion.Sensitive = false; buttonEsquema.Sensitive = true; } if (pipeSchema == null) { buttonSelect.Sensitive = false; } else { buttonConexion.Sensitive = false; buttonSelect.Sensitive = true; } }
/* * Método evento para solicitar esquema BBDD. BOTON ESQUEMA * */ protected void OnSchemaPngActionActivated(object sender, EventArgs e) { TreeIter t; TreePath p = treeviewDatabases.Selection.GetSelectedRows()[0]; this._infoBBDDView.GetIter(out t, p); string usuarioDestino = (string)this._infoBBDDView.GetValue(t, 0); string tipoBBDD = (string)this._infoBBDDView.GetValue(t, 1); string nombreBBDD = (string)this._infoBBDDView.GetValue(t, 2); //Comprobamos que está el usuario y si la tupla que tiene es del mismo (tipoBBDD,nombreBBDD) if (this._messages.ContainsKey(usuarioDestino)) { Tuple <string, string, Dictionary <string, PipeMessage> > tupla = DevuelveTupla(usuarioDestino, tipoBBDD, nombreBBDD); if (tupla == null) { Tuple <string, string, Dictionary <string, PipeMessage> > firstTupla = DevuelvePrimeraTupla(usuarioDestino); int index = this._messages[usuarioDestino].IndexOf(firstTupla); PipeMessage pipeConexion = this._messages[usuarioDestino][index].Item3[Constants.CONNECTION]; this._connectionDialog = new ConnectionDialog(this._user.Nombre, usuarioDestino, tipoBBDD, nombreBBDD, pipeConexion, this._claves); } else { int index = this._messages[usuarioDestino].IndexOf(tupla); if (!ComprobarTuplaConSchema(usuarioDestino, tipoBBDD, nombreBBDD)) { PipeMessage pipeConexion = this._messages[usuarioDestino][index].Item3[Constants.CONNECTION]; this._connectionDialog = new ConnectionDialog(this._user.Nombre, usuarioDestino, tipoBBDD, nombreBBDD, pipeConexion, this._claves); } } } this._connectionDialog.Run(); switch (this._connectionDialog.TypeOutPut) { case Constants.CANCEL: break; case Constants.MENSAJE_ESQUEMA: if (!ComprobarTuplaConSchema(usuarioDestino, tipoBBDD, nombreBBDD)) { Tuple <string, string, Dictionary <string, PipeMessage> > tuplaa = DevuelveTupla(usuarioDestino, tipoBBDD, nombreBBDD); if (tuplaa != null) { //Añadimos un nuevo pipeMessage a la tupla existente int indexx = this._messages[usuarioDestino].IndexOf(tuplaa); this._messages[usuarioDestino][indexx].Item3.Add(Constants.SCHEMA, this._connectionDialog.Schema); } else { Tuple <string, string, Dictionary <string, PipeMessage> > tuplaDiferente = DevuelvePrimeraTupla(usuarioDestino); //Añadimos una nueva tupla Dictionary <string, PipeMessage> diccionarioNuevo = new Dictionary <string, PipeMessage>(); //diccionarioNuevo.Add(Constants.CONNECTION, tuplaDiferente.Item3[Constants.CONNECTION]); diccionarioNuevo.Add(Constants.SCHEMA, this._connectionDialog.Schema); Tuple <string, string, Dictionary <string, PipeMessage> > tuplaNueva = new Tuple <string, string, Dictionary <string, PipeMessage> >(tipoBBDD, nombreBBDD, diccionarioNuevo); this._messages[usuarioDestino].Add(tuplaNueva); } } MostrarSolicitudEsquema(this._connectionDialog.Schema.MessageRequest); MostrarEsquema(this._connectionDialog.Schema.MessageResponse); break; case Constants.ERROR_CONNECTION: MostrarError(this._connectionDialog.TypeOutPut); break; } }
/* * Método evento para solicitar consulta BBDD. BOTON SELECT * */ protected void OnSelectPngActionActivated(object sender, EventArgs e) { TreeIter t; TreePath p = treeviewDatabases.Selection.GetSelectedRows()[0]; this._infoBBDDView.GetIter(out t, p); string usuarioDestino = (string)this._infoBBDDView.GetValue(t, 0); string tipoBBDD = (string)this._infoBBDDView.GetValue(t, 1); string nombreBBDD = (string)this._infoBBDDView.GetValue(t, 2); //Comprobamos que está el usuario y si la tupla que tiene es del mismo (tipoBBDD,nombreBBDD) if (this._messages.ContainsKey(usuarioDestino)) { Tuple <string, string, Dictionary <string, PipeMessage> > tupla = DevuelveTupla(usuarioDestino, tipoBBDD, nombreBBDD); if (tupla != null) { int index = this._messages[usuarioDestino].IndexOf(tupla); if (ComprobarTuplaConSchema(usuarioDestino, tipoBBDD, nombreBBDD)) { PipeMessage pipeConexion = null; if (this._messages[usuarioDestino][index].Item3.ContainsKey(Constants.CONNECTION)) { pipeConexion = this._messages[usuarioDestino][index].Item3[Constants.CONNECTION]; } else { Tuple <string, string, Dictionary <string, PipeMessage> > tuplaAuxiliar = DevuelveTupla(usuarioDestino, null, null); int indexAuxiliar = this._messages[usuarioDestino].IndexOf(tuplaAuxiliar); pipeConexion = this._messages[usuarioDestino][indexAuxiliar].Item3[Constants.CONNECTION]; } PipeMessage pipeSchema = this._messages[usuarioDestino][index].Item3[Constants.SCHEMA]; this._connectionDialog = new ConnectionDialog(this._user.Nombre, usuarioDestino, tipoBBDD, nombreBBDD, pipeConexion, pipeSchema, this._claves); } } } this._connectionDialog.Run(); switch (this._connectionDialog.TypeOutPut) { case Constants.CANCEL: break; case Constants.MENSAJE_CONSULTA: Tuple <string, string, Dictionary <string, PipeMessage> > tupla = DevuelveTupla(usuarioDestino, tipoBBDD, nombreBBDD); int index = this._messages[usuarioDestino].IndexOf(tupla); if (this._messages[usuarioDestino][index].Item3.ContainsKey(Constants.SELECT)) { this._messages[usuarioDestino][index].Item3[Constants.SELECT] = this._connectionDialog.Select; } else { this._messages[usuarioDestino][index].Item3.Add(Constants.SELECT, this._connectionDialog.Select); } MostrarSolicitudConsulta(this._connectionDialog.Select.MessageRequest); MostrarResultadoConsulta(this._connectionDialog.Select.MessageRequest, this._connectionDialog.Select.MessageResponse); break; case Constants.ERROR_CONNECTION: MostrarError(this._connectionDialog.TypeOutPut); break; } }