vgradnja funkcionalnosti prisotnosti v okolje xbmcfakulteta za elektrotehniko, računalništvo in...

89
Fakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI PRISOTNOSTI V OKOLJE XBMC Magistrsko delo Maribor, September 2013

Upload: others

Post on 05-Mar-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Fakulteta za elektrotehniko, računalništvo in informatiko

Smetanova ulica 17

2000 Maribor, Slovenija

David Vrečer

VGRADNJA FUNKCIONALNOSTI

PRISOTNOSTI V OKOLJE XBMC

Magistrsko delo

Maribor, September 2013

Page 2: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

VGRADNJA FUNKCIONALNOSTI

PRISOTNOSTI V OKOLJE XBMC

Magistrsko delo

Študent(ka): David Vrečer

Študijski program: Študijski program druge stopnje

Telekomunikacije

Mentor: red. prof. dr. Zdravko Kačič

Somentor: izr. prof. dr. Matej Rojc

Lektor: Fridrih Dosedla

Page 3: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI
Page 4: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

ZAHVALA

Zahvaljujem se mentorju red. prof. dr. Zdravku

Kačiču za pomoč in vodenje pri opravljanju

diplomskega dela. Prav tako se zahvaljujem

somentorju izr. prof. dr. Mateju Rojcu.

Posebna zahvala velja staršem, ki so mi omogočili

študij in moji zaročenki Ani, ki mi je ves čas študija

stala ob strani.

Page 5: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

i

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

Ključne besede: Xbox medijski center, XCAP, prisotnost,

UDK: 004.5:621.39(043)

Povzetek V magistrskem delu opisujemo namestitev strežnikov za navzočnost in omrežni

imenik ter izvedbo aplikacije za medijski center XBMC, ki omogoča povezavo na strežnik

IMS, prenos shranjenih kontaktov s strežnika za omrežni imenik in sledenje navzočnosti

uporabnikovih kontaktov. Podana je tudi konfiguracija programskega telefona SIP

MyMonster, ki smo ga uporabili za testiranje delovanja strežnikov ter opisano delovanje

aplikacije, ki smo jo razvili za program XBMC.

Page 6: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

ii

Integration of presence service into XBMC

Key words: Xbox media center, XCAP, presence,

UDK: 004.5:621.39(043)

Abstract

In this master thesis, the issues of installing the servers for presence and XCAP are

addressed. The development of the application for XBMC media center that enables

connection to the IMS server, acquisition of saved users contacts from the XCAP server and

monitoring of the contacts presence information is discussed. Additionally the Configuration

of MyMonster softphone that is used for testing of proper operation of servers is described.

At the end the functionality of the application developed for XBMC is presented.

Page 7: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

iii

Kazalo 1 Uvod ......................................................................................................................... 1

2 Konfiguracija storitev na internetu .......................................................................... 3

2.1 Protokol za upravljanje z dokumenti XML ...................................................... 3

2.1.1 Uporaba XCAP v aplikacijah ..................................................................... 7

2.2 Operacije XCAP ............................................................................................... 7

2.2.1 Operacija za ustvarjanje ali zamenjavo ...................................................... 8

2.2.2 Operacija za brisanje ................................................................................... 9

2.2.3 Operacija pridobivanja ................................................................................ 9

3 Navzočnost ............................................................................................................. 11

3.1 Pregled storitve navzočnosti ........................................................................... 11

3.1.1 Življenjski krog navzočnosti ..................................................................... 13

3.1.2 Naročanje na navzočnost in obvestila o navzočnosti ................................ 16

3.1.3 Objavljanje informacij o navzočnosti ....................................................... 19

3.1.4 Podatkovni format za objavo informacije o navzočnosti .......................... 21

3.2 Storitev navzočnosti v IMS ............................................................................ 23

3.2.1 Arhitektura navzočnosti v IMS ................................................................. 23

3.2.2 Objavljanje podatkov o navzočnosti ......................................................... 24

3.2.3 Naročanje opazovalcev ............................................................................. 26

3.2.4 OMA razširitve PIDF ................................................................................ 28

4 Predstavitev osnovnih programov .......................................................................... 31

4.1 Telefonska centrala Kamailio ......................................................................... 31

4.1.1 Arhitektura strežnika Kamailio ................................................................. 31

4.2 XBOX media center ....................................................................................... 34

4.2.1 Razvijanje dodatkov za XBMC ................................................................ 35

4.3 PJSIP ............................................................................................................... 36

Page 8: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

iv

4.3.1 Pjsua .......................................................................................................... 37

5 Namestitev strežnika in programov ....................................................................... 39

5.1 Postavitev strežnika Kamailio ........................................................................ 39

5.2 Dodajanje MySQL podpore v Kamailio ......................................................... 41

5.3 Nastavitev takojšnjega sporočanja in navzočnosti ......................................... 44

5.4 Nastavitev Omrežnega imenika ...................................................................... 45

5.5 Nastavitev SIP odjemalca Monster ................................................................. 49

6 Izvedba aplikacije s podporo navzočnosti v XBMC .............................................. 52

6.1 Shranjevanje nastavitev .................................................................................. 53

6.2 Podpora funkcionalnosti navzočnosti ............................................................. 53

6.3 Vpeljava funkcionalnosti XCAP .................................................................... 56

6.4 Uporabniški vmesnik ...................................................................................... 59

7 Prikaz delovanja ..................................................................................................... 66

8 Sklep ...................................................................................................................... 71

Priloga A – Kratek življenjepis ................................................................................ 74

Page 9: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

v

KAZALO SLIK

Slika 2.1: Poenostavljen pogled delovanja XCAP ......................................................... 4

Slika 2.2: Protokolni sklad XCAP .................................................................................. 5

Slika 2.3: Primer operacije PUT ..................................................................................... 6

Slika 2.4: XCAP odjemalec in strežnik .......................................................................... 6

Slika 2.5: Ustvarjanje ali zamenjava dokumenta XML .................................................. 8

Slika 2.6: Dodajanje elementa v dokument XML .......................................................... 9

Slika 2.7: Brisanje dokumenta XML .............................................................................. 9

Slika 3.1: Arhitektura navzočnosti SIP ........................................................................ 12

Slika 3.2: Prvi del življenjskega kroga informacije navzočnosti (PUBLISH) ............. 14

Slika 3.3: Drugi del življenjskega kroga informacije navzočnosti (NOTIFY) ............ 15

Slika 3.4: Primer naročanja na spremembe navzočnosti .............................................. 17

Slika 3.5: Primer prošnje SUBSCRIBE ....................................................................... 18

Slika 3.6: Primer prošnje NOTIFY .............................................................................. 19

Slika 3.7: Objava informacij o navzočnosti ................................................................. 20

Slika 3.8: Prošnja PUBLISH ........................................................................................ 21

Slika 3.9: Primer PIDF ................................................................................................. 22

Slika 3.10: Arhitektura storitve navzočnosti v IMS ..................................................... 23

Slika 3.11: Arhitektura navzočnosti na osnovi SIP v IMS ........................................... 24

Slika 3.12: Objavljanje informacij o navzočnosti ........................................................ 25

Slika 3.13: Naročanje opazovalca na lasten seznam .................................................... 27

Slika 3.14: Naročanje RLS na entiteto navzočnosti ..................................................... 28

Slika 3.15: Primer dokumenta PIDF razširjenega s strani OMA ................................. 29

Slika 4.1: Arhitektura strežnika Kamailio [5] .............................................................. 32

Slika 4.2: Vmesnik programa XBMC [8] ..................................................................... 34

Page 10: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

vi

Slika 5.1: Osnovne nastavitve odjemalca SIP .............................................................. 50

Slika 5.2: Nastavitve navzočnosti odjemalca SIP ........................................................ 50

Slika 5.3: Nastavitve XCAP odjemalca SIP ................................................................. 51

Slika 6.1: Prikaz komunikacije aplikacije .................................................................... 52

Slika 7.1: začetni zaslon ............................................................................................... 66

Slika 7.2: Nastavitve uporabniskega racuna ................................................................. 67

Slika 7.3: Uspešna prijava v sistem .............................................................................. 68

Slika 7.4: Dodajanje entitet .......................................................................................... 68

Slika 7.5: Nastavitve navzočnosti ................................................................................. 69

Slika 7.6: Kontakt Online ............................................................................................. 69

Slika 7.7: Kontakt Away .............................................................................................. 70

Slika 7.8: Kontakt Busy ................................................................................................ 70

Slika 7.9: Sprememba statusnega teksta ....................................................................... 70

Slika 7.10: Meni etitete navzočnosti ............................................................................ 70

Page 11: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

vii

UPORABLJENE KRATICE

3GPP Partnerskega projekta tretje generacije (3rd Generation Partnership Project)

GGSN Prehodno podporno vozlišče GPRS

GPL Splošna javna Licenca (General Public Licence)

HSS Strežnik za domače naročnike

HTTP Protokol za prenos hiperteksta (Hypertext transfer protocol)

ICE Vzpostavitev medsebojne povezave (Interactive Connectivity Establishment)

I-CSCF Poizvedovalna funkcija krmiljenja klicne seje (Interrogating Call Session

Control Function)

IETF Delovna skupina za internetsko inženirstvo (Internet Engineering Task Force)

IMS Internetni multimedijski podsistem (IP Multimedia Subsystem – IMS)

IP Internetni protokol (Internet Protocol)

IP-CAN IP - povezovalno dostopovno omrežje (IP-Connectivity Access Network)

MIME Večnamenska razširitev za elektronsko pošto (Multipurpose Internet Mail

Extension)

MSC Strežnik mobilnega komutacijskega centra (Mobile switching center)

MSRP Protokol za prenos sporočil znotraj vzpostavljene seje (Message Session Relay

Protocol)

NAT Prevajanje omrežnih naslovov (Network Address Translation)

OMA Zveza odprte mobilnosti (Open mobile alliance)

PA Agent storitve navzočnosti (Presence agent).

PIDF Podatkovni format za objavo informacije o navzočnosti (Presence Information

Data Format).

PNA Omrežni agent storitve navzočnosti (Presence Network Agent)

Page 12: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

viii

PS Strežnik navzočnosti (Presence Server)

PUA Uporabniški agent storitve navzočnosti (Presence User Agent )

RLS Strežnik seznamov virov (Resource List Server)

RTP Protokol za prenos v realnem času (Real Time Transport Protocol)

S-CSCF Strežna funkcija krmiljenja klicne seje (Serving Call Session Control Function)

SCTP Protokol za krmiljenje prenosa pretokov (Stream Control Transmision

Protocol)

SDL Specifikacijski in opisni jezik (Specification and description Language)

SDP Protokol za opis seje (Session Description Protocol)

SIP Protokol za zagon seje (Session Initiation Protocol)

SNMP Preprosti protokol za upravljanje omrežja (Simple Network Management

Protocol)

STUN Enostavno prečkanje UDP preko NAT (Simple Traversal of UDP over NAT)

TCP Protokol za krmiljenje transporta (Transmission Control Protocol)

TLS Varnost transportnega sloja (Transport Layer Security)

TURN Prehod NAT s pomočjo posrednikov (Traversal Using Relays around NAT)

UAID Identifikator uporabe s strani aplikacije (Application Usage ID)

UDP Uporabniški datagramski protokol (User Datagram Protocol)

URI Enolični identifikator virov (Uniform Resource Identifier)

VoIP Govor preko IP (Voice over IP)

XBMC Medijski center XBOX (Xbox Media Center)

XCAP Protokol za upravljanje z dokumenti (XML Configuration Access Protocol)

XML Razširljive označevalni jezik (Extensible Markup Language )

Page 13: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 1

1 UVOD

Živimo v časih, ko ljudje vedno bolj uporabljamo družabna omrežja, saj želimo biti

bolj povezani med seboj in v kontaktu drug z drugim. Komentarji, priporočila, "všečkanje"

in podobna opravila so že del vsakdana marsikaterega uporabnika spleta. Poleg uporabe

spleta velik del ljudi vsakodnevno uporablja tudi televizor, saj ima skoraj vsako

gospodinjstvo vsaj en televizor in gre razvoj vedno bolj v smer interaktivnih televizij. Na

televizorje poskušamo dodati vsa opravila, ki jih tipično izvajamo na spletu.

V tem magistrskem delu poskušamo narediti prvi korak proti interaktivnemu

televizorju. Na eni strani imamo že postavljeno omrežje internetnega multimedijskega

podsistema (IP Multimedia Subsystem – IMS), ki ga lahko uporabljamo za izvajanje

klicev, pošiljanje sporočil in še marsikaj drugega. Na drugi strani pa poznamo razne

programe, ki služijo kot medijski centri za katere lahko razvijamo aplikacije. V

magistrskem delu poskušamo pripeljati funkcionalnosti navzočnosti, ki jih omogoča IMS,

v program medijskega centra. To bi omogočilo, da bi se lahko uporabnik preko televizorja

prijavil na storitve IMS-a, videl kdaj so prijatelji na voljo in z njimi komuniciral preko

programa, katerega razvoj za televizor je cilj te magistrske naloge.

Cilj magistrskega dela je namestitev strežnika s podporo za storitve navzočnosti in

omrežnega imenika, razvoj aplikacije za medijski center, ki bo omogočala povezavo na

strežnik IMS in pridobitev shranjenih kontaktov s strežnika za omrežni imenik in sledenje

navzočnosti uporabnikovih kontaktov.

Kot osnovo za dosego cilja magistrske naloge smo izbrali programa Xbox medijski

center (Xbox media center - XBMC) ter Kamailio, ki sta oba odprtokodna programa in ju

lahko uporabljamo brez dodanih stroškov. XBMC je program za medijsko predvajanje in

omogoča razvoj lastnih aplikacij. Kamailio je odprtokodni SIP strežnik, ki omogoča

uporabo storitev navzočnosti ter omrežnega imenika.

Diplomsko delo je sestavljeno iz osmih poglavij. Drugo poglavje predstavlja

teoretično ozadje protokola, ki se uporablja za delovanje omrežnega imenika. Tretje

Page 14: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 2

poglavje govori o teoretičnem ozadju storitve navzočnosti na splošno ter o delovanju

navzočnosti znotraj sistemov IMS. V četrtem poglavju predstavimo programski opremi

Kamailio ter XBMC, ki sta osnova za izdelavo naše povezave ter knjižnico PJSIP, ki služi

kot osnova za programiranje aplikacije v XBMC. Peto poglavje predstavlja namestitve

strežnika ter vseh programov, ki jih potrebujemo za vzpostavitev povezave ter testiranje te

povezave. V šestem poglavju predstavimo izvedbo aplikacije ter nekatere razrede in

funkcije, ki smo jih izvedli za delovanje aplikacije. Sedmo poglavje vsebuje prikaz

delovanja aplikacije, konfiguracijo nastavitev, prijavo na strežnik in spreminjanje

informacij. V zadnjem poglavju povzamemo delo ter predstavimo probleme, ki so nastali

med razvijanjem rešitve ter predstavimo možnosti za nadgradnjo aplikacije.

Page 15: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 3

2 KONFIGURACIJA STORITEV NA INTERNETU

Veliko storitev potrebuje mehanizme, ki omogočajo uporabnikom, da upravljajo s

konfiguracijami storitev. Na primer strežnik navzočnosti zahteva, da entitete navzočnosti

(uporabniki) avtorizirajo, kateri opazovalci lahko vidijo njihove informacije o navzočnosti.

Prav tako storitve pritisni za pogovor zahtevajo, da uporabniki ustvarijo in skrbijo za

skupine. Ti primeri si delijo veliko podobnosti: uporabnik mora opravljati operacije na

strežniku v nerealnem času, da lahko manipulira z enim ali več dokumenti, ki določajo ali

poosebljajo njegove primerke storitve. [1]

Običajno uporabnik ustvari dokument za konfiguracijo lokalno v svojem terminalu

in ga nato naloži na strežnik. Včasih pa mora uporabnik narediti samo majhne spremembe

v že obstoječ dokument, zato se ne splača ponovno nalagati celotnega dokumenta. V

nekaterih primerih uporabniki zamenjajo njihov običajni terminal in uporabljajo drugega,

zato si morajo najprej priskrbeti svežo kopijo trenutnega dokumenta nastavitev, narediti

nekaj sprememb in jih naložiti nazaj na strežnik.

Značilno za dokumente za konfiguracijo je, da so zelo strukturirani. Zaradi tega se

danes pojavlja trend uporabe razširljivega označevalnega jezika (Extensible Markup

Language – XML) za oblikovanje dokumentov, ki poosebljajo primerke storitev.

2.1 PROTOKOL ZA UPRAVLJANJE Z DOKUMENTI XML

Protokol za upravljanje z dokumenti (XML Configuration Access Protocol –

XCAP) omogoča shranjevanje in nalaganje konfiguracijskih dokumentov XML na

strežnik. Njegovo najbolj poenostavljeno delovanje prikazuje slika 2.1, kjer vidimo kako

uporabnik na svojem računalniku ustvari dokument XML in ga naloži na strežnik. Ta

dokument strežnik kasneje uporablja za ustvarjanje poosebljenega primerka storitve.

Page 16: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 4

Slika 2.1: Poenostavljen pogled delovanja XCAP

S tem naletimo na problem ustvarjanja protokola, ki omogoča takšen postopek

nalaganja na strežnik. Protokol za prenos hiperteksta (Hypertext Transfer Protocol –

HTTP) daje dobro osnovo, saj omogoča uporabo metod POST in PUT za prenašanje datotek

od odjemalca do strežnika. Prav tako vsebuje metodo GET za prenašanje dokumentov s

strežnika. Vendar imamo še dodatne potrebe, ki preprečujejo uporabo protokola HTTP. Na

primer, če želi uporabnik dodati prijatelja na svoj seznam prijateljev v storitvi navzočnosti,

torej želi spremeniti le par bitov potencialno velikega dokumenta, se mu ne splača ponovno

nalagati celotnega XML dokumenta, ker je razen spremenjene vsebine dokument večinoma

nespremenjen. Takšnega načina delovanja HTTP ne omogoča.

Delovna skupina za internetsko inženirstvo (Internet Engineering Task Force –

IETF) se je odločila, da razvije skupek konvencij in pravil za uporabo protokola HTTP za

nalaganje in pridobivanje celotnih delov dokumentov XML na strežnik in z njega. Iz tega

je nastal XCAP, ki ni nov protokol ampak le skupek konvencij za uporabo protokola HTTP

za upravljanje z oddaljeno shranjenimi dokumenti XML. Slika 2.2 prikazuje shemo sklada

protokolov, ki ga uporablja XCAP.

Page 17: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 5

Slika 2.2: Protokolni sklad XCAP

XCAP daje odjemalca, ki lahko na daljavo bere, piše in spreminja aplikacijske

konfiguracije XML, ki so shranjene na strežniku. To vključuje spreminjanje seznamov

uporabnikov v seznamu navzočnosti, politik dovoljenj (na primer dovoljeni opazovalci) ali

udeležencev v konferenci. XCAP ne nadzira uporabniškega vmesnika ampak se osredotoči

na podatkovno strukturo.

XCAP definira tudi konvencije, ki načrtujejo dokumente XML in njihove

komponente v HTTP naslove enoličnih identifikatorjev virov (Uniform Resource Identifier

– URI). Tako XCAP omogoča edinstven način zastopanja dokumentov XML ali

komponent s HTTP naslovi URI. Prav tako definira pravila, ki urejajo, kako spremembe

dela vsebine vplivajo na preostali dokument. To pomeni, da XCAP dovoljuje uporabnikom

spreminjanje dokumentov XML, vendar mora biti končni dokument še vedno v skladu z

originalno shemo XML. Dodatno XCAP določa tudi osnovne politike dovoljenj, ki so

povezane z dostopom do virov.

XCAP je dodal set operacij, ki so preslikane na osnovne metode HTTP 1.1.. XCAP

omogoča, da lahko odjemalci z operacijami spreminjajo celoten dokument XML, poljuben

element dokumenta XML ali poljuben atribut znotraj elementa XML. Za vsakega izmed

teh nivojev XCAP ponuja ustvarjanje, brisanje, spreminjanje, zamenjavo in pridobivanje

dokumentov XML. Torej, če povzamemo, XCAP omogoča, da ustvarjamo, brišemo,

spreminjamo, zamenjujemo ali pridobivamo celotne dokumente, elemente ali atribute

XML.

Page 18: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 6

Slika 2.3 prikazuje primer prošnje XCAP, v kateri Alice pošilja prošnjo HTTP PUT,

za ustvarjanje novega seznama navzočnosti. S slike je razvidno, da je XCAP le

kombinacija HTTP-ja in XML-ja, z nekaj dodatnimi pravili.

Slika 2.3: Primer operacije PUT [1]

XCAP definira dva funkcionalna elementa: odjemalec XCAP in strežnik XCAP, ki

jih prikazuje slika 2.4. Odjemalec XCAP je odjemalec, ki je v skladu s HTTP 1.1 in ima

podporo za pravila in konvencije, ki jih določa XCAP. Pošilja prošnje HTTP in dobiva

odzive HTTP. Strežnik XCAP je strežnik, ki je v skladu s HTTP 1.1, ki prav tako podpira

pravila in konvencije, ki jih določa XCAP. Strežnik dobiva prošnje HTTP in generira

odzive HTTP.

Slika 2.4: XCAP odjemalec in strežnik

Page 19: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 7

2.1.1 UPORABA XCAP V APLIKACIJAH

Videli smo, da obstaja več aplikacij, ki uporabljajo XCAP, na primer: v storitvah

navzočnosti uporabljajo entitete navzočnosti XCAP, da lahko nadzirajo, kateri opazovalci

lahko vidijo vse informacije o navzočnosti. V splošnem lahko rečemo, da kadarkoli je

potreba po spreminjanju konfiguracij podatkov aplikacij, kjer je seznam shranjen

oddaljeno v obliki XML, je XCAP dober protokol za izvedbo teh sprememb.

Zaradi te vsestranskosti ima XCAP različno uporabo glede na aplikacije. Njegova

uporaba je definira glede na to, kako določena aplikacija uporablja XCAP za interakcijo s

strežnikom XCAP. Vse že prej omenjene aplikacije imajo različno delovanje. Vsaka

uporaba aplikacije je določena z identifikatorjem uporabe s strani aplikacije (Application

Usage ID – AUID), ki posamezno uporabo aplikacije edinstveno določa.

IETF je definirala različne uporabe XCAP aplikacij, ki so v povezavi s storitvijo

navzočnosti.

Uporaba XCAP aplikacij za sezname virov. Omogoča spreminjanje

seznamov virov, ki se tipično uporabljajo kot seznami navzočnosti.

Uporaba XCAP aplikacij za dovoljevanje navzočnosti. Omogoča

odjemalcu, da določa pravila glede dovoljenj v navzočnosti. To pomeni, da

lahko ta pravila dovoljujejo nekaterim opazovalcem, da dostopajo do

določenih delov informacij entitete navzočnosti.

Uporaba XCAP aplikacij za spreminjanje dokumentov navzočnosti.

Omogoča uporabniku, da izvaja spreminjanje informacij o navzočnosti kot

je spreminjanje statusa navzočnosti z uporabo protokola XCAP. Za razliko

od spreminjanja teh podatkov z uporabo metode SIP PUBLISH.

2.2 OPERACIJE XCAP

XCAP omogoča odjemalcem različne tipe operacij na oddaljenih dokumentih

XML. Te operacije so preslikane na prošnje HTTP, kjer vrednost Request-URI pomeni

vir (dokument, element, atribut), ki naj se ustvari, izbriše, zamenja, spremeni ali pridobi.

Page 20: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 8

2.2.1 OPERACIJA ZA USTVARJANJE ALI ZAMENJAVO

Da lahko ustvarimo nov dokument na oddaljenem strežniku ali zamenjamo že

obstoječega, uporablja odjemalec XCAP metodo HTTP PUT. V prošnji HTTP PUT pomeni

vrednost polja Request-URI identifikacijo dokumenta XML, ki ga želimo ustvariti (v

primeru, da še ni obstajal) ali zamenjati (v primeru, da že obstaja). Dokument XML, ki ga

želimo ustvariti ali zamenjati je na prošnjo dodan kot telo večnamenske razširitve za

elektronsko pošto (Multipurpose Internet Mail Extension – MIME) in je identificiran s

poljem Content-Type, katerega vrednost je odvisna od uporabljene aplikacije. Slika 2.5

prikazuje primer operacije XCAP, ki ustvari ali zamenja dokument ims.xml.

Slika 2.5: Ustvarjanje ali zamenjava dokumenta XML

Če odjemalec XCAP želi ustvariti ali zamenjati posamezen element ali atribut

obstoječega dokumenta XML, je operacija podobna. Odjemalec XCAP uporabi metodo

HTTP PUT, v kateri polje Request-URI kaže na element ali atribut dokumenta XML, ki

naj se ustvari ali zamenja. Polje Content-Type se nastavi na application/xcap-

el+xml ali application/xcap-att+xml, odvisno od tega ali ta operacija vpliva na

element ali atribut. Prošnja PUT vsebuje telo XML, ki vključuje element ali atribut, ki ga

želimo ustvariti ali zamenjati. Na primer, slika 2.6 prikazuje vstavljanje elementa

kljucne-besede, kot podrejeni element elementu knjiga v dokument ims.xml.

Page 21: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 9

Slika 2.6: Dodajanje elementa v dokument XML [1]

Ker sta metodi ustvarjanja in zamenjave preslikani na isto prošnjo HTTP,

potrebujemo način, kako jih razlikovati. Način je zelo preprost, če izbiranje odseka ne

najde obstoječega elementa, potem je to metoda ustvarjanja. V primeru, da izbiranje

odseka najde obstoječi element v dokumentu je to operacija zamenjave.

2.2.2 OPERACIJA ZA BRISANJE

Za izbris dokumenta, elementa ali atributa dokumenta XML na oddaljenem

strežniku uporabi odjemalec XCAP HTTP prošnjo DELETE. Polje Request-URI izbere

dokument, element ali atribut, ki ga želimo izbrisati. Po prejemu metode DELETE strežnik

odstrani dokument, element ali atribut. V primeru, da je izbran določen element, strežnik

izbriše element z vsemi njegovimi atributi in podrejenimi elementi. Dokument, ki ga

dobimo mora biti v skladu z uporabo aplikacij in shemo XML, ki določa, kateri elementi in

atributi so obvezni in kateri so opcijski. V nasprotnem primeru strežnik ne izpolni prošnje

brisanja. Slika 2.7 prikazuje primer operacije brisanja, ki odstrani dokument ims.xml s

strežnika.

Slika 2.7: Brisanje dokumenta XML

2.2.3 OPERACIJA PRIDOBIVANJA

Obstaja veliko primerov, v katerih odjemalec XCAP poskuša pridobivati obstoječi

dokument, element ali atribut, ki je shranjen na oddaljenem strežniku. Na primer, če

Page 22: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 10

uporabnik uporablja nov terminal verjetno še nima dokumentov XML, ki jih je ustvaril s

prejšnjim terminalom. V tem primeru mora najprej pridobiti obstoječe dokumente s

strežnika in jih šele nato lahko spreminja.

Za pridobivanje dokumenta, elementa ali atributa odjemalec ustvari prošnjo HTTP

GET. Za to prošnjo mora odjemalec XCAP vedeti ime dokumenta XML. Polje Request-

URI izbere dokument, element ali atribut, ki ga želimo pridobiti. Strežnik na to odgovori z

200 (OK), ki vsebuje telo MIME. Če smo pridobivali celoten dokument potem telo

vsebuje celoten dokument, drugače vrne samo želen element ali atribut.

Page 23: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 11

3 NAVZOČNOST

Navzočnost je ena izmed osnovnih storitev, ki se vse bolj uporablja, saj omogoča

dostop do velikega nabora prilagojene vsebine o določenem uporabniku ali skupini

uporabnikov. Storitve navzočnosti lahko berejo in razumejo informacije o navzočnosti. Z

uporabo teh informacij se storitve, ki so uporabniku na voljo, prilagajajo glede na njegove

potrebe in nastavitve. [1]

3.1 PREGLED STORITVE NAVZOČNOSTI

Navzočnost je storitev, ki daje uporabniku informacije o dostopnosti, dosegljivosti

in pripravljenosti na komunikacijo z drugimi uporabniki. Storitev navzočnosti prikazuje ali

so uporabniki dosegljivi in če so, pove ali so prisotni, v stanju mirovanja ali zasedeni.

Poleg tega storitev navzočnosti omogoča uporabnikom, da delijo informacije oziroma

komentarje v obliki statusnih sporočil ter dajejo informacije o njihovih načinih

komunikacije in opreme, ki je na voljo (torej ali imajo na voljo tekstovno, avdio ali video

komunikacijo).

Ogrodje navzočnosti določa različne vloge, kot jih vidimo na sliki 3.1. Oseba, ki

daje informacije o navzočnosti storitvi navzočnosti se imenuje entiteta navzočnosti (angl.

Presentity). Na sliki 3.1 ima vlogo entitet navzočnosti Alice. Entiteta navzočnosti daje

informacije o navzočnosti, kot so status, zmožnosti komunikacije, komunikacijski naslov

in druge. Te informacije o navzočnosti entiteta navzočnosti deli preko več naprav znanih

kot uporabniški agenti storitve navzočnosti (Presence User Agent – PUA), ki pridobivajo

informacije o njeni navzočnosti.

Slika 3.1 prikazuje tri PUA: terminal IMS, prenosni računalnik in namizni

računalnik. Vsak vsebuje košček informacije o Alice, ki je naša entiteta navzočnosti.

Prenosni in namizni računalnik vesta ali je Alice prijavljena v katerega izmed

računalnikov. Terminal IMS pozna status njene registracije na omrežje IMS in ve ali Alice

že sodeluje v kakšnem tipu komunikacije. Vse te kose informacij posredujejo agentu

Page 24: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 12

storitve navzočnosti (Presence agent – PA). PA zbira vse informacije, ki jih dobi in ustvari

celotno sliko o navzočnosti.

Agent storitve navzočnosti je lahko tudi sestavni del strežnika navzočnosti

(Presence Server – PS). PS je funkcijska entiteta, ki deluje kot PA ali kot posredovalni

strežnik za prošnje SUBSCRIBE. Oba sta si podobna v funkcionalnosti, vendar lahko PS

deluje tudi kot posredovalni strežnik, medtem ko PA tega ne omogoča.

Na sliki 3.1 vidimo dva opazovalca: Bob in Cynthia. Opazovalec je entiteta, ki

povprašuje po informacijah navzočnosti o entiteti navzočnosti. Obstaja več tipov

opazovalcev na primer, pridobitnik je opazovalec, ki od PA pridobiva trenutno informacije

o navzočnosti entitete. Naročnik je opazovalec, ki prosi za obvestila o prihodnjih

spremembah v informacijah o navzočnosti entitete tako, da ima naročen opazovalec

natančno posodobljen pogled na informacije o navzočnosti entitete.

Aplikacije večinoma vsebujejo kombinirano funkcionalnost opazovalca in entitete

navzočnosti, saj tako skrijejo razlikovanje med objavljanjem informacij o navzočnosti in

njihovim pridobivanjem. Storitev navzočnosti je namenska aplikacija zgrajena na

obvestilih o dogodkih ogrodja SIP. Ogrodje dovoljuje opazovalcem, da se prijavijo na

obvestila o spremembah navzočnosti ali da pridobijo trenutne informacije o entiteti

navzočnosti. Stanja prijav na obvestila o spremembah navzočnosti so shranjena v PA

Slika 3.1: Arhitektura navzočnosti SIP

Page 25: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 13

entitete navzočnosti, ki deluje kot obveščevalec. PA obvešča vse prijavljene opazovalce,

ko se zgodi kakšna sprememba v navzočnosti opazovane entitete.

Vse transakcije SUBSCRIBE/NOTIFY vsebujejo glavo imenovano SIP Event, ki

opredeljuje dogodek, na katerega se navezuje prijava ali obvestilo.

Vse zahteve NOTIFY vsebujejo polje MIME, ki prikazuje informacije o navzočnosti

entitete navzočnosti. To polje je XML dokument, ki je oblikovan po določenih pravilih.

Ker se informacije o navzočnosti prenašajo v XML dokumentu, je enostavno razširiti

informacije o navzočnosti glede na naše potrebe. Dejstvo, da se informacije o navzočnosti

ne prenašajo direktno s protokolom SIP, ampak znotraj dokumentov XML, ki jih prenaša

protokol SIP, nam daje jasno ločitev med slojem transportnega protokola SIP in med

slojem aplikacijskega protokola XML.

3.1.1 ŽIVLJENJSKI KROG NAVZOČNOSTI

Informacije, ki jih daje entiteta navzočnosti, gredo med svojim življenjskim krogom

skozi več transformacij. Od faze ustvaritve do pošiljanja, obravnavanja, hranitve in do

zadnje faze dostave do uporabnikov (opazovalcev).

Slika 3.2 prikazuje shemo prvega dela življenjskega kroga informacije navzočnosti.

Entiteta navzočnosti (leva stran slike) želi objaviti svoje informacije o navzočnosti.

Dejanske informacije o navzočnosti se razlikujejo glede na to kateri PUA uporablja entiteta

navzočnosti. Lahko se uporablja različne PUA za dajanje informacij o navzočnosti kot so:

računalnik, mobilni telefon ali stacionarni telefon. Kot zgled lahko vzamemo, da je entiteta

navzočnosti oddaljena od računalnika, vendar se vseeno pogovarja preko mobilnega

telefona, tako se potem ti detajli preslikajo v informacije o navzočnosti.

Page 26: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 14

V določenem trenutku v času pošlje vsak izmed prej naštetih PUA prošnjo SIP

PUBLISH, ki vsebuje njihove trenutne informacije o stanju navzočnosti entitete

navzočnosti. Dokument, ki ga prejme PA, se poda v proces združitve, ki ga vodi politika

združevanja in omogoča, da se trije dokumenti o navzočnosti združijo v poenoteno

različico informacije o navzočnosti. Dodatno entiteta navzočnosti naloži še dokument o

politiki navzočnosti z uporabo protokola XCAP. Dokument politike navzočnosti omogoča

dodatne nastavitve zasebnosti, ki jih PA upošteva preden posreduje informacije o

navzočnosti opazovalcem. Na primer, dokument politike navzočnosti lahko pove, da

določeni opazovalci ne bodo dobili informacij o lokaciji entitete navzočnosti, medtem ko

bodo drugi dobili to informacijo.

Drugi del življenjskega kroga navzočnosti prikazuje slika 3.3. Opazovalec se prijavi

na obveščanje o navzočnosti entitete s tem, da pošlje prošnjo SUBSCRIBE, ki je

naslovljena na naslov URI entitete navzočnosti. Prošnja SUBSCRIBE lahko vsebuje filtre,

ki povedo, katere informacije opazovalca zanimajo. PA dobi prošnjo SUBSCRIBE, potrdi

Slika 3.2: Prvi del življenjskega kroga informacije navzočnosti (PUBLISH)

Page 27: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 15

opazovalca in izvleče identiteto ter filter opazovalca. Potem PA vzame dokument

navzočnosti entitete navzočnosti, dokument politike zasebnosti in opazovalčevo identiteto

ter doda politiko zasebnosti poenotenemu dokumentu navzočnosti. Rezultat tega je

dokument o navzočnosti, ki je prikrojen opazovalcu, vendar je ta dokument še vedno samo

potencialen, saj še mora iti skozi več transformacij.

Nato PA vzame potencialni dokument navzočnosti in doda opazovalčev filter, ki ga

je prejel v prošnji SUBSCRIBE. Ta filter odstrani vse odvečne informacije, ki opazovalca

ne zanimajo. Na primer, opazovalca zanimajo samo osnovni podatki, kot so spremembe

stanja (prisoten/odsoten) in ne geografske koordinate.

Ko PA zaključi filtriranje dokumenta navzočnosti, sta na voljo dve možnosti: če se

uporabljajo polna obvestila ali če je to prvi dokument delnega obvestila, se ustvari celoten

dokument navzočnosti; če pa se uporabljajo delna obvestila in se je že poslal polni

dokument, potem PA ustvari delni dokument navzočnosti glede na prejšnjo poslano verzijo

in tako pošlje le spremembe.

Slika 3.3: Drugi del življenjskega kroga informacije navzočnosti (NOTIFY)

Page 28: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 16

PA nato ustvari prošnjo NOTIFY, ki vsebuje dokument navzočnosti in ga pošlje

opazovalcu. Če pošlje delno verzijo, potem uporabi opazovalec prejšnjo verzijo in prejeto

verzijo sprememb ter jih združi in tako dobi celotni dokument informacij o navzočnosti. V

primeru, da pridobi celoten dokument navzočnosti, uporabi vse informacije, ki jih

dokument vsebuje in jih preprosto prikaže uporabniku.

3.1.2 NAROČANJE NA NAVZOČNOST IN OBVESTILA O NAVZOČNOSTI

Vmesnik, ki je definiran med opazovalcem in PA, dovoljuje opazovalcu, da se

prijavi na informacije navzočnosti entitete navzočnosti. Prijava je lahko preprosta operacija

pridobivanja. V tem primeru opazovalec želi pridobiti le trenutne informacije o

navzočnosti entitete in ne želi obvestil o prihodnjih spremembah navzočnosti entitete.

Druga možnost pa je SUBSCRIBE prošnja, ki ustvari naročnino na informacije o

navzočnosti entitete, ki trajajo določen čas, ki ga določimo v polju Expires. V tem

primeru dobiva opazovalec posodobitve o stanju navzočnosti entitete, ko se entiteti stanje

spremeni. V primeru, da opazovalec želi obdržati naročnino aktivno, jo mora obnavljati

preden poteče.

Slika 3.4 prikazuje primer naročanja na spremembe navzočnosti. Opazovalec pošlje

prošnjo SUBSRIBE(1) do PA. Prošnja vsebuje polje Event, ki mora biti nastavljeno na

presence, s čemer nakazuje, da se naroča na informacije o navzočnosti določene entitete.

PA avtenticira in avtorizira opazovalca in odgovori z 200(OK), kateremu sledi prošnja

NOTIFY(3). Ta prošnja že lahko vsebuje dokument XML, ki vsebuje informacije o

navzočnosti entitete. V primeru, da NOTIFY vsebuje dokument o navzočnosti entitete, je ta

dokument XML dokument, ki je oblikovan po pravilih podatkovnega formata za objavo

informacije o navzočnosti (Presence information data format – PIDF). V nekaterih

primerih, kot na primer, da še opazovalec ni bil potrjen, ta prošnja NOTIFY(3) samo

pošilja status naročnine, vendar ne prenaša dokumenta PIDF, ki bi opisoval informacije o

navzočnosti entitete.

Page 29: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 17

Slika 3.4: Primer naročanja na spremembe navzočnosti

Opazovalec odgovori PA, na prošnjo NOTIFY, z odgovorom 200(OK)(4). Ko je

opazovalec avtoriziran za prejemanje informacij o navzočnosti entitete ali se stanje

navzočnosti entitete spremeni, mu PA pošlje prošnjo NOTIFY(5), ki vsebuje dokument

navzočnosti v obliki PIDF. Na to prošnjo opazovalec odgovori z 200(OK)(6).

Slika 3.5 nam prikazuje primer prošnje SUBSCRIBE, ki jo pošlje opazovalec, kot je

Alice, entiteti navzočnosti, v tem primeru Bob. Polje Request-URI je nastavljeno na

naslov URI entitete navzočnosti. Ker polje Expires ni nastavljeno na vrednost nič, bo

operacija naročnine po določenem času potekla. Alice je predlagala, da je čas naročnine

ena ura. PA v odgovoru 200 OK na to prošnjo SUBSCRIBE nastavi čas v polje Expires.

Page 30: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 18

Slika 3.5: Primer prošnje SUBSCRIBE [1]

Prošnja SUBSCRIBE lahko vsebuje tudi polje Accept, ki pove katere tipe MIME

lahko opazovalec razume. To polje določa tipe MIME, ki jih kasneje PA vključuje v

prošnje NOTIFY. Kot prikazuje slika 3.5, opazovalec razume format PIDF.

Na sliki 3.6 vidimo primer prošnje NOTIFY, ki prenaša informacije v formatu PIDF.

Polje Subsription-State prikazuje stanje naročnine in časovnik izteka naročnine.

Page 31: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 19

Slika 3.6: Primer prošnje NOTIFY [1]

3.1.3 OBJAVLJANJE INFORMACIJ O NAVZOČNOSTI

Metoda, s katero entitete navzočnosti omogočijo, da PA dostopa do njihovih

informacij o navzočnosti, se imenuje REGISTER. Transakcije REGISTER podajajo trenutno

lokacijo (IP naslov) uporabnika. Tako lahko PA spremeni njihovo navzočnost na

offline, kadar niso registrirani in ko se registrirajo spremeni njihovo navzočnost na

online. Po drugi strani pa je semantika metode REGISTER zelo preprosta: REGISTER

veže naslov vira (javna identiteta) z naslovom kontakta. Torej, če ne želimo

preobremenjevati te semantike z namenom objavljanja informacij o navzočnosti,

potrebujemo nov mehanizem, ki omogoča, da PUA nalagajo dokumente z informacijami o

navzočnosti na PA.

Organizacija IETF je definirala metodo SIP PUBLISH v RFC 3903 [16]. Namen te

metode je objavljanje stanja dogodkov, ki se uporabljajo znotraj okvirov za obveščanje o

Page 32: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 20

specifičnih dogodkih protokola za zagon seje (Session Initiation Protocol – SIP). Metoda

PUBLISH zato ni uporabna le za objavljanje informacij o navzočnosti, temveč je dovolj

splošna, da jo lahko uporabljamo za objavljanje kakršnihkoli stanj povezanih z

dogodkovnimi paketi.

Slika 3.7 prikazuje tipični potek objavljanja informacij o navzočnosti. PUA pošlje

PA prošnjo PUBLISH, ki vsebuje dokument PIDF. Ta prošnja je prikazana na sliki 3.8.

PA potrdi prejem prošnje PUBLISH tako, da odgovori z 200(OK). Odgovor 200(OK)

vsebuje polje SIP-Etag, ki ga lahko uporabimo za zagotavljanje številke verzije

shranjenega dokumenta.

Slika 3.7: Objava informacij o navzočnosti

Page 33: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 21

Slika 3.8: Prošnja PUBLISH [1]

3.1.4 PODATKOVNI FORMAT ZA OBJAVO INFORMACIJE O NAVZOČNOSTI

PIDF je dokument oblike XML, ki ga uporabljamo za prenašanje semantike

informacij o navzočnosti med dvema entitetama navzočnosti in je določen z RFC 3863

[17]. PIDF določa splošen profil navzočnosti zato, da ga lahko za prenašanje informacij o

navzočnosti uporabljajo različni protokoli, ne le SIP. Zasnovan je z minimalističnim

pristopom, ki garantira ponovno uporabnost z različnimi protokoli. Po drugi strani pa je

zelo razširljiv tako, da lahko, kjer je potrebno, format razširimo preko minimalnega

modela. Nekatere razširitve so zasnovane s ciljem določanja bolj natančnega pogleda na

informacije o navzočnosti entitete.

PIDF kodira informacije o navzočnosti v dokument XML, ki se ga lahko prenaša v

objavah in obvestilih o navzočnosti kot katerikoli drug dokument MIME. Ker je to nov tip

aplikacije in kodiranja, ima tudi svoj medijski tip MIME application/pidf+xml.

Page 34: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 22

Dokument PIDF vsebuje informacije o navzočnosti entitete. Te informacije so

sestavljene iz več skupkov. Vsak skupek vsebuje status entitete navzočnosti (open ali

closed, kar pomeni ali je online/offline), opcijski element contact, ki določa

naslov URI kontakta, opcijsko opombo note, opcijski časovni žig timestamp in možne

druge razširitve elementov.

Poudariti je treba, da PIDF samo definira statusa open in closed, kar za večino

aplikacij ni dovolj. Dovoljuje pa razširitev statusov kot so doma, na telefonu,

odsoten, itd.

Slika 3.9 prikazuje PIDF primer entitete navzočnosti

pres:[email protected]. Iz tega PIDF primera vidimo, da je online za

komuniciranje. Z opazovalci deli kontakt v obliki TEL URI in opombo, ki pove, da je to

njen mobilni telefon.

Slika 3.9: Primer PIDF [1]

Page 35: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 23

3.2 STORITEV NAVZOČNOSTI V IMS

Storitve navzočnosti, ki potekajo preko IMS, so definirane s strani partnerskega

projekta tretje generacije (3rd Generation Partnership Project - 3GPP) s specifikacijo TS

24.141 [19]. Treba je poudariti, da 3GPP samo vzdržuje specifikacijo in je ne razvija.

Storitev navzočnosti se je medtem preselila na zvezo odprte mobilnosti (Open mobile

alliance – OMA). OMA vidi storitev navzočnosti kot omogočevalca, torej kot skupek

specifikacij, ki omogočajo storitve.

3.2.1 ARHITEKTURA NAVZOČNOSTI V IMS

Slika 3.10 prikazuje arhitekturo storitve navzočnost v IMS v navezi s konfiguracijo,

ki jo ponuja arhitektura XDM. Terminal IMS igra vlogo tako opazovalca kot PUA. V

središču te arhitekture je funkcija PS, ki deluje kot PA in se nahaja v domačem omrežju.

PS je dopolnjen s strežnikom vsebine, XDMS-jem navzočnosti in XDMS-jem vsebine

navzočnosti. Če gledamo na te strežnike s strani IMS arhitekture, so vsi aplikacijski

strežniki.

Značilno za storitev navzočnosti je, da potrebuje zmožnost urejanja seznamov.

Strežnik zaznamkov virov (Resource List Server – RLS) daje potrebno funkcionalnost za

gostovanje različnih seznamov. RLS se dopolnjuje z RLS XDMS-jem in deljenim XDMS-

jem. S strani IMS arhitekture so vse te storitve aplikacijski strežniki.

Slika 3.10: Arhitektura storitve navzočnosti v IMS

Page 36: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 24

Aplikacijski strežniki lahko delujejo kot opazovalci informacij o navzočnosti.

Tipično je opazovalec v storitvi navzočnosti implementiran v povezavi z drugimi

storitvami, ki sledijo navzočnosti entitete.

Storitev navzočnosti vsebuje različne vmesnike, ki jih prikazuje slika 3.11 Večina

vmesnikov je realizacija splošnega vmesnika za krmiljenje storitev.

3.2.2 OBJAVLJANJE PODATKOV O NAVZOČNOSTI

Ko se zažene IMS aplikacija za navzočnost, v našem primeru je to IMS terminal,

objavi vse trenutne informacije o entitetah navzočnosti. Slika 3.12 prikazuje potek

objavljanja informacij o navzočnosti in kot lahko vidimo, se ne razlikuje veliko od

splošnega objavljanja informacij o navzočnosti. IMS terminal pošlje prošnjo PUBLISH(1),

ki v polju Event vsebuje besedilo presence in vključuje dokument PIDF, ki opisuje

informacije o navzočnosti. Strežna funkcija krmiljenja klicne seje (Serving Call Session

Control Function – S-CSCF) sprejme to prošnjo (2) in oceni začetne informacije o

navzočnosti. Eden izmed začetnih kriterijev na filtru pove, da je potrebno prošnjo

Slika 3.11: Arhitektura navzočnosti na osnovi SIP v IMS

Page 37: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 25

PUBLISH, ki ima polje event nastavljeno na presence, posredovati na PS, kjer se

informacije o navzočnosti entitete navzočnosti shranijo, zato S-CSCF posreduje prošnjo

PUBLISH(3) aplikacijskemu strežniku. PS odobri objavo in pošlje nazaj odgovor

200(OK)(4).

Poleg IMS terminala lahko katerakoli druga omrežna entiteta deluje kot izvor

informacij o navzočnosti in objavlja uporabnikove informacije o navzočnosti. Tem

entitetam pravimo omrežni agenti storitve navzočnosti (Presence Network Agent – PNA)

in lahko objavljajo informacije o navzočnosti entitete v imenu uporabnika na podoben

način, kot bi to objavili PUA. PNA uporabijo metodo SIP PUBLISH, ki vsebuje PIDF

dokument. Katerakoli omrežna entiteta lahko deluje kot PNA: strežnik mobilnega

komutacijskega centra (Mobile switching center – MSC), prehodno podporno vozlišče

GPRS (Gateway GPRS support Node – GGSN), strežno podporno vozlišče GPRS (serving

GPRS support Node –SGSN), strežnik za domače naročnike (Home Subscriber Server –

HSS) in drugi.

Slika 3.12: Objavljanje informacij o navzočnosti [1]

Page 38: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 26

3.2.3 NAROČANJE OPAZOVALCEV

Uporabnik Alice upravlja z IMS terminalom, ki lahko deluje kot opazovalec. Ko

požene aplikacijo za navzočnost, se njen terminal prijavi na informacije o navzočnosti

njenih entitet navzočnosti.

Čeprav IMS omogoča opazovalcem, da se posamezno prijavijo na vsako izmed

entitet navzočnosti, se tipično naročajo na enega ali več seznamov navzočnosti, ki

gostujejo v domačem omrežju na RLS. S tem dobimo zelo učinkovito skupinsko naročanje

z enim korakom, kar prihrani čas in povezavo, ki bi jo potrebovali za posamično naročanje.

Slika 3.13 prikazuje tok naročanja na lasten seznam, ki privzema, da imamo na

RLS seznam naslovov URI od entitet navzočnosti, na katere se želi Alice naročiti.

Aplikacija opazovalca v terminalu IMS pošlje prošnjo SUBSCRIBE(1) naslovljeno na njen

seznam sip:[email protected]. Prošnja SUBSCRIBE ima polje

Require nastavljeno na eventlist, kar nakazuje, da je naročanje naslovljeno na seznam

in ne na posamezno entiteto navzočnosti. Če je polje Event nastavljeno na presence to

prikazuje, da je to naročnina za paket dogodkov navzočnosti. S-CSCF nato prejme prošnjo

SUBSCRIBE (2) in oceni začetne kriterije filtriranja. Eden izmed teh kriterijev pove, da

ima prošnja SUBSCRIBE polje Event nastavljeno na presence ter polje Require

nastavljeno na eventlist in ga je zato potrebno posredovati (3) na Aplikacijski

strežnik, ki je RLS. RLS preveri identiteto naročnika in potrdi naročnino nato pa pošlje

odgovor 200(OK)(4). RLS prav tako pošlje začetno prošnjo NOTIFY(7), ki še ne

vsebuje podatkov o navzočnosti. RLS se posamezno prijavi na vse entitete navzočnosti, ki

jih vsebuje seznam virov. Ko RLS prejme dovolj informacij, ustvari novo prošnjo

NOTFIY(13), ki vsebuje dokument o navzočnosti sestavljen iz informacij vseh entitet

navzočnosti.

Page 39: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 27

Slika 3.14 prikazuje, kako se RLS naroči na eno izmed entitet navzočnosti, ki so na

prejetem seznamu. Ta proces se ponovi za vsak naslov URI na seznamu. Prošnja vsebuje

polje Event, ki je nastavljeno na presence. Prošnje se posredujejo preko S-CSCF v

domače omrežje RLS (2) do poizvedovalne funkcije krmiljenja klicne seje (Interrogating

Call Session Control Function – I-CSCF) v omrežju entitete navzočnosti. I-CSCF ustvari

poizvedbo na HSS z uporabo protokola Diameter, (3),(4), da poišče S-CSCF, ki je

dodeljen entiteti navzočnosti in mu nato posreduje prošnjo SUBSCRIBE(5). S-CSCF oceni

začetne kriterije filtra, kjer je kriterij, ki nakazuje, da je potrebno prošnjo posredovati PS-ju

entitete navzočnosti (6). Po pošiljanju odgovora 200(OK)(7), PS pošlje prošnjo

NOTIFY(11), ki vsebuje informacije o navzočnosti entitete navzočnosti. Na sliki 3.13

Slika 3.13: Naročanje opazovalca na lasten seznam

Page 40: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 28

vidimo, da niti S-CSCF niti I-CSCF ne beleži poti. Torej, PS pošlje prošnjo NOTIFY(11)

direktno na naslednje vozlišče, ki je zabeležilo to pot (S-CSCF v omrežju RLS). S tem, da

nimamo poti, se izognemo temu, da bi se S-CSCF zaklenil v primeru, da nebi imel

prijavljenih entitet navzočnosti. Če se entiteta navzočnosti prijavi kasneje, se lahko zgodi

dodelitev S-CSCF-ja, ki jo vodi do drugega S-CSCF.

3.2.4 OMA RAZŠIRITVE PIDF

OMA je definirala manjše število dodatnih elementov, ki dopolnjujejo standard

PIDF za mobilne namene. Slika 3.15 prikazuje vse te dodatne elemente, ki jih je dodala

OMA.

Slika 3.14: Naročanje RLS na entiteto navzočnosti

Page 41: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 29

Slika 3.15: Primer dokumenta PIDF razširjenega s strani OMA

OMA definira element willingness, ki se lahko uporablja za prikaz

uporabnikove pripravljenosti do sprejemanja dohodnih komunikacij za specifične

Page 42: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 30

aplikacije in naprave. Ta element lahko vsebuje vrednosti open ali closed. Element

session-participation prikazuje ali ima uporabnik vsaj eno aktivno sejo v katerikoli

storitvi. Ta element lahko vsebuje vrednosti open ali closed. Element registration-

state prikazuje stanje registracije entitete navzočnosti na določene storitve. Lahko

vsebuje vrednosti active ali terminated. Element barring-state prikazuje ali je

uporabnik aktiviral zaporo za katero izmed storitev. Lahko vsebuje vrednosti active ali

terminated. Element service-description se uporablja za prikazovanje storitev, ki

so specifične za OMA. Ta element lahko ima dva podrejena elementa: service-id in

version. Element service-id identificira storitev in lahko vsebuje eno izmed številk,

ki jih je definirala OMA. Element version nam pove verzijo storitve. Vse te elemente

najdemo v komponenti service podatkovnega modela navzočnosti.

Element network-availability se uporablja za prikazovanje tipa omrežja, na

katerega je povezana uporabnikova naprava. Vsebuje element network, ki vsebuje

atrribut id, ki je nastavljen na tip omrežja, na katerega je povezan. Ta atribut lahko

vsebuje vrednost IMS, s čemer nakaže, da je to omrežje IMS, vendar lahko dobi tudi

vrednost kateregakoli IP-povezovalnega dostopovnega omrežja (IP-Connectivity Access

Network – IP-CAN) dostopovnega tipa z isto vrednostjo kot jo dobi P-Access-

Network-Info. Element network vsebuje podrejeni element, ki je nastavljen na active

ali terminated. Element network-availability najdemo v komponenti device

podatkovnega modela navzočnosti.

Entiteta navzočnosti lahko uporabi element override-willingness, da

omogoča splošno pripravljenost za vse aplikacije. Kot posledica tega ima override-

willingness prioriteto pred nastavitvam willingness od aplikacij in naprav. Element

override-willingness lahko vsebuje vrednost open in closed in ga najdemo v

komponenti person v podatkovnem modelu navzočnosti.

Page 43: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 31

4 PREDSTAVITEV OSNOVNIH PROGRAMOV

4.1 TELEFONSKA CENTRALA KAMAILIO

Kamailio (bivši OpenSer) je odprtokodni SIP strežnik, ki je zmožen obravnavati

tisoče vzporednih klicev na sekundo in je razvit pod splošno javno licenco (General Public

Licence – GPL). Njegove zmožnosti obsegajo asinhron protokol za krmiljenje transporta

(Transmission Control Protocol – TCP), uporabniški datagramski protokol (User Datagram

Protocol – UDP), protokol za krmiljenje prenosa pretokov (Stream Control Transmision

Protocol – SCTP), varno komunikacijo preko varnosti transportnega sloja (Transport Layer

Security – TLS) za govor preko IP (Voice over IP – VoIP) (zvok, video), IPv4 in IPv6,

preprosto takojšnje sporočanje in navzočnost z vgrajenim XCAP strežnikom in protokolom

za prenos sporočil znotraj vzpostavljene seje (Message Session Relay Protocol – MSRP),

oštevilčenje, usmerjanje glede na najnižje stroške, prometno uravnovešanje, usmerjanje

preko nadomestnih povezav, ustvarjanje računov, avtentikacijo in avtorizacijo. Kamailio

podpira tudi različne sisteme, kot so: MySQL, Postgres, Oracle, Radius, LDAP, Redis,

Cassandra, XMMLRPC kontrolni vmesniki in nadziranje preprostih protokolov za

upravljanje omrežja (Simple Network Management Protocol - SNMP). Lahko ga

uporabljamo za gradnjo velikih platform za podporo VoIP ali za povečevanje kapacitet

prehodov SIP-v-PSTN.[3]

4.1.1 ARHITEKTURA STREŽNIKA KAMAILIO

Strežnik Kamailio ima modularno arhitekturo. Če pogledamo od daleč, vidimo dve

glavni kategoriji:

Jedro – to je komponenta, ki skrbi za nizkonivojsko delovanje. Od verzije

3.0.0 naprej jedro strežnika Kamailio vsebuje tako imenovane notranje

knjižnice. Te se uporabljajo za zbiranje kode, ki si jo deli več modulov in se

ne uporablja kot del jedra.

Moduli – to so komponente, ki omogočajo večino funkcionalnosti, ki

naredijo ta strežnik tako uporaben v različnih izvedbah po svetu.

Page 44: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 32

Arhitektura strežnika Kamailio se je spremenila z verzijo 3.0.x, s čemer je

omogočila, da se programska koda deli med več moduli, ki so shranjeni v notranjih

knjižnicah. Slika 4.1 prikazuje novo arhitekturo verzije 3.0.x v primerjavi s staro verzije

1.x.[4]

Slika 4.1: Arhitektura strežnika Kamailio [5]

JEDRO STREŽNIKA KAMAILIO

Jedro strežnika Kamailio vsebuje:

upravitelj pomnilnika,

razčlenjevalnik sporočil SIP,

upravljanje transportnega sloja in DNS,

razčlenjevalnik in prevajalnik konfiguracijskih datotek,

posredovanje brez stanj,

psevdo spremenljivke in pogoni za transformacije,

vmesniki za oddaljene postopke,

Page 45: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 33

vmesniki za časovnik.

Notranje knjižnice vsebujejo:

Nekatere komponente iz starega jedra verzije 1.5.x

Abstraktne sloje podatkovnih baz

Upravljavski vmesnik

Pogon za statistiko

MODULI STREŽNIKA KAMAILIO

V repozitoriju trenutno obstaja več kot 150 modulov. Z nalaganjem raznih modulov

lahko dobimo funkcionalnosti kot so:

Upravljanje registracij in uporabniških lokacij,

vodenje računov, dovoljenje in avtentikacij,

tekstovne operacije,

odgovarjanje brez stanj,

razširitve za navzočnost in takojšnje sporočanje,

podpora za RADIUS in LDAP,

sledenje aktivnim klicem,

ter mnoge druge.

Page 46: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 34

4.2 XBOX MEDIA CENTER

XBMC je odprtokodna aplikacija za medijsko predvajanje ter zabavno središče za

digitalne medije. XBMC je na voljo na platformah LINUX, OSX in Windows. Leta 2003

ga je ustvarila skupina podobno razmišljujočih programerjev. XBMC je neprofiten projekt,

ki ga vodijo in razvijajo prostovoljci po vsem svetu. Več kot petdeset razvijalcev

programske opreme prispeva k razvijanju XBMC-ja ter več kot sto prevajalcev, ki so

omogočili, da je na voljo v več kot tridesetih jezikih. [6]

Trenutno se lahko XBMC uporablja za predvajanje skoraj vseh poznanih

popularnih avdio in video formatov. Zasnovan je bil za mrežno predvajanje tako, da lahko

pretakamo naše vsebine direktno preko mreže ali interneta kjerkoli želimo. Z njim lahko

gledamo tudi CD-je in DVD-je, prav tako pa lahko predvaja vsebine iz zgoščenih arhivskih

datotek kot so ZIP ali RAR. Ena izmed njegovih funkcij je tudi, da pregleda vsebino

našega diska in za nas avtomatsko ustvari poosebljeno knjižnico vsebin na disku.

Ena izmed glavnih lastnosti programa XBMC je prilagodljivost. Na sliki 4.2 vidimo

eno izmed različnih preoblek vmesnika, ki omogočajo prilagajanje videza programa. Poleg

preoblek imamo na voljo različne dodatke, ki dovoljujejo uporabniku dostop do raznih

spletnih storitev kot so YouTube, Spotify, Grooveshark in druge. [7]

Slika 4.2: Vmesnik programa XBMC [8]

Page 47: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 35

V začetku so XBMC ustvarili kot aplikacijo za medijsko predvajanje v igralni

konzoli Xbox, vendar je danes na voljo kot aplikacija za operacijske sisteme Android,

Linux, BSD, MAC OS X, iOS in Mircosoft Windows. Na voljo je tudi kot samostojna

verzija poimenovana XBMCbuntu. Zaradi odprtokodne zasnove in povezave med

operacijskimi sistemi, se XBMC uporablja v različnih napravah, kot so: pametna televizija,

set-top box sistemi, hotelski televizijski sistemi.

XBMC je aplikacija, ki se uporablja na več platformah in je programiran v

programskem jeziku C++. Aplikacija delno uporablja tudi specifikacijski in opisni jezik

(Specification and description Language – SDL), multimedijska ogrodja in OpenGL za

procesiranje grafike na platformah Linux in Mac OS X, medtem ko za procesiranje grafike

na platformi Windows uporablja Microsoft DirectX in Direct3D.

Ker XBMC izvira iz platforme Xbox, ki ima strojne in programske omejitve, je bilo

rezerviranje omejenih virov vedno pomembno pri razvijanju programov. XBMC je

programiran tako, da izrablja sistemska sredstva zelo učinkovito, zato ga lahko poganjamo

na cenovno zelo ugodni strojni opremi in tudi starejših računalnikih.

4.2.1 RAZVIJANJE DODATKOV ZA XBMC

XBMC vsebuje več odprtih uporabniških vmesnikov, ki omogočajo zunanjim

razvijalcem razširjanje z raznimi dodatki. Dodatki so lahko zvočni ali video vtičniki za

spletne vire, skripte za gradnike, preobleke/motivi, vizualizacije, ohranjevalniki zaslona,

spletni povzemalci, vremenske napovedi in še več. Razvijalci XBMC-ja spodbujajo

uporabnike, da ustvarjajo in objavljajo svoje dodatke, da dodajo dodatno vsebino in

storitve znotraj okolja XBMC.

XBMC ima vgrajen prevajalnik kode Python, ki omogoča razvijanje dodatkov,

skript in vtičnikov. S pomočjo teh dodatkov lahko razširimo delovanje programa XBMC

brez veliko programerskih izkušenj. [9]

Pri razvijanju za XBMC imamo na voljo dodatke in skripte. Skripte dajejo

fleksibilnost in kontrolo celotnega grafičnega vmesnika XBMC, dodatki pa omogočajo, da

Page 48: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 36

hitro in konsistentno uporabniku predstavljamo informacije z uporabo standardne strukture

menijev XMBC. Dodatki so prav tako skripte, vendar se uporabljajo le za določene

funkcije in so shranjene v datoteki /plugins/ namesto v datoteki /scripts/, kjer so

shranjene skripte.

Ko uporabnik požene dodatek, ta generira seznam postavk ter jih posreduje XBMC-

ju, da jih ta izriše na zaslon. Čeprav razvijalci dodatkov izgubijo nekaj nadzora nad

predstavitvijo podatkov, ti ne potrebujejo ustvarjati lastnih vmesnikov, ali skrbeti za

ustvarjanje uporabnega videza in občutka. Dodatke večinoma uporabljamo za pridobivanje

podatkov s spletnih strani in prikazovanje seznamov video posnetkov v XMBC-ju.

4.3 PJSIP

PJSIP je multimedijska komunikacijska knjižnica, ki je prosto dostopna in

odprtokodna. Napisana je v programskem jeziku C in vključuje standardizirane protokole

kot so SIP, protokol za opis seje (Session Description Protocol – SDP), protokol za prenos

v realnem času (Real Time Transport Protocol – RTP), enostavno prečkanje UDP preko

NAT (Simple Traversal of UDP over NAT – STUN), prehod NAT s pomočjo posrednikov

(Traversal Using Relays around NAT – TURN) in vzpostavitev medsebojne povezave

(Interactive Connectivity Establishment – ICE). Združuje signalni protokol (SIP) z

bogatim multimedijskim ogrodjem in funkcionalnostjo prečkanja omrežja s pomočjo

prevajanja omrežnih naslovov (Network Address Translation – NAT) v visoko nivojski

vmesnik, ki je prenosljiv in primeren za skoraj vse tipe sistemov, kot so: namizni

računalniki, vgrajeni sistemi ter mobilne naprave. [10]

Multimedijska komunikacijska knjižnica je zelo bogata z lastnostmi, a hkrati tudi

kompaktna. Podpira avdio, video, navzočnost in takojšnje sporočanje poleg tega ima tudi

obširno dokumentacijo. Je tudi zelo prenosljiva, saj na mobilnih napravah prevzame

lastnosti, ki so odvisne od naprave ter v večini primerov lahko uporablja izvorne

multimedijske sposobnosti naprave.

Page 49: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 37

4.3.1 PJSUA

PJSUA je odprtokodni uporabniški agent SIP, ki ga uporabljamo kot referenčno

izvedbo knjižnic PJSIP, PJNATH in PJMEDIA. Kljub njegovi preprostosti vsebuje veliko

različnih lastnosti.

Lastnosti SIP:

Več hkratnih registracij

Podpora več klicem

IPv6

PRACK

UPDATE

OPTIONS

Klic na čakanju

Preusmeritev klica

SIMPLE z podporo za PIDF in XPIDF

Lasten tekst navzočnosti

Podpora za objavljanje PUBLISH

Takojšnje sporočanje in obveščanje o tipkanju

Transport preko UDP in TCP

Avtentikacija Digest

Medijske lastnosti:

Več hkratnih klicev

Konferenčni klici

Kodeki Speex, iLBC, GSM, G711, G722 in L16

Stereo kodeki

Predvajanje, pretakanje in snemanje datotek WAV

RTCP

Nadziranje kvalitete klicev

Page 50: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 38

RFC 2833 [18]

Avtomatski odzivnik

Generiranje tonov

Izničevanje odmeva

Zaznavanje tišine

Simuliranje izgubljenih paketov

SRTP

Lastnosti prečkanja NAT:

Interaktivno ustvarjanje povezljivosti

STUN

TURN

Paketi TLS keep-alive in SIP TCP

Avtomatsko zaznavanje sprememb naslova SIP UDP

Avtomatsko zaznavanje sprememb medijskega transporta ICE [11]

Page 51: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 39

5 NAMESTITEV STREŽNIKA IN PROGRAMOV

5.1 POSTAVITEV STREŽNIKA KAMAILIO

Namestitev strežnika Kamailio pričnemo s tem, da dodamo njegov repozitorij v

/apt/source.list. S tem poskrbimo, da nam ne bo potrebno prenašati posameznih

paketov ali ga nameščati iz izvornih datotek. Nato moramo še posodobiti apt. [12]

apt-get update

Za tem še preverimo ali nam uspe najti paket z imenom Kamailio preko ukaza:

apt-cache search kamailio

Nato pa še bolj natančno preverimo verzijo paketa Kamailio, saj mora biti verzija

3.1.x.

apt-cache show kamailio

Na DNS strežniku moramo dodati pravilne SIP UDP in SIP TCP SRV, ki bodo

usmerjali pakete na naslov IP našega strežnika Kamailio.

Presence 1D IN A 172.16.25.2

Nadaljujemo z namestitvijo strežnika Kamailio.

Apt-get install kamailio

Ko se namestitev zaključi vidimo sporočilo:

Setting up kamailio (3.1.0+lenny3) ...

adduser: Warning: The home directory `/var/run/kamailio' does not belong

to the user you are currently creating. Kamailio not yet configured. Edit

/etc/default/kamailio first.

Odpremo datoteko /etc/default/kamailio.

# Set to yes to enable kamailio, once configured properly.

RUN_KAMAILIO=yes

Page 52: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 40

# User to run as

USER=kamailio

# Group to run as

GROUP=kamailio

# Amount of memory to allocate for the running Kamailio server (in Mb)

MEMORY=64

Nato lahko zaženemo osnovno Kamailio storitev, ki se zažene z vnaprej nastavljeno

konfiguracijo.

/etc/init.d/kamailio start

Starting kamailio: kamailioloading modules under

/usr/lib/kamailio/modules_k/:/usr/lib/kamailio/modules/

Listening on

udp: 127.0.0.1:5060

udp: 158.193.139.51:5060

tcp: 127.0.0.1:5060

tcp: 158.193.139.51:5060

Aliases:

tcp: localhost:5060

udp: localhost:5060

Sedaj moramo še dodati alias v konfiguracijsko datoteko kamailo.cfg.

Poiščemo vrstico:

/* add local domain aliases */

#alias="sip.mydomain.com"

V tem delu dodamo vrstico z našo domeno.

alias="ietkims.uni-mb.si"

Ponovno zaženemo strežnik.

/etc/init.d/kamailio restart

Restarting kamailio: kamailioloading modules under

Page 53: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 41

/usr/lib/kamailio/modules_k/:/usr/lib/kamailio/modules/

Listening on

udp: 127.0.0.1:5065

udp: 172.16.25.2:5065

tcp: 127.0.0.1:5065

tcp: 172.16.25.2:5065

Aliases:

tcp: localhost:5065

udp: localhost:5065

*: ietkims.uni-mb.si:*

kamailio started

Namestitev strežnika je s tem zaključena in sedaj se lahko registriramo na strežnik z

odjemalcem MyMonster.

5.2 DODAJANJE MYSQL PODPORE V KAMAILIO

Za uporabo shranjevanja podatkov moramo najprej namestiti strežnik podatkovne

baze. Za podatkovne baze uporabimo MySQL in Kamailio module, ki jih Kamailio

uporablja za povezovanje s podatkovno bazo. [13]

Namestitev je preprosta, le zaženemo:

apt-get install mysql-server kamailio-mysql-modules

Med namestitvijo se ponudi izbira root gesla za strežnik MySQL. Nato moramo

določiti parametre, ki jih bo strežnik Kamailio uporabljal za povezovanje z bazo. Za to

moramo urediti datoteko /etc/kamailio/kamctlrc in nastaviti ustrezne podatke, ki jih

bosta uporabljala strežnik Kamailio in ukaz kamctl.

Dodamo ali odkomentiramo naslednje vrstice:

SIP_DOMAIN=ietkims.uni-mb.si

DBENGINE=MYSQL

Page 54: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 42

DBHOST=localhost

DBNAME=kamailio

DBRWUSER=openser

DBRWPW=„openserrw“

DBROUSER=openserro

DBROPW=openserro

DBROOTUSER=„root“

ALIASES_TYPE=„DB“

CTLENGINE=„FIFO“

OSER_FIFO=“/tmp/kamailio_tmp“

VERBOSE=1

PID_FILE=/var/run/kamailio.pid

Nato z ukazom kamdbctl create ustvarimo tabele, ki jih bo Kamailio uporabljal

za shranjevanje podatkov.

pstest:/etc/kamailio# kamdbctl create

MySQL password for root:

database engine 'mysql' loaded

INFO: test server charset

INFO: creating database kamailio …

Creating core table: standard

Creating core table: acc

Creating core table: lcr

Creating core table: domain

Creating core table: group

Creating core table: permissions

Creating core table: registrar

Creating core table: usrloc

Creating core table: msilo

Creating core table: alias_db

Creating core table: uri_db

Creating core table: speeddial

Creating core table: avpops

Creating core table: auth_db

Creating core table: pdt

Creating core table: dialog

Page 55: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 43

Creating core table: dispatcher

Creating core table: dialplan

INFO: Core Kamailio tables succesfully created.

Kot zadnji korak še poskusimo dodati novega uporabnika v podatkovno bazo.

Ietkims2:/etc/kamailio# kamctl add test test_password

database engine 'MYSQL' loaded

Control engine 'FIFO' loaded

is_user: user counter=0

check_db_alias: alias counter=0

new user 'test' added

Z nameščenim MySQL strežnikom moramo sedaj preveriti ali imamo nameščene

module MySQL, ki jih Kamailio potrebuje. Če niso nameščeni, moramo odkomentirati

vrstice z moduli, ki jih potrebujemo. Odpremo datoteko

/etc/kamailio/kamailio.cfg in kot prvi korak definiramo bloke za podporo MySQL

WITH_MYSQL, avtentikacijo s podatkovno bazo WITH_AUTH, podatkovne baze vzdevkov

WITH_ALIASDB in trajno shranjevanje lokacije WITH_USRLOCDB.

#!define WITH_MYSQL

#!define WITH_AUTH

#!define WITH_IPAUTH

#!define WITH_ALIASDB

#!define WITH_USRLOCDB

Sedaj v datoteki cfg poiščemo ####### Defined Values ###### in znotraj

teh vrednosti poiščemo DB_URL, tam preverimo, da je DB_URL nastavljen pravilno.

#!define DBURL „mysql:/ /openser:openserrw@localhost/kamailio“

Da IMS strežniku omogočimo nemoteno komuniciranje s strežnikom navzočnosti,

še znotraj datoteke cfg poiščemo odsek Route:

#!ifdef WITH_IPAUTH

if(#allow_source_address())

{

Page 56: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 44

# source IP allowed

return;

}

Ter ga spremenimo na:

#!ifdef WITH_IPAUTH

if(1==1)

{

# source IP allowed

return;

}

Ostali del datoteke je že pravilno nastavljen, zato nam ni potrebno spreminjati

drugih odsekov programske kode.

5.3 NASTAVITEV TAKOJŠNJEGA SPOROČANJA IN NAVZOČNOSTI

Za podporo navzočnosti potrebuje Kamailio posebne podatkovne tabele. Torej, ko

nameščamo MySQL podporo za Kamailio, moramo v etc/kamailio/kamctlrc

odkomentirati naslednji dve vrstici. [14]

# If to install tables for the modules in the EXTRA_MODULES variable.

INSTALL_EXTRA_TABLES=ask

# If to install presence related tables.

INSTALL_PRESENCE_TABLES=ask

Nato zaženemo ukaz kamdbctl create, a ker smo že ustvarili podatkovne baze

pri nastavljanju podpore MySQL za Kamailio, moramo najprej zagnati ukaz kadbctl

reinit, ki bazo pobriše in jo na novo ustvari.

Sedaj lahko namestimo modul za navzočnost strežnika Kamailio, kar storimo z

ukazom apt-get install. Ne smemo pa pozabiti ponovno zagnati strežnika Kamailio z

ukazom /etc/init.d/kamailio restart.

Page 57: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 45

Konfiguracijo takojšnjega sporočanja in osnovne navzočnosti izvedemo v datoteki

/etc/kamailio/kamailio.cfg, kjer dodamo vrstico:

#!define WITH_PRESENCE

Za vzpostavitev preproste navzočnosti je to dovolj, saj so vse ostale vrstice že

vključene znotraj datoteke kamailio.cfg.

5.4 NASTAVITEV OMREŽNEGA IMENIKA

Strežnik Kamailio nima vnaprej nastavljenih nastavitev za podporo XCAP, zato

moramo v /etc/kamailio/kamailio.cfg dodati par vrstic. Na vrhu dodamo

definicijo XCAP podpore. [15]

#!define WITH_XCAPSRV

V odsek global parameters moramo dodati parametre za življenjsko dobo

povezave in dovoljenje prejemanja prošenj brez dolžine vsebine.

tcp_connection_lifetime=3064

#!ifdef WITH_XCAPSRV

tcp_accept_no_cl=yes

#!endif

Znotraj odseka load module dodamo blok, ki zažene module, ki so potrebni za

delovanje omrežnega imenika XCAP.

#!ifdef WITH_XCAPSRV

loadmodule „xhttp.so“

loadmodule „xcap_server.so“

#!endif

V odseku module parameters pripravimo XCAP parametre strežniškega

modula za podatkovno bazo.

Page 58: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 46

#!ifdef WITH_XCAPSRV

# —– xcap_server params —–

modparam(„xcap_server“, „db_url“, DBURL)

#!endif

Nato v odseku modparam poiščemo blok, kjer je definirana navzočnost (iščemo

!ifdef WITH_PRESENCE) in dodamo naslednje vrstice:

modparam("presence", "fallback2db", 1)

modparam("presence", "db_update_period", 20)

Kot naslednje poiščemo modparam("presence_xml","force_active",1) in

za to vrstico dodamo:

modparam(„presence_xml“, „integrated_xcap_server“, 1)

Naš celoten blok mora sedaj izgledati tako:

#!ifdef WITH_PRESENCE

# —– presence params —–

modparam(„presence“, „db_url“, DBURL)

modparam(„presence“, „fallback2db“, 1)

modparam(„presence“, „db_update_period“, 20)

# —– presence_xml params —–

modparam(„presence_xml“, „db_url“, DBURL)

modparam(„presence_xml“, „force_active“, 1)

modparam(„presence_xml“, „integrated_xcap_server“, 1)

#!endif

Za nastavitev logičnega dela Route lahko kar kopiramo naslednji del v

Kamailio.cfg.

#!ifdef WITH_XCAPSRV

#!define WITH_XHTTPAUTH

event_route[xhttp:request] {

xdbg("===== xhttp: request [$rv] $rm => $hu\n");

Page 59: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 47

#!ifdef WITH_XHTTPAUTH

if (!www_authorize("xcap", "subscriber"))

{

www_challenge("xcap", "0");

exit;

}

#!endif

if($hu=~"^/xcap-root/")

{

set_reply_close();

set_reply_no_connect();

# xcap ops

$xcapuri(u=>data) = $hu;

if($xcapuri(u=>xuid)=~"^sip:.+@.+")

$var(uri) = $xcapuri(u=>xuid);

else if($xcapuri(u=>xuid)=~".+@.+")

$var(uri) = "sip:" + $xcapuri(u=>xuid);

else

$var(uri) = "sip:"+ $xcapuri(u=>xuid) + "@" + $Ri;

xlog("===== xhttp: $xcapuri(u=>auid) : $xcapuri(u=>xuid)\n");

if($xcapuri(u=>auid)=="xcap-caps")

{

$var(xbody) =

"<?xml version='1.0' encoding='UTF-8'?> <xcap-caps

xmlns='urn:ietf:params:xml:ns:xcap-caps'> <auids> <auid>rls-

services</auid> <auid>pidf-manipulation</auid> <auid>xcap-

caps</auid> <auid>resource-lists</auid> <auid>pres-rules</auid>

<auid>org.openmobilealliance.pres-rules</auid> </auids> <extensions>

</extensions> <namespaces> <namespace>urn:ietf:params:xml:ns:rls-

services</namespace>

<namespace>urn:ietf:params:xml:ns:pidf</namespace>

<namespace>urn:ietf:params:xml:ns:xcap-caps</namespace>

<namespace>urn:ietf:params:xml:ns:resource-lists</namespace>

<namespace>urn:ietf:params:xml:ns:pres-rules</namespace> </namespaces>

</xcap-caps>";

xhttp_reply("200", "ok", "application/xcap-caps+xml",

"$var(xbody)");

Page 60: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 48

exit;

}

#!ifdef WITH_XHTTPAUTH

# be sure auth user access only its documents

if ($au!=$(var(uri){uri.user})) {

xhttp_reply("403", "Forbidden", "text/html",

"<html><body>$si:$sp</body></html>");

exit;

}

#!endif

switch($rm) {

case "PUT":

xcaps_put("$var(uri)", "$hu", "$rb");

if($xcapuri(u=>auid)=~"pres-rules")

{

xlog("===== xhttp put: refreshing watchers

for $var(uri)\n");

pres_update_watchers("$var(uri)",

"presence");

pres_refresh_watchers("$var(uri)",

"presence", 1);

}

exit;

break;

case "GET":

xlog("===== xhttp: get $var(uri) => $hu\n");

xcaps_get("$var(uri)", "$hu");

exit;

break;

case "DELETE":

xcaps_del("$var(uri)", "$hu");

if($xcapuri(u=>auid)=~"pres-rules")

{

xlog("===== xhttp del: refreshing watchers

for $var(uri)\n");

pres_update_watchers("$var(uri)",

"presence");

Page 61: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 49

pres_refresh_watchers("$var(uri)",

"presence", 1);

}

exit;

break;

}

}

# http ops

xhttp_reply("200", "ok", "text/html",

"<html><body>OK: $si:$sp</body></html>");

exit;

}

#!endif

5.5 NASTAVITEV SIP ODJEMALCA MONSTER

Za povezovanje na strežnik uporabljamo SIP odjemalec Monster. V programu

moramo najprej dodati novega uporabnika, ki mu nastavimo podatke znotraj treh menijev:

IMS Network

Presence

XDMS Profile

IMS NETWORK

V tem meniju nastavimo uporabniški račun, s katerim se registriramo na strežnik

SIP. Nastavitve, ki jih vidimo na sliki 5.1, so sleče:

Domena: ietkims.uni-mb.si

Prikazno ime: mpres00

Javna identiteta: sip:[email protected]

Privatna identiteta: [email protected]

Skrivno geslo: mpres00

PCSCF: pcscf.ietkims.uni-mb.si

PCSCF vrata: 4060

Page 62: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 50

Slika 5.1: Osnovne nastavitve odjemalca SIP

PRESENCE

Meni presence omogoča izbiro načina uporabe navzočnosti in osnovnih storitev,

ki so na voljo. Označimo OMA Presence Simple in odkljukamo vse nastavitve, ki so

nam na voljo, kot je razvidno iz slike 5.2.

Slika 5.2: Nastavitve navzočnosti odjemalca SIP

Page 63: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 51

XBMC PROFILE

Zadnje nastavitve odjemalca SIP najdemo pod menijem XDMC Profile. Znotraj

tega menija se nahajajo nastavitve povezovanja z našim strežnikom XCAP, kot vidimo na

sliki 5.3. V tem meniju odkljukamo uporabo XDMS in dodatno nastavimo:

Gostitelj: 172.16.25.2

Vrata: 5065

Root: /xcap-root

Uporabniško ime: mpres00

Geslo: mpres00

Slika 5.3: Nastavitve XCAP odjemalca SIP

Page 64: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 52

6 IZVEDBA APLIKACIJE S PODPORO NAVZOČNOSTI V

XBMC

Za namen razvoja dodatka za XBMC smo postavili strežnik Kamailio z

razširitvami, ki jih potrebujemo za delovanje funkcij navzočnosti, odjemalec SIP

MyMonster, s katerim bomo testirali delovanje naše aplikacije in preprosto aplikacijo v

XBMC, ki omogoča povezovanje na strežnik IMS in opravljanje preprostih klicev.

Sedaj želimo to aplikacijo nadgraditi tako, da bo omogočala povezovanje na

strežnik XCAP, kjer bo dostopala do svojega shranjenega omrežnega imenika ter

omogočala izmenjavo podatkov o navzočnosti ostalih uporabnikov, kot to prikazuje slika

6.1.

Slika 6.1: Prikaz komunikacije aplikacije

Slika 6.1 prikazuje, da se mora aplikacija najprej registrirati na strežnik navzočnosti

in strežnik XCAP. Po uspešni registraciji poskuša aplikacija s strežnika XCAP pridobiti

seznam virov uporabnika. V primeru, da ta seznam virov še ne obstaja, si ga aplikacija

Page 65: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 53

lokalno ustvari in ga naloži na strežnik. Nato se prijavi na spremembe o navzočnost vseh

entitet na seznamu virov na strežnik navzočnosti in sedaj posluša vse spremembe

navzočnosti ostalih uporabnikov ter objavlja lastne spremembe navzočnosti. Aplikacija

mora omogočati tudi dodajanje in brisanje uporabnikov ter shranjevanje teh sprememb na

strežniku XCAP.

6.1 SHRANJEVANJE NASTAVITEV

Za shranjevanje nastavitev, ki jih konfiguriramo v programu, uporabljamo razred

clSettings. Ta razred vsebuje spremenljivke: id – naslov SIP URI uporabnika,

reg_uri – naslov SIP URI strežnika IMS , proxy – naslov strežnika proxy, username –

uporabniško ime uporabnika, password – geslo uporabnika, xcap_address – naslov

strežnika xcap, xcap_username –uporabniško ime na strežniku XCAP, xcap_password

–geslo uporabnika na strežniku XCAP.

id="sip:[email protected]"

reg_uri="sip:ietkims.uni-mb.si"

proxy="sip:pcscf.ietkims.uni-mb.si:4060;lr"

username="[email protected]"

password="mpres00"

xcap_address="http://172.16.25.2:5065/xcap-root/"

xcap_username="[email protected]"

xcap_password="mpres00"

6.2 PODPORA FUNKCIONALNOSTI NAVZOČNOSTI

Za podporo navzočnosti v naši aplikaciji potrebujemo dva razreda ClBuddies in

MyBuddyCallback. Razred ClBuddies uporabljamo za shranjevanje podatkov entitet

navzočnosti, dodajanje in brisanje entitet navzočnosti s seznama kontaktov, registracijo na

njihove posodobitve ter spreminjanje podatkov o navzočnosti entitet navzočnosti, ki jih

bomo prikazovali v glavnem programu.

V razredu ClBuddies uporabljamo za shranjevanje stanj entitet navzočnosti

sezname: buddyList – shranjevanje reference na objekte entitet navzočnosti,

Page 66: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 54

buddyNamesList – naslovi uri entitet navzočnosti, buddyStatusList – tekstovni opis

stanja navzočnosti entitete navzočnosti, buddyDisplayNames – prikazna imena entitet

navzočnosti, buddyActivityList – stanje entitete navzočnosti prikazano s številko 1-

away, 2-busy, ostalo-online, buddyOnlineStatus – stanje entitete navzočnosti 0-offline,

1-online.

buddyList = [] #list of references to buddy objects

buddyNamesList = [] #list of buddy names

buddyStatusList = [] #list of buddy statuses

buddyDisplayNames = [] #list of display names

buddyActivityList = [] #list of activities

buddyOnlineStatus = [] #list of online statuses

Ko želimo dodati entiteto navzočnosti na seznam entitet, kličemo metodo

addBuddy(), s katero najprej pripnemo osnovne podatke v vse zgornje sezname in se nato

prijavimo na spremembe navzočnosti te entitete.

def addBuddy(self, buddyUri, display_name):

global acc

global myUI

#add the new buddy to the lists:

self.buddyNamesList.append(buddyUri)

self.buddyStatusList.append("offline")

self.buddyDisplayNames.append(display_name)

self.buddyActivityList.append(0)

self.buddyOnlineStatus.append(0)

#create new buddy instance and subscribe to it:

buddyInstance = acc.add_buddy(buddyUri,

cb=myBuddyCallback(myUI,self))

buddyInstance.subscribe();

self.buddyList.append(buddyInstance)

Za brisanje entitet navzočnosti s seznama uporabljamo metodo deleteBuddy(),

ki najprej poišče indeks tiste entitete navzočnosti, ki jo želimo odstraniti in jo nato izbriše

iz vseh seznamov entitet navzočnosti.

Page 67: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 55

def deleteBuddy(self, buddyUri):

#find position of buddy with buddyUri in lists:

buddyIndex = self.buddyNamesList.index(buddyUri)

#delete given buddy from lists.

self.buddyList.pop(buddyIndex)

self.buddyActivityList.pop(buddyIndex)

self.buddyNamesList.pop(buddyIndex)

self.buddyStatusList.pop(buddyIndex)

self.buddyDisplayNames.pop(buddyIndex)

self.buddyOnlineStatus.pop(buddyIndex)

Imamo še dve metodi, ki jih kličejo metode povratnih klicev. Metodo

changeBuddyStatus() kliče razred MyBuddyCallback, kadar pride do sprememb v

stanju entitete navzočnosti, ki jo spremljamo. Ta metoda sprejme nove podatke in jih

popravi.

def

changeBuddyStatus(self,buddyUri,buddyStatus,buddyActivity,buddyOnlineStat

us):

try:

buddyIndex = self.buddyNamesList.index(buddyUri)

self.buddyStatusList[buddyIndex] = buddyStatus

self.buddyActivityList[buddyIndex] = buddyActivity

self.buddyOnlineStatus[buddyIndex] = buddyOnlineStatus

except Exception, e:

print e

Druga metoda pa je confirmBuddyInstance(), ki jo kliče razred

MyAccountCallback v primeru, da nas doda drug uporabnik. V tem primeru vzamemo

njegove podatke in ga avtomatsko dodamo med naše kontakte.

def confirmBuddyInstance(self,buddyInstance,buddyUri):

self.buddyNamesList.append(buddyUri)

self.buddyList.append(buddyInstance)

self.buddyStatusList.append("offline")

Page 68: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 56

self.buddyActivityList.append(0)

self.buddyOnlineStatus.append(0)

self.myUI.refreshBuddyList()

Razred povratnih klicev myBuddyCallback vsebuje samo metodo on_state(),

ki se kliče le ob spremembah stanj entitet navzočnosti. Ob spremembi povzamemo podatke

entitete navzočnosti, ki se ji je spremenilo stanje in kličemo metodo

changeBuddyStatus(), ki posodobi podatke. Nato kličemo metodo

refreshBuddyList() v glavnem programu, da posodobimo podatke, ki nam jih

aplikacija prikazuje.

def on_state(self):

global myUI

global myBuddies

global myBuddy

myBuddies.changeBuddyStatus(self.buddy.info().uri,

self.buddy.info().online_text,self.buddy.info().activity,self.buddy.info(

).online_status)

print self.buddy.info().uri + self.buddy.info().online_text +

str(self.buddy.info().activity) + str(self.buddy.info().online_status)

myUI.refreshBuddyList()

6.3 VPELJAVA FUNKCIONALNOSTI XCAP

Za registracijo na strežnik XCAP uporabljamo datoteko ClXcap.py, ki uporablja

tudi metode iz knjižnice xcaplib. Metoda, ki jo kličemo se imenuje

do_resource_lists(). Ta metoda najprej pridobi podatke iz razreda nastavitev ter se

nato z uporabo teh podatkov poskuša prijaviti na XCAP strežnik.

xcap_client =

XCAPClient(instanca.IdleListener.getSettings().xcap_address.encode("utf-

8"), instanca.IdleListener.getSettings().xcap_username.encode("utf-8"),

instanca.IdleListener.getSettings().xcap_password.encode("utf-8"),

auth="digest".encode("utf-8"))

Page 69: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 57

V tej metodi nato kličemo metodo get_resource_lists(), ki poskusi s

strežnika pridobiti dokument XCAP, ki ga z metodo parseString() spremenimo iz

XML oblike v tekstovni niz. V kolikor je pridobivanje neuspešno, izpišemo ustrezno

napako in nadaljujemo program. V primeru, da je seznam še prazen ga bomo ustvarili, ko

bomo dodali našo prvo entiteto navzočnosti.

def get_resource_lists(self):

global xcap_client, resource_lists, resource_lists_xml

try:

resource_lists_xml = xcap_client.get('resource-lists')

except URLError, e:

print "error: prazna lista"

#raise RuntimeError("Cannot obtain 'resource-lists' document:

%s" % str(e))

except HTTPError, e:

print "error: napaka v povezavi"

resource_lists = -1

#raise RuntimeError("Cannot obtain 'resource-lists' document:

%s %s" % (e.response.status, e.response.reason))

else:

try:

#resource_lists = ResourceLists.parse(resource_lists_xml)

resource_lists = parseString(resource_lists_xml)

except Exception, e:

raise RuntimeError("Invalid 'resource_lists' document:

%s" % str(e))

Temu sledi metoda print_resource_lists(), v kateri pridobljen tekstovni niz

vrstico po vrstico razbijemo na posamezne dele ter tako pridobljene naslove URI in

nastavljena prikazna imena dodamo na seznam prijateljev.

def print_resource_lists(self,instanca):

global resource_lists, resource_lists_xml, show_xml

test = ""

if (resource_lists==-1):

return

Page 70: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 58

for index in

range(len(resource_lists.getElementsByTagName("entry"))):

uri,display_name =

resource_lists.getElementsByTagName("entry")[index].toxml().split("<displ

ay-name>",2)

print uri,display_name

display_name,balast =

display_name.split("</display-name>",2)

uri,balast=uri.split("\" xmlns",2)

balast,uri=uri.split("\"",2)

print uri,display_name

instanca.IdleListener.buddies.addBuddy(str(uri).encode("utf-

8"),str(display_name.encode("utf-8")))

instanca.refreshBuddyList()

Ta datoteka vsebuje tudi metodo za ustvarjanje seznama virov

create_xcap_resource_lists(), s katero generiramo seznam entitet navzočnosti, ki

ga kasneje naložimo na strežnik XCAP. S to metodo ustvarjamo tekstovni niz oblike XML.

Najprej v niz shranimo splošni del oblike zapisa seznama virov. Nato mu dodamo naslove

URI in prikazna imena naših kontaktov ter preostali del XML datoteke. Ko dodamo vse

kontakte z našega seznama prijateljev, kličemo metodo put_resource_lists().

def create_xcap_resource_lists(self,listaUri,listaDisplayName):

seznam = '<resource-lists xmlns="urn:ietf:params:xml:ns:resource-

lists">\n <list name="friends">\n <display-name>friends</display-

name>\n'

print len(listaUri)

for index in range(len(listaUri)):

uri = listaUri[index]

displayName = listaDisplayName[index]

seznam = seznam + '<entry

xmlns="urn:ietf:params:xml:ns:resource-lists" uri="'+uri+'">\n

<display-name>'+displayName+'</display-name>\n </entry>\n'

seznam = seznam + ' </list>\n</resource-lists>'

print seznam

Page 71: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 59

self.put_resource_lists(seznam)

Metoda put_resource_lists() poskuša naložiti ustvarjen seznam virov na

strežnik XCAP. V primeru, da pride do napake, nam jo javi.

def put_resource_lists(self,lista):

global xcap_client, resource_lists, resource_lists_xml,

resource_lists_xml_put

try:

xcap_client.put('resource-lists'.encode("utf-

8"),lista.encode("utf-8"))

except URLError, e:

raise RuntimeError("Cannot obtain 'resource-lists' document:

%s" % str(e))

except HTTPError, e:

raise RuntimeError("Cannot obtain 'resource-lists' document:

%s %s" % (e.response.status, e.response.reason))

6.4 UPORABNIŠKI VMESNIK

Uporabniški vmesnik se nahaja v datoteki main.py in razredu MyClass. Ker je

bila v osnovi to aplikacija, ki smo jo uporabljali za vzpostavljanje preprostih klicev, se

bomo osredotočili le na dele, ki se navezujejo na XCAP in navzočnost.

Najprej ustvarimo polje, kjer bomo prikazovali naš seznam entitet navzočnosti in

polja, ki jih bomo potrebovali za oblikovanje prikaza stanja navzočnosti entitet.

#Presence lista prisotnih

self.listaDisplayName = xbmcgui.ControlList(120, 190, 600,

700,'font13','0xFFFFFFFF',selectedColor='0xFFFF00FF')

self.addControl(self.listaDisplayName)

#Presence lista uri naslovov

self.listaUri = []

self.listaBuddyOnlineStatus = []

#Presence slike

self.listaSlikeStatus = []

Page 72: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 60

Zaradi omejitev XBMC prikaza smo aplikacijo omejili na trinajst kontaktov in za

njih pripravimo prostor, kjer bomo prikazovali sliko stanja navzočnosti in vse te slike

nastavimo na skrite.

self.slikaStatus1 = xbmcgui.ControlImage(405, 193, 32,

32,'special://home//addons//script.sipClient//Media//status-offline.png')

self.addControl(self.slikaStatus1)

self.listaSlikeStatus.append(self.slikaStatus1)

for index in range(len(self.listaSlikeStatus)):

self.listaSlikeStatus[index].setVisible(False)

V primeru, da uporabnik klikne na katero izmed dodanih entitet navzočnosti,

pridobimo podatke tiste entitete navzočnosti in odpremo meni, kjer lahko izbiramo ali

želimo uporabnika klicati ali brisati iz seznama entitet navzočnosti.

if control == self.listaDisplayName:

print self.listaBuddyOnlineStatus

item = self.listaDisplayName.getSelectedItem()

stevilka = self.listaDisplayName.getSelectedPosition()

self.labelaMeniListe.setLabel(self.listaUri[stevilka])

if(self.listaBuddyOnlineStatus[stevilka]==0):

self.pokaziMeniListe(item.getLabel(),False)

else:

self.pokaziMeniListe(item.getLabel(),True)

self.setFocus(self.gumbMeniKlici)

Za dodajanje prijateljev na seznam entitet smo ustvarili gumb, ki odpre razred

DodajPrijateljaPopupClass, v katerem lahko vpišemo podatke prijatelja ter ga

dodamo na seznam entitet navzočnosti. Po končanem dodajanju osvežimo seznam entitet

navzočnosti in ustvarimo XCAP dokument ter ga naložimo na strežnik.

if control == self.gumbDodajPrijatelja:

myInstance = self

popup = DodajPrijateljaPopupClass()

popup.posljiUi(myInstance)

popup .doModal()

self.refreshBuddyList()

Page 73: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 61

application.create_xcap_resource_lists(self.IdleListener.buddies.ge

tBuddyNames(), self.IdleListener.buddies.getBuddyDisplayNames())

del popup

Gumb za brisanje prijateljev izbriše prijateljeve podatke iz razreda ClBuddies,

osveži seznam entitet navzočnosti ter ponovno ustvari XCAP dokument in ga naloži na

strežnik.

if control == self.gumbMeniOdstraniPrijatelja:

self.IdleListener.buddies.deleteBuddy(self.labelaMeniListe.getLabel

().encode("utf-8"))

self.skrijMeniListe()

self.writeConsole(self.labelaMeniListe.getLabel().encode("utf-8") +

" je bil izbrisan iz tvojih prijateljev!")

self.refreshBuddyList()

application.create_xcap_resource_lists(self.IdleListener.buddies.ge

tBuddyNames(), self.IdleListener.buddies.getBuddyDisplayNames())

Gumb za spreminjanje statusa odpre razred ChangeStatusClass, v

katerem lahko spreminjamo statusno besedilo ter prikaz našega stanja (online, away, busy,

offline).

if control == self.gumbStatus:

#self.IdleListener.toggleStatus(isonline,activity,pres_text,rpid_id

)

popup = ChangeStatusClass()

popup.posljiUi(self)

popup.posljiTrenutniStatus(self.isonline, self.activity,

self.pres_text)

popup .doModal()

del popup

Funkcija refreshBuddyList skrbi za prikazovanje podatkov entitet navzočnosti.

Ob vsakem klicu te funkcije pridobimo iz razreda ClBuddies podatke o entitetah

navzočnosti, ki jim sledimo. Vsem entitetam pregledamo stanja in glede na ta stanja

prilagodimo prikazne slike.

Page 74: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 62

def refreshBuddyList(self):

listaImena = self.IdleListener.buddies.getBuddyNames()

listaStatus = self.IdleListener.buddies.getBuddyStatus()

listaVzdevki = self.IdleListener.buddies.getBuddyDisplayNames()

listaAktivnosti = self.IdleListener.buddies.getBuddyActivity()

self.listaBuddyOnlineStatus =

self.IdleListener.buddies.getBuddyOnlineStatus()

self.listaUri = listaImena

listaStatusTemp = []

for index in range(len(self.listaSlikeStatus)):

self.listaSlikeStatus[index].setVisible(False)

for index in range(len(listaAktivnosti)):

self.listaSlikeStatus[index].setVisible(True)

for index in range(self.listaStatus.size()):

listaStatusTemp.append(self.listaStatus.getListItem(index).getLabel

())

self.listaDisplayName.reset()

self.listaStatus.reset()

i = iter(listaVzdevki)

for index in range(len(listaImena)):

if(len(listaImena)>len(listaStatusTemp)):

listaStatusTemp.append('Offline')

for index in range(len(listaImena)):

item = i.next()

self.listaDisplayName.addItem(item)

print item + " " + listaStatus[index]

print self.listaBuddyOnlineStatus

if(self.listaBuddyOnlineStatus[index]==0 or

self.listaBuddyOnlineStatus[index]==2):

self.listaStatus.addItem('Offline')

self.listaStatus.getListItem(index).select(False)

if(listaAktivnosti[index]==0):

self.listaSlikeStatus[index].setImage('special://home//addons//scri

pt.sipClient//Media//status-offline.png')

elif(listaStatus[index] == 'Online'):

self.listaStatus.addItem('Online')

self.listaStatus.getListItem(index).select(True)

Page 75: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 63

if(listaAktivnosti[index]==0):

self.listaSlikeStatus[index].setImage('special://home//addons//scri

pt.sipClient//Media//status-online.png')

elif(listaAktivnosti[index]==1):

self.listaSlikeStatus[index].setImage('special://home//addons//scri

pt.sipClient//Media//status-away.png')

elif(listaAktivnosti[index]==2):

self.listaSlikeStatus[index].setImage('special://home//addons//scri

pt.sipClient//Media//status-busy.png')

elif(listaStatus[index] == '?'):

self.listaStatus.addItem(listaStatusTemp[index])

if(self.listaStatus.getListItem(index).getLabel() ==

'Offline'):

self.listaStatus.getListItem(index).select(False)

else:

self.listaStatus.getListItem(index).select(True)

if(listaAktivnosti[index]==0):

self.listaSlikeStatus[index].setImage('special://home//addons//scri

pt.sipClient//Media//status-online.png')

elif(listaAktivnosti[index]==1):

self.listaSlikeStatus[index].setImage('special://home//addons//scri

pt.sipClient//Media//status-away.png')

elif(listaAktivnosti[index]==2):

self.listaSlikeStatus[index].setImage('special://home//addons//scri

pt.sipClient//Media//status-busy.png')

else:

self.listaStatus.addItem(listaStatus[index])

self.listaStatus.getListItem(index).select(True)

if(listaAktivnosti[index]==0):

self.listaSlikeStatus[index].setImage('special://home//addons//scri

pt.sipClient//Media//status-online.png')

elif(listaAktivnosti[index]==1):

self.listaSlikeStatus[index].setImage('special://home//addons//scri

pt.sipClient//Media//status-away.png')

elif(listaAktivnosti[index]==2):

Page 76: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 64

self.listaSlikeStatus[index].setImage('special://home//addons//scri

pt.sipClient//Media//status-busy.png')

self.refreshStates()

return "refreshBuddyList"

Razred ChangeStatusClass vsebuje gumbe in vnosna polja za nastavljanje

želenega stanja navzočnosti. Ob potrditvi nastavitev se glede na izbiro pošljejo ustrezni

podatki preko funkcije updateUserStatus(), ki pošlje podatke o naši navzočnosti

strežniku navzočnosti in spremeni prikaz našega statusa v programu.

if control == self.gumbPotrdi:

if self.gumbOnline.isSelected():

self.isonline=1

self.activity=0

self.pres_text=self.gumbPresenceText.getLabel().encode("utf-8")

self.instance.updateUserStatus(self.isonline,self.activity,self.pres_text

)

if self.gumbAway.isSelected():

self.isonline=1

self.activity=1

self.pres_text=self.gumbPresenceText.getLabel().encode("utf-8")

self.instance.updateUserStatus(self.isonline,self.activity,self.pres_text

)

if self.gumbBusy.isSelected():

self.isonline=1

self.activity=2

self.pres_text=self.gumbPresenceText.getLabel().encode("utf-8")

self.instance.updateUserStatus(self.isonline,self.activity,self.pres_text

)

if self.gumbAppearOffline.isSelected():

self.isonline=0

self.activity=0

self.pres_text=self.gumbPresenceText.getLabel().encode("utf-8")

self.instance.updateUserStatus(self.isonline,self.activity,self.pres_text

)

self.close()

Page 77: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 65

Razred DodajPrijateljaPopupClass vsebuje vnosni polji za prikazno ime in

naslov URI prijatelja, ki ga želimo dodati. Ko uporabnika dodajamo, se v razredu

ClBuddies kliče metoda addBuddy(), preko katere se naročimo na informacije o

navzočnosti entitete.

if control == self.gumbDodaj:

niz = self.gumbDodajUriPrijatelja.getLabel().encode("utf-8")

#vedno ko pošiljamo kaj v pjsip je potrebno narediti kodiranje v utf-8

displayName =

self.gumbDodajDisplayName.getLabel().encode("utf-8")

self.instance.IdleListener.buddies.addBuddy(niz,displayName)

self.close()

Page 78: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 66

7 PRIKAZ DELOVANJA

V tem poglavju predstavljamo delovanje aplikacije za navzočnost v programu

XBMC. Od zagona aplikacije, dodajanja in brisanja novih entitet navzočnosti ter

spreminjanja stanj navzočnosti entitet.

Ob zagonu aplikacije se prikaže začetni zaslon, kot ga prikazuje slika 7.1. Vidimo,

da lahko v tem meniju spreminjamo nastavitve in se prijavimo v sistem. Vidimo tudi dva

druga gumba za dodajanje prijateljev in spreminjanje statusa, vendar se moramo njihovo

uporabo najprej prijaviti na strežnik IMS.

Slika 7.1: začetni zaslon

Na začetnem zaslonu izberemo gumb Nastavitve, ki odpre meni, kjer lahko

nastavljamo parametre potrebne za prijavo na strežnik IMS ter strežnik XCAP. Tu

kliknemo na vsako tekstovno polje ter nastavimo naše podatke:

Uporabniško ime: [email protected],

Geslo: mpres00

Page 79: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 67

Registracijski streznik: sip:ietkims.uni-mb.si

Proxy: sip:pcscf.ietkims.uni-mb.si:4060;lr

ID uporabnika: sip:[email protected]

Naslov XCAP strežnika: http://172.16.25.2:5065/xcap-root/

XCAP uporabniško ime: [email protected]

XCAP geslo: mpres00

Izpolnjen meni z nastavitvami nam prikazuje slika 7.2

Slika 7.2: Nastavitve uporabniskega racuna

Te nastavitve potrdimo z uporabo gumba Potrdi in se nato z uporabo gumba

Prijavi se registriramo na strežnika IMS in XCAP. Ob uspešni prijavi se krogec ob

tekstu Spremeni status obarva v zeleno in gumb Prijavi se, se spremeni v Odjavi

se, kot prikazuje slika 7.3. Hkrati s tem se s strežnika XCAP prenese seznam entitet

navzočnosti in prikažejo se uporabnikovi kontakti ter njihovo trenutno stanje navzočnosti.

Page 80: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 68

Slika 7.3: Uspešna prijava v sistem

Sedaj lahko z uporabo gumba Dodaj Prijatelja dodamo entitete navzočnosti,

katerih spremembe želimo spremljati. Ob kliku na ta gumb se odpre meni, v katerem

vnesemo Prikazno ime in naslov Sip URI naše entitete navzočnosti. Slika 7.4

prikazuje dodajanje kontakta z izpolnjenimi polji.

Slika 7.4: Dodajanje entitet

Nastavitve navzočnosti lahko spreminjamo z uporabo gumba Spremeni status.

S klikom na ta gumb se odpre meni, kjer lahko izbiramo med štirimi različnimi statusi

(Online/Away/Busy/Offline) ter spreminjamo tekst, ki se prikazuje ob prikazu

Page 81: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 69

uporabnikovega statusa. Slika 7.5 prikazuje meni z izbranim statusom Online in

prikaznim tekstom prav tako Online.

Slika 7.5: Nastavitve navzočnosti

Spremembe statusa se prikazujejo na našem seznamu entitet navzočnosti v realnem

času. Kadarkoli se kateremu izmed uporabnikov na našem seznamu spremeni stanje, se

prikaz spremeni na trenutno stanje. Slika 7.6, slika 7.7 in slika 7.8 prikazujejo spreminjanje

stanja entitete navzočnosti na stanja Online, Away in Busy medtem ko slika 7.9 prikazuje

spreminjanje statusnega teksta.

Slika 7.6: Kontakt Online

Page 82: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 70

Slika 7.7: Kontakt Away

Slika 7.8: Kontakt Busy

Slika 7.9: Sprememba statusnega teksta

Vsaka entiteta navzočnosti je hkrati gumb, ki ob pritisku prikaže meni za izbrano

entiteto. S to entiteto lahko vzpostavimo preprost klic, jo odstranimo iz seznama entitet, ki

jih spremljamo ter prekličemo izbiro. Slika 7.10 prikazuje meni ob kliku na entiteto

Danilo Zimsek.

Slika 7.10: Meni etitete navzočnosti

Page 83: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 71

8 SKLEP

Cilj magistrskega dela je bil uspešno namestiti strežnik s podporo za storitve

navzočnosti in omrežnega imenika. Nato ustvariti aplikacijo, ki omogoča povezavo na

strežnik IMS, pridobitev shranjenih kontaktov z omrežnega imenika in sledenje

spremembam navzočnosti teh kontaktov.

Uspešno smo namestili in konfigurirali strežnik omrežnega imenika ter strežnik

navzočnosti. Ko smo preverili pravilno delovanje strežnikov s pomočjo programa

MyMonster, smo pričeli z razvojem aplikacije za XBMC. Po uspešnem razvoju aplikacije

smo jo testirali in ugotovili, da deluje tako, kot smo si zastavili v prvotnem cilju.

Razvoj aplikacije ni potekal brez problemov. Največ problemov nam je povzročala

omejena količina funkcij za prikazovanje elementov znotraj programa XBMC. Zaradi tega

smo morali listo kontaktov omejiti le na trinajst oseb, saj smo morali prikazovalna polja

pripraviti ob zagonu aplikacije. Na omejitve smo naleteli tudi na strežniku XCAP, ki je

podpiral le osnovne funkcionalnosti pridobivanja, brisanja in ustvarjanja seznamov entitet

navzočnosti, ne pa tudi spreminjanja že obstoječih XML dokumentov na strežniku. Tega

problema žal nismo uspeli rešiti, zato smo uporabljali le te osnovne tri funkcije za delo z

seznami entitet navzočnosti.

Razvito aplikacijo bi lahko nadgradili s podporo za delovanje znotraj celotnega

programa XBMC, saj trenutno deluje le, ko je aplikacija zagnana. V prihodnje bi želeli, da

se aplikacija požene ob zagonu programa XBMC, kar bi pomenilo, da bi lahko ostali

uporabniki sledili našim nastavitvam navzočnosti tudi, kadar uporabljamo druge aplikacije

znotraj programa XBMC (na primer, gledamo filme, poslušamo glasbo, itd.). Druga možna

nadgradnja bi bila sprememba liste kontaktov v bolj dinamično obliko generiranja

seznamov, kar bi omogočilo, da prekoračimo trenutno omejitev le trinajstih kontaktov.

Ocenjujemo, da je razvita aplikacija uporabna, saj lahko sedaj z njo uporabljamo

funkcije navzočnosti kar pred televizorjem in tudi s katerega koli računalnika, saj

funkcionalnost omrežnega imenika omogoča, da lahko od kjerkoli prenesemo naše

kontakte v aplikacijo.

Page 84: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 72

VIRI

[1] G. Camarillo, M. A. Garcia-Martin, The 3G IP multimedia subsystem (IMS),

Chichester: J. Wiley & Sons, 2008.

[2] R. M. Perea, Internet Multimedia Communications Using SIP, Morgan Kaufmann

Publishers Inc, 2008

[3] Kamailio (2013). Kamailio SIP Server. Pridobljeno 15. Februarja 2013. Spletna

stran: http://www.kamailio.org/w/

[4] Asipto (2013). Kamailio SIP Server v.3.2.0 Development Guide. Pridobljeno 16.

Februarja 2013. Spletna stran: http://www.asipto.com/pub/kamailio-devel-guide/

[5] Kopirano 16. Februarja 2013, vir: http://www.asipto.com/pub/kamailio-devel-

guide/obj/kamailio_architecture_new.png

[6] XBMC (2013), About | XBMC. Pridobljeno 17. Februarja 2013. Spletna stran:

http://xbmc.org/about/

[7] Wikipedia, the free encyclopedia (2012). XBMC. Pridobljeno 17. Februarja 2012.

Spletna stran: http://en.wikipedia.org/wiki/XBMC

[8] Kopirano 17. Februarja 2013, vir: http://xbmc.org/wp-

content/gallery/confluence/screenshot000.jpg

[9] XBMC (2013). Python development. Pridobljeno 17. Februarja 2013. Spletna

stran: http://wiki.xbmc.org/index.php?title=Python_development

[10] PJSIP (2013). Pjsip – Open Source SIP, Media, and NAT Traversal Library.

Pridobljeno 19. Februarja 2013. Spletna stran: http://www.pjsip.org/

[11] PJSIP (2013). Manual of pjsua. Pridobljeno 19. Februarja 2013. Spletna stran:

http://www.pjsip.org/pjsua.htm

[12] Network Information Library (2013). Installing Kamailio .1 on debian lenny.

Pridobljeno 20. Februarja 2013. Spletna stran:

http://nil.uniza.sk/sip/kamailio/installing-kamailio-31-debian-lenny

[13] Network Information Library (2013). Adding MySQL support into Kamailio 3.1.

Pridobljeno 20. Februarja 2013. Spletna stran:

http://nil.uniza.sk/sip/kamailio/adding-mysql-support-kamailio-31-debian-lenny

Page 85: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 73

[14] Network Information Library (2013). Configuring IM and presence on Kamailio

3.1. Pridobljeno 20. Februarja 2013. Spletna stran: http://nil.uniza.sk/instant-

messaging/simple/configuring-im-and-presence-kamailio-31-howto

[15] Network Information Library (2013). Configuring XCAP support for IM and

presence over Kamailio. Pridobljeno 20. Februarja 2013. Spletna stran:

http://nil.uniza.sk/instant-messaging/simple/configuring-xcap-support-im-and-

presence-over-kamailio-31-debian-lenny

[16] Internet Engineering Task Force (2013). Session Initiation Protocol (SIP).

Pridobljeno 12. Marca 2013. Spletna stran: http://www.ietf.org/rfc/rfc3903.txt

[17] Internet Engineering Task Force (2013). Presence Information Data Format

(PIDF). Pridobljeno 13. Marca 2013. Spletna stran:

http://www.ietf.org/rfc/rfc3863.txt

[18] Internet Engineering Task Force (2013). RTP PAyload for DTMF Digits,

Telephony Tones and Telephony Signals. Pridobljeno 13. Marca 2013. Spletna

stran: http://www.ietf.org/rfc/rfc2833.txt

[19] 3GPP (2013). 3GPP specification: 24.141. Pridobljeno 15. Marca 2013. Spletna

stran: http://www.3gpp.org/ftp/Specs/html-info/24141.htm

Page 86: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI

Vgradnja funkcionalnosti prisotnosti v okolje XBMC

15. marec 2013

Stran | 74

PRILOGA A – KRATEK ŽIVLJENJEPIS

Naslov: David Vrečer

Polule 78a

3000 Celje

E-pošta: [email protected]

Rojen: 17. 10. 1986 v Celju

Šolanje: 1993-2001

2001-2006

2006-2010

2010-2013

Osnovna šola Frana Kranjca Celje

Šolski center Celje, Tehniška gimnazija Lava

Fakulteta za elektrotehniko, računalništvo in informatiko,

Univerza v Mariboru,

univerzitetni študijski program Telekomunikacije

Fakulteta za elektrotehniko, računalništvo in informatiko,

Univerza v Mariboru, Magistski študijski program druge

stopnje Telekomunikacije

Page 87: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI
Page 88: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI
Page 89: Vgradnja funkcionalnosti prisotnosti v okolje XBMCFakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija David Vrečer VGRADNJA FUNKCIONALNOSTI