Canal :
Kannel est une passerelle WAP et SMS open source pour les réseaux GSM. De plus, Kannel peut envoyer/recevoir des SMS à l'aide d'un modem GSM série ou USB. Il est accessible via l'API HTTP et peut être utilisé pour envoyer des SMS en masse, OTP, etc.
Ainsi, Kannel a trois programmes principaux appelés boîtes :bearerbox , boîte SMS , wapbox .
- Interfaces Bearerbox vers les téléphones. Il accepte les messages WAP et SMS des téléphones et les envoie aux autres boîtes.
- SMSbox gère la fonctionnalité de passerelle SMS.
- WAPbox gère la fonctionnalité de passerelle WAP.
Il est possible d'avoir plusieurs SMSbox et plusieurs WAPbox sur différents hosts ce qui lui permet de gérer une charge plus importante.
Kannel prend également en charge l'intégration de bases de données et prend en charge mysql , pgsql , sdb , mssql , sqlite3 , oracle , redis et cassandre .
Kannel propose une large gamme de prise en charge de modem GSM; de plus, tout modem GSM accessible via un port série ou USB avec le pilote approprié et prenant en charge la commande AT serait utilisé avec Kannel.
Préparez-vous à installer Kannel SMS Gateway :
Ici, nous allons installer une dernière version stable de Kannel SMS Gateway 1.4.5 à partir du fichier tar source sur Debian 10 (buster) . Ici, nous allons configurer les composants principaux :bearerbox et smsbox celui qui est utilisé pour SMS Gateway.
IP hôte SMS-GW | 192.168.10.38 |
IP de l'hôte client Windows | 192.168.10.31 |
IP de l'hôte du client Linux | 192.168.10.37 |
Modèle de modem GSM | Modem USB 3G/GSM Huawei E303 |
Vérifiez la version du système d'exploitation
root@sms-gw :~# cat /etc/os-release
Sortie :
Connectez le modem USB à l'hôte Linux et vérifiez s'il détecte le modem en émettant lsusb commande
root@sms-gw :~# lsusb
Sortie :
Le modem a détecté sur le bus 2.
Maintenant, nous devons trouver à quel TTY le modem est connecté
root@sms-gw :~# ls /dev/ttyUSB*
Sortie :
Nous voyons que le modem est connecté sur /dev/ttyUSB0 et /dev/ttyUSB1 .En général, le débit en bauds de ces modems est de 9 600 ou 115 200.
Il existe un outil pratique wvdial , pour identifier le TTY USB et le débit en bauds d'un modem. wvdial est généralement utilisé comme numéroteur PPP en ligne de commande pour utiliser l'Internet mobile.
Installez wvdial pour trouver l'USB TTY et le débit en bauds du modem.
root@sms-gw :~# apt-get update
root@sms-gw :~# apt-get install -y wvdial
Émettez wvdialconf commande pour découvrir le TTY et le débit en bauds du modem
root@sms-gw :~# wvdialconf
Sortie :
D'après la sortie, nous constatons que le modem est connecté sur /dev/ttyUSB0 et le débit en bauds id 9600. wvdialconf écrit également la configuration de base du modem dans /etc/wvdial.conf fichier.
Installez maintenant les dépendances nécessaires pour Kannel
root@sms-gw :~# apt-get install -y linux-headers-$(uname -r) build-essential make gcc cpp wget curl libxml2 libxml2-dev bison flex byacc zlib1g-dev libiconv-hook1 libtoolInstallation de la passerelle SMS Kannel :
Téléchargez l'archive source depuis https://kannel.org/download/1.4.5/gateway-1.4.5.tar.gz
root@sms-gw:~# wget --no-check-certificate https://kannel.org/download/1.4.5/gateway-1.4.5.tar.gzDécompressez le fichier et entrez le répertoire source
root@sms-gw :~# tar -zxf gateway-1.4.5.tar.gz
root@sms-gw :~# cd gateway-1.4.5/Exécutez configurer fichier avec préfixe de répertoire personnel kannel et start-stop-deamon, ici nous utilisons /usr/local/kannel comme répertoire personnel du canal
root@sms-gw:~/gateway-1.4.5# ./configure --enable-start-stop-daemon --prefix=/usr/local/kannelNous pouvons également désactiver la wapbox car nous ne l'utiliserons pas
root@sms-gw:~/gateway-1.4.5# ./configure --enable-start-stop-daemon --prefix=/usr/local/kannel --disable-wapAprès avoir terminé avec succès la configuration script exécuté, compilez le package
root@sms-gw :~/gateway-1.4.5# makeInstallez les programmes avec les fichiers de données et la documentation
root@sms-gw :~/gateway-1.4.5# make installIl installera les binaires, bibliothèques et documents nécessaires dans différents répertoires dans /usr/local/kannel/ emplacement.
Remarque : Si vous rencontrez un problème lors de la création nous pouvons nettoyer ou désinstaller et recommencer. Pour nettoyer, lancez rendre propre , pour désinstaller, exécutez make uninstall commande.
Créez maintenant etc , exécuter et journal répertoires
root@sms-gw :~# mkdir /usr/local/kannel/etc
root@sms-gw :~# mkdir /usr/local/kannel/run
root@sms-gw :~# mkdir /var/log/kannel/Créer le fichier de configuration du canal /usr/local/kannel/etc/kannel.conf avec le contenu ci-dessous
##CORE
groupe =noyau
port-admin =13000
port smsbox =13001
mot de passe-admin =sms-gw-admin-passwd
status-password =sms-gw-status-passwd
admin-deny-ip ="*.*.*.*"
admin-allow-ip ="*.*.*.*"
box-deny-ip ="*.*.*.*"
box-allow-ip ="*.*.*.*"
niveau journal =0
fichier-journal ="https://1118798822.rsc.cdn77.org/var/log/kannel/kannel.log"
dlr-stockage =interne
sms-renvoyer-réessayer =1
## SMSC
groupe =smsc
smsc =à
smsc-id =smsc01
autorisé-smsc-id =smsc01
id-smsc-préféré =smsc01
type de modem =Huawei
périphérique =/dev/ttyUSB0
vitesse =9600
alt-charset ="GSM"
sim-tampon =vrai
fichier-journal =/var/log/kannel/smsc01-gsm1.log
niveau journal =0
##MODEMS
groupe =modems
identifiant =Huawei
activer-mms =vrai
chaîne-init ="ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0;+CNMI=1,3,2,2,1;+CMEE=1;+CPMS=\"SM\",\"SM\" ,\"SM\";+CMGF=0;+CSCS=GSM
vitesse =9600
detect-string ="huawei"
##SMSBOX
groupe =smsbox
hôte-boîte-porteur =hôte local
sendsms-port =13013
expéditeur global =13013
mo-recode =vrai
envoiems-chars ="0123456789 +-"
fichier journal ="https://1118798822.rsc.cdn77.org/var/log/kannel/smsbox.log"
niveau journal =0
access-log ="https://1118798822.rsc.cdn77.org/var/log/kannel/access.log"
##SMS-UTILISATEUR
groupe =utilisateur sendsms
user-deny-ip ="*.*.*.*"
user-allow-ip ="*.*.*.*"
nom d'utilisateur =canal
mot de passe =kannelpasswd
défaut-smsc =smsc01
concaténation =1
max-messages =10
##SMS-SERVICE
groupe =service sms
mot-clé =par défaut
get-url =" "http://%S"
accept-x-kannel-headers =vrai
max-messages =10
concaténation =vrai
fourre-tout =vrai
omit-vide =vraiRemarque : get-url directives de configuration dans le sms-serice groupe indique le style d'appel de l'API HTTP du serveur HTTP distant. Exemple :pour le serveur PlaySMS distant
get-url ="http://PLAYSMS-SERVER-IP/playsms/plugin/gateway/kannel/geturl.php?t=%t&q=%q&a=%aQ=%Q&smsc=%i"Créer init script pour démarrer/arrêter les boîtes kannel comme /etc/init.d/kannel
#!/bin/bash
# Démarrer/arrêter les boîtes Kannel :Une boîte porteuse et une boîte SMS.
BOXPATH=/usr/local/canal/sbin
PIDFILES=/usr/local/canal/run
CONFDIR=/usr/local/canal/etc
CONF=$CONFDIR/kannel.conf
USER=canal
VERSION=""
RB=$BOXPATH/run_kannel_box$VERSION
BB=$BOXPATH/bearerbox$VERSION
WB=$BOXPATH/wapbox$VERSION
SB=$BOXPATH/smsbox$VERSION
SSD=$BOXPATH/start-stop-daemon$VERSION
CHEMIN=$CHEMINBOX:$CHEMIN
case "$1" dans
Démarrer)
echo -n "Démarrage de la passerelle WAP :bearerbox"
$SSD --start --quiet --pidfile $PIDFILES/kannel_bearerbox.pid --exec $RB -- --pidfile $PIDFILES/kannel_bearerbox.pid $BB -- $CONF
echo -n "boite sms"
$SSD --start --quiet --pidfile $PIDFILES/canal_smsbox.pid --exec $RB -- --pidfile $PIDFILES/cannel_smsbox.pid $SB -- $CONF
dormir 3
écho "."
;;
arrêt)
echo -n "Arrêt de la passerelle WAP :"
echo -n "boite sms"
$SSD --stop --quiet --pidfile $PIDFILES/kannel_smsbox.pid --exec $RB
echo -n "porteur"
$SSD --stop --quiet --pidfile $PIDFILES/kannel_bearerbox.pid --exec $RB
écho "."
;;
statut)
CORE_CONF=$(grep -r 'group[[:space:]]*=[[:space:]]*core' $CONFDIR | cut -d:-f1)
ADMIN_PORT=$(grep '^admin-port' $CORE_CONF | sed "s/.*=[[:space:]]*//")
ADMIN_PASS=$(grep '^admin-password' $CORE_CONF | sed "s/.*=[[:space:]]*//")
STATUS_URL="http://127.0.0.1 :${ADMIN_PORT}/status.txt?password=${ADMIN_PASS}"
curl $STATUS_URL
;;
recharger)
# Nous n'avons pas encore de support pour cela.
sortie 1
;;
redémarrage|rechargement forcé)
0 $ d'arrêt
dormir 3
0 $ de début
;;
*)
echo "Utilisation :$0 {start|stop|status|reload|restart|force-reload}"
sortie 1
esac
sortie 0Remarque : Le script ci-dessus est un init.d par défaut scénario pour Kannel. Cette configuration est appropriée pour un petit site exécutant Kannel sur une seule machine. S'il vous plaît, assurez-vous que les binaires Kannel peuvent être trouvés dans $BOXPATH ou ailleurs le long de $PATH . run_kannel_box doit être dans $BOXPATH .
Faites le /etc/init.d/kannel fichier exécutable
root@sms-gw :~# chmod +x /etc/init.d/kannelDémarrer le canal
root@sms-gw:~# /etc/init.d/kannel startSortie :
Vérifier le canal bearerbox et smsbox état d'écoute
Vérifiez l'état de Kannel depuis l'intérieur de la boîte Linux
root@sms-gw :~# /etc/init.d/état du kannelUtilisez http://192.168.10.38:13000/status?password=sms‑gw‑admin‑passwd URL du navigateur de la machine cliente Windows pour vérifier l'état
Envoi de SMS à l'aide de la passerelle SMS Kannel :
Nous pouvons envoyer des SMS à partir de n'importe quel navigateur de machine cliente en utilisant l'URL. Exemple :
http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000&text=SMS+from+kannel+01La page Web affiche le code de réponse SMS Push 0 :Accepté pour livraison , ce qui indique que Kannel a accepté le SMS pour livraison au destinataire
Envoi de SMS depuis une boîte Linux en utilisant curl
root@host1:~# curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000&text=SMS+from+kannel+02"Sortie :
Envoyer des SMS en utilisant le texte SMS à partir du fichier en utilisant curl
root@host1:~# echo "SMS du fichier utilisant curl"> smsfile.txt
root@host1:~# curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000" -G --data-urlencode [email protected]Envoi de SMS par tuyauterie sortie vers curl
root@host1:~# printf "SMS depuis la sortie" | curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000" -G --data-urlencode text@-SMS reçu par l'appareil mobile
Remarque : Il y a quelques autres codes de réponse SMS Push de Kannel
Code d'état | Corps du message | Signification |
202 | 0 :Accepté pour la livraison | Le SMS a été accepté et est transmis à un chauffeur SMSC |
202 | 3 :mis en file d'attente pour livraison ultérieure | La boîte porteuse accepté et stocké le message dans une file d'attente pour livraison ultérieure |
4xx | (varie) | Il y avait quelque chose qui n'allait pas dans la demande ou la configuration de Kannel, vérifiez la demande et la configuration de Kannel. |
503 | Échec temporaire, réessayez plus tard | Il y a eu un échec temporaire, réessayez plus tard. |
Vérification des journaux :
Nous trouverons le noyau Kannel bearerbox se connecte à /var/log/kannel/kannel.log fichier.
/var/log/kannel/access.log fichier enregistre les demandes d'accès réussies des clients.
Exemple de journal :
/var/log/kannel/smsbox.log enregistre la demande du client et les communications avec bearerbox.
Les journaux liés au modem GSM se trouvent dans /var/log/kannel/smsc01-gsm1.log fichier.
Niveaux de gravité du journal :
niveau journal directive de configuration dans chaque groupe de configuration dans kannel.conf le fichier définit le niveau de gravité du journal pour ce groupe et se connecte en conséquence dans fichier journal donné dans ce groupe . Les niveaux de journalisation sont :
0> débogage
1> infos
2> avertissement
3> erreur
4> paniquer
Conseils de sécurité :
- admin-deny-ip et admin-allow-ip les directives définissent la liste des adresses IP autorisées ou interdites pour accéder au portail d'administration du canal. Chaque liste peut avoir plusieurs adresses séparées par ";" , "*" représente tous les nombres dans un octet. Exemple :si nous voulons autoriser 192.168.10.31 et que localhost peut accéder au portail d'administration et que toutes les autres adresses IP doivent être bloquées, les directives de configuration seront comme ci-dessous
admin-deny-ip ="*.*.*.*"
admin-allow-ip ="127.*.*.*; 192.168.10.31"
- De même box-deny-ip et box-allow-ip les directives définissent la liste des adresses IP autorisées à accéder à bearerbox . C'est utile quand on utilise plusieurs smsbox . Nous allons lister la smsbox Adresses IP dans box‑allow‑ip pour accéder à bearerbox programme.
- user-deny-ip et user-allow-ip sont utilisés pour autoriser/refuser l'adresse IP de l'utilisateur.
- Il est préférable d'utiliser la directive de refus puis d'autoriser une adresse IP sélective pour chaque type de contrôle d'accès.
- Utilisez un nom d'utilisateur/mot de passe très sécurisé pour toutes les options de nom d'utilisateur/mot de passe affichées dans le kannel.conf fichier.
Références :
- https://www.kannel.org/download/kannel-userguide-snapshot/userguide.html