Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        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));
        }
Exemple #4
0
 public EventoSismico(string tag, Priorita priorita, string message, long timestamp, IStazione stazione)
 {
     Tag       = tag;
     Priorita  = priorita;
     Messaggio = message;
     Timestamp = timestamp;
     Stazione  = stazione;
 }
Exemple #5
0
        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");
            }
        }
Exemple #6
0
        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();
            }
        }
Exemple #7
0
 public SorgenteRemota(SslStream connessione, IStazione stazione, GestoreEventi gestoreEventi)
 {
     _connessione        = connessione;
     this._gestoreEventi = gestoreEventi;
     Stazione            = stazione;
 }