/// <summary> /// Metodo responsabile della ricerca in base ad una query prestabilita /// </summary> /// <param name="query">Stringa da ricercare</param> /// <returns></returns> public IList <IStazione> Cerca(string query) { string uppercaseQuery = query.ToUpper(); List <IStazione> stazioni = new List <IStazione>(); // Effettuo una ricerca CASE-INSENSITIVE sui campi using (SQLiteCommand cmd = new SQLiteCommand("SELECT stazioni.id AS stazioni_id, " + "stazioni.nome AS stazioni_nome, " + "stazioni.locazione AS stazioni_locazione, " + "stazioni.indirizzoDiRete AS stazioni_indirizzoDiRete, " + "stazioni.porta AS stazioni_porta, stazioni.impronta AS stazioni_impronta " + "FROM stazioni WHERE UPPER(nome) LIKE '%' || @query || '%' " + "OR UPPER(locazione) LIKE '%' || @query || '%' " + "OR UPPER(indirizzoDiRete) LIKE '%' || @query || '%'" , _connection)) { cmd.Prepare(); cmd.Parameters.AddWithValue("@query", uppercaseQuery); using (SQLiteDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { // Converto la entry del database in una stazione IStazione stazioneCorrente = Stazione.ConvertiRigaInStazione(reader); if (stazioneCorrente != null) { stazioni.Add(stazioneCorrente); } } } } return(stazioni); }
/// <summary> /// Metodo che si occupa di listare tutte le stazioni del database /// </summary> /// <returns></returns> public IList <IStazione> ListaTutti() { List <IStazione> stazioni = new List <IStazione>(); using (SQLiteCommand cmd = new SQLiteCommand("SELECT stazioni.id AS stazioni_id, " + "stazioni.nome AS stazioni_nome, " + "stazioni.locazione AS stazioni_locazione, " + "stazioni.indirizzoDiRete AS stazioni_indirizzoDiRete, " + "stazioni.porta AS stazioni_porta, stazioni.impronta AS stazioni_impronta " + "FROM stazioni", _connection)) { using (SQLiteDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { // Converto la entry del database in una stazione IStazione stazioneCorrente = Stazione.ConvertiRigaInStazione(reader); if (stazioneCorrente != null) { stazioni.Add(stazioneCorrente); } } } } return(stazioni); }
public ISorgente NuovaSorgenteRemota(IStazione stazione, string user, string pass) { // Creo lo stream remoto SslStream stream = creatoreConnessioni.CreaConnessione(stazione, user, pass); // Creo la sorgente return(new SorgenteRemota(stream, stazione, _gestoreEventi)); }
public EventoSismico(string tag, Priorita priorita, string message, long timestamp, IStazione stazione) { Tag = tag; Priorita = priorita; Messaggio = message; Timestamp = timestamp; Stazione = stazione; }
public SslStream CreaConnessione(IStazione stazione, string user, string password) { TcpClient tcpclnt = new TcpClient(); Console.WriteLine("Creazione della connessione in corso..."); tcpclnt.Connect(stazione.IndirizzoDiRete, stazione.Porta); SslStream sslStream = new SslStream( tcpclnt.GetStream(), false, new RemoteCertificateValidationCallback(ValidaCertificatoServer), null ); // Cerca di validare il certificato, se fallisce lancia una NonFidatoEccezione try { sslStream.AuthenticateAsClient("Sismio"); } catch (System.Security.Authentication.AuthenticationException e) { throw new NonFidatoEccezione("Il certificato della stazione remota non corrisponde ad uno autorizzato"); } Console.WriteLine("Invio delle credenziali..."); // Effettua la verifica delle credenziali BinaryWriter writerBinario = new BinaryWriter(sslStream); BinaryReader readerBinario = new BinaryReader(sslStream); // Invia username e password writerBinario.Write(user); writerBinario.Write(password); // Attendo la risposta string risposta = readerBinario.ReadString(); if (risposta == "ACCEPT") // Credenziali accettate, procedo { Console.WriteLine("Connessione accettata!"); return(sslStream); } else if (risposta == "INVALID") // Credenziali non accettate, lancio eccezione { Console.WriteLine("Credenziali invalide"); throw new CredenzialiInvalideEccezione("Le credenziali remote non sono state accettate"); } else // Risposta invalida { throw new RispostaInvalidaEccezione("Il server non ha restituito una risposta valida"); } }
private void btnAccedi_Click(object sender, EventArgs e) { string nomeSorgente = (string)comboBoxSorgente.SelectedItem; ISorgente sorgente = null; if (nomeSorgente == "Locale") { if (_controller.Autentica(this.textUsername.Text, this.textPassword.Text)) { sorgente = _factory.NuovaSorgenteLocale(); } else { MessageBox.Show("Coppia utente e password non corretta. Impossibile accedere.", "Credenziali non valide", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { IStazione stazione = _stazioniController.Cerca(nomeSorgente)[0]; try { sorgente = _factory.NuovaSorgenteRemota(stazione, this.textUsername.Text, this.textPassword.Text); } catch (CredenzialiInvalideEccezione e1) { MessageBox.Show("Coppia utente e password non corretta. Il server ha rifiutato la connessione.", "Credenziali non valide", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (NonFidatoEccezione e2) { MessageBox.Show("Il certificato della stazione remota non è valido.", "Errore certificato", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (RispostaInvalidaEccezione e3) { MessageBox.Show("Il server non ha restituito una risposta valida", "Risposta invalida", MessageBoxButtons.OK, MessageBoxIcon.Error); } } if (sorgente != null) { this.Hide(); Form mainForm = new MainForm(_gestioneUtentiController, _stazioniController, _storicoController, sorgente, _gestoreEventi, _controller); DialogResult res = mainForm.ShowDialog(); CaricaSorgenti(); this.Show(); } }
public SorgenteRemota(SslStream connessione, IStazione stazione, GestoreEventi gestoreEventi) { _connessione = connessione; this._gestoreEventi = gestoreEventi; Stazione = stazione; }