TuxSMS

Introduzione
TuxSMS è un tool sviluppato in C per il sistema operativo Linux, che permette di inviare sms attraverso il servizio web offerto dal portale di Libero Infostrada/Wind. Purtroppo ora non è più funzionante in quanto il servizio web a cui si appoggiava, il portale di Libero Infostrada/Wind, ha cambiato le stringhe HTTP request necessarie per attivare il servizio. Ho pensato comunque di renderlo disponibile, sotto licenza GPL, come esempio di applicazione dei socket, uno dei principali strumenti di comunicazione di Unix.
Questo programma sfruttava tutte le opzioni offerte dal servizio di Libero Infostrada/Wind, come la possibilità di scelta tra la spedizione instantanea o posticipata ad un particolare giorno e ad una data ora dei messaggi, ma risentiva ovviamente anche dei limiti imposti dal suddetto servizio, come il limite dei 124 caratteri per messaggio e il numero massimo di spedizioni consentite, che è di 30 sms al giorno verso cellulari WIND e solamente di 1 al giorno verso cellulari con altri contratti.
Istruzioni
TuxSMS funziona da linea di comando e ha la seguente sintassi:
$tuxsms -l <login> -w <password> -d <dominio> -x <prefisso> - n <numero> -f <text_file> [ -h <ora> -m <minuti> -y <data>] [<address>]
dove:
- <login>: è lo username per il login al servizio di Libero Infostrada/WInd.
- <password>: è la password per il login al servizio di Libero Infostrada/Wind.
- <dominio>: è il dominio in cui si è registrati, può essere “libero”, “inwind” o “iol”.
- <prefisso>: è il prefisso del cellulare a cui mandare il messaggio.
- <numero>: è il numero del cellulare a cui mandare il messaggio.
- <text_file>: nome del file dove è memorizzato il messaggio.
- <ora>: ora alla quale spedire il messaggio. Il suo valore può essere [00 ..24].
- <minuti>: minuti.
- <data>: data in cui far pervenire il messaggio. Va inserita nella forma
. - <address>: un indirizzo internet valido, che può essere numerico o
simbolico.
I primi sei parametri vanno obbligatoriamente inseriti tutti. Inserendo uno dei parametri opzionali si assume implicitamente che si voglia spedire il messaggio in modalità posticipata e vanno obbligatoriamente inseriti anche i restanti parametri. L’ordine di inserimento dei parametri non è importante, a parte l’indirizzo internet che, se inserito, va posto necessariamente alla fine. Nel caso l’indirizzo non venga inserito, verrà fatta una richiesta esplicita alla quale inserire l’indirizzo numerico o simbolico dell’host che offre il servizio, che è windeureka.iol.it. L’inserimento dell’indirizzo, anche se per il momento il programma sfrutta solo il servizio del portale di Libero Infostrada/Wind, può risultare utile nel caso quest’ultimo cambi locazione e per sviluppi futuri dello stesso TuxSMS, come la gestione di più servizi a scelta dell’utente, tramite un opportuno file di configurazione.
Come funziona
TuxSMS è un client command line che simula, sfruttando il protocollo HTTP, la comunicazione che avverrebbe tra il browser e il sito http://windeureka.iol.it/inviosms.php, fino a spedire il messaggio vero e proprio. L’HTTP è un protocollo di trasferimento dati client/server che si appoggia al TCP. L’HTTP, al contrario dei protocolli FTP, Telnet, mail (SMTP), che sono nati per determinate applicazioni (quindi per trasferire file di un certo tipo), è stato pensato per trasferire dati di qualsiasi tipo. In seguito si è evoluto per ragioni commerciali, poichè il World Wide Web è usato per siti principalmente commerciali. La caratteristica più interessante di questo protocollo, che è anche la caratteristica principale sfruttata da TuxSMS per colloquiare col servizio, è il fatto di essere di tipo request/response: la connessione viene stabilita dal client e chiusa dal server. La richiesta inviata dal client comprende una intestazione e il corpo del messaggio; il server, ricevuta la richiesta, provvede al recupero del documento e lo spedisce al client in risposta. Viene così chiusa la connessione. TuxSMS, attraverso i socket, che sono uno dei principali meccanismi di comunicazione tra processi di Unix, effettua tre HTTP request al server HTTP dell’host windeureka.iol.it alla porta 80 (porta di default per i servizi HTTP) da cui riceve altrettante response. Tutte e tre le request utilizzano il metodo GET, che serve per avere in risposta una risorsa. Quando viene scelto questo metodo, viene generarata una URL del tipo:
action?nome1=valore1&nome2=valore2&nome3=valore3…
dove action è la URL specificata con il comando ACTION, che nel nostro caso sarà sempre uno script php. In pratica, la nuova URL è formata dalla URL specificata con ACTION alla quale viene aggiunto un carattere di “?” e poi, subito dopo, il vettore che contiene i nomi e i valori dei campi. In altre parole, con il metodo GET il contenuto della form HTML compilata dal client viene inviato insieme alla URL. Per non generare ambiguità in ricezione, i nomi dei
campi vengono separati dai loro rispettivi valori con un carattere di “=”. Si vengono a creare così coppie nome=valore, che vengono a loro volta separate da un carattere di “&”. Inoltre nomi e valori vengono codificati secondo lo standard URL, che prevede che gli spazi (ASCII esadecimale 20) vengano sostituiti dal carattere “+”. TuxSMS evita all’utente di scrivere messaggi codificati, in quanto al suo interno ha routines che si occupano di modificare il messaggio secondo tale standard. La prima request generata da TuxSMS serve per ottenere in response il codice della sessione, indispensabile per poter effettuare il login al servizio, di cui si occupa la seconda request. La terza request, infine, manda il messaggio vero e proprio.
Downloads
Posted on February 23rd, 2007 by gyofer
Filed under: unix programming
Leave a Reply