93
Jurij Stjepčević RAZVOJ REŠITEV ZA ODPRTOKODNA SPLETNA NAMIZJA Diplomsko delo Maribor, junij 2013

Razvoj rešitev za odprtokodna spletna namizja · 2017. 11. 28. · Razvoj rešitev za odprtokodna spletna namizja Ključne besede: odprtokodna spletna namizja, razvoj rešitev, eyeos,

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • Jurij Stjepčević

    RAZVOJ REŠITEV ZA ODPRTOKODNA

    SPLETNA NAMIZJA

    Diplomsko delo

    Maribor, junij 2013

  • RAZVOJ REŠITEV ZA ODPRTOKODNA SPLETNA NAMIZJA

    Diplomsko delo

    Študent: Jurij Stjepčević

    Študijski program: VS ŠP Računalništvo in informatika

    Smer: Informatika

    Mentor: izr. prof. dr. Aleš Ţivkovič

    Lektorica: mag. Nataša Koraţija, prof. slov.

  • I

  • II

    ZAHVALA

    Zahvaljujem se mentorju izr. prof. dr. Alešu

    Ţivkoviču za pomoč in nasvete pri izdelavi

    diplomskega dela.

    Zahvalil bi se podjetju DARS, ki mi je po

    končanem študiju omogočilo praktično

    usposabljanje v IT in ITS oddelku Slovenske

    Konjice.

    Posebna zahvala gre staršema, ki sta mi

    omogočila študij, in vsem, ki ste mi pomagali

    uresničiti moj cilj.

  • III

    Razvoj rešitev za odprtokodna spletna namizja

    Ključne besede: odprtokodna spletna namizja, razvoj rešitev, eyeos, lucid namizje

    UDK: 004.43:004.738.5(043.2)

    Povzetek:

    Živimo v času informacijske dobe, kjer prisotnost interneta in računalniško podprtih

    rešitev lahko spremljamo prav na vsakem koraku. Trend naraščanja uporabe spletnih

    servisov se je v zadnjih letih še posebej povečal.

    V diplomskem delu predstavljamo računalništvo v oblaku, katerega bistvo je ponujanje

    storitev uporabnikom preko spleta, edina omejitev je internetna povezava. V nadaljevanju

    bomo spoznali najbolj popularna odprtokodna spletna operacijska sistema EyeOS in

    Lucid.

    Skozi praktični del bomo prikazali razvoj rešitev za odprtokodna spletna namizja, v našem

    primeru razvoj modula za krmiljenje in nadzor IP kamer ter integracijo z zgoraj

    omenjenima spletnima operacijskima sistemoma.

  • IV

    Developing solutions for open source web desktops

    Key words: open source web desktops, developing solutions, eyeos, lucid desktop

    UDK: 004.43:004.738.5(043.2)

    Abstract:

    We live in an information era, where the presence of the internet and computer supported

    solutions follow us every moment of our lives.

    The trend of using web services has risen quite a lot, especially in the last couple of years.

    In this degree dissertation we will present cloud computing, which offers services to users

    over the internet.

    The only obstacle to cloud computing offering its service to an user would be the lack of an

    internet connection. Further on, we will be comparing the most popular open source web

    desktops EyeOS and Lucid.

    Throughout the practical part,we will be showing you the development of solutions for

    open source web desktops, in this case it is the development of a module for controlling IP

    cameras in an environment of open source EyeOS and integrating them with the

    aforementioned web based operating systems.

  • V

    KAZALO VSEBINE:

    1 UVOD ............................................................................................................................ 1

    2 RAČUNALNIŠTVO V OBLAKU ................................................................................ 3

    2.1 Zgodovina računalništva v oblaku .......................................................................... 4

    2.2 Referenčni model in arhitektura oblaka .................................................................. 5

    2.3 Infrastruktura kot servis (IaaS) ............................................................................... 8

    2.4 Platforma kot servis (PaaS) ..................................................................................... 9

    2.5 Programska oprema kot servis (SaaS) .................................................................. 10

    2.6 Prednosti in slabosti oblaka .................................................................................. 11

    3 SPLETNO NAMIZJE EyeOS ..................................................................................... 14

    3.1 Arhitektura spletnega operacijskega sistema ........................................................ 14

    3.2 Delovanje in prirejanje okolja ............................................................................... 16

    3.2.1 Sistemski servisi ............................................................................................ 16

    3.2.2 Knjiţnice ........................................................................................................ 21

    4 RAZVOJ REŠITVE ZA KRMILJENJE IN VIDEONADZOR IP KAMER V EyeOS ..

    ..................................................................................................................................... 25

    4.1 Specificiranje zahtev ............................................................................................. 26

    4.2 Krmiljenje strojne opreme .................................................................................... 27

    4.3 Priprava modula in implementacija funkcij .......................................................... 28

    4.3.1 Krmiljenje kamer na daljavo ......................................................................... 31

    4.3.2 Nastavitve kontrasta in svetlosti .................................................................... 33

    4.3.3 Prikaz ţive slike ............................................................................................. 35

    4.3.4 Funkcija pribliţevanja ................................................................................... 37

    4.3.5 Prikaz ure in datume uporaba JQuery............................................................ 39

    4.3.6 Video-detekcija in baza posnetkov ................................................................ 40

    4.3.7 Nastavitev vira in konfiguracija .................................................................... 41

    4.3.8 Resetiranje in inicializacija ............................................................................ 42

    4.4 Sistemski in mreţni viri ........................................................................................ 44

    4.4.1 Sistemski viri ................................................................................................. 45

    4.4.2 Mreţni pretok ................................................................................................ 45

    4.4.3 Spremljanje omreţne TCP komunikacije z orodjem Wireshark .................. 48

  • VI

    4.5 Testiranje modula ................................................................................................. 48

    5 SPLETNO NAMIZJE Lucid ....................................................................................... 50

    5.1 Struktura spletnega namizja Lucid ....................................................................... 50

    5.2 Delovanje in prirejanje okolja ............................................................................... 51

    5.2.1 Knjiţnice in gradniki ..................................................................................... 51

    5.3 Razvoj rešitev ....................................................................................................... 56

    6 PRIMERJAVA ODPRTOKODNIH SPLETNIH NAMIZIJ ...................................... 58

    6.1 Varnost in mehanizmi ........................................................................................... 59

    7 O STROJNI IN PROGRAMSKI OPREMI V PROJEKTU ........................................ 62

    7.1 Shema omreţja ...................................................................................................... 64

    7.2 Nastavitev usmerjevalnika in preslikava vrat ....................................................... 64

    8 SKLEP ......................................................................................................................... 66

    9 VIRI IN LITERATURA .............................................................................................. 68

    10 PRILOGE .................................................................................................................... 75

    Priloga A: Potrdilo o lektoriranju diplomskega dela ....................................................... 75

    Priloga B: Specifikacije ................................................................................................... 76

    Priloga C: Naslov študenta .............................................................................................. 78

    Priloga D: Kratek ţivljenjepis .......................................................................................... 78

    Priloga E: Izjava o avtorstvu diplomskega dela ............................................................... 79

    Priloga F: Izjava o ustreznosti diplomskega dela ............................................................ 80

    Priloga G: Izjava o istovetnosti tiskane in elektronske verzije ........................................ 81

  • VII

    KAZALO SLIK:

    Slika 2-1: Referenčni model oblaka [26] 6

    Slika 2-2: Delovanje modela odjemalec-streţnik 6

    Slika 2-3: Mreţna arhitektura P2P in odjemalec-streţnik [31] 8

    Slika 2-4: Hierarhični prikaz treh glavnih enot računalniškega oblaka 11

    Slika 2-5: Napoved uporabe računalniškega oblaka v prihodnosti [47] 12

    Slika 3-1: Arhitektura spletnega operacijskega sistema EyeOS[57] 15

    Slika 3-2: Upravitelj procesov in aplikacija videonadzor v okolju EyeOS 19

    Slika 3-3: Pregled XML datoteke v grid načinu 24

    Slika 4-1: Diagram primerov uporabe za modul videonadzor 26

    Slika 4-2: Diagram zaporedja za modul videonadzor 27

    Slika 4-3: XML sestava glavnega menija eyeDock 30

    Slika 4-4: XML glavni meni po spremembah 31

    Slika 4-5: Funkcija premakni levo 33

    Slika 4-6: Nastavitev kontrasta 35

    Slika 4-7: Javascript funkcija za pribliţevanje 38

    Slika 4-8: Prikaz slike v ţivo in uporaba funkcije pribliţevanja v okolju EyeOS 39

    Slika 4-9: Programska oprema za detekcijo gibanja na streţniku 41

    Slika 4-10: Nastavitve vira oz. streţnika 42

    Slika 4-11: Prikaz delovanja funkcije za resetiranje in inicializacijo znotraj okolja EyeOS

    43

    Slika 4-12: Prikaz porabe sistemskih sredstev na streţniku 45

    Slika 4-13: Sprejet omreţni paket IP Kamere 46

    Slika 4-14: Promet, ustvarjen v roku ene ure v dnevnem načinu 47

    Slika 4-15: Prikaz prometa, ustvarjenega v roku ene minute v nočnem načinu 47

    Slika 4-16: Potek TCP komunikacije med streţnikom in opremo [71] 48

    Slika 5-1: Struktura LucidDesktop 50

    Slika 5-2: Pošiljanje sporočila s pomočjo servisa Crosstalk[11] 52

    Slika 5-3: Pošiljanje sporočila drugi instanci oz. aplikaciji[11] 53

    Slika 7-1: Uporabljene IP kamere v našem projektu [80] 63

    Slika 7-2: Shema lokalnega omreţja (zaradi varnosti so podatki na sliki prikriti) 64

  • VIII

    Slika 7-3: Preslikava vrat na usmerjevalniku 65

    KAZALO TABEL:

    Tabela 2-1: Prednosti in slabosti oblaka .............................................................................. 11

    Tabela 3-1: Funkcije servisa proc ........................................................................................ 18

    Tabela 4-1: Opis XML atributov iz datoteke eyeDock.xml ................................................ 30

    Tabela 4-2: Parametri iz .js datoteke za krmiljenje ............................................................. 32

    Tabela 4-3: Parametri za nastavitev kamere ........................................................................ 33

    Tabela 4-4: Parametri pri videostream.cgi .......................................................................... 36

    Tabela 4-5: Parametri pri videostream.asf ........................................................................... 36

    Tabela 4-6: Parametri pri snapshot.cgi ................................................................................ 36

    Tabela 4-7: Parametri za reboot.cgi skripto ob inicializaciji. .............................................. 44

    Tabela 4-8: Captcha preverjanje .......................................................................................... 49

    Tabela 4-9: Testiranje prijava v sistem EyeOS ................................................................... 49

    Tabela 4-10: Testiranje vnosnih form ................................................................................. 49

    Tabela 4-11: Test skalabilnosti ............................................................................................ 49

    Tabela 6-1: Primerjava odprtokodnih spletnih namizij ....................................................... 58

    Tabela 6-2: Primerjava domačega in spletnega namizja ..................................................... 58

    Tabela 7-1: Usmerjevalna tabela ......................................................................................... 65

  • IX

    UPORABLJENE KRATICE

    SQL Structured Query Language

    SCADA Supervisory Control And Data Acquisition

    WEB 2.0 World Wide Web second generation

    ARPANET Advanced Research Projects Agency

    MIT Massachusetts Institute of Technology

    DARPA Defense Advanced Research Projects Agency

    QoS Quality of Service

    SLA Service Level Agreement

    TCP/IP Transmission Control Protocol / Internet Protocol

    HTTP Hyper Text Transfer Protocol

    P2P Peer to Peer

    VLAN Virtual Local Area Network

    VPN Virtual Private Network

    ISO International Organization for Standardization

    ISMS Information Security Management System

    SSAE Statement on Standards for Attestation Engagements

    ISAE International Standards for Assurance Engagements

    CMS Content Management System

    CRM Customer Relationship Management

    B2C Business To Consumer

    HRM Human Resource Management

    ASP Application Service Provider

    OS Operating System

    GPL General Public License

    PHP Hypertext Preprocessor

    Javascript JS spletni skriptni jezik

    HTML Hyper Text Markup Language

    CSS Cascading Style Sheets

    XML eXtensible Markup Language

    MySQL My Structured Query Language

    API Application Programming Interface

    PID Process Identifier

    HTTPS Hyper Text Transfer Protocol Secure

    PTZ Pan Tilt Zoom

    FW Firmware

    CGI Common Gateway Interface

    AJAX Asynchronous Javascript And XML

    JQuery Javascript knjiţnica

  • X

    IR InfraRed

    RAW Header - surov način brez obdelovanja

    AFL Academic Free License

    HTACCESS HyperText Access

    EIP Elastic IP Adressing

    DHCP Dynamic Host Configuration Protocol

    DDOS Denial Distribution of Service

    JPEG Joint Photographic Experts Group

    ACK Acknowledgment flag

    SYN Synchronization flag

    FIN Final flag

    CAPTCHA Completely Automated Public Turing Computer Humans Apart

    XSS Cross Site Scripting

  • Razvoj rešitev za odprtokodna spletna namizja

    1

    1 UVOD

    21. stoletja si brez računalnikov skorajda ne moremo zamisliti. Ob morebitnem

    tehnološkem mrku bi posledice občutili predvsem uporabniki, ki smo vajeni dosedanjih

    navad in razvad. Z uvedbo interneta se je na računalniškem področju marsikaj spremenilo,

    kajti danes je to zelo uporabljan komunikacijski medij za učenje, komuniciranje, nudenje

    storitev z uporabo različnih protokolov [1]. Opazimo lahko, da narašča trend uporabe

    spleta in informacijskih sistemov, saj se vedno več vsakdanjih opravil avtomatizira [2].

    Aplikacije in nudenje storitev se selita na streţniško stran oz. računalniški oblak, kar nam

    zagotavlja zelo dobro dostopnost, v zameno pa moramo vzeti v zakup, da smo v primerjavi

    z lokalnimi rešitvami veliko bolj izpostavljeni celotnemu svetu in napadalcem [3].

    Zagotoviti varnost, nemoteno delovanje, dobro skalabilnost sistema so eni izmed najbolj

    pomembnih kriterijev, ki jih moramo upoštevati [4]. Ker spletne rešitve rastejo zelo hitro,

    pa določeni razvijalci mnogokrat pozabljajo na varnost, katera je zelo pomemben del pred

    javno objavo rešitve. Ne smemo pozabiti tudi dejstva, da so uporabniki vedno bolj

    računalniško izkušeni in bo potrebno pri razvoju aplikacij še več časa nameniti varnostnim

    mehanizmom, kar je ţe danes resen problem. Še posebej moramo biti previdni, kadar

    imamo opravka z občutljivimi podatki, kot so imena, priimki, gesla, naslovi, ki so zaupne

    narave. Poskrbeti moramo za enkripcijo podatkov v podatkovni bazi, preveriti Structured

    Query Language (SQL) [5] ranljivosti, dolţino vnosnih polj oz. validacijo pred vpisom.

    Vse več spletnih mest temelji na smernicah World Wide Web second generation (Web 2.0)

    [6], katerega glavni cilji so uporabniško orientiran vmesnik, skupno delo, deljenje

    informacij, druţbena omreţja. Predpostavljamo, da je čas razvoja spletne aplikacije

    »kratek« v primerjavi s časom, ki ga porabimo za zagotavljanje varnosti.

    Varnost je v današnjem času resen problem, kar je razvidno iz tega, da lahko testno

    namestimo spletni streţnik in ne objavimo naslova javno na internetu ter smo tako ţe

  • Razvoj rešitev za odprtokodna spletna namizja

    2

    izpostavljeni napadalcem, ki naključno izvajajo odzivnost Internet Protocol (IP) naslovov

    in pregled vrat (angl. scanning ports), napade na streţnike s poskušanjem (angl. bruteforce

    attack), napade s slovarjem (angl. dictionary attack) in druge [7]. Menimo, da je ţe priklop

    v svetovno omreţje brez ponujanja storitev navzven lahko tvegan. V nadaljevanju smo se

    posvetili razvoju spletne rešitve za krmiljenje in nadzor IP kamer v okolju EyeOS (angl.

    Eye Operating System). Nekaj znanja na to temo smo pridobili ţe iz praktičnega

    usposabljanja, kjer smo ustvarili prototip namizne aplikacije za detekcijo s pomočjo

    uporabe AForge programskega vmesnika [8] ter spoznali sisteme za krmiljenje opreme

    SCADA (Supervisory Control And Data Acquisition) [9] v sklopu praktičnega

    usposabljanja, zato ţelim s tem delom svoje dosedanje znanje še poglobiti. Diplomska

    naloga bo prispevala k razumevanju in razvoju rešitev v okolju odprtokodnih spletnih

    namizij. V nalogi smo se omejili na razvoj rešitev v privatnem oblaku in izvedbi modula za

    krmiljenje oddaljene opreme preko spletnega operacijskega sistema EyeOS (Eye Operating

    System) [10] in LucidDesktop [11].

  • Razvoj rešitev za odprtokodna spletna namizja

    3

    2 RAČUNALNIŠTVO V OBLAKU

    V današnjem času je računalniški oblak (angl. cloud computing) moderna oblika ponujanja

    storitev preko interneta, a korenine segajo kar daleč nazaj, in sicer v leto 1960 [12], ko je

    nastal prvi koncept za omenjeno tehnologijo, vendar jim je takrat še ni uspelo realizirati

    zaradi tehničnih razlogov [13].

    Poimenovanje izvira iz besede »Cloud«, ki predstavlja v računalništvu kompleksno

    strukturo med sabo povezanih računalniških sistemov. Glavni namen je ponujati storitve,

    ki tečejo na streţniku in se izvajajo preko brskalnika, brez da bi ozadje delovanja občutili

    končni uporabniki. Osnovo sestavljajo trije pristopi, in sicer virtualizacija, storitveno

    orientirana arhitektura ter najem storitev. Poznamo tri vrste oblakov, in sicer privatne,

    javne ter hibridne. Privatni oblak teče v internem okolju, npr. v podjetju, medtem ko ima

    pri javnem oblaku dostop do storitev vsak, ki je registriran npr. Gmail.com [14],

    Salesforce.com [15].

    Hibridni oblak je skupek obeh zgoraj omenjenih, privaten je le del storitev [16]

    Storitve so streţniško orientirane, kar pomeni, da uporabnik sluţi zgolj kot »vhod

    podatkov«, saj se vse stvari obdelujejo neposredno na streţniku, ki je lahko tudi virtualno

    porazdeljen. Potencialni naročnik ne potrebuje nobene namestitve, da bi lahko začel z

    delom preko spletne rešitve. Prednost ponujanja storitev preko spletnih servisov je

    zagotovo 24-urna dostopnost od kjerkoli, omejitev je zgolj, da imamo internetno povezavo.

    Če upoštevamo, da so mobilne naprave in internet v velikem razcvetu, je torej dosegljivost

    na voljo praktično na vsakem koraku, in to je bila tudi ideja načrtovalcev.

    Pribliţek računalništvu v oblaku so bili v takratnem času »mainframe sistemi«, streţniki in

    odjemalci oziroma terminali [17]. Omenjena tehnologija je do naročnika precej bolj

    prijazna kot namizna rešitev, saj naročnik privarčuje na dragi računalniški opremi, t.j.

  • Razvoj rešitev za odprtokodna spletna namizja

    4

    streţnikih ter vzdrţevanju v lastnem okolju. Namizne rešitve se ponavadi prodajajo v celoti

    kot programski paket, pri spletnih storitvah pa lahko zakupimo le določen del.

    Sistemski integratorji in vzdrţevalci imajo v primerjavi z namiznimi rešitvami vedno manj

    dela [18], saj v računalniškem oblaku ni več potrebna draga namestitev opreme, varnostne

    kopije, integracija informacijskih sistemov za omenjene potrebe poskrbi podjetje oz.

    informacijski sistem, ki ponuja storitev vsem naročnikom. V oblaku se ti procesi izvajajo

    samodejno. Naročniki bodo seveda še naprej potrebovali uvajanje v novo tehnologijo,

    svetovanje, prilagoditve. Razvijalci se trudijo razviti čim bolj razumljive aplikacije, da

    uporabniki ne bi potrebovali navodil za uporabo. Kot kaţe, je to ţe uspelo podjetju Google.

    Le kdo ne zna uporabljati njihovih storitev Google Apps? Z uvedbo smernic spleta 2.0 ter

    3.0 verjetno po navodilih v prihodnje ne bomo posegali, saj temeljijo na prijazno

    uporabniško orientiranem spletnem vmesniku, ki bo najverjetneje tudi v 3D obliki [19].

    Bomo v prihodnosti uporabljali samo še storitve v oblaku? To je vprašanje, na katerega ne

    vemo odgovora. Svetovalci nas seveda pozivajo k uporabi in prevzemu nove tehnologije,

    vendar to ni vedno najboljše. Podjetja, ki investirajo v drago strojno in programsko

    opremo, hočejo ustvariti enotno zbirko podatkov in uporabnike navaditi, da bi dnevno

    uporabljali njihove storitve, ki so povezane v globalno okolje za vse uporabnike, vendar je

    največje tveganje pri tem varnost in varstvo osebnih podatkov. Danes obstaja čedalje več

    storitev v računalniškem oblaku, ki uporabljajo enako avtentikacijo za več storitev, npr.

    Youtube [20], GoogleApps [21].

    2.1 Zgodovina računalništva v oblaku

    Prvi koraki računalništva v oblaku segajo v polovico 20. stoletja, natančneje v leto 1950.

    Tehnologija je obstajala zgolj kot koncept in je bila v povojih. Pobudnika ideje Joseph Carl

    Robnett Licllider in John McCarthy sta predlagala, da bi lahko omreţje in njegove storitve

    trţili kot javne dobrine, npr. elektriko in vodo [22]. Omenjena računalniška znanstvenika

    šestdesetih let sta sodelovala pri razvoju prvega omreţja ARPANET(Advanced research

    projects agency network), skupaj s skupinama iz inštituta MIT (Massachusetts institute of

    technology) in agencije DARPA (Defense advanced research project agency), ki je

    uporabljal metodo preklapljanja paketov. Današnji internet deluje na temeljih omreţja

  • Razvoj rešitev za odprtokodna spletna namizja

    5

    ARPANET, iz česar sledi, da je bila ideja zelo dobro zastavljena, vendar je takrat

    tehnološko niso mogli podpreti in je ostala zgolj na papirju [23]. Če pogledamo z drugega

    zornega kota, si lahko oblak v preteklosti predstavljamo kot tovarno, ki je potrebovala za

    obratovanje svojo elektrarno, inţenirje in mnogo drugih obveznosti. Danes se podjetja ves

    čas posvečajo primarnim problemom in ne toliko preostalim, kajti npr. elektrika je javno

    dobro. V oblaku imamo tudi veliko storitev, ki so javne, zato se pri razvoju novih rešitev

    posvečamo zgolj ključnim problemom, kar pomeni da se bodo razvijalci vedno bolj

    pribliţali zahtevam potrošnikov. Kar nekaj časa je preteklo, dokler je tehnologija postala

    uporabna v vsakdanjem ţivljenju. Z razvojem omreţnega protokola TCP/IP je realizacija

    oblaka uspela. Podjetje Salesforce je leta 1999 začel svoje storitve trţiti preko preproste

    spletne strani z uporabo interneta. Storitev je postala uspešna in kaj kmalu zelo razširjena

    [24]. Mnoga ostala velika podjetja so pričela s trţenjem preko spleta. Eden izmed uspešnih

    gigantov je ameriško podjetje Amazon, ki je pričelo preko spletnega servisa trţiti storitve,

    kot so prostor na oddaljenem računalniku, kalkulacije in podobno. Evolucijo pri

    računalništvu v oblaku je napravilo podjetje Google, ki je leta 2009 z izdajo Google Apps

    povsem osvojila uporabnike širom sveta s storitvami, kot so e-pošta, urejevalniki

    dokumentov, prevajalnik, sistem za iskanje spletnih strani in ostalimi. Kaj kmalu so v igro

    vstopila tudi večja podjetja, kot so IBM, Microsoft, Oracle, HP, kar dokazuje, da je danes

    to prevladujoča tehnologija.

    2.2 Referenčni model in arhitektura oblaka

    Referenčni model temelji na 3 osnovnih slojih:

    sistemskem nivoju, ki zajema strojno opremo in vire, ki so na voljo,

    jedru oz. srednjemu nivoju vsebuje procese, ki zagotavljajo kakovost storitve; takšni

    servisi so kvaliteta storitve (angl. Quality Of Service), plačilna politika (angl. Pricing),

    nadziranje (angl. Monitoring), nivojsko upravljanje SLA(Service level agreement)

    management, izvršno upravljanje (angl. Execution management), merjenje (angl.

    Metering), računovodstvo (angl. Accounting), namestitev (angl. Deployment),

    virtualizacija sistemov (angl. Virtual machine systems),

    uporabniškem nivoju, ki zajema vmesnike za splet nove generacije Web 2.0, programske

    knjiţnice API. Aplikacije, ki tečejo v oblaku, so večinoma poslovne, znanstvene in danes

  • Razvoj rešitev za odprtokodna spletna namizja

    6

    zelo priljubljena druţbena omreţja [25].

    Slika 2-1: Referenčni model oblaka [26]

    Arhitektura odjemalec-streţnik (angl. Client-server)

    Slika 2-2: Delovanje modela odjemalec-streţnik

  • Razvoj rešitev za odprtokodna spletna namizja

    7

    Omenjen model je temelj današnjega interneta [27]. Na eni strani imamo streţnik oz.

    gostitelje, na drugi strani pa odjemalce oz. uporabnike, ki ţelijo dostopati do vsebin, katere

    so shranjene na oddaljenem računalniku. Pri dostopu do spletnih strani se uporablja Hyper

    Text Transfer Protocol (HTTP), kateri deluje na vratih 80. Pošlje se zahteva za spletno

    stran, streţnik vrne odgovor odjemalcu z omenjeno vsebino. Z razvojem tehnologij je

    postal model kompleksnejši, imamo več sočasnih povezav s streţniki, z uvedbo

    programskih aplikacijskih vmesnikov je razvoj aplikacij s programerskega stališča precej

    laţji. Model odjemalec streţnik se je začel spreminjati z uvedbo centraliziranih streţnikov

    oziroma računalniškega oblaka. Streţniki so naprimer locirani v ZDA, uporabnik pa

    prihaja iz Rusije. Če uporabljamo kakšen servis, ki mora biti odziven v določenem

    časovnem intervalu, lahko naletimo na teţave. Pri podjetju Google imajo razpršene

    zrcaljene streţnike na več lokacijah po svetu z istimi podatki, ki so sinhronizirani [28]. V

    računalniškem oblaku se podatki hranijo v tujini, kar lahko privede do različnih tveganj,

    med drugim tudi zakonskih.

    Obstaja tudi druga vrsta arhitekture, ki se imenuje Peer to Peer (P2P), ki deluje od

    uporabnika do uporabnika. Vsak izmed sodelujočih ima enakovredno vlogo glede na

    sprejemanje in oddajanje. Pri omenjeni arhitekturi je varnost zelo vprašljiva, saj se podatki

    o nas nahajajo tudi na drugih računalnikih, ki morda niso dobro zaščiteni [29].

    Danes se omenjena tehnologija najbolj uporablja pri izmenjevanju datotek s trenutno

    popularnim programom torrent [30], ki uporablja protokol bittorrent [30] in omreţje P2P

    [29].

    Vsaka izmed teh dveh arhitektur ima svoje prednosti in slabosti. Katera je boljša, je

    odvisno od problema, ki ga ţelimo realizirati. V današnjem času prevladuje predvsem

    arhitektura odjemalec-streţnik z rahlimi modifikacijami, saj je ob razvoju računalniškega

    oblaka le-ta postala bolj centralizirana.

  • Razvoj rešitev za odprtokodna spletna namizja

    8

    Slika 2-3: Mreţna arhitektura P2P in odjemalec-streţnik [31]

    2.3 Infrastruktura kot servis (IaaS)

    Pri tem servisu gre za ponujanje računalniške infrastrukture, ki jo najamemo oz. dobimo v

    zakup. Prav tako za delovanje ni potreben nakup nobene programske opreme. S tem se

    izognemo velikim stroškom postavitve in vzdrţevanjem lastnega podatkovnega centra.

    Sistem lahko hitro prilagodimo za svoje rešitve, s tem imamo tudi moţnost postavitve

    lastnih virtualnih streţnikov in dodeljevanja streţniških resursov. V omenjenem segmentu

    delajo mreţni arhitekti in skrbniki sistemov [37]. Eden izmed prvih takšnih ponudnikov je

    bilo podjetje Amazon, ki je s storitvijo Elastic Pay As You Go prebil led in postal uspešen

    [32]. Rešitve omogočajo fizično in virtualno dodeljevanje resursov, kot so diskovni

    prostor, spomin, procesorski čas, procesi/opravila, dovoljenja, Quality of Service (QoS).

    Svoj deleţ k popularnosti IaaS so dodala tudi podjetja, ki ponujajo virtualne rešitve

    VMWare, CitrixSystems, XenServer, IBM, Oracle, Microsoft Azure, Amazon EC2, KVM

    [33]. Pri upravljanju domene in gostovanju ni več potrebna tretja oseba, ampak za to

    skrbimo sami. Do virtualnih streţnikov dostopamo preko navideznega privatnega omreţja

    oz. povezave Virtual Private Network (VPN). Znotraj našega računalniškega omreţja

    lahko kreiramo navidezna zasebna podomreţja, imenovana Virtual Local Area Network

    (VLAN).

  • Razvoj rešitev za odprtokodna spletna namizja

    9

    Pri znanih ponudnikih so se ţe tudi pojavile zlorabe v piratske namene, saj so s pomočjo

    navideznih virtualnih streţnikov izvajali razbijanje gesel z metodami grobe sile (angl.

    bruteforce) [34] in napadi s slovarji (angl. dictionary attack) [34]. Pri zlorabi

    računalniškega oblaka oseba tudi pravno odgovarja, kršitelja je na internetu teţko

    identificirati, odkrije se lahko na podlagi IP številke, ki je dodeljena vsakemu uporabniku,

    in ta tudi odgovarja v primeru zlorabe. Obstajajo tudi metode prikrivanja in spreminjanja

    IP naslovov, kar predstavlja pri odkrivanju kršiteljev dodaten problem.

    V današnjem času je skoraj zmanjkalo IP naslovov [35] po alokaciji IPv4 (internet protocol

    version 4), zato je pred vrati nova verzija, in sicer IPv6 (internet protocol version 6).

    V oblaku dobimo elastično dodeljen IP naslov, ki je vezan na uporabniško ime. Ob

    kreiranju novih instanc virtualnih sistemov uporabljamo Elastic Internet Protocol (EIP).

    Tako so se izognili potrati le-teh. Amazon s storitvijo EC2 ponuja recimo 5 EIP naslovov,

    vezanih na uporabniško ime, ki jih lahko dodelimo vsaki instanci virtualnega sistema [36].

    2.4 Platforma kot servis (PaaS)

    Je računalniško okolje z ţe vgrajenimi osnovnimi rešitvami in ni potrebno znanje niţjega

    oz. sistemskega nivoja, ampak lahko pričnemo z implementacijo rešitve in gremo skozi cel

    ţivljenjski cikel razvoja rešitve ter ga ponudimo kot spletni servis [38]. V tem segmentu

    delajo razvijalci programske opreme. Platforma nam omogoča, da ne pričnemo rešitve

    razvijati od začetka, ampak uporabimo ţe uspešne pogone, katerim sprogramiramo lastne

    funkcije za potrebe razvoja lastnih informacijskih rešitev. Ponudniki omenjenih storitev so

    VMware SpringSource, GoogleAppEngine, Microsoft Azure, Engine Yard [39]. S

    pojavom servisa imajo razvijalci na voljo več virov, kot če bi to počeli z lastno izvedbo.

    Glavna skrb Platform as a Service (PaaS) je zagotavljanje virtualizacije in delovanja kot

    streţnik. Najbolj pomembna je danes prav varnost, zato moramo preveriti ali ponudniki

    stremijo k omenjenim varnostnim smernicam, katere so zapisane v dokumentih ISO 27001

    information security management system (ISMS) [40], Statement on Standards for

    Attestation Engagements (SSAE16) [41], International Standards for Assurance

  • Razvoj rešitev za odprtokodna spletna namizja

    10

    Engagements (ISAE) 3402 [42].

    2.5 Programska oprema kot servis (SaaS)

    Preko tega sloja ponudnik svoje storitve trţi na zahtevo, kar pomeni, da zajema celoten

    paket za delovanje, tako infrastrukturo kot programsko opremo. Eni izmed najbolj

    uspešnih ponudnikov so SalesForce, SAP, Microsoft Office 365, Oracle, Google Apps

    [43]. Ta segment je posvečen končnim uporabnikom, ki za dostop potrebujejo le brskalnik,

    ostala vsebina se nahaja v računalniškem oblaku. Omenjen način najdemo predvsem v

    podjetniških rešitvah, kot so Content management system (CMS), Customer relationship

    management (CRM), Business to customer (B2C), Enterprise resource planning (ERP),

    Management information systems (MIS), Human resource management (HRM) [44].

    Omenjen princip je nekoč ţe bil v uporabi, in sicer pri podjetju IBM okoli leta 1960 [45]. Z

    razvojem interneta je tehnologija ponovno oţivela, od začetka s storitvami preko

    Application service provider (ASP), sedaj pa masovno preko računalniškega oblaka.

    S pojavitvijo računalniškega oblaka so se odprle nove moţnosti za razvoj aplikacij, kjer se

    vse stvari izvajajo na streţniški strani. Za razvoj spletne strani lahko uporabimo ţe vnaprej

    pripravljene odprtokodne brezplačne CMS pogone, kot so Joomla, Drupal in druge. Tudi

    za razvoj lastne internetne trgovine imamo ţe vnaprej pripravljene rešitve, kot so

    OSCommerce, OpenCart, PrestaShop, Magento, Agora Cart, Zen Cart in druge [46].

  • Razvoj rešitev za odprtokodna spletna namizja

    11

    2.6 Prednosti in slabosti oblaka

    Tabela 2-1: Prednosti in slabosti oblaka

    Prednosti Slabosti

    -dosegljivost do podatkov 24/7 -prenos večjih količin podatkov

    -prilagodljivost -zanesljivost 99,x%?

    -manjši stroški vzdrţevanja -tehnične napake

    -plačilo po uporabi -ni lastnega nadzora nad podatki (so v oblaku)

    -veliko število platform -zaklep storitev ob napadu na sistem

    -avtomatska integracija z obstoječimi

    storitvami, samodejna integracija

    podatkovne baze

    -ranljivost in izpostavljenost vdorom

    -avtomatsko arhiviranje -slabša odzivnost kot pri namiznem OS

    -zmogljivi streţniki

    -neomejena kapaciteta shranjevanja

    -globalizacija in promocija

    -nadzor storitev in statistika

    Slika 2-4: Hierarhični prikaz treh glavnih enot računalniškega oblaka

    Podjetja, ki trţijo svoje storitve preko centraliziranih streţnikov, so močno povečala

    dobičke, saj vedno več naročnikov uporablja njihove storitve, ker s tem zmanjšajo svoje

    stroške in plačajo glede na porabo.

  • Razvoj rešitev za odprtokodna spletna namizja

    12

    Slika 2-5: Napoved uporabe računalniškega oblaka v prihodnosti [47]

    Spletni portal InsuranceCanada.com je objavil anketo, v kateri sprašuje računalniške

    strokovnjake o trenutnem stanju in uporabi rešitev v oblaku. Rezultati ankete so sledeči:

    17% anketiranih meni, da je to zgolj marketinška poteza in priloţnost za hiter

    zasluţek.

    18% vprašanih ugotavlja, da gre za preimenovanje starega koncepta, ki je ţe bil v

    uporabi.

    22% je brez pravega odgovora in da je prehitro presojati, ali je omenjen model

    sprejemljiv.

    25% se jih strinja, da je to zanimiv koncept, vendar ga v podjetju nebi sprejeli.

    17% jih podpira to zelo perspektivno rešitev, vendar ima še premalo razvitih

    servisov.

    10% jih podpira omenjeno tehnologijo in vidi v njej odlične priloţnosti za razvoj

    [47].

    Sklep: Kot vsaka nova tehnologija, ima tudi omenjena svoje prednosti in pomanjkljivosti.

  • Razvoj rešitev za odprtokodna spletna namizja

    13

    Omogoča nam nove moţnosti dostopa do informacij oz. servisov. Če jo uporabljamo

    nepremišljeno, nam lahko povzroči tudi škodo v našem sistemu. Trend uporabe omenjene

    tehnologije raste iz dneva v dan, s tem pa seveda sprejmemo tudi določen riziko.

  • Razvoj rešitev za odprtokodna spletna namizja

    14

    3 SPLETNO NAMIZJE EyeOS

    Je odprtokodna rešitev, ki je izdana pod licenco, imenovano GPL (General Public License)

    [48]. Iz tehničnega vidika je to spletna platforma, preko katere lahko trţimo svoje storitve,

    ki jih vgradimo v omenjeni spletni operacijski sistem. V današnjem času so v porastu

    spletni informacijski sistemi, zato je omenjena platforma zelo dobra začetna točka za

    trţenje naših servisov. Pri razvoju komponent za omenjen sistem je potrebno dobro

    poznavanje spletnih jezikov, kot so HyperText PreProcessor (PHP) [49], Javascript [50],

    HyperText Markup Language (HTML) [51], Cascade Styling Sheets (CSS) [52]. Za

    shranjevanje podatkov se večinoma uporablja eXtensible markup language (XML) [53] in

    My Structured Query Language (MySQL) [54]. Pri delu z grafično podobo moramo

    obvladati uporabo jezika Javascript z vključitvenimi knjiţnicami in Application

    programming interface (API) [55] Qooxdoo [56]. Na voljo imamo mnogo brskalnikov, ki

    različno interpretirajo določene ukaze, zato moramo pri razvoju aplikacije poskrbeti za

    kompatibilnost. Za delovanje potrebujemo streţnik Apache verzije 2.x, PHP verzije 5 ali

    novejšo, baza je XML, zaţelena je tudi podpora podatkovni bazi MySQL [57].

    3.1 Arhitektura spletnega operacijskega sistema

    Sistem deluje po principu odjemalec-streţnik, kjer smo odjemalec mi oz. spletni brskalnik.

    Glavni sestavni del operacijskega sistema je jedro, ki skrbi za komunikacijo in izvajanje

    procesov. Potrebno je poznavanje, kako jedro streţe aplikaciji, da lahko razvijemo svoj

    servis znotraj okolja [57].

  • Razvoj rešitev za odprtokodna spletna namizja

    15

    Slika 3-1: Arhitektura spletnega operacijskega sistema EyeOS[57]

    Jedro je najpomembnejši del spletnega operacijskega sistema in dodeljuje vire ter streţe

    sistemskim klicem iz aplikacij. Servis NetSync skrbi za povezavo v realnem času, medtem

    ko aplikacijski programski vmesnik RestApi omogoča laţjo komunikacijo po protokolu

    [57].

    Programska sestava:

    korenska mapa/apps/imeaplikacije/info.xml (datoteka mora obstajati, vsebuje informacije o

    aplikaciji),

    korenska mapa/apps/imeaplikacije/imeaplikacije.php (sprejema sporočila grafičnega

    vmesnika Qooxdoo),

    korenska mapa/apps/imeaplikacije/extern/(vsebuje datoteke, ki so javno dostopne slike,

    dokumenti),

    korenska mapa/apps/imeaplikacije/imeaplikacije.js (koda grafičnega spletnega vmesnika

    oz. funkcije),

    korenska mapa/apps/imeaplikacije (glavni direktorij določene aplikacije),

  • Razvoj rešitev za odprtokodna spletna namizja

    16

    korenska mapa/apps/ (glavna mapa kjer so zbrane vse aplikacije).

    Glavni direktoriji sistema EyeOS so:

    /apps/ (aplikacije oz. spletni servisi),

    /extern/ (datoteke, ki so vidne navzven – za brskalnik),

    /extras/ (posebne datoteke),

    /system/ (sistemske in konfiguracijske datoteke),

    /users/ (uporabniki),

    /workgroups/ (skupine),

    Glavna konfiguracijska datoteka se nahaja znotraj glavne mape EyeOS in se imenuje

    settings.php. V njej so zapisani parametri, ki so potrebni za povezavo s podatkovno bazo

    MySQL.

    define('SQL_DB_NAME','MojCloudSistem');

    define('SQL_USERNAME','root');

    define('SQL_PASSWORD','mojegeslo');

    3.2 Delovanje in prirejanje okolja

    Za razvoj modulov oz. aplikacij znotraj okolja je potrebno poznavanje programskih

    aplikacijskih vmesnikov oz. API-jev. V tem projektu se je bilo potrebno še soočiti s strojno

    opremo, torej IP kamerami in usmerjevalnikom ter streţnikom. Najprej smo delujočo

    verzijo naredili za lokalno omreţje.

    3.2.1 Sistemski servisi

    Spletni operacijski sistem EyeOS vsebuje 8 servisov, preko katerih se opravlja določene

    naloge. Nekateri izmed njih izvajajo tudi nizko nivojska opravila, kot so zapisovanje

    fizično na disk. Za komuniciranje z jedrom je potrebno uporabljati predpono oz. funkcijo

    service, katera ob klicu zahteva vnos treh parametrov [57]. Prvi parameter je ime aplikacije

    nato ime funkcije ter vsebina. Definirana je v:

  • Razvoj rešitev za odprtokodna spletna namizja

    17

    Eyeroot/system/kernel/kernel.eyecodedatoteki. Sintaksa za klic servisa je sledeča:

    service(string $ime_servisa, string $imefunkcije, [array $parametri]);

    Processes (PROC)

    Servis je odgovoren za upravljanje in izvajanje procesov v okolju EyeOS. Vsak proces ima

    svojo Process identifier digit(PID) petmestno procesno identifikacijsko številko in enolično

    primarno številko, ki ji ni moţno ustvariti duplikata in se hrani v spremenljivki checknum,

    ID procesa pa v myPid.

    Vsebuje metode, kot so end, launch, list, processes in druge. Ob zagonu aplikacije se

    vsakemu procesu dodeli PID in checknum, ki skrbi za identifikacijo procesa pri

    komuniciranju z odjemalcem in streţnikom. Če ţelimo videti ime aplikacije, ki teče pod

    določeno številko PID, lahko to storimo s klicem funkcije [58].

    Primer:

    findPidByName(62470)

    Rezultat funkcije: Videonadzor

    Service('proc','launch',array('Videonadzor');

    Service('proc','close',array($pid);

  • Razvoj rešitev za odprtokodna spletna namizja

    18

    Funkcija Sintaksa Rezultat funkcije (return)

    close service('proc','close',array($pid)

    Proc('close',array($pid))

    Če ni procesa, vrne true, sicer

    poţene end funkcijo.

    end service('proc','end')

    Proc('end')

    Zapre proces, iz katerega je

    bila funkcija klicana.

    launch service('proc','launch',array('Vid

    eonadzor');

    Zaţene proces (vrne vrednost

    true/false).

    setProcessUser service('proc','setProcessUser',ar

    ray($myPid));

    Uporabniško definiran proces.

    findChecknum proc('findChecknum',array($my

    CheckNum)

    Najde številko preverjanja.

    findChecknumByName findChecknumByName($param

    s)

    Najde verifikacijsko številko

    po imenu. Če je najdeno, vrne

    checkNum, drugače vrne false.

    findNameByPid $appName=

    service('proc','findNameByPid',a

    rray($key));

    Najde ime aplikacije po PID

    številki.

    findChecknumByPid service('proc','findChecknumBy

    Pid);

    Najde verifikacijsko številko

    po PID.

    findPid service('proc','findPid'); Najde številko PID.

    findPidByName $pid=

    service('proc','findPidByName',a

    rray('eyeX'));

    Najde številko PID po imenu.

    Tabela 3-1: Funkcije servisa proc

  • Razvoj rešitev za odprtokodna spletna namizja

    19

    Slika 3-2: Upravitelj procesov in aplikacija videonadzor v okolju EyeOS

    Virtual File System (VFS)

    Je navidezni datotečni sistem, ki zagotavlja delo s datotekami in mapami. Omenjen proces

    je eden izmed najpomembnejših servisov, ki tečejo v spletnem operacijskem sistemu

    EyeOS. Uporabniku omogoča branje in pisanje v datoteke. Če aplikacija preko funkcije

    pokliče datoteko in uporabnik nima pravic za branje ali pisanje, nam to sporoči preko

    parametra VFS_Insufficient_permissions [58].

    Primer dostopa do gesel:

    $pot='/etc/passwd'

    $dostop = service ('vfs','open',array($pot));

    if($dostop== false)

    { if(dostop == VPS_FILE_NOT_EXISTS)

    { service('eyeX','messageBox',array('content'=>''Datoteka ne obstaja'')); }

    else if(dostop == VPS_INSUFFICIENT_PERMISSIONS)

    {service('eyeX',messageBox',array('content'=>''Nimate dovoljenja' za dostop')); }

    else{service('eyeX',messageBox',array('content'=>''Neznana napaka''));}

    return false;}

    else { //Imas dostop do datoteke, funkcije vfs open je vrnila true v spremenljivko dostop}

    EyeX servis (EyeX)

    Uporaba omenjene komponente skrbi za osnovna izrisovanja na uporabniškem vmesniku

    na gostiteljevi strani. Sluţi za dostavo odgovorov, ki prihajajo od streţnika do odjemalca,

    ko ta pošlje zahtevo. Vsa sporočila se pošljejo v obliki XML.

  • Razvoj rešitev za odprtokodna spletna namizja

    20

    V prvi fazi brskalnik pošlje zahtevo na streţnik, nato streţnik odgovori s sporočilom, ki ga

    nato brskalnik interpretira ter prikaţe. Osnovni dve operaciji tega servisa sta izris slike in

    odpiranje novih pogovornih oken [58].

    Primer komunikacije:

    Uporabnik klikne gumb, zahteva se pošlje na streţnik, ki vrne odgovor in odpre novo

    okno, katero nato glede na uporabnikovo ţeljo ponovno kliče druge funkcije.

    service('eyeX','messageBox',array('content'=>'Krmiljenje IP Kamere 2'));

    User Manager (UM)

    Je servis, pri katerem upravljamo z uporabniki, vsebuje pa tudi ostale funkcije, kot so

    prijava v sistem, registriranje novih uporabnikov, pozabljeno geslo, pridobitev lokacije na

    streţniku, t.i. home direktorij [58].

    Primer uporabe:

    $pot =service('um','getCurrentUserDir'); //Funkcija pridobi pot do uporabnikove mape

    $pot.='MojaAplikacija';

    $pot.='nastavitve/seznam_ipkam.txt';

    service('vfs','create',array($pot)); //Kreiramo datoteko s pomočjo servisa vfs

    dodaj//vpis vseh v seznam

    service('vfs','open',array('nastavitve.txt','r')); //Vrstica za branje nastavitev

    parser //branje datoteke vrstično

    Zelo pomembna je globalna spremenljivka CurrentUser. Dostop do nje je mogoč vsaki

    aplikaciji, iz nje lahko razberemo, kateri uporabnik je pognal določen proces.

    Primer hrambe podatkov o uporabniku

    JurijStjepčević

    4f5f3a8XYZHash_vrednost_gesla735689

    [email protected]

    Jurij Stjepčević

    05102012

    0 // 0 uporabniku račun nikoli ne poteče

  • Razvoj rešitev za odprtokodna spletna namizja

    21

    1 //privilegiji

    public

    25122012

    Definicija XML datoteke, ki hrani podatke o določenem uporabniku v EyeOS sistemu,

    vsebuje atribute uporabniško ime, geslo, ki je zapisano v hash vrednosti, e-pošta, polno

    ime, datum, kdaj je bil uporabnik kreiran, privilegiji, skupina, v katero sodi, in zadnja

    prijava.

    Message Mapping (MMAP)

    Je del sistema, ki je odgovoren za dostavo sporočil od uporabnika do streţnika in obratno.

    Deluje kot avtomatski proces, kar pomeni, da pri razvoju rešitve programer ne potrebuje

    polagati pozornosti na dostavo in preverjanje, saj to zanj zagotovi spletni operacijski

    sistem.

    Za primer vzemimo spletno pošto, kjer sortiramo pošto glede na pomembnost in naslov. Ta

    servis skrbi za dostavo sporočil točno določeni aplikaciji [58].

    Security (SEC)

    Je še en avtomatski proces in deluje samostojno, skrbi za delovanje v varnem načinu. Pri

    PHP namestitvi na streţniku je potrebno onemogočiti spremenljivki register_globals in

    magic_quotes. Razvijalcu ni potrebno nastavljati PHP konfiguracijske datoteke, temveč se

    avtomatsko zahteva preko servisa ob namestitvi [58].

    Logging (LOG)

    Dnevnik je avtonomni proces, ki beleţi vsako uporabnikovo dejanje s pribeleţenim časom.

    Nima nobene interakcije z uporabnikom ali razvijalcem [58].

    3.2.2 Knjiţnice

    Knjiţnica je zbirka podprogramov oziroma funkcij, ki programerju omogoči laţje delo pri

    razvoju rešitve, saj lahko uporabi ţe izdelane in preizkušene dele programske kode.

  • Razvoj rešitev za odprtokodna spletna namizja

    22

    Knjiţnice v EyeOS ne omogočajo opravil na nizkem sistemskem nivoju. V okolju jih

    kličemo s predpono reqLib, nato vpišemo ime knjiţnice, funkcijo, parameter oz. vsebino

    [58].

    Sintaksa:

    reqLib(string $ime_knjiznice, string $imefunkcije, [array $parametri]);

    EyeXML

    S pomočjo te knjiţnice imamo precej laţji dostop do podatkov. XML je shramba v

    tekstovno datoteko, ki je v spletnem namizju EyeOS pogosto uporabljana za hrambo

    konfiguracij, branje in prenašanje sporočil in ostala opravila.

    Omenjen način shranjevanja in pridobivanja podatkov ne potrebuje zunanje podatkovne

    baze, ampak za nas to obdela razčlenjevalnik (angl. parser). Glavni funkciji sta xml2array

    in array2xml. Prva skrbi za pretvorbo xml datoteke v polje, druga pa ravno obratno [58].

    EyeWidgets

    Olajša delo z grafičnim vmesnikom, saj ponuja razrede, ki imajo ţe implementirane

    funkcije. Kreiramo lahko tabele, slike, gumbe, napise [58].

    errorCodes

    Koda napake se pojavi, kadar se funkcija izvede delno oz. nepopolno ali za to nimamo

    ustreznih pravic. Za razvijalca sta najbolj pomembni funkciji SetErrorCode, s katero

    nastavimo številko napake in getErrorCode, ki nam vrne vsebino napake.

    Npr. 403 zavrnjeno; 404 napaka strani

    Nekatere številke so rezervirane za znane napake, programerju pa ostaja moţnost, da jih

    nekaj priredi tudi za svoje potrebe [58].

    Prevajalnik i18n

    Vgrajen je avtomatski prevajalnik besed i18n, ki skrbi za večjezično podporo.

  • Razvoj rešitev za odprtokodna spletna namizja

    23

    Tekst v originalu mora biti v angleškem jeziku. Znotraj datoteke npr. sl.eyeCode imamo

    zapisan ključ v angleškem jeziku in prevedeno v slovenskem. V spletnem operacijskem

    sistemu lahko izberemo jezik, katerega ţelimo, in besede bodo avtomatsko prevedene v

    ţelen jezik [58].

    Primer:

    Prevajamo tekst z dinamično spremenljivko, zato uporabimo zapis %s, torej se po

    prevajanju doda omenjen tekst. Z uporabo knjiţnice i18n lahko prevajamo tudi celotno

    spletno stran.

    $MojTekst=''You are currently logged with username =>%s'';

    $spremenljivka=array($currentUser);

    $MojTekstPreveden=reqLib('i18n','translate',array($MojTekst,spremenljivka));

    //Trenutno si prijavljen pod uporabniškim računom Jure

    $MojTekst=''Monday'';//Vpišemo tekst za prevod

    $MojTekstPreveden=reqLib('i18n','translate',array($MojTekst));

    Prevod besed se nahaja v datoteki XML, pot do omenjene datoteke je naslednja:

    eyeOS/apps/share/eyeControl/translate/system/langs

  • Razvoj rešitev za odprtokodna spletna namizja

    24

    Slika 3-3: Pregled XML datoteke v grid načinu

    Z orodjem Altova XML Spy [59] smo preverili zgradbo datoteke, kjer imamo zapisane

    besede in posamičen prevod po principu servisa Google translate.

    Znotraj oznake content se nahaja beseda v izvornem jeziku oz. angleščini.

    Prevod je zapisan znotraj oznake vsebina, dolţina slovenskega prevoda je

    5.310 vrstic.

    Primer XML zapisa:

    Error while uploading file "%s"! Transfer aborted.

    Napaka pri nalaganju datoteke "%s"! Prenos prekinjen.

  • Razvoj rešitev za odprtokodna spletna namizja

    25

    4 RAZVOJ REŠITVE ZA KRMILJENJE IN

    VIDEONADZOR IP KAMER V EyeOS

    Modul je del informacijske rešitve in je implementiran znotraj sistema. V EyeOS se moduli

    nahajajo v podmapi apps. Ustvarili smo novo mapo z imenom videonadzor, ki vsebuje

    datoteke:

    app.eyecode,

    events.eyecode,

    info.xml.

    Datoteka app.eyecode vsebuje funkcijo Videonadzor_run, ki vsebuje parametre za prikaz

    vmesnika. Posebno vlogo ima globalna spremenljivka proces_id oz. PID, pod katero sistem

    vodi aplikacijo videonadzor. Vnesti je potrebno tudi absolutno pot (t.i. absolute path) do

    modula. V omenjeni datoteki se kreira tudi uporabniški vmesnik, za katerega skrbi

    objektno orientirano ogrodje (angl. framework) Qooxdoo [56]. Znotraj novega okna v

    spletnem operacijskem sistemu, kateri ima svoj PID, se zaţene aplikacija za krmiljenje IP

    kamer. Funkcija Videonadzor_end poskrbi za zaprtje tega PID v procesnem seznamu [58].

    Datoteka events.eyecode zajema dogodke ob kliku na določen gumb znotraj te aplikacije.

    Glavne funkcije so:

    videonadzor_on_loadPage,

    videonadzor_on_Resize,

    videonadzor_on_fullScreen,

    videonadzor_on_Close.

  • Razvoj rešitev za odprtokodna spletna namizja

    26

    4.1 Specificiranje zahtev

    Diagram primerov uporabe za modul videonadzor v spletnem namizju EyeOS prikazuje

    funkcionalnosti sistema, ki so na voljo posameznemu akterju.

    Slika 4-1: Diagram primerov uporabe za modul videonadzor

    Diagram zaporedja prikazuje osnovno interakcijo uporabnika s spletnim operacijskim

    sistemom in modulom za krmiljenje ter videonadzor (narisano s programom Pacestar UML

    Diagrammer) [66].

  • Razvoj rešitev za odprtokodna spletna namizja

    27

    Slika 4-2: Diagram zaporedja za modul videonadzor

    4.2 Krmiljenje strojne opreme

    Za potrebe krmiljenja in videonadzora moramo omogočiti dostop do opreme v smeri

    interneta.

    S tem se pojavi problem, saj imamo sistem povezan lokalno. Če ţelimo ustvariti rešitev, ki

    bo delovala v internetnem okolju, moramo omogočiti vrata za komunikacijo na

    usmerjevalniku za dostop do tega lokalnega IP naslova in vrat. V nadaljevanju je opisan

    tudi problem, kako pošiljati ukaze na oddaljeno strojno opremo in razvoj lastnih

    programskih funkcij za krmiljenje v spletnem skriptnem jeziku Javascript.

    Primer:

    IP kamera 1

    Lokalni IP naslov: 192.168.1.190

  • Razvoj rešitev za odprtokodna spletna namizja

    28

    Lokalna vrata:80

    Zunanji IP naslov: http://upime:[email protected]:1337

    /video.cgi&user=uporime&pwd=mojegeslo?nextUrl=http://povezava_nazaj

    IP Kamera 2 deluje na vratih 1338, IP Kamera 3 na vratih 1339.

    Podrobnejši opis delovanja in preslika vrat (angl. port mapping) se nahaja v poglavju 7.2.

    Z uporabo protokola HTTPS (Hyper Text Transfer Protocol Secure) [74] in kodiranjem

    izvorne kode precej zmanjšamo moţnost za krajo pomembnih podatkov. V ta namen smo

    uporabili prostodostopno orodje yuiCompressor [60], ki zelo optimizira Javascript kodo.

    Na voljo je tudi produkt HTML Encrypter [61] za kodiranje HTML spletne vsebine.

    4.3 Priprava modula in implementacija funkcij

    Pri izdelavi novega sklopa smo ustvarili tri glavne datoteke, katere potrebujemo pri zagonu

    modula. Najbolj pomembna je funkcija run, katera se ob zagonu prva izvrši. Definirati in

    razviti moramo funkcionalnosti modula ter proţenje funkcij ob dogodkih.

    App.eyecode

    Ob zagonu aplikacije se proţi glavna funkcija run, ki v našem primeru ne vsebuje

    parametrov. V njej so podatki o grafični podobi modula, poţenejo se vsi potrebni procesi

    za prikaz. Vzpostavi se povezava s kamero in navigacijski meni za upravljanje.

    function Videonadzor_run($params=null)

    {

    global $proces_id, $prev;

    $ime_aplikacije = "Videonadzor";

    $pot_do_aplikacije = "http://127.0.0.1/Sistem/Videonadzor"; //vir

    $naslov = 'krmiljenje in nadzor IP Kamer - Jurij Stjepčević - FERI';

    $info_datoteka = EYE_ROOT.'/'.APP_DIR.'/Videonadzor/info.xml';

    //Info datoteka o modulu

    $trenutni_up = ROOTUSER;

    $pod_xml = reqLib('eyeXML', 'getXMLfile', array($info_datoteka));

    http://upime:[email protected]:1337/video.cgi&user=uporime&pwd=mojegeslo?nextUrl=http://povezavahttp://upime:[email protected]:1337/video.cgi&user=uporime&pwd=mojegeslo?nextUrl=http://povezava

  • Razvoj rešitev za odprtokodna spletna namizja

    29

    //http://wiki.eyeos.org/Widget_Window

    Ustvarjanje glavnega okna aplikacije poteka preko objekta Window, definiramo ga preko

    parametrov, ki so zapisani v seznamu:

    $okno_glavno = new Window(array(

    'name'=>'videonadz_glavno_okno',

    'father'=>'eyeApps',//nadskupina

    'cent'=>1, //center pozicija = true

    'width'=>1000,'height'=>730,'title'=>$naslov,'sendResizeMsg'=>1,

    'sigResize'=>'Resize','removeWin'=>2,'savePosition' => 1,

    'minWidth'=>1000,'minHeight'=>730));

    $okno_glavno->show();//prikaz našega primerka

    //funkcija run -> prikaz in preverjanja...

    }

    function Videonadzor_end($params=null)

    {reqLib('eyeWidgets','unserialize');}

    Info.xml

    Znotraj omenjene datoteke so zapisane podrobnosti o posameznem modulu, vsebino

    hranimo v obliki XML strukture.

    Videonadzor in krmiljenje IP kamer v Cloud okolju

    EyeOSMojeAplikacije

    1.3.3.7

    krmiljenje IP kamer in videonadzor -> na oddaljeni opremi

    J.S. & GPL

    Jurij Stjepčević ; EyeOScore = GPL licenca

    Application

    1

    Events.eyeCode

    V datoteko Events smo zapisali, katere metode naj se proţijo ob določenem dogodku.

    function videonadzor_on_fullScreen()

    {global $proces_id;$GLOBALS['videonadz_glavno_okno']->setFullScreen();}

  • Razvoj rešitev za odprtokodna spletna namizja

    30

    Če izberemo gumb zapri, se izvrši funkcija onClose. Uporaba servisa proc in komande end

    sluţi za zaprtje procesa.

    function videonadzor_on_Close()

    {eyeConverter('cleanTmp'); //zbriši začasne datoteke

    proc('end');//končaj proces - uniči pid

    }

    function is_on_Message($params="")

    {reqLib('eyeWidgets','updateContent',$params)}

    Oznaka Opis

    Group ustvarjanje nove skupine v XML

    Name ime skupine primer: MojeAplikacije

    Icon mojeaplikacije.png

    Items oznaka, znotraj katere dodajamo nove elemente

    Item element, znotraj katerega imamo spodaj navedene atribute

    Name ime aplikacije Videonadzor

    Desc opis aplikacije

    Icon ikona videonadzor.png

    Exec ime našega modula, v našem primeru videonadzor in IS (interni imenik)

    Tabela 4-1: Opis XML atributov iz datoteke eyeDock.xml

    Slika 4-3: XML sestava glavnega menija eyeDock

  • Razvoj rešitev za odprtokodna spletna namizja

    31

    Šele na podlagi vseh zapisanih atributov je moţno zagnati modul, še posebej pomembna je

    oznaka exec, s katero povemo, na kateri modul se naš element v meniju navezuje.

    Slika 4-4: XML glavni meni po spremembah

    4.3.1 Krmiljenje kamer na daljavo

    Za upravljanje kamer na daljavo potrebujemo administratorski dostop in poznati moramo

    opremo, s katero imamo opravka. V našem primeru moramo seveda najprej preslikati

    lokalna vrata v javna, kar storimo na usmerjevalniku, kamor je oprema fizično

    priklopljena.

    Uporabljene kamere v tem projektu imajo moţnost premika v vse smeri in zoom funkcijo.

    To po angleško imenujemo Pan Tilt Zoom (PTZ). Takšne kontrole ima ponavadi samo

    profesionalna oprema, za potrebe diplomske naloge smo uporabili cenejšo opremo.

    Za krmiljenje je bilo potrebno spoznati strojno opremo in parametre za upravljanje. V

    pomoč so bile Javascript datoteke, ki so bile povzete iz izvorne kode spletnega vmesnika

    kamere.

    Sintaksa za klic:

    /decoder_control.cgi?command=MojaKomanda&next_url=http://backlink_do_applikacije

  • Razvoj rešitev za odprtokodna spletna namizja

    32

    Spremenljivka

    v izvorni kodi

    Klicni

    parameter

    Opis

    PTZ_STOP 1 Ustavi

    TILT_UP 0 Premik navzgor

    STOP_UP 1 Ustavi premik navzgor

    TILT_DOWN 2 Premik navzdol

    STOP_DOWN 3 Ustavi premik navzdol

    PAN_LEFT 4 Premik levo

    STOP_LEFT 5 Ustavi premik levo

    PAN_RIGHT 6 Premik desno

    STOP_RIGHT 7 Ustavi premik desno

    PTZ_LEFT_UP 90 Premik levo poševno gor

    PTZ_RIGHT_UP 91 Premik desno poševno gor

    PTZ_LEFT_DOWN 92 Premik levo poševno navzdol

    PTZ_RIGHT_DOWN 93 Premik desno poševno navzdol

    PTZ_CENTER 25 Prestavi na začetno pozicijo

    PTZ_VPATROL 26 Krmili navzgor in navzdol (navpično)

    PTZ_VPATROL_STOP 27 Ustavi krmiljenje(navpično)

    PTZ_HPATROL 28 Krmili levo in desno (vodoravno)

    PTZ_HPATROL_STOP 29 Ustavi krmiljenje (vodoravno)

    IO_ON 94 Vklop alarma vhodno-izhodnega priključka

    IO_OFF 95 Izklop alarma vhodno-izhodnega priključka

    Rezervirani 8 do 24 Rezervirani parametri

    Tabela 4-2: Parametri iz .js datoteke za krmiljenje

    Rotacija desno klic: http://uporabniskoime:[email protected]:1337/decoder_control.cgi?command=6&user=uporabnisk

    oime&pwd=mojegeslo?nextUrl=HttpNazajdoMojeApp.php

  • Razvoj rešitev za odprtokodna spletna namizja

    33

    Slika 4-5: Funkcija premakni levo

    4.3.2 Nastavitve kontrasta in svetlosti

    Z uvedbo te funkcionalnosti lahko direktno spreminjamo nastavitve slikovnega tipala,

    integriranega v samo kamero. Predpogoj je, da mora biti uporabnik tipa »operator«. Le

    tako lahko ureja parametre. Uvedli smo tudi funkcijo avtomatske nastavitve svetlosti glede

    na uro, kar pomeni, da ponoči pojačamo svetlost, medtem ko podnevi ta parameter malce

    spustimo. Čeprav ima ţe sama kamera vgrajeno avtomatsko ostrenje, lahko v določenih

    situacijah omenjeni parameter dobro izkoristimo.

    Sintaksa za klic:

    http://uporabniskoime:[email protected]:1337/camera_control.cgi?param=X&value=Y&nextUrl=

    HttpNazajdoMojeApp.php

    Parameter(param) Ukaz (value) Opis

    0 – resolution 8 = 320x240 ; 64 = 640x480 resolucija

    1 – brightness 0-255 svetlost

    2 – contrast (0-6) 0-6 kontrast

    3 – mode 0-50Hz

    1-60Hz

    2-zunanji način

    frekvenca

    osveţevanja

    5 – flip & mirror 0-tovarniško privzeta nastavitev

    1-obrni

    2-zrcali

    3-obrni in zrcali

    sprememba

    pozicije slike

    Tabela 4-3: Parametri za nastavitev kamere

  • Razvoj rešitev za odprtokodna spletna namizja

    34

    function p_svetlost (form)

    {

    var vhodni_param = form.vhod.value;

    if(vhodni_param >255|| vhodni_param < 1)

    {return false;}

    if(isNaN(vhodni_param))

    {

    alert("Pri svetlosti je potrebno vpisati številko v razponu 1 do 255!");

    return false;

    }

    else

    window.open('http://uporabniskoime:[email protected]:1337/camera_control.cgi

    ?param=1&value='+vhodni_param,'jav','width=310,height=310,directories=0,titlebar=0,to

    olbar=0,location=0,status=0,menubar=0,scrollbars=no,resizable=no,');

    } //konec funkcije

    funkcija za nastavitev svetlosti in validacija polja

    function kontrast (form)

    { var vh_param = form.vhod_k.value;

    if(vh_param > 5||vh_param < 1)

    return false;

    if(isNaN(vh_param))

    {

    alert("Pri kontrastu je potrebno vpisati številko v razponu 1 do 5!");

    return false;

    }

    window.open(''http://uporabniskoime:[email protected]_parameter_streznik:vrata1337/camera_con

    trol.cgi?param=2&value='+vh_param,'jav','width=312,height=310,directories=0,titlebar=0,toolbar=0,location

    =0,status=0,menubar=0,scrollbars=no,resizable=no,');

    }

    Funkcija za nastavitev kontrasta in validacija polja

  • Razvoj rešitev za odprtokodna spletna namizja

    35

    Slika 4-6: Nastavitev kontrasta

    Implementirali smo preverjanje vnosnih podatkov. To je pomembno, saj zmanjšuje

    varnostna tveganja pri krmiljenju oddaljene opreme in pri podatkovnih bazah. Če

    validacije nebi zajeli, smo izpostavljeni resnim varnostnim groţnjam, saj je to eden izmed

    osnovnih pogojev za zagotavljanje varnosti. V našem primeru ima tovarniški program

    kamere (angl. Firmware) ţe zaščito proti vnosu nedovoljenih parametrov. Če smo postavili

    spremenljivko na 500, je sistem vzel največjo vrednost, ki je 255. Pri vhodni vrednosti npr.

    -1 je parameter postavil na 0. Pri podatkovnih bazah pa tvegamo izgubo ali krajo podatkov,

    saj lahko z metodo vrinjanja izvedemo celo SQL ukaz, ki lahko poţene zlonamerno kodo

    in tako povzroči škodo.

    Primer SQL injection:

    INSERT INTO UPORABNIKI (uporabnik,geslo)

    VALUES ('jazadministrator','napad')

    Morebitni dostop do nivoja operacijskega sistema:

    http://www.testnistreznik.com/porocilo.xyz?izdelek=../../etc/passwd

    4.3.3 Prikaz ţive slike

    Prikaz ţive slike (angl. live streaming) je mogoč preko treh načinov in sicer preko

    Common Gateway Interface (CGI) skript.

    Videostream.cgi

  • Razvoj rešitev za odprtokodna spletna namizja

    36

    Z uporabo skripte streţnik s pomočjo metode push neprestano pošilja sliko do uporabnika

    (ne glede ali je ciljni računalnik uspešno sprejel paket). Hitrost do maksimum 30 slik na

    sekundo.

    sintaksa: /videostream.cgi[?user=&pwd=&resolution=]

    Parameter Opis

    User Uporabniško ime

    Pwd Geslo

    resolution 8=320x240 ; 64=640x480

    Tabela 4-4: Parametri pri videostream.cgi

    Videostream.asf

    Omenjeno prikazovanje »live stream« po protokolu asf omogočata video predvajalnika

    VLC Player [62] in MPlayer [63].

    sintaksa: /videostream.asf[?user=&pwd=&resolution=]

    Parameter Opis

    User Uporabniško ime

    Pwd Geslo

    Resolution 8=320x240 ; 64=640x480

    Tabela 4-5: Parametri pri videostream.asf

    Snapshot.cgi

    S pomočjo skripte smo pridobili statični posnetek slike v ţivo, ki se samodejno osveţuje.

    sintaksa: /snapshot.cgi[?user=&pwd=&next_url=]

    Parameter Opis

    User Uporabniško ime

    Pwd Geslo

    Next_url naslov za preusmeritev

    Tabela 4-6: Parametri pri snapshot.cgi

  • Razvoj rešitev za odprtokodna spletna namizja

    37

    Če ne uporabljamo parametra next_url, se shrani posnetek pod imenom

    id(naprava)_trenutni_cas.jpg.

    Če uporabimo parameter za preusmeritev npr. next_url=1, je ime slike v tem primeru 1.jpg.

    Pri uporabi next_url=3 je moţno uporabiti dve metodi za prijavo, http basic64 encode ali

    preko uporabniškega imena in gesla z uporabo parametra user in pwd.

    4.3.4 Funkcija pribliţevanja

    Za moţnost pribliţevanja ţive slike smo uporabili javascript knjiţnici Shiftzoom [64] in

    TJPZoom [65], kateri vsebujeta preverjene funkcije za delo s slikami.

    Vključitvena datoteka:

  • Razvoj rešitev za odprtokodna spletna namizja

    38

    -

    Slika 4-7: Javascript funkcija za pribliţevanje

    Klic funkcije v aplikaciji

    [ZOOM] je izklopljen (klik)

    Če je vklopljena funkcija pribliţevanja, izpis vklop, sicer izklop.

    Povezava na administracijski vmesnik

    Prikaz statične slike in osveţevanje

  • Razvoj rešitev za odprtokodna spletna namizja

    39

    Slika 4-8: Prikaz slike v ţivo in uporaba funkcije pribliţevanja v okolju EyeOS

    4.3.5 Prikaz ure in datume uporaba JQuery

    Datum in uro prikazujemo s pomočjo Javascript knjiţnice JQuery [67], ki nam omogoča

    laţji spoj med HTML in tehnologijami, kot so Asynchronous Javascript And XML

    (AJAX) animacije in manipuliranje s podatki [67].

    Z uporabo API si programerji precej olajšamo delo, saj so funkcije za naše potrebe ţe

    večinoma implementirane. Knjiţnica je zdruţljiva z ogromno brskalniki, tako da ni teţav s

    kompatibilnostjo pri razvoju aplikacij [67].

    Primer klica lokalne skripte s vhodnim parametrom številka paketa. Nato dobimo preko

    klica funkcije s parametrom vrnjeno stanje.

  • Razvoj rešitev za odprtokodna spletna namizja

    40

    $.ajax({url: "/api/lociraj_paket",

    data: {stevilka_paketa:SI13371338},

    success: function(data)

    {$("#stanje").html("Paket senahajav:""+data+"");}

    });

    Pridobivam podatke..

    var datum=new Date()

    var leto=datum.getYear()if (leto< 1000)

    leto+=1900var dan=datum.getDay()

    var mesec=datum.getMonth()+1

    if (mesec

  • Razvoj rešitev za odprtokodna spletna namizja

    41

    Slika 4-9: Programska oprema za detekcijo gibanja na streţniku

    Detekcijski algoritmi so uporabni predvsem na področjih, kjer je potrebno zagotavljati

    varnost npr. v avtocestnih tunelih, bankah, skladiščih, trgovinah in drugje. S pomočjo

    avtomatske detekcije zaznamo predmet v gibanju, s tem pa se aktivira določen ukrep.

    Primer: Ob voţnji skozi predor v napačno smer se aktivira opozorilna signalizacija,

    nadzorni center je obveščen o dogodku.

    Če zaznamo premikajoč se objekt, lahko programsko postavimo kamero na določeno

    pozicijo in pričnemo snemati. Z integracijo detekcijskega algoritma v spletno verzijo bi

    lahko modul izpopolnili ter uporabili v več namenov. V naši rešitvi to opravlja naknadno

    naloţena programska oprema na streţniku. V okviru obveznega praktičnega usposabljanja

    smo spoznali delo s knjiţnicami AForge [8] in testirali nekaj detekcijskih algoritmov ter

    razvili aplikacijo v Microsoftovem programskem orodju Visual Studio [69].

    4.3.7 Nastavitev vira in konfiguracija

    Funkcijo najdemo pod zavihek nastavitve, kjer lahko nastavimo vir za prikazovanje. S

    pomočjo podatkovne baze MySQL smo ustvarili bazo streţnikov. V testnem okolju smo

    uporabljali lokalne IP naslove. S pomočjo te funkcionalnosti pa lahko dinamično dodajamo

    in brišemo vire po seznamu.

  • Razvoj rešitev za odprtokodna spletna namizja

    42

    Slika 4-10: Nastavitve vira oz. streţnika

    4.3.8 Resetiranje in inicializacija

    V sistem smo vgradili tudi funkcijo oddaljenega ponovnega zagona IP kamer, ki ga

    izvedemo preko pošiljanja parametrov reboot.cgi skripti. V primeru uspešne izvedbe

    funkcija vrne na zaslon izpis OK, kar pomeni, da je naprava v fazi ponovnega zagona.

    Sintaksa klic

    http://uporabniskoime:[email protected]:1337/reboot.cgi?nextUrl=Aplikacij.php

    http://uporabniskoime:[email protected]:1337/reboot.cgi?nextUrl=Aplikacij.php

  • Razvoj rešitev za odprtokodna spletna namizja

    43

    Slika 4-11: Prikaz delovanja funkcije za resetiranje in inicializacijo znotraj okolja EyeOS

    Nastavitev spremenljivk, ki se inicializirajo ob vsakem ponovnem zagonu kamere:

    set_misc.cgi?

    [led_mode=&ptz_center_onstart=&ptz_auto_patrol_interval=&ptz_auto_patrol_type=&ptz

    _patrol_h_rounds=&ptz_patrol_v_rounds=&next_url=]

  • Razvoj rešitev za odprtokodna spletna namizja

    44

    Parameter Value (vrednost) Opis

    Led_mode 0-način1

    1-način2

    2-ugasni utripanje led diode

    stanje led diode na kameri

    Ptz_center_onstart 0-izklop

    1-vklop

    postavljanje na sredino ob

    inicializaciji

    Ptz_auto_patrol_interval 0-izklop

    1-vklop

    interval premika avtomatsko

    nadziranje

    Ptz_auto_patrol_type 0-izklop samodejnega premika

    1-vodoravno

    2-navpično

    3-vodoravno in navpično

    Opcije samodejnega premika:

    -navpično

    -vodoravno

    -vodoravno in navpično hkrati

    Ptz_patrol_h_round 0-neskončno kroţenje vodoravno

    Ptz_patrol_v_round 0-neskončno kroţenje navpično

    Ptz_patrol_up_rate 0-100 (0 počasi, 100 hitro) hitrost premika navzgor

    Ptz_patrol_down_rate 0-100 (0 počasi, 100 hitro) hitrost premika navzdol

    Ptz_patrol_left_rate 0-100 (0 počasi, 100 hitro) hitrost premika levo

    Ptz_patrol_right_rate 0-100 (0 počasi, 100 hitro) hitrost premika desno

    Ptz_patrol_rate 0-100 (0 hitro, 100 počasi) hitrost premika v ostale smeri

    Tabela 4-7: Parametri za reboot.cgi skripto ob inicializaciji.

    Ob inicializaciji kamera pošlje zahtevo usmerjevalniku za dodelitev IP naslova DHCP za

    obdobje 24h. Ko poteče čas zakupa (angl. lease time) IP naslova, se zahteva za obnovitev

    naslova ponovno pošlje.

    4.4 Sistemski in mreţni viri

    Vsaka aplikacija, ki jo razvijemo, ima določene zahteve, ki so lahko glede na platformo

    programske ali povezane s sistemskimi in mreţnimi viri.

  • Razvoj rešitev za odprtokodna spletna namizja

    45

    4.4.1 Sistemski viri

    Našem primeru smo imeli streţnik, ki teče na Windows 2003 Server operacijskem sistemu.

    Uporabili smo odprtokodne programske opreme, spletni streţnik Apache [68] s podporo

    skriptnemu jeziku PHP in podatkovni bazi MySQL. Streţnik ima moţnost oddajanja

    10Mbps in sprejemanja 100Mbps, saj se nahaja na optični povezavi.

    Kapaciteta diska znaša 320GB, kar nam je za potrebe razvoja praktičnega dela diplomske

    naloge več kot zadoščalo.

    Slika 4-12 : Prikaz porabe sistemskih sredstev na streţniku

    4.4.2 Mreţni pretok

    V našem primeru je velikost okvirja odvisna od načina, v katerem kamera deluje, bodisi v

    nočnem ali dnevnem reţimu. Pri nočnem reţimu kamera pošilja precej manjši okvir, saj je

    slika črno-bela in gre za osvetlitev z vgrajenimi IR (Infra Red) LED diodami. Če

    zagotovimo drug vir svetlobe, npr. luč, je slika barvna. Posledično z zagotovljeno večjo

    svetlostjo velikost omreţnega paketa naraste.

    V dnevnem načinu nam strojna oprema pošlje pribliţno 7 omreţnih paketov na sekundo,

    maksimalno pa do 30. Vsebina paketa prikazana v izvirnem oz. surovem načinu RAW.

  • Razvoj rešitev za odprtokodna spletna namizja

    46

    V našem primeru se pošilja slika v formatu Joint Photographic Experts Group (JPEG).

    Primer:

    Content-Type : image/jpeg

    Content-Length:22268

    Content-type v tej spremenljivki se pošilja tip vsebine.

    Content-length nam pove velikost vsebine paketa.

    Slika 4-13: Sprejet omreţni paket IP Kamere

    22268 bajtov je pribliţno 21,74kB, kar znese pribliţno 0,02MB za en okvir.

    Predpostavimo, da ena kamera povprečno pošlje 7 okvirjev na sekundo. Paket je velik 21,7

    kB, kar znese 152,18 v kB na sekundo, to je pribliţno 9,1MB (9130kB) na minuto, kar je

    547,85MB na uro, to torej pri eni kameri pomeni pribliţno 13.148,4MB na dan. V našem

    primeru tri kamere na dan ustvarijo pribliţno 39.445,2 MB oz. 39,4GB omreţnega prometa

    in pribliţno 1,2TB na mesec oz. 14TB na leto. Kot lahko opazimo, se preko omreţja

    pretaka ogromno prometa, ki lahko ob masovni uporabi zmanjša skalabilnost sistema ali

    omreţja.

  • Razvoj rešitev za odprtokodna spletna namizja

    47

    Slika 4-14: Promet, ustvarjen v roku ene ure v dnevnem načinu

    Slika 4-15: Prikaz prometa, ustvarjenega v roku ene minute v nočnem načinu

    V nočnem načinu je pretok treh kamer pribliţno 11MB na minuto, kar je pribliţno 660MB

    na uro. Statistično gledano 15840MB znese 15,8GB na dan, 474GB na mesec, 5688GB,

    kar je pribliţno 5,7TB na leto. V primerjavi z dnevnim načinom se tukaj ustvari manj

    omreţnega prometa. Če povzamemo, da polovico dneva deluje v dnevnem načinu,

    polovico pa v nočnem, znese to pribliţno 20GB pretoka na dan, torej skupno 7,2TB v

    obdobju. Izračunan povprečni omreţni pretok znaša pribliţno 17TB na leto.

  • Razvoj rešitev za odprtokodna spletna namizja

    48

    4.4.3 Spremljanje omreţne TCP komunikacije z orodjem Wireshark

    Naredili smo test in preverili, koliko omreţnih paketkov se pošlje v kratkem testnem

    časovnem intervalu, ki je trajal 0,04 sekunde. Vidimo potrditvene okvirje iz obeh smeri.

    Zastavica ACK pomeni potrditev sprejema podatkov (angl. acknowledgment), SYN

    pričenja povezavo in je sinhronizacijska, FIN dokončno prekine povezavo [70]. Za

    spremljanje smo uporabili prostodostopno orodje Wireshark [71].

    Slika 4-16: Potek TCP komunikacije med streţnikom in opremo [71]

    4.5 Testiranje modula

    Izvedli smo osnovno testiranje modula. Preverili smo ranljivosti in zagotovili osnovno

    varnost. Vsekakor bi bilo pred javno objavo potrebno integrirati še kakšen varnostni

  • Razvoj rešitev za odprtokodna spletna namizja

    49

    mehanizem.

    1. Prijava v sistem EyeOS zahteva prehodno preverjanje CAPTCHA, ki sem ga integriral

    Generiran tekst Odgovor

    RAHA RAHA (sprejeto)

    FMYL FmYL (napaka)

    GOAY goay (napaka)

    OTAT 0TAT (napaka)

    Tabela 4-8: Captcha preverjanje

    2. Prijava v sistem EyeOS

    Up. ime Geslo

    test test (napaka)

    Test123 Test123 (napaka)

    guest Guest (napaka)

    root root (sprejeto-testno geslo)

    Tabela 4-9: Testiranje prijava v sistem EyeOS

    3. Testiranje vnosnih form za nastavitev svetlosti in kontrasta

    Vnos Izpis

    B,C Potrebno je vpisati številko

    6,101 Vnesi 1-5; vnesi 1-100

    5,100 Sprejeto, poslan ukaz IP kameri

    3,50 Sprejeto, poslan ukaz IP kameri

    Tabela 4-10: Testiranje vnosnih form

    4. Testiranje odzivnosti oz. skalabilnosti sistema

    Opravilo Čas (v sekundah)

    Zagon aplikacije (test 1) 0,37

    Zagon aplikacije (test 2) 0,32

    Zagon aplikacije (test 3) 0,47

    Zagon aplikacije (test 4) 0,25

    Rotacija kamere levo 3,05

    Rotacija kamere desno 3,19

    Rotacija navzgor 3,08

    Rotacija navzdol 3,12

    Nastavitev kontrasta 2,31

    Nastavitev svetlosti 2,17

    Tabela 4-11: Test skalabilnosti

  • Razvoj rešitev za odprtokodna spletna namizja

    50

    5 SPLETNO NAMIZJE Lucid

    Odprtokodno spletno namizje Lucid je izdano pod Academic Free License (AFL) [11].

    Zgrajeno je na osnovi DojoToolkit [72] aplikacijskega programskega vmesnika za

    javascript. Glavni cilj razvijalcev tega okolja je bil zgraditi aplikacijsko platformo, ki je

    zdruţljiva z vsemi spletnimi servisi, stranmi in mobilnimi napravami. Spletno mesto je

    namenjeno urejanju dokumentov, shranjevanju datotek, predvajanju multimedije. Dostop

    do podatkov je enostaven bodisi preko telefona ali računalnika, torej so z nami na vsakem

    koraku.

    Če hranimo občutljive podatke in ne zaupamo javnim spletnim oblakom, je bolje imeti svoj

    privatni oblak, kjer sami skrbimo za podatke.

    5.1 Struktura spletnega namizja Lucid

    Sestavljen je iz 5 knjiţnic in 4 osnovnih gradnikov. Temelji na Dojotoolkit Javascript API

    vmesniku.

    Slika 5-1: Struktura LucidDesktop

  • Razvoj rešitev za odprtokodna spletna namizja

    51

    5.2 Delovanje in prirejanje okolja

    Zahteve:

    Za uporabo spletnega sistema potrebujemo PHP verzije vsaj 5.x, starejše verzije niso

    podprte. Za podatkovno bazo lahko uporabljamo SQLite (Structured Query lite version),

    PgSQL (PostGre Structured Query Language) ali pa izberemo najbolj popularen MySQL.

    Namestitev:

    Najprej je potrebno na streţnik posneti zapakirano verzijo v obliki tar.gz, zip ali kateri

    drugi arhivski zbirki. Datoteke razširimo šele na streţniku, saj bi prenašanje posamičnih

    elementov trajalo dlje časa.

    Posebne nastavitve:

    Zaradi varnosti je dobro vsiliti HTTPS [74] povezavo in htaccess (Hypertext Access)

    datoteko. Seveda mora naš spletni streţnik to funkcijo podpirati. Dostop do datotek je

    potrebno omejiti z datoteko .htaccess, ki omogoča nastavitev dovoljenj za pridobivanje

    vsebine.

    Če ne uporabljamo datoteke .htaccess, je potrebno ročno blokirati dostop do nastavitvenih

    datotek in map, kot so temp, public, files [11].

    5.2.1 Knjiţnice in gradniki

    App

    Knjiţnica skrbi za poganjanje in zapiranje aplikacij [11]. Prikazali bomo nekaj primerov:

    Odpri privzeto aplikacijo za komando url, spletni brskalnik

    lucid.app.launchhandler(null, {url: ''http://www.mojstreznik.com/''}, ''text/x-uri'');

    Zagon aplikacije

    lucid.app.launch(''testna'');

    Ponovni zagon aplikacije

    lucid.app.reload(''lucid.app.testna'');

  • Razvoj rešitev za odprtokodna spletna namizja

    52

    Crosstalk

    Omenjena knjiţnica nam omogoča laţjo komunikacijo med dvema različnima

    aplikacijama, ki jo lahko poganjata tudi različna uporabnika.

    Moţnost pošiljanja in prejemanja sporočil je zasnovana s pomočjo DojoToolkit [72], ki

    ima implementirani funkcije dojo publish in dojo subscribe. Sporočila sortiramo glede na

    kategorijo [11].

    Primer preprostega naročanja na novice:

    this.Prijava = lucid.crosstalk.subscribe("Novice_posodobitve",

    dojo.hitch(this, "Novice_posodobitve_handler"), this.sysname);

    Sporočila so vedno objekti in vsebujejo sporočila, katera je poslala aplikacija. Zato

    moramo spisati tudi handler funkcijo. Če ţelimo sporočilo poslati lokalno, spremenljivko

    userid postavimo na null.

    Pošiljanje sporočila uporabniku:

    myTopicHandler: function(msg)

    { lucid.dialog.notify(msg.someKey); },

    var message = { someKey: "Trenutno ni posodobitev.", foo: "bar"};

    var userid = 1337; //pošiljanje uporabniku id številka v bazi

    lucid.crosstalk.publish("Novice_posodobitve", message, userid, this.sysname);

    Slika 5-2: Pošiljanje sporočila s pomočjo servisa Crosstalk[11]

  • Razvoj rešitev za odprtokodna spletna namizja

    53

    Slika 5-3: Pošiljanje sporočila drugi instanci oz. aplikaciji[11]

    Odjava iz novic:

    lucid.crosstalk.unsubscribe(this.Prijava);

    S tem ukazom povemo razvrščevalniku oz. sistemu za dostavljanje, naj ne pridobiva več

    sporočil iz določene kategorije.

    Ţivljenjski cikel sporočila

    Vsako sporočilo ima naslednje parametre uporabnika, aplikacijo, instanco in pa ciljni

    naslov. Tako pošiljatelj kot prejemnik imata čakalno vrsto za sporočila, ki jo obdeluje t.i.

    dispatcher. Če je sporočilo naslovljeno na določeno aplikacijo in na drugi strani ni

    pognana, jo omenjeno sporočilo aktivira ter dostavi sporočilo. Kadar je sporočilo poslano

    in na drugi strani nihče ne prevzame sporočila, se to zavrne [11].

    FileArea

    Je gradnik za grafični prikaz datotek v pogovornih oknih in prikazu datotek. Vključimo ga

    enostavno preko API vmesnika Lucid widget filearea [11].

    Console

    Implementiramo lahko tudi uporabo ukazne vrstice znotraj okna, podobno kot v linux

    okolju. Torej uporabljamo vrstični programski vmesnik namesto grafičnega, uporabljajo ga

    večinoma dobri poznavalci. Gradnik enostavno vgradimo v okno [11]. Primer uporabe API

  • Razvoj rešitev za odprtokodna spletna namizja

    54

    DojoToolkit:

    require(["dijit/layout/BorderContainer", "dijit/layout/ContentPane","dojo/domReady!"],

    function(BorderContainer, ContentPane)

    {var okno = new BorderContainer({//kreiranje instance objekta bordercontainer

    style: "height: 640px; width: 480px;"});

    //kreiranje vsebinskega okvirja znotraj kontejnerja oz. okna

    var vsebina = new ContentPane({

    region: "center",content: "Lep pozdrav"});

    okno.addChild(vsebina_desno);

    //postavljanje v telo dokumenta

    okno.placeAt(document.body);

    okno.startup();}); // ukaz za odpiranje okna

    Status bar

    Vrstica stanja se nahaja na dnu našega pogovornega okna. V njej se izpisujejo sprotne

    vsebine in napake [11].

    Primer:

    var statusna_vrstica = this.statusbar = new lucid.widget.StatusBar({

    region: "bottom", showProgress: true, label:''Pridobivam podatke..''});

    okno.addChild(statusna_vrstica);

    S pomočjo metode attr pa nastavljamo stanje statusne vrstice v poljubni fazi programa.

    Primer: this.statusna_vrstica.attr("label", "Uspešno preneseni podatki.");

    Sound

    Knjiţnica sound skrbi za laţje manipuliranje z zvokom znotraj okolja Lucid. Specifikacije

    so zapisane znotraj javascript datoteke sound.js, ki se nahaja v DojoToolkitu.

    Če ţelimo predvajati zvok znotraj okolja, moramo najprej kreirati primerek objekta

    lucid.sound, nato pa objekt podeduje vse njegove metode [11].

    Primer:

    var poslusanje_radijske_postaje = new lucid.Sound({src: dojo.moduleUrl("lucid.apps."+this.sysname,

    "http://82.149.22.34:8000/CityMp364mono.mp3") });

  • Razvoj rešitev za odprtokodna spletna namizja

    55

    if(poslusanje_radijske_postaje.capabilities.id3) console.log(poslusanje_radijske_postaje.capabilites.id3());

    Vrnjene dobimo atribute po ID3 specifikaciji album, artist, comment, genre, songname,

    track, year.

    Upravljanje z zvokom:

    poslusanje_radijske_postaje.volume(0.75);

    poslusanje_radijske_postaje.stop();

    poslusanje_radijske_postaje.play();

    poslusanje_radijske_postaje.pause();

    position – metoda lahko nastavlja ali pridobi pozicijo

    duration – vrne dolţino v milisekundah

    loop – true, false, autostart – true, false

    Filesystem

    Datotečni sistem znotraj okolja omogoča branje in pisanje v datoteke na lokalnem nivoju

    kot tudi na oddaljene streţnike. Če se zahteva avtentikacija, nam za to ni potrebno posebej

    skrbeti, saj nam delo poenostavi ta programski vmesnik, ki sam prikaţe formo za vnos

    potrebnih detajlov. Iz programerskega stališča si z uporabo omenjenega API vmesnika

    povsem olajšamo delo z datotečnim sistemom [11].

    Primer upravljanja z datotečnim sistemom:

    lucid.filesystem.createDirectory("file://mojamapa/", function()

    {console.log("Mapa uspesno kreirana");}, function(e){console.error("Napaka");});

    lucid.filesystem.writeFileContents