Vysok´E Uˇcení Technick´E V Brnˇe
Total Page:16
File Type:pdf, Size:1020Kb
VYSOKEU´ CENˇ ´I TECHNICKE´ V BRNEˇ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMACNˇ ´ICH TECHNOLOGI´I USTAV´ INFORMACNˇ ´ICH SYSTEM´ U˚ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS VZDALEN´ Y´ INTERPRET PRˇ ´IKAZU˚ OS GNU/LINUX JAKO JABBER/XMPP ROBOT BAKALA´ RSKˇ A´ PRACE´ BACHELOR’S THESIS AUTOR PRACE´ MICHAL PR´IVOZN´IK AUTHOR BRNO 2008 VYSOKEU´ CENˇ ´I TECHNICKE´ V BRNEˇ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMACNˇ ´ICH TECHNOLOGI´I USTAV´ INFORMACNˇ ´ICH SYSTEM´ U˚ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS VZDALEN´ Y´ INTERPRET PRˇ ´IKAZU˚ OS GNU/LINUX JAKO JABBER/XMPP ROBOT A REMOTE SHELL FOR GNU/LINUX OPERATING SYSTEM AS A ROBOT OF JABBER/XMPP PROTOCOL BAKALA´ RSKˇ A´ PRACE´ BACHELOR’S THESIS AUTOR PRACE´ MICHAL PR´IVOZN´IK AUTHOR VEDOUC´I PRACE´ Mgr. MAREK RYCHLY´ SUPERVISOR BRNO 2008 Abstrakt Ciel’om pr´aceje zozn´amenie sa s otvorenou siet’ou Jabber/XMPP a princ´ıpmijej fungovania. Tento projekt je zameran´yna interpretovanie pr´ıkazov operaˇcn´eho syst´emu GNU/Linux a zasielanie ich v´ystupov sp¨at’ uˇz´ıvatel’ovi. Kl´ıˇcov´aslova Jabber, XMPP, robot, shell, OpenPGP, Linux Abstract The aim of this thesis is acquaint oneself with open Jabber/XMPP network, it’s standards and priciples of working. This project is aimed to interpret GNU/Linux commands and send their outputs back to user. Keywords Jabber, XMPP, robot, shell, OpenPGP, Linux Citace Michal Pr´ıvozn´ık: Vzd´alen´yinterpret pˇr´ıkaz˚uOS GNU/Linux jako Jabber/XMPP robot, bakal´aˇrsk´apr´ace, Brno, FIT VUT v Brnˇe, 2008 Vzd´alen´yinterpret pˇr´ıkaz˚uOS GNU/Linux jako Jabber/XMPP robot Prohl´aˇsen´ı Prehlasujem, ˇzesom t´uto bakal´arskupr´acu vypracoval samostatne pod veden´ımMgr. Ma- reka Rychl´eho.Uviedol som vˇsetky liter´arnepramene a publik´acie, z ktor´ych som ˇcerpal. ....................... Michal Pr´ıvozn´ık 5. kvˇetna2008 Podˇekov´an´ı R´adby som pod’akoval svojmu ved´ucemu Mgr. Marekovi Rychl´emu za ´ustretov´ypr´ıstupa hodnotn´epripomienky. c Michal Pr´ıvozn´ık, 2008. Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´emuˇcen´ı technick´emv Brnˇe,Fakultˇein- formaˇcn´ıch technologi´ı. Pr´ace je chr´anˇenaautorsk´ymz´akonem a jej´ıuˇzit´ıbez udˇelen´ıopr´avnˇen´ı autorem je nez´akonn´e,s v´yjimkou z´akonemdefinovan´ych pˇr´ıpad˚u. Obsah 1 Uvod´ 3 2 Te´oria 4 2.1 Z´akladn´epojmy .................................. 4 2.1.1 Instant Messaging ............................ 4 2.1.2 XML .................................... 4 2.1.3 XMPP ................................... 6 2.2 Fungovanie XMPP/Jabber ............................ 8 2.3 Jabber a OpenPGP ............................... 13 2.4 Jabber servery a klienti ............................. 14 2.4.1 Psi ..................................... 14 2.4.2 Gajim ................................... 14 2.4.3 Miranda .................................. 14 2.4.4 Web a mobiln´yklienti .......................... 15 2.4.5 Jabberd 1.x ................................ 15 2.4.6 Jabberd 2 ................................. 16 2.4.7 eJabberd ................................. 16 3 N´avrh 17 3.1 Sluˇzbavs. klient ................................. 17 3.1.1 Klient ................................... 17 3.1.2 Sluˇzba ................................... 17 3.2 Triedy robota ................................... 18 3.3 Kniˇznice a implementaˇcn´yjazyk ........................ 18 4 Implement´acia 20 4.1 Princ´ıp ....................................... 20 4.2 Konfigur´acia ................................... 21 4.3 White list ..................................... 22 4.4 GPG ........................................ 23 4.5 Shell ........................................ 23 4.6 Konverzia k´odovania ............................... 24 4.7 Dalˇs´ıv´yvojˇ .................................... 24 5 Z´aver 26 1 6 Pr´ılohy 28 6.1 Inˇstal´aciarobota ................................. 28 6.2 Pr´ıkladkonfiguraˇcn´ehos´uboru ......................... 28 2 Kapitola 1 Uvod´ T´utot´emu bakal´arskej pr´acesom si vybral kvˆolimojmu pozit´ıvn´emu vzt’ahu k XMPP proto- kolu. Tento protokol dnes expanduje (vd’aka jeho otvorenosti) a na poli instant messaging-u sa st´ava ˇcorazpopul´arnejˇs´ım. V prvej kapitole sa zozn´amimeso z´akladn´ymipojmami, vysvetl´ıme si ako siet’ funguje a predstav´ımesi najv´yznamnejˇsie programy V druhej si vysvetl´ımerozdiel medzi sluˇzbou a klientom a navrhneme rieˇsenia, zodel´ıme robota do jednotliv´ych logick´ych ´usekov. V tretej podrobne rozoberieme a pop´ıˇseme implement´aciurobota, zdˆovodn´ımpostup a rieˇsenia jednotliv´ych podprobl´emov (GPG ˇsifrovanie, konverzia k´odovania, ... ), naˇcrtnem moˇznosti d’alˇsiehov´yvoja aplik´acie. Napokon v poslednej zhodnot´ım projekt ako tak´ya jeho pr´ınos. 3 Kapitola 2 Te´oria V tejto kapitole sa budeme zaoberat’ z´akladn´ymipojmami, ktor´ebudeme potrebovat’ pri n´avrhu robota a n´aslednejimplement´aci´ı. 2.1 Z´akladn´epojmy 2.1.1 Instant Messaging Na komunik´aciu l’ud´ıpo internete sl´uˇzie-mail, elektronick´aobdoba poˇsty, ktor´ym´avˇsak radu nev´yhod. Je s´ıcer´ychlejˇs´ıneˇzak´akol’vek poˇsta, no st´aleto nie je komunik´acia v re´alnom ˇcase. Niektor´eprogramy s´ıcekontroluj´ue-mailov´uschrank´uv urˇcit´ych ˇcasov´ych intervaloch, no nie v dostatoˇcn´ych. A to je pr´ave ´uˇcelom Instant Messaging-u, fenom´en dneˇsnej doby. Vol’ne by sa tento term´ındal preloˇzit’ ako r´ychle spr´avy“.Programy z tejto kateg´orie sa ” snaˇziadoruˇcit’ spr´avy priamo uˇz´ıvatel’ovi a nie len do akejsi schr´anky, odkial’ si ju uˇz´ıvatel’ neskˆorvyzdvihne. Rovnako pren´aˇsaj´uaj inform´aciuo stave uˇz´ıvatel’a – ˇci dotyˇcn´y,komu spr´avu chceme poslat’ je pr´ıtomn´y,pr´ıpadne pracuje a neˇzel´asi byt’ ruˇsn´yapod. Nie je to s´ıcekomunik´aciav re´alnom ˇcase v pravom zmysle slova, ale v takmer re´alnom. Nie je totiˇzdefinovan´adoba, za ktor´usa maj´uspr´avydoruˇcit’. Naproti tomu, komunik´aciu v ozajstnom re´alnom ˇcase, kde ˇcoi len mal´eoneskorenie vpl´yva na kvalitu sluˇzby, l’udia (zatial’) nepotrebuj´u. V beˇznom rozhovore totiˇzsekundov´eoneskorenie nehr´arolu, no v stabilizaˇcn´ych syst´emoch raketopl´anov mˆoˇze spˆosobit’ p´ad. Probl´emomt´ychto syst´emov vˇsak je to, ˇzena rozdiel od e-mailu, nevych´adzaj´uz jedn´eho ˇstandardu. Nie s´ukompatibiln´e.Prev´adzkovatelia ˇcastoani nechc´u, aby sme my, uˇz´ıvatelia, mohli komunikovat’ s niek´ym, kto nepouˇz´ıva zrovna ten ich protokol. Medzi najzn´amejˇsie IM syst´emy patr´ı: Internet Relay Chat (IRC), MSN Messanger. V Ceskejˇ republike, na Slovensku a v Izraeli sa vel’kej obl’ube teˇs´ıICQ. V rˆoznych IM s´uuˇz´ıvatel’ia rˆozne identifikovan´y.ICQ oznaˇcuje uˇz´ıvatel’a len ak´ymsi ˇc´ıslom, MSN e-mailom, XMPP/Jabber tzv. JID, ktor´ysa podob´ana e-mail, IRC identifikuje uˇz´ıvatel’a na z´aklade prez´yvky (nick). 2.1.2 XML XML (eXtensible Markup Language) je jazyk sl´uˇziaci na v´ymenu d´at.Jeho predchodcom bol SGML (Standard Generalized Markup Language).[4] Ked’ˇzeXML je znaˇckovac´ıjazyk, dokumenty v tomto jazyku s´uvlastne s´ubor znaˇciek(s pr´ıpadn´ymi atrib´utami). XML m´a, 4 Obr´azek 2.1: Grafick´areprezent´aciastromovej ˇstrukt´ury podobne ako napr. HTML1, p´arov´ea nep´arov´eznaˇcky. P´arov´esa skladaj´uz otv´aracej a ukonˇcovacej znaˇcky, zatial’ ˇconep´arov´elen z jednej znaˇcky, ktor´aje otv´araciaa ukonˇcovacia z´aroveˇn. Naviac, XML rozdeluje d´atav dokumente do stromovej ˇstrukt´ury: <?xml version="1.0" encoding="utf-8"?> <person> <name> <first>Ferdinand</first> <last>Mrkviˇcka</last> </name> <birth> <date>16.02.1988</date> <place>Zilina</place>ˇ </birth> <!-- koment´ar--> <email>[email protected]</email> </person> Tento pr´ıklad obsahuje koreˇnov´yelement person, ktor´ym´atroch potomkov: name, birth a email. Podobne name m´apotomkov first a last, birth m´a datea place (obr´azok 2.1). Elementy v jazyku XML sa naz´yvaj´u tagy. Dˆoleˇzitouvlastnost’ou XML dokumentov je, ˇze tagy mˆoˇzubyt’ vnoren´e,no nesm´usa kr´ıˇzit’: <p>Prv´yodstavec s <b>tuˇcn´ymp´ısmom</p></b> Kaˇzd´ytag mˆoˇze obsahovat’ atrib´ut, ktor´ysa uv´adzado ´uvodzoviek: <tag atribut="prv´yatrib´ut"trieda="druh´yatrib´ut"/> Jeden tag mˆoˇzeobsahovat’ atrib´utov viac, no nemus´ıani jeden. Aj ked’ uˇzvytvor´ıme spr´avnezostaven´yXML dokument, teda dodrˇzalisme vˇsetky syntaktick´epravidl´a,zost´ava ot´azka, ˇcije dokument validn´y– vyhovuje s´emantike. T´asa 1HyperText Markup Language 5 definuje na zaˇciatku dokumentu: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> S´emantika stanovuje, ktor´etagy s´upovinn´e, ktor´evolitel’n´e,ktor´eatrib´uty s´upr´ıustn´e; S´emantiku mˆoˇzeme deklarovat’ dvoma spˆosobmi:defin´ıciatypu dokumentu (DTD) alebo XML sch´ema(XML schema). Na pr´acu s XML dokumentami sa pouˇz´ıvaj´uˇspecializovan´ekniˇznice. Hoci ide o jedno- duch´yform´ats´uboru, pr´acas n´ım je n´aroˇcn´ana dodrˇzanie vˇsetk´ych pravidiel. Specialitouˇ s´uXML streamy - teda XML dokumenty, ktor´evznikaj´uv re´alnom ˇcase, a rovnako v re´alnom ˇcaseich je treba spracov´avat’. Nemoˇznoˇcakat’ aˇzna ukonˇcenie spojenia a aˇzpotom zaˇcat’ spracov´avat’ dokument (napr. dokument sa vytv´arana z´aklade interakcie uˇz´ıvatel’a). Probl´emmˆoˇze nastat’ pri ˇc´ıtan´ıp´arov´ych tagov, ktor´eeˇstenepriˇslikompletn´e. XMPP pro- tokol pr´ave patr´ıdo skupiny XML streamov. 2.1.3 XMPP XMPP (Extensible Messaging and Presence Protocol)[15] je protokol aplikaˇcnej vrstvy sl´uˇziacina v´ymenu spr´avmedzi dvoma entitami na internete.[5] V podstate ide o kom- bin´aciuXML2 a IM, aj ked’ niektor´etypy d´atnesmie obsahovat’ (koment´are,bin´arne d´ata) Pouˇz´ıvanou, no nie vyˇzadovanou, architekt´urou je klient – server, klienti teda medzi sebou nekomunikuj´upriamo, ale cez siet’ serverov. Cel´at´atosiet’ je decentralizovan´a.Neexis- tuje ˇziadny centr´alny server (tak ako napr´ıkladpri ICQ), ktor´yby zaruˇcoval chod siete (v´ymenu inform´aci´ımedzi uˇz´ıvatel’mi). XMPP sa tieˇzzvykne oznaˇcovat’ pojmom Jabber. Do slovenˇciny by sa tento term´ındal vol’ne preloˇzit’ ako bl’abot, bl’abotat’, dˇzavotat’. V roku 1998 zaˇcalJeremie Miller projekt Jabber. Prv´ym produktom bol jabber server jabberd. Jabber neskˆorvy´ustildo ˇstandardu XMPP (rok 2004).