Craere un SMS Gateway con interfaccia Web

In questi giorni mi è capitato di dover “tirare su” un SMS Gateway da integrare con alcuni servizi e mi sono imbattuto in Kannel.

Kannel è un Gateway SMS e WAP Open Source molto leggero ma estremamente potente.

Di seguito illustrerò come installare Kannel e successivamente come integrarlo con PlaySMS.

PlaySMS è anch’esso un Gateway SMS con una sua interfaccia Web che si interfaccia alla perfezione con Kannel e permette l’archiviazione dei messaggia ricevuti ed inviati in un Database MySQL

Nella guida seguente supponiamo di avere due Server:

– Server SMS Gateway

– Server Web e MySQL

Per prima cosa, installiamo Kannel:

NB: per la compilazione ha bisogno dei seguenti pacchetti: gcc gcc-c++ make libxml2-devel  subversion quindi è necessario installali prima di avviare i seguenti comandi.

Per il download di Kannel utilizzeremo Subversion (SVN) prendendo l’ultima versione disponibile in questo modo:

mkdir /root/gateway
cd /root/gateway/
svn co https://svn.kannel.org/gateway/trunk

A questo punto inizierà il download dei sorgenti, una volta completato compiliamo i sorgenti:

cd /root/gateway/trunk
./configure --prefix=/usr/local/kannel/ --enable-start-stop-daemon
make
make install

Adesso Kannel è compilato e pronto per funzionare, manca la compilazione del suo file di configurazione, ma per quello ci viene in contro PlaySMS.

Passiamo quindi ad installare PlaySMS sul nostro Web Server.

NB. La guida originale fa copiare i file in percorsi dove utenti non-root non potrebbero accedere, questa è stata riadattata in modo da poter funzionare anche senza privilegi di root.

Iniziamo con lo scaricare PlaySMS (alla scrittura di questo articolo l’ultima release è la 0.9.5.3) da qui

Decomprimete il file ed avrete le seguenti cartelle al suo interno:

[15:49:44] test@Server.SysAdminDiary.it [~/playsms-0.9.5.3]
>ls -l
total 20K
drwxrwxr-x 2 test test 4.0K Sep 10 00:23 bin
drwxrwxr-x 5 test test 4.0K Sep 10 00:23 contrib
drwxrwxr-x 2 test test 4.0K Sep 10 00:23 db
-rw-rw-r-- 1 test test   43 Sep 10 00:23 README
drwxrwxr-x 7 test test 4.0K Sep 10 00:23 web

La cartella web contiene le pagine PHP ed il file config-dist.php (che andrà rinominato in config.php) dove impostare la connessione al Database.

La cartella db contiene il file playsms.sql che dovrete importare nel Database MySQL che avrete precedentemente creato.

La cartella bin contiene degli script eseguibili.

La cartella contrib contiene la cartella kannel dove al suo interno è presente un file pre-configurato per l’integrazione di Kannel con PlaySMS.

Tale file dovrà essere editato con il vostro editor preferito per poter cambiare l’IP, le password, l’URL di connessione da Kannel a PlaySMS e la configurazione del Modem.

Attualmente ho avuto modo di provare il seguente setup con i Modem Wavecom FastTrack e Huawei E220 (entrambi testati su CentOS 5.7 64Bit)

Per una corretta installazione importate nel Database il file playsms.sql, nella vostra public_html del Web Server il contenuto della cartella web (con il file config.php correttamente configurato) e in una cartella non accessibile dal web (sempre però del vostro utente) la cartella bin.

All’interno di questultima lasciare solo i seguenti file:

-rw-rw-r-- 1 test test 142 Sep 10 00:23 playsms
-rwxrwxr-x 1 test test 130 Sep 10 00:23 playsmsd
-rwxrwxr-x 1 test test 786 Sep 10 00:23 playsmsd.php
-rwxrwxr-x 1 test test 114 Sep 10 00:23 playsmsd_start
-rwxrwxr-x 1 test test  73 Sep 10 00:23 playsmsd_stop

Opportunamente editati con il vostro editor preferito in modo da far combaciare i path con quelli del vostro utente.

es. playsms

PLAYSMS_PATH=/var/www/playsms
PLAYSMS_BIN=/usr/local/bin
PLAYSMS_SMSD=/usr/sbin
PLAYSMS_LOG=/var/log/playsms
PLAYSMS_SPOOL=/var/spool/playsms

questo file, a seconda dei vari path, potrebbe diventare in questo modo:

PLAYSMS_PATH=/home/test/public_html/playsms
PLAYSMS_BIN=/home/test/bin
PLAYSMS_SMSD=/home/test/bin
PLAYSMS_LOG=/home/test/sms/log
PLAYSMS_SPOOL=/home/test/sms/spool

NB. La cartella log e la cartella spool devono essere create prima di avviare PlaySMS o nessun file ne di log ne di spool verrà creato.

Questo tipo di mofiche come detto andranno fatte ad ogni file della cartella bin

Una volta fatto ciò potrete avviare il servizio PlaySMS da console con il comando:

/home/test/bin/playsmsd_start

Una volte avviato PlaySMS avviamo anche Kannel utilizzando i seguenti comandi:

/usr/local/kannel/sbin/bearerbox /usr/local/kannel/kannel.conf &
/usr/local/kannel/sbin/smsbox /usr/local/kannel/kannel.conf &

Vi consiglio di fare uno script di avvio per Kannel in questo modo:

/usr/local/kannel/sbin/bearerbox /usr/local/kannel/kannel.conf &
sleep 5;
/usr/local/kannel/sbin/smsbox /usr/local/kannel/kannel.conf &

Per controllare che sia partito possiamo utilizzare il seguente comando:

ps aux | grep kannel

E dovremmo avere un output simile al seguente:

[16:05:48] test@Server.SysAdminDiary.it [~/usr/local/kannel]
>ps aux | grep kannel
root      2349  0.0  0.6 112488  3396 ?        Sl   Dec12   0:02 /usr/local/kannel/sbin/bearerbox /usr/local/kannel/kannel.conf
root      2359  0.0  0.6 101908  3276 ?        Sl   Dec12   0:00 /usr/local/kannel/sbin/smsbox /usr/local/kannel/kannel.conf

Una volta confermato che Kannel è avviato e funzionante possiamo accedere a PlaySMS all’indirizzo http://IP_WebServer/playsms (potrebbe essere diverso a seconda della configurazione del vostro Web Server) utilizzando admin sia come utente che come password.

Una volta entrati per completare la configurazione andate nel menù Gateway alla voce Manage Kannel per configurare Username e Password (impostati precedentemente nel file kannel.conf), l’IP del Server SMS Gateway e l’URL di PlaySMS.

Fatto ciò, attivate il modulo ed il gioco è fatto, il vostro sistema di SMS Gateway è pronto e funzionante.

Per provarlo, andate su My Account alla voce Send SMS e provate ad inviarvi un SMS.

Se avete problemi o qualcosa non vi è chiaro, contattateci via e-mail all’indirizzo info@sysadmindiary.it per aiuto e/o delucidazioni.

About The Author

No Comments

Leave A Reply

You must be logged in to post a comment.