Систем за известување преку СМС пораки – трет дел

Инспириран од софтверски решенија, како што е Prey – плен и од неколкуте стории за тоа како некој хакер останал без лаптопот и што сѐ не му се случило подоцна на крадецот, решив да напишам уште еден СМС сервис, кој што ќе вклучи дел од функционалностите на дадените безбедносни софтверски решенија. Во претходниот пост веќе видовме како може да ја добиеме јавната IP адреса на системот (секако системот едноставно може да биде и вашиот лаптоп). Откако ја имаме адресата, многу лесно може да дознаеме кај се наоѓа системот, или барем на кој интернет провајдер е приклучен. На пример, копирајте ја адресата и извршете пребарување во базата на RIPE – еден од петте регионални интернет регистри, одговорен за подрачјето на Европа, за да проверите кој е сопственик на сабнетот во кој што се наоѓа IP адресата на системот. Јавете се во провајдерот и соопштете им дека ви е украден лаптопот и тој моментално се наоѓа на таа и таа адреса и во меѓувреме известете ја и полицијата. Можно е адресата да припаѓа на некое јавно proxy, но и тука постапката е иста. Следно што би било прикладно е, ако може да обезбедиме слика од крадецот!? Или пак, доволно филмски сценарија и да се вратиме на kannel SMS gateway-от.
Но сепак, следно што ќе дефинираме е СМС сервис кој што ќе може да ви испрати слика од веб камера, доколку е присутна, или пак слика од тековната активност на екранот, односно screenshot од екранот. Сервисот немора да се користи само во случај ако ви е украден лаптопот, може едноставно да го користите доколку сакате да видите каква е моменталната ситуација на, и околу истиот. Онака, чисто шпијунски 😀

Дефинирањето на сервисот е скоро идентично со претходниот СМС сервис, со една минимална разлика:

group = sms-service
keyword = INFO
exec = sh $HOME/Documents/development/ednoleto/smsinfo.sh %p %P %s %s

Како што може да видиме, сервисот реагира на зборот INFO и повикува скрипта со име smsinfo.sh, проследувајќи ѝ четири параметри, односно, броевите на примачот и испраќачот, како и два збора напишани после клучниот, од кои што првиот треба да биде името на командата, а вториот треба да биде email адреса на која што ќе бидат испратени сликите. За жал, kannel нема подршка за MMS пораки, па затоа мора да се послужиме со алтернативни методи за испорака на мултимедијални содржини. Целосната содржина на smsinfo.sh може да ја погледнете на следнава локација. Како што може да забележите, скриптата е со скоро иста структура како и претходната. Додаден е нов параметар на почеток – email, во кој што се запишува четвртиот параметар проследен на влез, притоа заменувајќи ги карактерите %40 со @, поради тоа што параметарот се добива url кодиран. Следи истата функција за испраќање на смс порака и истата case структура, овојпат со две команди, help и default одговор.

Првата команда е snapshot и како одговор испраќа слика од веб камера на дадена email адреса.

 snapshot)
#taking snapshot from webcam
if [ ${email:-0} = “0” ] #if the email variable is not set (not passed as an argument), set it to 0
then sendsms “No e-mail specified! Please try again [INFO snapshot user@domain.com]”
else
timestamp=`date ‘+%d-%b-%y_%H-%M-%S’`

#now take 4 snapshots from the webcam (the camera need 2-3 frames to initialize)
mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0 -frames 4 -vo png
#send e-mail via mutt with the snapshot as attachement
mutt -s “Snapshot from webcam taken on: $timestamp” $email < /etc/issue.net -a $HOME/Documents/development/ednoleto/00000004.png
#remove the remaining snapshots
rm $HOME/Documents/development/ednoleto/0000000*

fi
#Mplayer will save a file 0000000n.jpg with a snapshot, where n is 1,2,3 and 4
#Mplayer uses ffmpeg to do the conversion, so you will usually need the ffmpeg suite installed too.
;;

Доколку не е внесена email адреса, сервисот испраќа СМС порака со известување за настанатата ситуација и со информации како се користи сервисот. Следно, или инаку, доколку е во ред email параметарот, најпрвин во променливата timestamp го запишуваме тековниот датум и час кога е повикана командата, па после повикуваме команда која што треба да направи 4 последователни слики со големина од 640×480 од уредот кој што се наоѓа на /dev/video0, односно default локацијата за пристап на веб камера. Во овој случај, како алатка за снимање на слики го користиме конзолниот видео player – mplayer и снимаме 4 слики поради тоа што на камерата (со која што тестирав) и беа потребни 3 фрејма за да се иницијализира, односно вклучи (првите 3 слики се црни, четвртата излегува нормално, во зависност од осветленоста, спецификациите на камерата и слично). Сликите ги снимаме во png формат и може да ги најдеме под име 0000000?.png во истиот фолдер во кој што се наоѓа скриптата.
Откако ги направивме сликите, останува само уште да ги испратиме. Сликите ги испраќаме преку конзолната алатка за менаџирање со email сандачиња mutt. Секако може да искористите било која друга алатка, како што се sendmail, mailx, nail и слично, во зависност од потреба. email пораката ја испраќаме со наслов “Snapshot from webcam taken on: (вредноста на timestamp)” содржина – името на GNU/Linux дистрибуцијата која што ја користи системот (немора воопшто да има содржина) и со attachment – четвртата направена слика од камерата. Откако ја испративме сликата, ги бришеме сите, за да не ни зафаќаат место, и опционално може да испратиме СМС порака со потврда за извршената акција.

Втората команда, screenshot, на сличен начин испраќа слика од тековниот екран на системот.

 screenshot)
#part for saving current screenshots
if [ ${email:-0} = “0” ] #if the email variable is not set (not passed as an argument), set it to 0
then sendsms “No e-mail specified! Please try again [INFO screenshot user@domain.com]”
else
timestamp=`date ‘+%d%b%y-%N’`;
scrot screenshot$timestamp.png #take a screenshot using this simple CLI program
mutt -s “Screenshot from $timestamp” $email < /etc/issue.net -a screenshot$timestamp.png
sendsms “screenshot sent to e-mail: $email”
rm screenshot$timestamp.png
fi
;;

Разликата, како што може да забележиме, е во начинот на кој што ја добиваме сликата која што ја испраќаме. Овде користиме една многу едноставна конзолна алатка наречена scrot, најчесто достапна во нативните репозиториуми на поголемите дистрибуции, која што се користи многу едноставно. Се повикува алатката со локацијата, односно посакуваното име на сликата што сакаме да ја снимиме и готово. Во овој случај, во самото име на сликата го додаваме моменталниот timestamp, односно моментот кога е направена истата. Сликата ја испраќаме на email преку mutt и после ја бришеме, исто како во претходниот случај, притоа испраќајќи СМС порака за потврда.

Со ова го завршивме и третиот дел од системот за известување и управување преку СМС пораки. Можеби сервисите нема да ни послужат на начин, како во некое филмско сценарио, но сепак е забавно и пријатно искуството од конфигурирање на истите.

Систем за известување преку СМС пораки – втор дел

Долго време помина откако го напишав првиот дел од овој туторијал, или како сакате наречете го, си имам оправдувања, можеби и не, но сепак, да не оддолжувам многу, може да продолжиме. Во првиот дел од текстот, видовме едноставни примери за надгледување на некои системски параметри, искористувајќи го опишаниот канал на комуникација.

Како продолжение на претходно опишаната shell скрипта, дадената case структура може да ја збогатиме и со уште три случаи:

intIP)
#get all the internal IP addresses (written in one line as a pair of interface: address)
intIP=`ip -o addr show | egrep –regexp=”(^[2-9]: |^[0-9]{2,}: )[a-zA-Z0-9]*[ ]*inet” | awk ‘{ printf $2 ” ” $4 “; ” }’`
sendsms “$intIP”
;;

extIP)
#get the external IP
extIP=`curl http://whatismyip.org`
sendsms “Your external IP address is: $extIP”
;;

ipv6start)
#start the gogoc IPv6 service on a system with systemd
if [ `ps ax | grep -i gogoc | wc -l` -gt “1” ]
then sendsms “Servisot raboti!”
else systemctl start gogoc.service; sendsms “Sistemot e uspeshno startuvan!”
fi
;;

кои што би се справиле со СМС пораки со содржина “CMD intIP/extIP/ipv6start” и кои што би додале интересна и понекогаш дури и потребна функционалност на системот. Во првиот случај intIP, при повикување, системот во СМС порака ја враќа тековната, или тековните, IP адреси на сите интерфејси присутни во системот кои што имаат дефинирано, парсирајќи го излезот од командата “ip -o addr show” која што е дескриптивна сама по себе. Во вториот случај extIP, при повикување, назад ја добивате надворешната IP адреса, односно адресата под која што е јавно достапен системот на интернет, која што може, но не мора да биде директно доделена на некој од интерфејсите на системот. (Мало појаснување: Доколку системот се наоѓа зад NAT рутер, интерфејсот преку кој што е поврзан на интернет, ќе има IP адреса од приватен опсег и на никој начин нема да биде достапен од “надвор” според таа адреса – затоа ни е потребна јавната). Јавната IP адреса ја наоѓаме искористувајќи еден јавен сервис кој што, како излез при повикување, ја дава јавната интернет адреса од каде што е пристапен. Третата функционалност која што ја додаваме е стартување на ipv6 тунел преку алатка (gogoc сервис кој што овозможува ipv6 тунел преку ipv4 мрежа) и systemd. Овде може да се види дека при повикување на сервисот, најпрвин се проверува дали алатката (во овој случај gogoc) е активна, проверувајќи ја листата на процеси, и доколку не е, тогаш се стартува истата.

Една мала напомена – shell скриптите, како и конфигурацијата на kannel-от опишана во постовите, може да ги погледнете во јавниот репозиториум на мојата github сметка на следната локација.

Секако, претходно опишаниот СМС сервис (целосниот сервис, со сите опишани случаи) може да се користи со било која конзолна алатка и во било која ситуација. Потребно е само да го побарате потребниот параметар, или пак да го повикате саканиот сервис, односно ја дефинирате наредбата во shell скриптата, или пак да повикате било каков код и било каква скрипта при извршување на СМС сервисот. Јас го преферирам овој начин на работа, но изборот е оставен на вас.

Систем за известување преку СМС пораки – прв дел

Во првиот пост посветен на проектот од еднолето, видовме како се инсталира Kannel пакетот, со неговите WAP и SMS gateways и како функционира една основна конфигурација на истиот. Овојпат повеќе ќе се задржиме на можностите на алатката за известување во една GNU/Linux околина, односно ќе видиме како може да добиеме вредности на одредени системски параметри преку СМС порака.

Сега кога веќе знаеме како функционира системот, може директно да преминеме на пишување на sms-service во конфигурацискиот документ. За нашите моментални потреби, дефинираме СМС сервис кој што ќе ги препознава пораките наменети за него според клучниот збор “CMD” и притоа ќе изврши одредена shell скрипта на која ќе проследи одредени параметри. Целосната конфигурација изгледа вака:

group = sms-service
keyword = CMD
exec = sh $HOME/Documents/development/ednoleto/smscmd.sh %p %P %s

Во exec делот од конфигурацијата всушност се дефинира извршување на скрипта поставена на дадената локација (секако локацијата може да се промени во зависност од потребите) на која што се проследуваат три параметри чии што алиаси може да ги видиме во документацијата на алатката. Во овој случај, %p и %P претставуваат броевите на испраќачот на пораката (кој ни ја пратил пораката – %p) и примачот, односно ние, соодветно, а %s го претставува вториот збор во пораката, т.е. зборот што доаѓа после клучниот збор.

Резултатот што сакаме да го постигнеме, во овој случај, е систем кој што на дадена СМС порака, со одреден клучен збор и одредена додатна команда, ќе врати СМС порака, во зависност од побараната содржина. Конретно, сервисот го дефиниравме да реагира на клучниот збор CMD и притоа на shell скриптата да и ги испраќа вредностите на испраќачот, примачот и додатниот збор, според кој ќе одредиме каква порака, односно каков системски параметар треба да врати системот на испраќачот. Скриптата ја започнуваме со запишување на параметрите од СМС пораката во одредени променливи (со # се означени коментарите):

sender=$1 #who sent us the SMS
reciever=$2 #we are the reciever in this case
command=$3 #what command is passed to the system from the SMS message

Следи еден од поважните делови во скриптата, односно функцијата за испраќање на СМС пораки.

function sendsms(){
msg=$1 #the message passed to the function is not url coded
message=$(python -c “import urllib; print urllib.quote(”’$msg”’)”) #we use a simple python command to url code the message
curl “http://localhost:13013/cgi-bin/sendsms?user=test&password=test&from=$reciever&to=$sender&text=$message&#8221;
}

Ја дефинираме променливата msg во која што го запишуваме проследениот параметар кон функцијата и после тоа, со едноставен повик кон функција од urllib библиотеката од python (стандардна python библиотека, нема потреба од додатно инсталирање) во променливата message ја запишуваме вредноста на msg, url кодирана, поради тоа што sendsms сервисот од Kannel SMS gateway препознава и работи само со url кодирани пораки. Откако ја добивме пораката, останува само да го изградиме целосното URL и со помош на curl, го повикуваме веб сервисот на kannel за испраќање на СМС пораки. Во URL-то може да се види дека се користат параметри за корисник (group = sendsms-user; корисничко име и лозинка) претходно дефиниран во конфигурацискиот фајл.

Сега кога веќе ја дефиниравме функцијата за испраќање на СМС пораки, останува само уште да се справиме со сите можни вредности на променливата command, дојдени на влез во скриптата. За таа цел пишуваме една едноставна case структура во која што ги опишуваме сите можни случаи, односно дефинираме, во овој случај пет валидни команди, help команда и останато. Како прва од петте команди ја дефинираме командата temperature, односно на испратена СМС порака со содржина CMD temperature, дефинираме случај во кој што shell скриптата ќе испрати одговор со содржина – моменталната температура на процесорот. Во case структурата, командата за temperature изгледа вака:

temperature=`acpi -t`
sendsms “$temperature”

едноставно ја запишуваме излезната вредност на shell командата “acpi -t” (acpi – advanced configuration and power interface, алатка која што чита вредности од /proc, односно прикажува параметри на вградени батерии, температури и слично ) во променлива насловена како temperature и вредноста на истата променлива ја проследуваме на функцијата за испраќање на СМС пораки, која што испраќа порака на корисникот кој побарал со дадената проследена вредност.

Како втора команда ја дефинираме командата uptime која што е скоро иста со претходната:

uptme=”Uptime:”`uptime`
sendsms “$uptme”

Овде гледаме дека во променливата uptme се проследува вредноста на shell командата uptime (колку време е активна сесијата на дадениот компјутер) пред тоа додавајќи го стрингот “Uptime:” и истата вредност ја испраќаме на функцијата за испраќање на СМС пораки. Како следна, трета команда, ја дефинираме cpuinfo (CMD cpuinfo) која што треба да врати вредност – информации за моделот на процесорот. Информациите ги добиваме читајќи од /proc/cpuinfo парсирајќи го целосниот текст за да ја добиеме бараната вредност. Делот за читање на информации за моделот на процесорот изгледа вака:

cpuinfo=`cat /proc/cpuinfo | grep “model name” | head -n 1 | awk ‘{ print substr( $0, 17 )}’`
sendsms “Model name: $cpuinfo”

каде што може да видиме дека текстот од /proc/cpuinfo најпрвин се филтрира, односно се прикажуваат само редовите кои што содржат стринг “model info”, па од нив се зима само првиот ред, од кој што се зема подстринг почнувајќи од позиција 17 (позицијата од кај што почнува името на моделот на процесорот) па до крај. Резултатот од филтрирањето се запишува во променлива cpuinfo и се проследува кон функцијата за испраќање пораки.

На сличен начин се формира и четвртата команда – memory која што како одговор треба да ја даде моменталната состојба на РАМ меморијата. Содржината на пораката која што ќе се испрати ја добиваме со филтрирање на излезот од “free -m“, shell командата која што ни дава информации за состојбата на меморијата.

mem=`free -m | grep -i Mem | awk ‘{print “used: ” $3 ” free: ” $4 “, cached: ” $7 }’`
sendsms “$mem”

Последната петта команда, wicd, всушност прикажува една од многуте можности на новиот систем за иницијализација и управување – systemd, кој што во основа е предвиден да го замени досегашниот system V, или init V имплементирајќи во него многу поширок спектар на функционалности. Петтата команда, всушност само го рестартира wicd мрежниот сервис преку systemctl алатката од systemd која што се грижи за правилно рестартирање на истиот, справувајќи се со сите деца процеси на wicd и со останатите зависности дефинирани во wicd.service-от.

systemctl restart wicd.service
sendsms “Wicd successfully (re)started”

Откако ќе биде извршена командата, апликацијата испраќа СМС порака со дадената содржина, како известување за извршената акција. Вакви команди, кои што се служат со можностите на systemd, може да бидат дефинирани на ист начин за сите можни сервиси кои што постојат, без разлика дали станува збор за стартување, рестартирање, исклучување на сервис и слично, во зависност од потребите на корисникот.

Освен овие пет команди, во case структурата имаме дефинирано и help команда (CMD help) која што враќа резултат – порака со сите присутни команди и начин на користење на истите:

sendsms “Available commands: wicd, uptime, temperature, memory, cpuinfo”

како и default случај кој што се активира доколку не е погодена ниту една од претходно опишаните команди и кој што исто така прикажува начин на користење на системот:

sendsms “usage: ‘CMD command’ command IN [wicd, uptime, temperature, memory, cpuinfo]”

Со ова е завршена нашата скрипта која што служи за справување со СМС пораките, односно ново дефинираниот СМС сервис во конфигурациската датотека на kannel. Целосната скрипта може да ја најдете на оваа локација. За тестирање на системот, како што опишавме во претходниот пост, ги стартуваме bearerbox и smsbox, на ист начин, проследувајќи го конфигурацискиот фајл и испраќаме СМС порака преку fake sms центарот:

fakesmsc -m 1 -H localhost -r 20000 “123 456 text CMD cpuinfo”

и како одговор добиваме:

2011-09-10 03:58:54 [30133] [0] INFO: Got message 1: <13013 123 text Model name: Athlon(tm) II Neo K325 Dual-Core Processor>

што значи дека системот функционира.

Инсталирање, конфигурирање и тестирање на Kannel SMS Gateway

Годинава земав учество во ЕдноЛето – македонска верзија од Google Summer of Code, организирано од Слободен Софтвер Македонија. Се пријавив и бев примен на проектот насловен како: Систем за известување и управување преку СМС пораки. Како главна алатка што ќе се користи во проектот, ви го претставувам Kannel. Kannel претставува компактен и моќен open source, WAP и SMS gateway развиен за GNU/Linux оперативните системи, широко употребуван насекаде во светот.

За да го инсталирате, најпрвин побарајте го во репозиториумите на вашиот оперативен систем, или пак директно симнете го од нивниот официјален сајт како стабилна верзија, или како дневен snapshot од нивтниот SVN репозиториум. Бидејќи моментално користам Fedora 15, може да ја инсталирам алатката на два начина. Првиот и полесен начин е алатката да ја инсталирам директно од главниот репозиториум на Fedora, со едноставно повикување на командата:

$ sudo yum install kannel.i686

со ова, алатката е инсталирана и готова за користење, со конфигурацискиот фајл поставен на локација /etc/kannel.conf кој што подоцна може да го едитираме за тест примерот. Од друга страна, доколку ја немате во репозиториум, алатката може и да ја искомпајлирате од код, кој што може да го симнете од следната локација: http://kannel.org/download/kannel-snapshot.tar.gz. Значи отворете го омилениот конзолен емулатор, дојдете до посакуваната патека кај што сакате да ја спуштите архивата и пишете:

$ wget http://kannel.org/download/kannel-snapshot.tar.gz
$ tar xvfz kannel-snapshot.tar.gz

за да ја симнете и отпакувате алатката во kannel-snapshot фолдер. Влезете во фолдерот и претпоставувајќи дека ги имате инсталирано развојните алатки и библиотеки, пишете:

$ ./configure
$ make

за да ја искомпајлирате алатката. Доколку во процесот ви се јави грешка, најверојатно немате некоја од потребните алатки и библиотеки и препорачувам да ја прочитате документацијата на Kannel за специфични побарувања – http://kannel.org/overview.shtml#req.

Во Yum пакет менаџерот на Fedora постои опција за групна инсталација на алатки според име на група, така да, за да ги инсталирате најчесто бараните алатки за компајлирање, односно развојни алатки (make, gcc и слично), пишете во конзола:

$ sudo yum groupinstall “Development Tools”

Откако ќе ги инсталирате развојните алатки, потребно е додатно да ја инсталирате и libxml2 библиотеката:

$ sudo yum install libxml2.i686 libxml2-devel.i686

Со ова би требало да ги одбегнете грешките и успешно да може да ја искомпајлирате алатката. Доколку сеуште компајлирањето ви јавува грешка, пишете коментар и испратете ми го текстот со грешката, за подетално да го разгледаме проблемот.

Откако успешно ја имаме инсталирано алатката, на ред е нејзино конфигурирање и тестирање. Default конфигурацијата може да ја најдете во /etc/kannel.conf, но ние ќе се послужиме со подетална конфигурација за SMS gateway. Ако ја инсталиравте алатката од репозиториум, побарајте го тест конфигурацискиот фајл во /usr/doc/kannel-VERSION/examples или /usr/share/doc/kannel-VERSION/examples насловен како smskannel.conf, или пак доколку го компајлиравте рачно, побарајте во ../kannel-snapshot/gw/smskannel.conf. Тука може да ги видиме дефинирано основните потребни групи за тестирање на SMS gateway. Дефиниран е fake sms centar на порта 20000 (или 10000) како симулатор за испраќање на смс пораки, како и корисник (group = sendsms-user) кој што може да испраќа смс пораки, со тест корисничко име и лозинка. Дефиниран е и default смс сервис кој што се справува со добиените смс пораки доколку нема дефинирано друг соодветен смс сервис.

Ние за тестирање ќе напишеме наједноставен смс сервис кој што ќе ни испраќа известување за секоја примена порака. На крај на конфигурацискиот фајл додадете ги следниве три линии:

group = sms-service
keyword = test
exec = notify-send “A message is received – %a”

Првата линија покажува дека тука почнува дефиниција на нов смс сервис, втората линија дефинира според кој филтер ќе биде препознаена пораката, односно keyword претставува првиот збор од пораката, а во третиот ред е дефинирана акција што треба да се изврши, при што %a претставува алиас за целата содржина на пораката url кодирана.

За подетално да се запознаете со синтаксата и начинот на конфигурирање, како и можностите за филтрирање – одбивање на барање од одредени хостови, привилегирани корисници и слично, прочитајте ја документацијата на kannel која што се наоѓа на http://kannel.org/download/kannel-userguide-snapshot/userguide.html. Таму на пример во табела 6-9 се дадени сите параметри, односно алиаси како што се %a – целата содржина на смс поракта и %k – првиот збор од пораката, а во табела 6-8 се дадени сите применливи и ограничувања што може да се додадат во еден смс сервис. Треба да се напомене дека штом ќе се добие една смс порака, со неа се справува само првиот сервис кој што ќе ги исполнува сите параметри (испраќач, клучен збор и слично). Сервисите се проверуваат линеарно почнувајќи од првиот дефиниран.

Откако го дефиниравме сервисот, сега ни преостанува само да го тестираме. Првин треба да стартуваме bearerbox, за да би можеле да стартуваме smsbox. Ако го инсталиравте пакетот рачно, стартувајте ги сервисите (по овој редослед):

$ ./kannel-snapshot/gw/bearerbox -v 1 kannel-snapshot/gw/smskannel.conf
$ ./kannel-snapshot/gw/smsbox -v 1 kannel-snapshot/gw/smskannel.conf

притоа со -v дефинираме ниво на verbosity, кај што 0 прикажува debug информации, а 1 ги прикажува грешките (конфигурацискиот фајл и алатките се повикуваат според патека).

Ако го инсталиравте пакетот од репозиториум, постапката е иста, со што алатките се повикуваат од било која локација, а конфигурацискиот фајл се повикува според патека.

Со smsbox-от стартуван, останува само да испратиме лажна тест порака за нашиот дефиниран сервис, со помош на fakesmsc алатката. И пак, доколку го инсталиравте пакетот рачно, алатката ја повикувате според локација, инаку, од било каде.

$ ./kannel-snapshot/test/fakesmsc -m 1 -H localhost -r 20000 “123 456 text test message”

Во повикот на fakesmsc дефинираме број на пораки што треба да се испратат со -m, дефинираме хост на кој што сакаме да ја пратиме пораката со -H и дефинираме порта на која што работи сервисот со -r, потоа во наводници е пораката што ја испраќаме во облик “испраќач примач text тело на пораката”. Испраќачот и примачот во нашиот случај не се битни, text е филтерот според кој се испраќа текстот на пораката (може, на пример, да биде и url кодирана пораката и наместо text треба да стои udh, исто така објаснето во документацијата) и во телото на пораката го пишуваме првиот збор да се совпаѓа со keyword-от, а останатиот дел од пораката, моментално не ни е важен. Откако ќе ја испратиме пораката, во прозорецот добиваме повратна информација:

[8303] [0] INFO: Got message 1: <13013 123 text <Empty reply from service provider>>

а во прозорецот кај што е стартуван smsbox-от добиваме информација:

[5202] [4] INFO: Starting to service <test message> from <123> to <456>

и во едно се појавува нотификација, односно известување со содржина: “A message is received – test+message” каде што примената порака ја добиваме како url кодирана, со што добиваме потврда за успешно испратена/примена порака.

Толку за инсталација, конфигурирање и почетно тестирање на Kannel SMS gateway-от. Во иднина, повеќе за можностите на сервисот и идеи за сервиси и начини на управување на системи преку обични смс пораки.