Kannel:
Kannel je open source WAP a SMS brána pro GSM sítě. Kromě toho může Kannel odesílat / přijímat SMS pomocí sériového nebo USB GSM modemu. Je přístupný přes HTTP API a lze jej použít při odesílání hromadných SMS, OTP atd.
Kannel má tedy tři hlavní programy zvané boxy:bearerbox , schránka SMS , wapbox .
- Rozhraní Bearerbox směrem k telefonům. Přijímá WAP a SMS zprávy z telefonů a odesílá je do ostatních schránek.
- SMSbox obsluhuje funkce brány SMS.
- WAPbox se stará o funkčnost brány WAP.
Je možné mít několik SMSboxů a několik WAPboxů na různých hostitelích, což mu umožňuje zvládnout větší zátěž.
Kannel také podporuje integraci databází a podporuje mysql , pgsql , sdb , mssql , sqlite3 , oracle , redis a cassandra .
Kannel má širokou škálu podpory GSM modemů; navíc s Kannel by byl použit jakýkoli GSM modem, který je přístupný přes sériový nebo USB port se správným ovladačem a podporuje AT příkaz.
Příprava na instalaci Kannel SMS Gateway:
Zde nainstalujeme Kannel SMS Gateway nejnovější stabilní verzi 1.4.5 ze zdrojového souboru tar na Debian 10 (buster) . Zde nakonfigurujeme základní komponenty:bearerbox a schránka SMS který se používá pro SMS bránu.
IP hostitele SMS-GW | 192.168.10.38 |
IP adresa hostitele klienta Windows | 192.168.10.31 |
IP hostitele klienta Linux | 192.168.10.37 |
Model GSM modemu | Huawei E303 3G/GSM USB modem |
Zkontrolujte verzi OS
root@sms-gw:~# cat /etc/os-release
Výstup:
Připojte USB modem k hostiteli Linux a zkontrolujte, zda detekuje modem vydáním lsusb příkaz
root@sms-gw:~# lsusb
Výstup:
Modem detekoval sběrnici 2.
Nyní musíme zjistit, ke kterému TTY je modem připojen
root@sms-gw:~# ls /dev/ttyUSB*
Výstup:
Vidíme, že modem je připojen na /dev/ttyUSB0 a /dev/ttyUSB1 .Obvykle je přenosová rychlost těchto modemů 9600 nebo 115200.
Existuje šikovný nástroj wvdial , k identifikaci USB TTY a přenosové rychlosti pro modem. wvdial se obvykle používá jako příkazový řádek PPP dialer pro použití Mobile Internet.
Nainstalujte wvdial, abyste našli USB TTY a přenosovou rychlost pro modem.
root@sms-gw:~# aktualizace apt-get
root@sms-gw:~# apt-get install -y wvdial
Problém wvdialconf příkaz ke zjištění TTY a přenosové rychlosti modemu
root@sms-gw:~# wvdialconf
Výstup:
Z výstupu zjistíme, že modem je připojen na /dev/ttyUSB0 a id přenosové rychlosti 9600. wvdialconf také zapisuje základní konfiguraci modemu do /etc/wvdial.conf soubor.
Nyní nainstalujte potřebné závislosti pro 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 libtoolInstalace Kannel SMS Gateway:
Stáhněte si zdrojový tarball z 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.gzRozbalte soubor a zadejte zdrojový adresář
root@sms-gw:~# tar -zxf gateway-1.4.5.tar.gz
root@sms-gw:~# cd gateway-1.4.5/Spusťte configure soubor s předponou domovského adresáře kannel a start-stop-deamon, zde používáme /usr/local/kannel jako domovský adresář kanálu
root@sms-gw:~/gateway-1.4.5# ./configure --enable-start-stop-daemon --prefix=/usr/local/kannelMůžeme také vypnout wapbox protože to nebudeme používat
root@sms-gw:~/gateway-1.4.5# ./configure --enable-start-stop-daemon --prefix=/usr/local/kannel --disable-wapPo úspěšném dokončení konfigurace spustit skript, zkompilovat balíček
root@sms-gw:~/gateway-1.4.5# makeNainstalujte programy s datovými soubory a dokumentací
root@sms-gw:~/gateway-1.4.5# make installNainstaluje potřebné binární soubory, knihovny a dokumenty do různých adresářů v /usr/local/kannel/ umístění.
Poznámka: Pokud při vytváření narazíte na nějaký problém můžeme vyčistit nebo odinstalovat a začít znovu. Chcete-li vyčistit, spusťte vyčistit , pro odinstalaci spusťte provést odinstalaci příkaz.
Nyní vytvořte atd , spustit a protokolovat adresáře
root@sms-gw:~# mkdir /usr/local/kannel/etc
root@sms-gw:~# mkdir /usr/local/kannel/run
root@sms-gw:~# mkdir /var/log/kannel/Vytvořte konfigurační soubor kanálu /usr/local/kannel/etc/kannel.conf s níže uvedeným obsahem
##CORE
skupina =jádro
admin-port =13000
port smsbox =13001
admin-password =sms-gw-admin-passwd
status-password =sms-gw-status-passwd
admin-deny-ip ="*.*.*.*"
admin-allow-ip ="*.*.*.*"
box-deny-ip ="*.*.*.*"
box-allow-ip ="*.*.*.*"
log-level =0
log-file ="https://1118798822.rsc.cdn77.org/var/log/kannel/kannel.log"
dlr-storage =interní
sms-resend-retry =1
##SMSC
skupina =smsc
smsc =zavináč
smsc-id =smsc01
allow-smsc-id =smsc01
preferované-smsc-id =smsc01
typ modemu =Huawei
zařízení =/dev/ttyUSB0
rychlost =9600
alt-charset ="GSM"
sim-buffering =pravda
log-file =/var/log/kannel/smsc01-gsm1.log
log-level =0
##MODEMY
skupina =modemy
id =Huawei
enable-mms =true
init-string ="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
rychlost =9600
detect-string ="huawei"
##SMSBOX
skupina =smsbox
bearerbox-host =localhost
Sendsms-port =13013
globální-odesílatel =13013
mo-recode =pravda
sendsms-chars ="0123456789 +-"
log-file ="https://1118798822.rsc.cdn77.org/var/log/kannel/smsbox.log"
log-level =0
access-log ="https://1118798822.rsc.cdn77.org/var/log/kannel/access.log"
##Uživatel SMS
skupina =sendsms-user
user-deny-ip ="*.*.*.*"
user-allow-ip ="*.*.*.*"
uživatelské jméno =kannel
heslo =kannelpasswd
default-smsc =smsc01
zřetězení =1
maximální počet zpráv =10
##SMS-SERVIS
skupina =sms-služba
klíčové slovo =výchozí
get-url =" "http://%S"
accept-x-kannel-headers =true
maximální počet zpráv =10
zřetězení =pravda
catch-all =pravda
omit-empty =truePoznámka: get-url config v sms-serice skupina označuje styl volání HTTP API vzdáleného HTTP serveru. Příklad:pro vzdálený server PlaySMS
get-url ="http://PLAYSMS-SERVER-IP/playsms/plugin/gateway/kannel/geturl.php?t=%t&q=%q&a=%aQ=%Q&smsc=%i"Vytvořte init skript pro spuštění/zastavení kannelových boxů jako /etc/init.d/kannel
#!/bin/bash
# Spuštění/zastavení kannelových schránek:Jedna schránka nosiče a jedna schránka SMS.
BOXPATH=/usr/local/kannel/sbin
PIDFILES=/usr/local/kannel/run
CONFDIR=/usr/local/kannel/etc
CONF=$CONFDIR/kannel.conf
USER=kannel
VERZE=""
RB=$BOXPATH/run_kannel_box$VERSION
BB=$BOXPATH/bearerbox$VERSION
WB=$BOXPATH/wapbox$VERZE
SB=$BOXPATH/smsbox$VERZE
SSD=$BOXPATH/start-stop-daemon$VERSION
PATH=$BOXPATH:$PATH
pouzdro "$1" in
Start)
echo -n "Spouštění brány WAP:bearerbox"
$SSD --start --quiet --pidfile $PIDFILES/kannel_bearerbox.pid --exec $RB -- --pidfile $PIDFILES/kannel_bearerbox.pid $BB -- $CONF
echo -n "smsbox"
$SSD --start --quiet --pidfile $PIDFILES/kannel_smsbox.pid --exec $RB -- --pidfile $PIDFILES/kannel_smsbox.pid $SB -- $CONF
spát 3
echo "."
;;
stop)
echo -n "Zastavení brány WAP:"
echo -n "smsbox"
$SSD --stop --quiet --pidfile $PIDFILES/kannel_smsbox.pid --exec $RB
echo -n "nosič"
$SSD --stop --quiet --pidfile $PIDFILES/kannel_bearerbox.pid --exec $RB
echo "."
;;
postavení)
CORE_CONF=$(grep -r 'skupina[[:mezera:]]*=[[:mezera:]]*jádro' $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
;;
Znovu načíst)
# Zatím pro to nemáme podporu.
výstup 1
;;
restart|force-reload)
0 $ zastávka
spát 3
Začátek 0 $
;;
*)
echo "Využití:$0 {start|stop|stav|reload|restart|force-reload}"
výstup 1
esac
exit 0Poznámka: Výše uvedený skript je výchozí init.d skript pro Kannel. Tato konfigurace je vhodná pro malý web provozující Kannel na jednom počítači. Ujistěte se prosím, že binární soubory Kannel lze nalézt v $BOXPATH nebo někde jinde podél $PATH . run_kannel_box musí být v $BOXPATH .
Vytvořte /etc/init.d/kannel spustitelný soubor
root@sms-gw:~# chmod +x /etc/init.d/kannelSpustit kannel
root@sms-gw:~# /etc/init.d/kannel startVýstup:
Zkontrolujte kanál nosič a schránka SMS stav poslechu
Zkontrolujte stav kanálu z krabice Linux
root@sms-gw:~# /etc/init.d/kannel statusPoužijte http://192.168.10.38:13000/status?password=sms-gw-admin-passwd URL z prohlížeče klientského počítače systému Windows ke kontrole stavu
Odesílání SMS pomocí Kannel SMS Gateway:
Můžeme odesílat SMS z libovolného prohlížeče klientského počítače pomocí adresy URL. Příklad:
http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000&text=SMS+from+kannel+01Na webové stránce se zobrazuje kód odpovědi SMS Push 0:Přijato k doručení , což znamená, že Kannel přijal SMS k doručení příjemci
Odesílání SMS z Linux boxu pomocí curl
root@host1:~# curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000&text=SMS+from+kannel+02"Výstup:
Odešlete SMS pomocí SMS textu ze souboru pomocí curl
root@host1:~# echo "SMS ze souboru pomocí 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]Odesílání SMS pomocí potrubí výstup do curl
root@host1:~# printf "SMS z výstupu" | curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000" -G --data-urlencode text@-SMS přijatá mobilním zařízením
Poznámka: Existuje několik dalších kódů pro odpověď SMS Push od Kannel
Stavový kód | Tělo zprávy | Význam |
202 | 0:Přijato k doručení | SMS byla přijata a je doručena dále ovladači SMSC |
202 | 3:Ve frontě pro pozdější doručení | schránka nosiče přijal a uložil zprávu do fronty k doručení později |
4xx | (různé) | Něco nebylo v pořádku v požadavku nebo konfiguraci kanálu, zkontrolujte požadavek a konfiguraci kanálu. |
503 | Dočasné selhání, zkuste to znovu později | Došlo k dočasnému selhání, zkuste to znovu později. |
Kontrola protokolů:
Najdeme Kannel core bearerbox přihlášení /var/log/kannel/kannel.log soubor.
/var/log/kannel/access.log file logs úspěšné žádosti o přístup od klientů.
Příklad protokolu:
/var/log/kannel/smsbox.log zaznamenává požadavek klienta a komunikaci s nosičem.
Protokoly týkající se GSM modemu naleznete v /var/log/kannel/smsc01-gsm1.log soubor.
Úrovně závažnosti protokolu:
úroveň protokolu config v každé konfigurační skupině vkannel.conf soubor definuje úroveň závažnosti protokolu pro tuto skupinu a podle toho se zaloguje do souboru protokolu v této skupině . Úrovně protokolu jsou:
0> ladit
1> informace
2> varování
3> chyba
4> panika
Bezpečnostní tipy:
- admin-deny-ip a admin-allow-ip direktivy definují seznam IP adres, kterým je povolen nebo zakázán přístup k portálu administrace kanálu. Každý seznam může mít více adres oddělených „;“ , „*“ představuje všechna čísla v oktetu. Příklad:pokud chceme povolit 192.168.10.31 a localhost může přistupovat na administrátorský portál a všechny ostatní IP adresy by měly být blokovány, pak budou konfigurační direktivy vypadat jako níže
admin-deny-ip ="*.*.*.*"
admin-allow-ip =„127.*.*.*; 192.168.10.31”
- Podobně box-deny-ip a box-allow-ip direktivy definují seznam IP adres, kterým je povolen přístup do nosič . Je to užitečné, když používáme více smsboxů . Vypíšeme smsbox IP adresy v box‑allow‑ip pro přístup k doručitelské schránce program.
- user-deny-ip a user-allow-ip se používají k povolení/zakázaní IP adresy uživatele.
- Je lepší použít direktivu deny a poté povolit selektivní IP adresu pro každý typ řízení přístupu.
- Používejte velmi zabezpečené uživatelské jméno/heslo pro všechny možnosti uživatelského jména/hesla zobrazené v kannel.conf soubor.
Odkazy:
- https://www.kannel.org/download/kannel-userguide-snapshot/userguide.html